Building a load-balanced production infrastructure in AWS
My notes from building a scalable and production-ready infrastructure in AWS. This post covers the basics of setting up a load-balanced infrastructure using ...
My notes from building a scalable and production-ready infrastructure in AWS. This post covers the basics of setting up a load-balanced infrastructure using ...
Explore advanced techniques for interfacing complex C data structures with Python using ctypes and SWIG. Learn how to seamlessly pass complex data structures...
In this post, we will explore how to setup a development environment for FreeRTOS on RISCV using QEMU. this includes setting up the RISCV toolchain, QEMU, an...
I recently had a discussion about the importance of writing about what you learn. This post delves into why this practice is essential and how it has persona...
Device trees are typically used in Linux systems to describe the hardware components of a system. However, device trees can be used in bare-metal systems, of...
In this article we will go over the steps to build a bespoke Debian distro for RISC-V. We will use QEMU to emulate the RISC-V architecture and build a Debian...
Recently, I experienced a workplace Git incident that compelled me to refresh my understanding of Git internals and learn numerous new aspects about the syst...
We use digital signatures hundreds of times a day without realizing it. Yet its often seen as a mystery, even by developers. We’ll explore how digital signat...
Transferring files between your host and RISC-V QEMU machine is often a daunting task. typical solutions include using the 9P FS which requires host kernel l...
Get ready to dive into the intricacies of Linux boot on a RISC-V machine! This comprehensive guide will walk you through the process of compiling QEMU, the L...
Semihosting lets embedded systems talk to a host computer through a debugger interface to perform tasks such as file I/O, and printing to the console. This a...
This article will show you how to setup GitHub SSO for your website serving developer resources using vouch-proxy.
I recently built a python script to package the contents of a folder into a LittleFS binary image. This article documents my steps to make it into a pip inst...
In this article, we look at how to create a custom Github action that can deploy AWS Lambda Code and upload it to the marketplace.
Bitbucket lets you trigger webhooks for git events that are interesting to your build and test infrastructure. In the past, I have played around with it usin...
Some quick notes, tips and tricks to use WSL as a work environment when you are stuck with a Windows PC
This article talks about adding a custom package into buildroot for creating your own Linux distribution for embedded and emulation targets.
I started using docker back in 2016 and ever since, I have been using it in the context of embedded systems DevOps. This article condenses the learning so th...
This article looks at how device trees can be leveraged to create silced systems in a virtualized, embedded system.
We use push notifications from web-sites on a daily basis. This article is about building one from the ground-up in order to understand how the whole system ...
“RISC-V is classically virtualizable” – We come across this statement very often when we read about the merits of the RISC-V ISA. This article looks at what ...
QEMU is an excellent platform to emulate hardware platforms. But, we often end up using ready-made platforms without thinking twice about how QEMU emulates t...
This article explores how to set up RISC-V on QEMU, boot a simple application on it using the PK kernel, and boot a cross-compiled Linux on the emulation pla...
This article comments on how I built-up my first ARM host tethered Rocket RISC-V core on a Xilinx Zynq-7000 FPGA.
A hands-on approach to porting the Coremark benchmark to measure and compare bare-metal microcontroller performance.
If you are working on any serious embedded systems project, you will come across the need to optimize the memory footprint of your code sooner or later. When...
GitHub Actions is a workflow automation offering from GitHub. While there are a lot of tutorials out there talking about using GitHub Actions on your web/sof...
While developing cloud connected products, one of the major challenges is debugging application layer errors within a TLS connection. This article describes ...
JSON Web Tokens (JWT) are becoming popular even outside the traditional web authentication use-cases with the advent of IoT and connected devices. This artic...
A refresher of new C coding features included in C99 and C11 for embedded system developers.
Steps to create a smart home agent for Google Home / Google Assistant to control smart home devices in AWS IoT
Quick start guide on developing smart home skills for voice based control of smart devices using Amazon Alexa.
Notes on how to setup a trustable, secure web server using free/low cost tools from namecheap, letsencrypt and digitalocean
Notes on how I hijacked the re-negotiated SSL keys between Azure server and openssl s_client to decrypt TLS1.2 protected communication logs
General principles, architecture, guidelines and good practices for secure over the air (OTA) and over the host (OTH) firmware upgrade for an embedded device
JTAG is omnipresent in the microcontroller and FPGA world in the form of programmers and debuggers. Let us peek under the hood and understand how JTAG works ...
An insight into the format and technologies used to pack a X.509 certificate. This tutorial introduces the concepts and parses through a TLS certificate to b...
Introduction to digital certificates and the basic concepts of hashes and cryptographic algorithms that are used to build trust based secure systems
introduction to hardware description languages and basic hardware design principles.
Development notes of an end-to-end IoT dashboard implementation for an embedded device.
Understand the innards of Docker container system by building one from scratch (including a minimal fs)
Points to keep in mind when you are moving to an embedded networking stack from a fulle fledged one.
One of the first articles on getting started with an ESP8266 module
My experiences with building an end to end IoT system using a Raspberry Pi, an Arduino and a MPU6050. The post describes the details of how to compile and se...
Steps to compile and bring up a minimalist kernel for Raspberry Pi using Buildroot
mistakes I made while building a dauter card for Raspberry Pi
Give MQTT a test drive
This tutorial gives a quick introduction to writing Linux device drivers. [Part 2]
This tutorial gives a quick introduction to writing Linux device drivers. It will not make you device driver experts, but will give you a starting point to s...
A tutorial on 8 bit PIC Microcontroller architecture and development tools
Things to keep in mind while parsing XML
I came across a requirement to add a new easy access menu item to the putty terminal window for Windows. This article explains how I did it.
An introduction to getting started with embedded linux. This article will get you started with booting up your first cross compiled kernel
A collection of advanced tips and tricks to create wonderful shell scripts
A quick tutorial on using GCOV for test coverage analysis. This will get you started to run analysis on your complex test cases.
an old school home made PCB fabrication technique tutorial
An article that provides an in-depth understanding about the UPNP protocol and its foundational technologies like HTTP, XML, SOAP etc
An introduction to the core concepts and building blocks of USB 3.0 device side protocol for those who are aware of USB 2.0
An in-depth tutorial introducing the USB2.0 device side protocol with detailed illustrations on how transactions happen.
A tutorial on 8 bit PIC Microcontroller architecture and development tools
This tutorial gives a quick introduction to writing Linux device drivers. [Part 2]
This tutorial gives a quick introduction to writing Linux device drivers. It will not make you device driver experts, but will give you a starting point to s...
My notes from building a scalable and production-ready infrastructure in AWS. This post covers the basics of setting up a load-balanced infrastructure using ...
Explore advanced techniques for interfacing complex C data structures with Python using ctypes and SWIG. Learn how to seamlessly pass complex data structures...
In this post, we will explore how to setup a development environment for FreeRTOS on RISCV using QEMU. this includes setting up the RISCV toolchain, QEMU, an...
I recently had a discussion about the importance of writing about what you learn. This post delves into why this practice is essential and how it has persona...
Device trees are typically used in Linux systems to describe the hardware components of a system. However, device trees can be used in bare-metal systems, of...
In this article we will go over the steps to build a bespoke Debian distro for RISC-V. We will use QEMU to emulate the RISC-V architecture and build a Debian...
Recently, I experienced a workplace Git incident that compelled me to refresh my understanding of Git internals and learn numerous new aspects about the syst...
We use digital signatures hundreds of times a day without realizing it. Yet its often seen as a mystery, even by developers. We’ll explore how digital signat...
Transferring files between your host and RISC-V QEMU machine is often a daunting task. typical solutions include using the 9P FS which requires host kernel l...
Get ready to dive into the intricacies of Linux boot on a RISC-V machine! This comprehensive guide will walk you through the process of compiling QEMU, the L...
Semihosting lets embedded systems talk to a host computer through a debugger interface to perform tasks such as file I/O, and printing to the console. This a...
This article will show you how to setup GitHub SSO for your website serving developer resources using vouch-proxy.
I recently built a python script to package the contents of a folder into a LittleFS binary image. This article documents my steps to make it into a pip inst...
In this article, we look at how to create a custom Github action that can deploy AWS Lambda Code and upload it to the marketplace.
Bitbucket lets you trigger webhooks for git events that are interesting to your build and test infrastructure. In the past, I have played around with it usin...
Some quick notes, tips and tricks to use WSL as a work environment when you are stuck with a Windows PC
This article talks about adding a custom package into buildroot for creating your own Linux distribution for embedded and emulation targets.
I started using docker back in 2016 and ever since, I have been using it in the context of embedded systems DevOps. This article condenses the learning so th...
This article looks at how device trees can be leveraged to create silced systems in a virtualized, embedded system.
We use push notifications from web-sites on a daily basis. This article is about building one from the ground-up in order to understand how the whole system ...
“RISC-V is classically virtualizable” – We come across this statement very often when we read about the merits of the RISC-V ISA. This article looks at what ...
QEMU is an excellent platform to emulate hardware platforms. But, we often end up using ready-made platforms without thinking twice about how QEMU emulates t...
This article explores how to set up RISC-V on QEMU, boot a simple application on it using the PK kernel, and boot a cross-compiled Linux on the emulation pla...
This article comments on how I built-up my first ARM host tethered Rocket RISC-V core on a Xilinx Zynq-7000 FPGA.
A hands-on approach to porting the Coremark benchmark to measure and compare bare-metal microcontroller performance.
If you are working on any serious embedded systems project, you will come across the need to optimize the memory footprint of your code sooner or later. When...
GitHub Actions is a workflow automation offering from GitHub. While there are a lot of tutorials out there talking about using GitHub Actions on your web/sof...
While developing cloud connected products, one of the major challenges is debugging application layer errors within a TLS connection. This article describes ...
JSON Web Tokens (JWT) are becoming popular even outside the traditional web authentication use-cases with the advent of IoT and connected devices. This artic...
A refresher of new C coding features included in C99 and C11 for embedded system developers.
Steps to create a smart home agent for Google Home / Google Assistant to control smart home devices in AWS IoT
Quick start guide on developing smart home skills for voice based control of smart devices using Amazon Alexa.
Notes on how to setup a trustable, secure web server using free/low cost tools from namecheap, letsencrypt and digitalocean
Notes on how I hijacked the re-negotiated SSL keys between Azure server and openssl s_client to decrypt TLS1.2 protected communication logs
General principles, architecture, guidelines and good practices for secure over the air (OTA) and over the host (OTH) firmware upgrade for an embedded device
JTAG is omnipresent in the microcontroller and FPGA world in the form of programmers and debuggers. Let us peek under the hood and understand how JTAG works ...
An insight into the format and technologies used to pack a X.509 certificate. This tutorial introduces the concepts and parses through a TLS certificate to b...
Introduction to digital certificates and the basic concepts of hashes and cryptographic algorithms that are used to build trust based secure systems
introduction to hardware description languages and basic hardware design principles.
Development notes of an end-to-end IoT dashboard implementation for an embedded device.
Understand the innards of Docker container system by building one from scratch (including a minimal fs)
Points to keep in mind when you are moving to an embedded networking stack from a fulle fledged one.
One of the first articles on getting started with an ESP8266 module
My experiences with building an end to end IoT system using a Raspberry Pi, an Arduino and a MPU6050. The post describes the details of how to compile and se...
Steps to compile and bring up a minimalist kernel for Raspberry Pi using Buildroot
mistakes I made while building a dauter card for Raspberry Pi
Give MQTT a test drive
This tutorial gives a quick introduction to writing Linux device drivers. [Part 2]
This tutorial gives a quick introduction to writing Linux device drivers. It will not make you device driver experts, but will give you a starting point to s...
A tutorial on 8 bit PIC Microcontroller architecture and development tools
Things to keep in mind while parsing XML
I came across a requirement to add a new easy access menu item to the putty terminal window for Windows. This article explains how I did it.
An introduction to getting started with embedded linux. This article will get you started with booting up your first cross compiled kernel
A collection of advanced tips and tricks to create wonderful shell scripts
A quick tutorial on using GCOV for test coverage analysis. This will get you started to run analysis on your complex test cases.
an old school home made PCB fabrication technique tutorial
An article that provides an in-depth understanding about the UPNP protocol and its foundational technologies like HTTP, XML, SOAP etc
An introduction to the core concepts and building blocks of USB 3.0 device side protocol for those who are aware of USB 2.0
An in-depth tutorial introducing the USB2.0 device side protocol with detailed illustrations on how transactions happen.
A tutorial on 8 bit PIC Microcontroller architecture and development tools
My notes on how to setup the blogging environment for adding pages to embeddedinn