<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>BitBanged</title><link>https://bitbanged.com/</link><description>Recent content on BitBanged</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>utkarsh@bitbanged.com (Utkarsh Verma)</managingEditor><webMaster>utkarsh@bitbanged.com (Utkarsh Verma)</webMaster><lastBuildDate>Sun, 27 Aug 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://bitbanged.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Final update</title><link>https://bitbanged.com/posts/gsoc/final-update/</link><pubDate>Sun, 27 Aug 2023 00:00:00 +0000</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/gsoc/final-update/</guid><description>As August draws to a close, so does my adventure with GSoC. The aarch64/raspberrypi4b BSP has come a long way and is now primed to make its way into the upstream sources. Let&amp;rsquo;s kick back and take a look at the cool new features and the awesome progress we&amp;rsquo;ve made up to this point.
Project description #At the time of writing, the existing support for Raspberry Pi SBCs in RTEMS is operational, but it lacks essential functionalities such as graphics support, USB, SD card, UART, I2C and SPI functionality, which are necessary for basic user requirements.</description></item><item><title>The mailbox</title><link>https://bitbanged.com/posts/understanding-rpi/the-mailbox/</link><pubDate>Thu, 17 Aug 2023 00:00:00 +0000</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/understanding-rpi/the-mailbox/</guid><description>The Raspberry Pi (RPi) boards differ from conventional embedded systems. Their boot sequence starts with the VideoCore GPU and the ARM CPU boots up only after a couple of stages. This leads to the GPU handling the board&amp;rsquo;s low-level functionality, such as power and clock management. Since the kernel (running on the CPU) requires access to such functionality, the GPU provides a mechanism to the CPU to allow it to talk to the GPU, called the mailbox peripheral.</description></item><item><title>Midterm update</title><link>https://bitbanged.com/posts/gsoc/midterm-update/</link><pubDate>Thu, 13 Jul 2023 00:00:00 +0000</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/gsoc/midterm-update/</guid><description>Midterm evaluation is here and that means an update post is due where I talk about the progress so far. I can gladly say that lots of things are cooking in the raspberrypi4b BSP for RTEMS. I would like to go in detail about the development process and the hurdles faced in another blog post. Hence, this would be a short update post.
GPIO support #The BSP had no GPIO capability to start with.</description></item><item><title>Network booting a Raspberry Pi 4</title><link>https://bitbanged.com/posts/streamlining-rpi-osdev/network-booting-a-raspberry-pi-4/</link><pubDate>Wed, 12 Jul 2023 00:00:00 +0000</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/streamlining-rpi-osdev/network-booting-a-raspberry-pi-4/</guid><description>As highlighted in the previous articles, the flashing process for a Raspberry Pi 4 is far from ideal. It demands manual involvement from the developer and this article aims to fix that. We want as little manual involvement as possible for automation purposes.
Luckily, the firmware on RPi 4 supports network booting which enables it to fetch the boot dependencies from the network, without the need of an SD card. Since the will fetched from a network share, this opens up the possibility of modifying the OS files from the development machine without needing to touch the board.</description></item><item><title>Automating code compilation</title><link>https://bitbanged.com/posts/streamlining-rpi-osdev/automating-code-compilation/</link><pubDate>Tue, 11 Jul 2023 00:00:00 +0000</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/streamlining-rpi-osdev/automating-code-compilation/</guid><description>Imagine yourself working on a C project. You write some code, compile it, and then execute it to find that couple of things need fixing. Now, you make another set of changes and repeat the whole process. Doing this for each iteration is tedious. As highlighted in the previous article, this repeatedly hinders your thought process during development and your time as a developer is better-spent on problem-solving.
Since all developers face this issue, various tools already exist that aim to solve this.</description></item><item><title>Introduction</title><link>https://bitbanged.com/posts/streamlining-rpi-osdev/introduction/</link><pubDate>Tue, 11 Jul 2023 00:00:00 +0000</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/streamlining-rpi-osdev/introduction/</guid><description>Developing an operating system (OS) comes with its own set of challenges. Still, one of the most time-consuming and tedious aspects that Raspberry Pi (RPi) OS developers face is the repetitive flashing process required when iterating upon the code. In this article, we will delve into the problem at hand, explore its impact on development efficiency, and propose a solution to automate the flashing process, allowing developers to focus on problem-solving rather than manual tasks.</description></item><item><title>Hello, world! on a Raspberry Pi 4B with RTEMS</title><link>https://bitbanged.com/posts/gsoc/hello-world-on-a-raspberry-pi-4b-with-rtems/</link><pubDate>Thu, 29 Jun 2023 00:00:00 +0000</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/gsoc/hello-world-on-a-raspberry-pi-4b-with-rtems/</guid><description>In this post, I&amp;rsquo;ll do a basic &amp;ldquo;Hello, world!&amp;rdquo; on the Raspberry Pi 4 Model B over a UART connection using the Real-Time Executive for Multiprocessor Systems (RTEMS) project. This article heavily borrows from RTEMS&amp;rsquo; quick start guide , as I believe in reading the friendly manual, or RTFM in short.
Setting up the environment #To develop applications for RTEMS, we need to install the development toolchain along with the kernel.</description></item><item><title>Introduction</title><link>https://bitbanged.com/posts/gsoc/introduction/</link><pubDate>Fri, 16 Jun 2023 00:00:00 +0000</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/gsoc/introduction/</guid><description>I have some wonderful news. I had proposed a project with RTEMS for Google Summer of Code (GSoC) which got selected. :tada: Which means that this blog post is going to be one of those GSoC&amp;rsquo;s customary blog posts where I summarize my application.
Motivation #In fall 2018, I participated in Google Code-in . It opened me up to the idea behind FOSS and various other things including global collaboration. Fast forward five years to today, and now I am a developer of various open-source projects.</description></item><item><title>Managing project-specific configurations in ZSH</title><link>https://bitbanged.com/posts/managing-project-specific-configurations-in-zsh/</link><pubDate>Wed, 14 Jun 2023 00:00:00 +0000</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/managing-project-specific-configurations-in-zsh/</guid><description>I recently started working on the RTEMS kernel as my GSoC project which requires me to source some shell parameters to configure the workspace accordingly. A pretty common pattern to do this in software development is to create a new shell script which is sourced manually every time the project is worked upon.
The benefits of this approach, as compared to storing everything in the global shell config (~/.zshrc or ~/.</description></item><item><title>CTF, ELF binaries and magic bytes</title><link>https://bitbanged.com/posts/ctf-elf-binaries-and-magic-bytes/</link><pubDate>Mon, 01 Nov 2021 00:00:00 +0000</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/ctf-elf-binaries-and-magic-bytes/</guid><description>I had a spare weekend so I particiapated in a CTF competition conducted by my college&amp;rsquo;s CS club. In the event, one challenge really stood apart and hence I&amp;rsquo;m writing about it.
The challenge #On the website, a &amp;lsquo;PNG&amp;rsquo; file was provided initially, called test.png . This file was the only clue to the flag.
My approach #Given the fact that only a file was provided as a clue, and that it wouldn&amp;rsquo;t open using an image viewer.</description></item><item><title>How to exploit EternalBlue vulnerability</title><link>https://bitbanged.com/posts/how-to-exploit-eternalblue-vulnerability/</link><pubDate>Sun, 13 Sep 2020 00:00:00 +0000</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/how-to-exploit-eternalblue-vulnerability/</guid><description>This article is meant for educational purposes only, gaining unauthorized access to machines is a serious offense and this article, website, or the author, in no way, promote such behavior.
Introduction to EternalBlue #EternalBlue is the name given to a software vulnerability on Microsoft&amp;rsquo;s Windows operating system.
It is an exploit that allows cyber threat actors to remotely execute arbitrary code and gain access to a network by sending specially crafted packets.</description></item><item><title>How to use inline SVGs with Hugo</title><link>https://bitbanged.com/posts/how-to-use-inline-svgs-with-hugo/</link><pubDate>Tue, 14 Jul 2020 00:00:00 +0000</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/how-to-use-inline-svgs-with-hugo/</guid><description>I started developing websites a couple of years back, and I still remember how slow my first website was! The slowness owed to poor asset optimizations on my end. It turns out that delays of a mere second can result in you losing a great deal of traffic . So I started prioritizing performance during web and learnt some tricks of the trade as I kept progressing ahead. One of those tricks, not actually, is to use inline SVGs instead of icon fonts.</description></item><item><title>How to hide i3wm's title bar properly</title><link>https://bitbanged.com/posts/how-to-hide-i3wms-title-bar-properly/</link><pubDate>Mon, 30 Mar 2020 07:49:31 +0530</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/how-to-hide-i3wms-title-bar-properly/</guid><description>If you consider yourself a Linux nerd, chances are you must already be using i3, or at least know of it. For those who don&amp;rsquo;t, i3 , often referred to as i3wm, is a lightweight window tiling manager which has earned its name in the business thanks to its speed, and a nicely done documentation . I&amp;rsquo;ve been using i3 for over a couple of years now, and recently switched to i3-gaps , its fork, for a fundamental reason, it looks better!</description></item><item><title>Remove duplicate elements from lists</title><link>https://bitbanged.com/posts/one-liners/remove-duplicate-elements-from-lists/</link><pubDate>Thu, 26 Mar 2020 07:40:56 +0530</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/one-liners/remove-duplicate-elements-from-lists/</guid><description>Question #With a given list of integers, write a python program to print this list after filtering out the duplicate values.
Input Format: #In one line take the elements of the list L with each element separated by a space.
Output Format: #Print the elements of the modified list in one line with each element separated by a space.
Solution #Cool way (Neat as well): #print(*list(map(int, set(list(input().split()))))) Explanation: #Sets in Python can only store unique elements.</description></item><item><title>Year-wise population graph using Scrapy</title><link>https://bitbanged.com/posts/year-wise-population-graph-using-scrapy/</link><pubDate>Thu, 26 Mar 2020 00:00:00 +0000</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/year-wise-population-graph-using-scrapy/</guid><description>I have always been amazed by phenomena like entropy and chaos. At the same time, I feel pleased while seeing straight lines and symmetric curves. So, I love to find patterns in chaos. Have you heard about the Bell curve ? Almost every natural phenomena if studied a long time follows the Bell curve. I thought, why not plot the world population vs year graph, and see how much it matches.</description></item><item><title>Enter, semiprime numbers</title><link>https://bitbanged.com/posts/one-liners/enter-semiprime-numbers/</link><pubDate>Wed, 25 Mar 2020 19:23:06 +0530</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/one-liners/enter-semiprime-numbers/</guid><description>Question #A semiprime number is an integer which can be expressed as a product of two distinct primes.
For example, $15 = 3 \times 5$ is a semiprime number while $9 = 3 \times 3$ isn&amp;rsquo;t.
Test if a natural number $n$ is semiprime or not.
Solution #If we&amp;rsquo;re planning to approach this problem, we should start from the ground up, i.e. by starting with check if an integer $n$ is prime or not.</description></item><item><title>Behold, the factorial</title><link>https://bitbanged.com/posts/one-liners/behold-the-factorial/</link><pubDate>Wed, 25 Mar 2020 15:34:59 +0530</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/one-liners/behold-the-factorial/</guid><description>Question #Find the factorial $n!$, of a positive integer $n$.
The factorial $n!$ is defined as: $$n! = \prod_{i=1}^{n}{i} = 1 \times 2 \times &amp;hellip;\times n$$
Solution #This is a fairly simple problem which can be trivially solved using loops.
fact = 1 for i in range(1, n+1): fact *= i print(fact) We can approach the same thing using recursion also, by exploiting the fact that $n! = n \times (n-1)!</description></item><item><title>How to install Mongoose OS on ESPer or ESP32</title><link>https://bitbanged.com/posts/how-to-install-mongoose-os-on-esper-or-esp32/</link><pubDate>Sun, 28 Jan 2018 18:59:43 +0530</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/how-to-install-mongoose-os-on-esper-or-esp32/</guid><description>Recently I&amp;rsquo;ve got my hands on the craved-for IoT ESP32, thanks to DFRobot , and have been tinkering with it ever since. I&amp;rsquo;m really amazed by it since it packs both Bluetooth and WiFi in a small yet powerful unit. Since I received the MCU rather than the module, so, to use it, I made myself a breakout board named ESPer(because, why not? :smile:). Feel free to check out its Instructable over here .</description></item><item><title>Testing "django-netjsonconfig"</title><link>https://bitbanged.com/posts/gci/testing-django-netjsonconfig/</link><pubDate>Sun, 14 Jan 2018 08:58:40 +0000</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/gci/testing-django-netjsonconfig/</guid><description>A task came up in Google Code-in which asked me to install the django-netjsonconfig module by OpenWISP . Furthermore, I&amp;rsquo;m also supposed to share the challenges I faced during the set-up process as a sort of feedback. I&amp;rsquo;ll be trying be concise in this post so, without further ado, I&amp;rsquo;m beginning with this post.
Installing &amp;ldquo;django-netjsonconfig&amp;rdquo; #The installation instructions for this this module have been well-documented on its GitHub repository .</description></item><item><title>Google Code-in with OpenWISP</title><link>https://bitbanged.com/posts/gci/google-code-in-with-openwisp/</link><pubDate>Sat, 13 Jan 2018 10:29:23 +0530</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/gci/google-code-in-with-openwisp/</guid><description>Recently I&amp;rsquo;ve been participating in Google Code-in which is Google&amp;rsquo;s initiative to introduce young minds to the concept of FOSS, that is Free or Open-Source Softwares. This post is for sharing my experiences with GCI, as the title suggests. So let&amp;rsquo;s just get on it.
It all began while I was returning from an outing on 5 December, 2017 and was searching the internet for Google Science Fair to check if I could participate in it or not.</description></item><item><title>The DPDT push switch</title><link>https://bitbanged.com/posts/the-dpdt-push-switch/</link><pubDate>Tue, 04 Jul 2017 00:00:00 +0000</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/posts/the-dpdt-push-switch/</guid><description>The DPDT Push Switch(Double Pole Double Throw), more commonly known as 6 Pin Push Switch, is nothing but a combination of two switches placed together in a single unit. Unlike momentary or tactile switches, these switches maintain there switching state, that is ON or OFF until they are triggered again.
For example, if I push it once so that it’s turned on, it will remain in the ON state until I push it again.</description></item><item><title>About</title><link>https://bitbanged.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>utkarsh@bitbanged.com (Utkarsh Verma)</author><guid>https://bitbanged.com/about/</guid><description>BitBanged has been founded by us to further our interests in technology and writing. Being a maker, developer and a geek ourselves, there&amp;rsquo;s a lot of tech-related stuff which we find in our daily lives thanks to the usual tinkering we do out of curiosity. We thought it would be a huge waste to let these findings go unnoticed, or undocumented, since doing so also helps serves as a good reference for the future.</description></item></channel></rss>