Solving Sudoku Puzzles with OpenCV

For my next project I wanted to build something that I have been planning to do for a long time. I love solving sudoku and I was really good at it. Yup, I was good. That was three years ago. By the time I got good at solving sudoku, it started to get boring for me and I decided to write my first sudoku solver – goSudoku. CLI Solution goSudoku is written in Go. The goal was to make a fast sudoku solver by improving on the basic back-tracking algorithm. (More on that below) ...

September 3, 2023 Â· 8 min

Learning ML

I’m no expert in AI/ML. I’m trying to self-learn and haven’t built anything significant, until now! To learn something, I need a problem to apply and practice what we learned. I was missing that. I didn’t have a use case for anything related to AI/ML and I wanted a pet project for AI/ML. The beginnings Yeah! Let’s talk about that. I started with this – Basic classification: Classify images of clothing. Yeah, why not. Jump into the deep end and figure out the basics as you progress. That has been my way of learning new things. This time, it did not work. My effort to learn ML and build a basic classification system spans 2-3 years 🤷🏾‍♂️. At the pace at which technology progresses, that’s a lifetime. ...

July 14, 2023 Â· 10 min

To Care!

Take a look at the photo 🌌. It almost looks like a photo taken by an amateur stargazer. Grainy streaks of sunlight. But this photo was taken in 1990 and was not taken from Earth. A machine took it, the right technical term being space probe. It was called Voyager 1, and it was launched in 1977. Voyager 1 traveled 13 years and 6 billion kilometers into deep space, very, very far from home, to take that photo using instruments that were cutting-edge in 1977. ...

July 13, 2023 Â· 3 min

The Underappreciated Skill of Comprehension

Comprehension is the understanding and interpretation of what is read. Documents at work are rarely 140 characters or 140 words or even a single-page document. Whoever wrote that document has put their thoughts into words. It would have been peer-reviewed. Revisions made and approved for general consumption. It might not be the best-written technical document or the best way to string words together, but it nevertheless captures an idea. ...

July 12, 2023 Â· 2 min

Part 3: After the Date

Part 1 of this series examined how handling date and time presents a slightly different challenge than other data types. Part 2 focused on design-time considerations, including schema, validation, and operation definitions. In Part 3, we will look at some of the implementation aspects, and I will use javascript as the language here. Accepting date-time If you are building an API, enforce a standard format. I generally use ISO 8601 for date, time, and timestamps. ...

July 11, 2023 Â· 6 min

Part 2: The Second Date

Part 1 highlighted the complexity of handling date and time. Part 2 focuses on design-time considerations, including schema, validation, and defining operations. I have been part of multiple teams where we had to design data schemas. When it came to storing date and time, we just slapped on the ISO 8601 format (which, if you ask me, is the only format you would ever need). ISO 8601 format has date, time, and timezone information. Most programming languages also have good support for this format. ...

July 10, 2023 Â· 5 min

Part 1: The Date

First, let’s talk about the basics. We all know the usual data types – strings, numbers, and booleans. They’re like the bread and butter of programming. Databases and programming languages have matured to the point where they can safely handle these data types, and we don’t think twice about how we store, retrieve and perform operations on them. They know that we know that there are a set of expectations, and it should work. And most of the time, it works. ...

July 9, 2023 Â· 4 min

The Promiscuity of PUT

From Single-Document Updates to Multiple-Document Mayhem When creating or supporting HTTP APIs for database operations, the technique is to connect HTTP methods to database operations. The widely accepted mapping is as follows: GET: Find POST : Insert/Create PUT: Update DELETE: Delete/Remove (Unless you’ve adopted GraphQL, in which case, what in Middle-earth?!) In general, everyone agrees on how POST, GET, and DELETE operations are supposed to behave. There isn’t much room for ambiguity there. ...

July 9, 2023 Â· 6 min

2FA tokens via CLI

Generating 2FA tokens on the terminal so that i don’t have to reach for my phone #lazyTech Securing your accounts with 2FA or two-factor authentication is a great idea, and what I use most of the time are time-based OTPs (TOTPs). The process is simple; you only need an app like Google Authenticator (iPhone | Android) or Twilio Authy on your phone. But I’m lazy when I have to get codes from my phone and type them into my laptop. Cloud-based clipboards are also not my thing either. ...

July 9, 2023 Â· 3 min

Being vegan!

Going vegan was a surprisingly easy decision for me! As a proud Malayali, I was raised on a diet rich in meat and seafood, especially dishes like beef fry and seafood curry. The bright side of the Covid lockdowns was that I got to spend a lot of time with my family, and my mom’s cooking left me with no holds barred eating. However, by early 2021, my sedentary lifestyle and love for food caught up with me, and I put on a lot of weight. None of my old clothes fit. Social distancing and lockdowns meant that we were going out less often, and the freedom of a mundu meant finding clothes that fit was not a problem. ...

July 9, 2023 Â· 5 min