Monday, September 30, 2024

"Fundamentals of Digital Image and Video Processing" - A Course Review

I finally completed the "Fundamentals of Digital Image and Video Processing" course offered by Northwestern University on Coursera. Despite having a background in signal processing and experience with image/video processing, I found the course to be quite underwhelming. In truth, I skimmed through a good 30-40% of the material and quizzes.

The course material was dense and often felt like it glossed over important concepts. The instructor's style, with slides packed with information, didn't resonate with me. It seemed a better fit for those already familiar with the subject matter rather than your typical e-learner. Maybe if I were still a student and had fellow students to commiserate through the pain? 

While the quizzes were decent, the questions appropriately vague to force you to think rather than look up answers, the programming assignments were underwhelming. Look elsewhere if you're looking to learn about digital image and video processing.

Saturday, December 31, 2022

Happy New Year! Welcome 2023.

I have been tremendously fortunate this year (and past several years). At work, no big moves, have landed into a routine over at Google. Not a bad thing and no complaints. For Tensor G2 announced earlier this year, my primary focus was on its camera hardware.

Post-COVID, I needed to get back into the world. I traveled to Belgium on a whim. For Fall 2022 semester, I volunteered as a Leadership Coach at SJSU UNVS 101 on behalf of Braven non-profit. My role was to facilitate weekly sessions of the Braven Accelerator course. It was a great experience, great people all around. I am thinking of returning next fall. Looking forward to further community engagement next year.

Sunday, December 11, 2022

Back online and VSCode!

A kind individual reached out to inform me my blog went down. To myself, I said, I have a blog? 😃 Quick fix to DNS records and we're back online.

I've jumped on the VS Code bandwagon. I was skeptical at first. The desktop front end is sufficiently lightweight and responsive. Working with web alternative VS Code Server is convenient and provides the same (or virtually the same?) experience as the desktop version. So far, I've been impressed with available extensions and the growing community. On the daily, I use Python extension for VS Code, Prettier, and VS Code Vim.

The cherry on top and what sealed the deal for me are the json-based, revision control friendly configuration files. I shared mine in my chezmoi dotfiles repo.

One problem I faced was sharing my config files between VS Code and VS Code Server. Assuming the default location of ${HOME}/.config/Code/User/settings.json in Linux. You can start VS Code Server with the following to pick up the shared settings:

code-server --user-data-dir ${HOME}/.config/Code

Sunday, October 31, 2021

What's Been Up?

I can finally broadcast what I've been working on since I shut down my company at the end of 2018. I have been at Google working on:

https://blog.google/products/pixel/introducing-google-tensor/


For Tensor GS101, I primarily worked behind the scenes as lead, then manager, of a design verification CAD team. I later switched to a design verification lead role for YouTube's Argos ASIC, specifically on the video codec IP written using C++ and synthesized using HLS. Following some reshuffling, I continue doing the same, but for something different, still 100% confidential. Hope to talk about it soon!

Tuesday, February 2, 2021

Technical paper review #1

Marvell ThunderX3: Next Generation Arm-based Server Processor

https://ieeexplore.ieee.org/document/9340376

Authors describe implementation of ThunderX3 CPU. Here are the key points that stood out for me.

ThunderX2 was derived from an earlier MIPS based architecture (which I was privileged to work on for a short while). ARM instructions that did not directly map to MIPS were expanded into micro-ops. A 6% gain in SPECint was achieved by reducing micro-op expansion.

Details on arbitration policies for hardware threads inside the OOO pipeline are presented. Arbitration decisions are made, for example, based on number of micro-ops in flight further down the pipe or the most micro-ops to retire.

The paper described the rational for choosing a ring topology over mesh: memory bandwidth not increasing dramatically over next generation.