RSSAmplifier

Blog

Developer's Log

ndesh26.github.io/RSS feed ↗41 posts

Latest posts

Surface Go 2 - Alternate Operating Systems

I’ve been exploring alternative operating systems for the Surface Go 2 (4GB RAM, 64GB storage) with an Intel Pentium Gold 4425Y processor. Lately, I’ve been using the Surface Go more as a tablet and found that Windows 11, despite improvements over Windows 10, still falls short as a tablet OS. Additionally, Windows 11 feels somewhat clunky on the Surface Go 2’s minimal specs. I’ve tested several…

Rvalue References in C++11

Rvalue references were introduced in the C++11 standard in September 2011, offering powerful capabilities for optimizing C++ code. Despite being a fundamental feature, rvalue references can seem daunting to C++ beginners. In this guide, we will demystify rvalue references and explore how they contribute to efficient and modern C++ programming. C++03 Value Categories In C++03, each expression (not…

Controlling the ACT LED on RPi B+

The RPi boards generally have two LEDs on board. The first, PWR LED represents the power in the board and the second ACT LED can be programmatically controlled. The ACT LED is easy to control and can be used as a good indicator that my code running on the RPi until I can get complex output functions to get working. There is an excellent Baking Pi course which focuses on bare programming on RPi in…

Writing an OS for RPi B+ - Intro

I got my hands on a second hand Raspberry Pi 1 B+ for just 4$. For those who don’t know it’s a credit card sized computer capable of running linux. It is powered by a ARM processor and has 512MB of RAM. It also had an ethernet port, HDMI output, 3.5mm audio jack and 4 USB ports. It’s a popular hardware among the electronic hobbyists. I have been thinking for quite some time to work on an OS…

The Highly Awaited Japan Trip

I finally decide to just post this draft as is. This trip was undertaken 2019, one of my last before covid stuck. I have been procrastinating on working with this particular blog post for god nows how long. After starting a job it has become harder to find time to work on blogging. I guess I will just put it out in the dilapidated state and get over with it. Let’s go back to 2019. I finally…

Introduction to Wireless Physical Layer

Recently I started working on the physical layer of 5G NR. And whenever any of my friends asked me about my work, I always ended giving them a primer on wireless communication before I could start talking about my work. And hence this blog to generate awareness about the area that I have been working on for the past few months. Let’s start from the beginning. Physical Layer The physical layer (the…

Manually binding Neutron port

In an OpenStack cluster, the nova service is responsible for binding the port to the host and attaching it to the virtual machine. We will only look at openvswitch driver in this post. This post is meant for a very niche section of people and I won’t be bothering with covering the background required to understand this post as it will take an entire post series to do so. First, we need to create a…

A Guide to tax efiling for NRIs

I decided to self file the Income-tax returns to better understand the process, for this year. I was able to find a decent amount of information for the same concerning NRIs but almost no resources on how to do the filing itself. So I decided to write a guide myself to document my findings. This guide focuses on a specific section of Non-Resident Indians (NRIs from here on) which do not own a…

The Second ISCA Experience

This post is about my recent trip to Phoenix, Arizona for presenting my work titled “Sangam: A Multi-component Core Cache Prefetcher” at The 3 rd Data Prefetching Championship held in conjunction with ISCA 2019. This year ISCA was held at the same place with a bunch of other conferences as part FCRC. Data Prefetching Data prefetching is a well researched problem which has attracted a lot of…

Installing iTunes on Linux

After struggling with it for about a month, I was finally able to get iTunes working on my Linux system. There are a lot of tutorials explaining how to install iTunes with wine but none of them mention any specific version of wine and iTunes that work successfull; hence I am writing one myself. But before we start here is a screenshot to cheer you up. The basic installation First, install wine in…

VideoCast: Update

The initial project plan went through a total makeover when I found some new things in my research. The Smart View SDK being the most prominent finding. The Smart View SDK allows us to broadcast content from the mobile app to the Smart TV without requiring a software at the television end. It allows us to play files that are present in the phone as well as stream videos from the web. It was ideal…

VideoCast: Starting a new Project

The Project For TDLR people; I plan on creating a casting app for samsung TV and my android phone. The android app will allow me to send a video link to my TV app which will then stream the video. For the rest, please continue with the article. A little background After moving to South Korea, I wanted to learn something new and work on a side project which is on the userspace side. I also wanted…

My GSoC Journey/Dealing with GSoC failure

The GSoC season is about to begin and here is a post reminiscing my memories of GSoC. Might also be a good read for someone who has failed a GSoC. My experience with GSoC is a classic example of how things eventually work out in the end if you keep trying. Each year Google sponsors students to work on open source projects during their summer vacations. The students are paid for their work as part…

Revamping the Blog

The Old Site The Theme Change From the starting of my blog, I have been using the Hyde theme. But recently I have felt that the sidebar was not doing any good to the reading experience of the blog and hence decided to change to a theme without sidebar. I went through a lot of themes listed in Jekyll Themes and finally ended up selecting Lanyon which can appropriately be called the cousin of my…

Installation guide for Antergos

Antergos is a distro based on Arch Linux. In this post, I will share my experience of installing Antergos with some of the problems that I faced and their solutions. I have been using fedora with i3 as Desktop Environment (DE) for about 2 years and did not face any errors during that time. But recently my system started hanging a lot. It could have have been some package that I installed or just…

My XDC Experience

As the title suggests this post is about my experience at XDC. XDC stands for X.Org Developer’s Conference and is the annual conference of the Linux graphics stack community which includes a lot of projects, some of them being: kernel DRM module, Mesa, Wayland, and X server. During XDC I presented the work that I did as part of GSoC2018 . This year XDC was hosted by GPUL (Galician Linux User…

GSoC Project Summary

This post will act as the final Work Product for my GSoC project. Christian König mentored me for the project. I will start the post with the initial project abstract and how that converted into the actual project that I worked on. After I will discuss the result of my project followed by a summary of the work that I did during the summer. I will end the post with a short discussion on future work…

A Personal Guide to Linux kernel's Makefile

I have been working on the linux kernel for the past 2 months as part of my GSoC and during that time I had to deal with the Makefile in the Linux kernel. The Makefile has some handy targets which are not easy for a beginner to find. In this post I will talk about some of the targets that I found useful during my work. Here is an incomplete list of targets: The obvious ones : These are the…

GSoC Update: The Debugging Conundrum

At last, I was able to get my code to work!! 😀 😀 😀 In my last update , I covered the plan that I was going to follow to implement dynamic scheduling. In this post, I will talk about the problems that I faced during the implementation and how I solved some of them. Coding the implementation was not all that difficult, and it took me a couple of days to get it done. The major hurdle was getting…

The ISCA Experience

This post is about my recent trip to Los Angeles, USA for presenting my work titled “DFCM++: Augmenting DFCM with Early Update and Data Dependency-driven Value Estimation” at Value Prediction Championship (CVP) held in conjunction with ISCA 2018. In simple words value prediction involves guessing the output of machine level instructions so that the instructions that depend on the output of this…

GSoC Update: The Implementation Ahead

I am back with another update. In this post, I will discuss the implementation plan that we came up with to add dynamic scheduling to GPU scheduler and also some of the initial problems that I faced during the implementation. I will first start by explaining some of the functions before I start talking about my work. As usual, I will assume that you have read the posts that I have written before…

GSoC Update: A Curious Case of Dependency Handling

Dependency handling is the core part of my GSoC project. In this post, I will cover the existing dependency handling that is implemented in DRM scheduler and the one that we are planning to implement for the project. I have already discussed the organization of the DRM scheduler in this post , which is a prerequisite for understanding this post. The below figure summarizes the organization of the…

GSoC Update: Understanding the GPU scheduler

It’s been 3 weeks since I started working on my GSoC project. I am working on the DRM GPU scheduler to improve the load balancing and have more dynamic scheduling of jobs, for more details read this post . This is my first update for the project. I wanted to be more frequent with the updates but I was unable to due to my trip. I had planned on doing bi-weekly updates for the project but this…

My GSoC Project: Improving the GPU scheduler

I’ll be spending my summers with the Xorg community (more specifically dri-devel community) to Improve the GPU scheduler which is part of the Linux DRM subsystem. This post sheds more details on my project and is a somewhat extended version of my GSoC proposal. Introduction Today’s GPUs have various hardware components that perform specific functions. And there are multiple copies of some of these…

Looking forward to the Summer

Today I got the result for my final semester at IIT Kanpur. This ends my coursework at IITK (not necessarily my stay thought :) ). There is a lot to look back on, memories and regrets but let’s walk down this lane some other time. There is a lot to look forward to for the summer. I will be focusing on that for this post. I am looking forward to my visit to US during June. I have to present my…

Google Summer of Code with Xorg

I overjoyed to tell you that I will spend my summers working with the Xorg community as part of Google Summer of Code. I will be working on DRM subsystem of the Linux kernel. I will be mentored by Christian König for this project. I will be working on the GPU scheduler which is part of DRM subsystem. The Abstract for my proposal, which is also available here All the GPU drivers have a scheduler…

Introducing evdev-rs

Today I published my first library on crates.io , evdev-rs. evdev-rs is a wrapper around libevdev in Rust. It provides us the facility to deal with input devices in a safe way. This post will serve as a tutorial to get started with evdev-rs. What is libevdev? libevdev is a wrapper library for evdev devices. it moves the common tasks when dealing with evdev devices into a library and provides a…

Writing bindings in Rust: Part 2

In the last post , we looked at how we can write a crate which allows raw access to C functions. In this post, we will write a safe abstraction for this crate. We will be using a part of evdev-sys as an example to see how to write the wrapper functions. Why do we need a wrapper in the first place? The wrapper is a way of writing a safe abstraction around an unsafe C function which would allow us…

Writing bindings in Rust: Part 1

I started learning rust early December, and the best way to learn a language is to use it. So I started looking for a project in rust and hopefully I was able to find a project which was writing bindings for libevdev in rust. There are a few blogs which talk about bindings but there were certain aspects that this blogs didn’t cover and I had to do some digging myself to get the answers. This aim…

My work with DRI3

The semester got a whole lot busy after my last post. Hence I was not able to write. Now Since the semester is over you can expect some posts. This post describes my work implementing DRI3 helper code for PRIME hardware. I was all set to start implementing DRI3 features for VDPAU state tracker but then I noticed that my hardware i.e. PRIME was not supported in DRI3 helper. So I started working on…

Implementing Bicubic Scaling in TGSI

This post has been pending for some time now. I have been working on VDPAU state tracker for the past 2 months and have implemented luma keying and bicubic scaling and currently working on lanczos scaling. I will be writing about image scaling algorithms and my implementation of bicubic shader in this post. Image Scaling We are given a image at a particular resolution say 300x300 in the form of a…

Updates

It’s been 1.5 months since my last post. I have been busy this whole time also tried working on a post on bicubic scaling, but its going nowhere. You get a hell lot busy once the semester starts. Nevertheless I have been able to take out some time to work on mesa though the progress has been slow. One reason for me being busy was the internship season in the college, I had to prepare for coding…

A beginners guide to TGSI

TGSI stands for Tungsten Graphics Shader Infrastructure. The development of TGSI was started by tungsten graphics and hence the name. So what the heck is TGSI? Let’s find out together. When we write a code and compile it, the compiler converts it into a intermediate representation which is suitable for optimisation before it is translated to machine code. TGSI is a intermediate representation to…

Creating a Video Player with VDPAU

I have been working on VDPAU lately and need a test application to test the changes, so instead of using mplayer I decided to make one of my own. I was not able to find any documentation to do it, although I was able to implement by getting some inspiration(read copying) from mplayer code. I will dicuss about it in this post. For tl;dr people here is the source code for the application. After…

Introduction to VDPAU

I have been working with VDPAU this whole time and have gained a good insight into its working, So here’s a post describing my experience. VDPAU is a API similar to OpenGL. It stands for Video Decode and Presentation API for Unix. And as the name suggests it deals with decoding and processing of video using the hardware. VDPAU allows applications to use acceleration hardware present in the GPU.…

Setting development environment for Mesa

While I was working, I was not able to find a good post regarding development environment for mesa, so I decided to write a post myself. Mesa is written in C for most part and uses git for version control and autotools to build. It will be a familiar environment for most people. Download source code Mesa hosts its mater git repository on freedestop.org . To get a local copy of source code do cd ~…

Introduction to Mesa

I have been working on video post processing on mesa for the past two weeks, So I thought I could also write about it and it might help someone who wants to contribute to mesa. Hence, I will be doing a series of post regarding mesa, linus grahics stack ,video processing and more. This is the first post in a series of posts to come. It will serve as a introduction to mesa and the linux graphics…

Recent Developments

It’s been 2 months since my last post. A lot happened during these 2 months form GSoC rejection to involvement in mesa, not to forget the end-sems in between. So lets start from the begining, I made some more contribution to gnome-maps and libchamplain (a mapping widget library used by gnome-maps) as part of my GSoC proposal. It was fun interacting with developers like Jonas Danielsson, Jiri…

My first contribution to FOSS

I made my first contribution to FOSS to gnome-maps . The feeling that the code you wrote reaches hundreds of thousands of people is great. It makes me feel proud even when I write about it. I am little late for this post as I made my first contribution on 1 March anyways gnome-maps allows you to search for a route from source to destination and you can choose the points via which you want to go.…

Ubuntu to Fedora

Recently I moved from ubuntu 15.10 to fedora 23, which was first time I was trying a new OS which was not based on Debian. Installing fedora was new experience as fedora had a installer which a lot different from the debian based distros. This is very good walk through to install fedora 23 which I followed. After installation the first major difference is gnome desktop environment. The gnome…

Reveal.js

Reveal.js is a javascript framework to create beautiful presentations. It allows us us to create presentations in form of html pages which include a broad range of features. I like the the framework mostly because it allows to create presentation related to web development and also show the excecution of code then and there. Though some of you may feel that it is tedious to create presentation…