I'm Abhimanyu, a passionate developer and builder of good things โจ(the goal). Some folks call me "A Bee" or Obhi, who truly believe in me and trust me to be working on real-world solutions with a major positive impact ๐ ๐ . While that may be true, I usually work on stuff that fascinates me the most and which eventually turns out to be impactful and interesting enough that people take over it to further research and development. Iโm always learning new technologies and improving my skills in computer science, and computer games. ๐ฎ
Iโm currently working on innovative projects in Linear Phase Array that visualizes antenna patterns for linear scan arrays. Another project that has always fascinated me is wireless over long distances Wi-Fi LongDistance which demonstrates the feasibility of packets traveling over several kilometers if frequency and propagation-times were not an issue (modified IEEE802.11 communication protocol) over VHF/UHF bands
I love writing C++
projects with scripted wrappers. Something close to low level such as C
and C++
helps me with performance code that will run complex calculations quickly such as in simulations and hardware modeling. Any ASIC or IP modeling helps me simulate the part of the chip behavior that is valuable in the design and analysis phase. Then wrap it up with python
, bash
and other scripting languages to compile and run the code (cmake
, bash
).
I have a personal philosophy of keeping things simple, instead of overcomplicating things that will require re-learning what the code does! And not to mention the amount of time in maintenance of complicated code when dependent things break. In my 10+ years of working in various large tech companies including Google, Qualcomm, Open Text, and the Canadian Government, I learned some truly enlightening, intuitive as well as contradictory things. As you might expect, projects evolve from their infancy and look like this:
... and eventually reaching a state where in 5-10+ years of development time, 100s of engineers are involved to maintain a large-scale unsustainable solution; growing uncontrollably from various having to meet targets, feature releases, and aim for new goals of the organization. In the figure below, a trireme has 3 rows of rowers on each side, which can bring the total crew count to 150-200 that are actively involved in running this ship. Just imagine.
As the project grows further, it gets more and more difficult to scale up the modules. Moreover, the concerned person or the tech lead who has a say in the project timeline has to step up and initiate a cleanup of the code, also called the tech debt. One person cannot do this which further warrants the help of another entire team that becomes responsible for the tools and deployment of the software going forward. Now to keep things running smoothly in a trireme, what if I said that we will need to create a large floating platform that's connected to the ship by several cables and ladders so that they help organize the daily operations?
If there isn't already a consecutive delivery due just after a major delivery that got done from a 10-month grind, the person leading the team has to step back and look for slack in the project timeline where this tech debt can be paid off as fully as possible. And oftentimes in the US working culture and tech sector, back-to-back projects are a thing... so remember, don't overcomplicate stuff or else if you buy a Lamborghini, you have to maintain the Lamborghini
Maybe the engineers in the team won't have the time to pay this debt fully, but despite the challenge, the goal is to make things run smoothly in the future and more efficiently when onboarding new contributors to the project. Because let's face it, training costs money. Training takes away the valuable time that could have gone towards the development and testing of new features. If we did things right the first time and added more slack in the project timeline, this is the evolution of a large-scale, LEAN project:
The engineering hours spent during that slack time (not the messenger ) are worth more than the chaos of trying to connect the various cables and ladders from neighboring teams and working around minefields that if touched accidentally, will cause the whole stack to explode. Yes, I'm talking about both a trireme just as much as a large codebase.๐ฅด
Here's the evolution of a well-developed project with a fully mature automation and regression toolchain, validation pipeline, CI/CD, etc. (in my opinion ๐ฝ). Yes, it does look super simple, and yet it can be complex the more a developer in your team digs deeper, but the "feeling" is never that it's complicated.
It is counter-intuitive, I know.
In the ASIC industry, by doing this, we're also cutting down clock cycles and more importantly ASIC power. Less code that passes the test coverage including edge conditions while reducing the chances of bugs appearing or covering more edge conditions is a win! ๐ Less code is a smaller attack surface, and therefore, less is truly more. ๐จ
If someone has the statistical probability model for the unit conversions in the original Age of Empires, please dm me! ๐ข I would like to look at the algorithm and plot some probability graphs against the modern versions for fun. โ๏ธ ๐ก๏ธ ๐ก๏ธ
Just kidding, we can collaborate on just about anything that's interesting.
I hyperfocus on computer graphics, and have a pretty strong obsession with game engine stuff, but I hope some alternate version of me in this multiverse is an Age of Empires developer at Forgotten Empires, who is enjoying everything that life has to offer. Here's an example of a house I made in Unreal Engine 4.0 with a fireplace and some cozy chairs. Because most of my time is taken by ASIC stuff, this is long overdue for me: to make a much larger game setting, add more sprites and the greatest pathfinding algorithm that'll allow NPCs to walk to their destinations without micromanaging, watchdog timeouts, corrections from the game itself, as well as react appropriately to the player.
Thanks for visiting my GitHub profile, and reading some of the preachy stuff that probably does not concern you (yet), and those who care may be able to keep reminding me about these early aspirations and struggles. Feel free to check out my repositories and let's connect!