RSSAmplifier

Blog

Dhole's blog

Recent content on Dhole's blog

dhole.github.ioRSS feed ↗29 posts

Latest posts

Collapse Ready Operating Systems - FreeBSD

This post belongs to the Collapse Ready Operating System series. See this
post for an introduction. 
 Prelude 
 My last post in this series was more than two years ago. When I started the
series I had an initial plan to test the three most well known BSD operating
systems, and after publishing articles for NetBSD and OpenBSD I soon
started doing my homework with FreeBSD;…

First impressions on Hare language

Introduction 
 Hare is a new programming language that was announced
in 2022 and which was
started by Drew DeValut . It’s currently being
developed openly by a community of contributors. Here’s a description of the
language from the official website: 
 
 Hare is a systems programming language designed to be simple, stable, and
robust. Hare uses a static…

Collapse Ready Operating Systems - NetBSD

This is a blog post in the Collapse Ready Operating System series. Read this
post for an introduction. 
 NetBSD 
 This time I have chosen NetBSD . I have used NetBSD previously in my Raspberry Pi (the first version). I had a lot of fun building packages for ARM from the raspberry pi and trying them out (and finding bugs as well). I remember fondly the regular status reports made by Jun…

Collapse Ready Operating Systems - OpenBSD

This is a blog post in the Collapse Ready Operating System series. Read this
post for an introduction. 
 OpenBSD 
 The OS analyzed in this post is OpenBSD . I’ve
tried OpenBSD a few times in the past: once as a personal web server on an old
PC, and then as a desktop in a laptop as a secondary system. That was a few
years ago. My memories from it are that the system…

Collapse Ready Operating Systems - Intro

Introduction 
 Nowadays we live in a hyperconnected World that relies heavily on Internet
connection for day to day tasks in all levels. I’m not very happy with this
relience of assuming Internet access 24h for everything, as I think it
disempowers the user. 
 For example, whereas people before used to buy and own media, now they buy a
license to stream such media…

CHIP-8 emulator in Rust: Embedded port. Part 2

This post is the continuation of CHIP-8 emulator in Rust. Part
1 , please check it if you haven’t already! 
 In this second part I will explain how I ported the CHIP-8 emulator I built in
Rust to an embedded ARM microcontroller. I will explain the hardware I chose
to build this portable CHIP-8 device, the Rust libraries I used and I’ll give
an overview of how the…

NFS server over WireGuard in Alpine

I have recently built a new storage server at home consisting of 6x2TB hard
drives configured as RAID-Z2 with ZFS. For the operating system I have chosen
Alpine Linux, which is a distribution that I really like for its
lightweightness and its simplicity. 
 Previously I had a storage server running Debian which I was sharing via sshfs.
sshfs is really easy to set up, as you just…

CHIP-8 emulator in Rust. Part 1

I have been interested in the topic of emulation for many years; in particular,
game console emulation. I started playing games under emulators when I was a
teenager and I was fascinated by how a piece of software would let me play a
game in a completely different architecture than the original one. 
 I’ve you’ve ever been interested in learning about emulation, maybe…

Thinkpad Helix 2 with Linux

Preface 
 Recently I’ve bought a second hand Thinkpad Helix 2nd Gen with the intention of
using it mainly as a tablet to read PDF documents and comics (although I may
use it for Internet browsing and occasional development). I like running free
software on my computers and so I decided to use GNU/Linux with this
tablet/laptop. Here I will explain all the issues I…

Pulseaudio for multi-user Linux

My setup 
 For some time I’ve been using several unix users for my daily work in my
desktop computer. After trying out Qubes OS for some time (an OS that achieves
security by compartmentalization: different kinds of activites are performed in
a different VM, isolating the data of each activity from each other), I came
back to GNU/Linux and realized that there’s…

Programming Game Boy Chinese cartridges with an STM32F4

Introduction 
 For the past few years I have been interested in the Game Boy: I’ve written an emulator in C (without sound) , I developed a physical cartridge “emulator” using a microcontroller , and most recently I’ve built a project to interface my PC with the Game Link . I’ve also played a bit with Game Boy programming. 
 In the past I considered buying a…

Printing on the Game Boy Printer using an STM32F4

In this third and final part of the project about the Game Boy serial communication I will explain how I managed to print on the Game Boy Printer from my PC using an STM32F4 as the bridge between the two. The encoding of the image into Game Boy tiles will happen on the PC, which will send it to the STM32F4 following the packet format of the Game Boy Printer. The STM32F4 will only forward the data…

Virtual Game Boy Printer with an STM32F4

In this second part of the project about interfacing the Game Boy serial communication with an embedded development board I will explain how I built a Virtual Game Boy Printer. The embedded board will be simulating a real Game Boy Printer, replying to the Game Boy following the protocol used by the Game Boy Printer so that the Game Boy sends the entire data meant to be print. This data will then…

Sniffing Game Boy serial traffic with an STM32F4

In these series of blog posts I will write about the Game Boy serial communication protocol and how to interact with it by using an embedded development board. The code for the development board will be written in C, and the code running on the computer will be written in Rust . 
 The first part will consist on understanding the Game Boy serial communication protocol, becoming familiar with…

Enabling LUKS on the PocketCHIP

Introduction 
 I’ve recently acquired a handheld ARM computer with screen and keyboard called
the PocketCHIP . The main board on the
device is called the CHIP , which is a tiny
ARM computer capable of running Linux that is sold for $9. 
 After flashing it with the CHIP 4.4 GUI OS, a flavor of Debian released by
Next Thing Co (the company that made the PocketCHIP) I…

Alpine Linux: Upgrading on Raspberry Pi

This post describes the upgrade procedure I follow to upgrade my Raspberry Pi
Alpine Linux installation. Alpine Linux on the Raspberry Pi runs from ramfs
and thus the upgrading is not straightforward. Most of the details are taken
from the Alpine Linux
Wiki .
I’m not sure if Alpine Linux does any verification on the new downloaded
release, so I’m doing that…

rdiff-backup-1.2.8 in Alpine

Introduction 
 A few days ago I wanted to start doing incremental backups from my laptop to my
Raspberry Pi 2 running Alpine Linux. I’ve had used rdiff-backup for some years
now and I’m really happy with it. rdiff-backup is similar to rsync, in the
sense that lets you synchronize folders over the network, but it has two added
nice features: when synchronizing, only…

Raspberry Pi: git server (cgit with lighttpd)

Introduction 
 In this post I will explain what’s required to set up a git server. We’ll use
 cgit to provide a web interface and also allow
cloning/pulling through HTTP. ssh will also be available for cloning/pulling
and pushing. 
 We’ll setup two groups of repositories: a public and a private one. 
 Cgit 
 First of all, we’ll create a git user…

Raspberry Pi: setting up alpine, lighttpd and letsencrypt

Introduction 
 In this post I will explain how to set up Alpine
Linux for the RPi, with the necessary configuration
for the RPi to power a USB hard drive, how to install lighttpd and configure
automatic renewal of TLS certificates with lestencrypt. 
 Alpine Linux 
 Alpine Linux can be installed on te RPi following the wiki
guide . 
 After instalation, we add a new…

Raspberry Pi 2 I/O benchmarks

Introduction 
 I’m currently setting up a Raspberry Pi 2 as a home server for various services.
I’m gonna write a series of blog posts about how I configured my Raspberry Pi to
achieve my goals, which will be mainly setting up a git server and a backup
server. 
 Choice of distribution 
 I discovered Alpine Linux while searching
lightweight distributions for…

No more unencrypted emails to gpg contacts

I have been using mutt for about half a year already and I’m very happy with it.
The previous email client I used was Thunderbird (with the Enigmail extension to
handle GPG). There were two main reasons that made me switch. 
 The first one was that I often would like to check my email while I’m offline,
and it seems that Thunderbird is not very good at this. Sometimes…

Reproducible builds on Debian for GSoC 2015, 1st update

This is the second blog post I’m writing about my experiences contributing to Debian for Google Summer of Code 2015 (check my first post ) 
 Status update 
 First month 
 It’s been two months and a few days since the GSoC started. During the first month I worked on fixing specific packages, mainly concerning issues with timestamps, which is a very common source of…

Reproducible builds on Debian for GSoC 2015

This is the first blog post of a series I will be writing about my experiences contributing to Debian for Google Summer of Code 2015. 
 A bit about myself 
 I’m a Spanish student doing a master’s in Computer Science in Barcelona. I graduated on Electrical Engineering (we call it Telecommunications here). I’ve always been interested in computing and programming and I have…

Full disk encryption on Samsung Chromebook with Arch Linux

In this post I will explain the procedure I followed to have an Arch Linux
install on a Samsung Chromebook 1 (XE303C12-A01US) with full disk encryption
using kernel 3.8. 
 Kernel compilation and preparing SD card 
 Install dependencies 
 Install the necessary depdendencies (In my case I was running ubuntu). Mainly
you need the tools for crosscompiling the kernel, configure…

Booting the GameBoy with a custom logo

With the cartridge emulator implemented on an STM32F4 we can do some cool stuff.
For example, we can make the GameBoy boot with our own custom logo! 
 Bootstrap ROM 
 When the GameBoy boots, an intenral Bootstrap ROM is mapped to the beginning of the
memory and execution begins. This bios is in charge of initializing the hardware
as well as scrolling the Nintendo logo and…

Emulating a GameBoy Cartridge with an STM32F4. Part 2

This post is a continuation of Emulating a GameBoy Cartridge with an STM32F4. Part 1 
 We have analyzed the memory bus of the GameBoy in order to obtain the timing
information of the different signals involved in the read and write operations
happening on the cartridge. We will now proceed to develop a system to emulate
the behaviour of the cartridge with the STM32F4. 
 About…

Emulating a GameBoy Cartridge with an STM32F4. Part 1

Introduction 
 The following project consists on emulating the functionality of a GameBoy
cartridge with the development board STM32F4. The system is fully functional
and is able to emulate real cartridges (as well as homebrew games) of the type
ROM Only and MBC1 (Memory Block Controller 1). In this post I will explain
how I managed to achieve this. 
 Motivation 
…

Welcome

I had been planning on creating a blog to write about the stuff I do on my free time for a while.
In this blog I plan to write about the projects I develop as well as talking about interesting things
I lean about technology, hardware, security, embedded systems, programming languages and more. 
 My first thought was to use a WordPress hosted at wordpress.com, but I didn’t want…

About


 
 
 
 
 
 
 


 I’m a Computer Science student from Barcelona with interests in embedded devices,
hardware hacking, security and cryptography among others. 
 I’ve been using Linux for nearly 10 years and tried some *BSD along the way. The
main programming languages I use are C, python and lately Go. I enjoy learning
about new…