RSSAmplifier

Blog

Daniel Perez

personal homepage of Daniel Perez

daniel.perez.shRSS feed ↗10 posts

Latest posts

Getting WiFi to work on a Razer Blade 14 (2022)

I just spent way too much time trying to get Linux to work with the wireless card of the newest Razer Blade 14, so thought that I would briefly document the process. The issue was that the card, a Qualcomm Qtheros QCNFA765, was found using lspci but was clearly not detected by the kernel, i.e. not showing as a network interface in ip a etc. I did try a few kernel versions between 5.10 and 5.18 but…

Bitcoin serialization format

I recently had to parse raw Bitcoin transactions and blocks for a project and struggled to find an easy to implement documentation. I started out by following what was mentioned on the Protocol documentation and the Bitcoin Developer Reference but found that it was not as clear as I hoped and often ended up digging into the Bitcoin core source code to understand how things should be parsed. In…

Using Box on Linux

This is a short post to detail what I found is currently the best way, at least for me, to use Box on Linux. I use Box mostly as a backup for various data, which I access once in a while. Unfortunately, Linux seems to be very low priority for Box and the WebDAV interface has been deprecated , which leaves Linux users in pretty bad shape. For my use case, the best I found for now to access Box is…

Managing user startup applications with systemd

I recently switched to systemd to manage my startup applications, so this is a short post explaining the process. For more details, Arch Linux wiki has a detailed page about using systemd to start user applications. Non-GUI applications For non-GUI applications, the setup is very easy. Creating a .service file in ~/.config/systemd/user and using systemctl to enable the service should be enough.…

Setting up Knowledge repo

I found Knowledge Repo when looking for a simple tool to share Jupyter notebooks and it seemed to fit my needs so I decided to give it a try. At the time of writing this article the project is still in beta and is missing a bit of documentation, so this is a short tutorial of the steps I used to install Knowledge Repo. So you know where we are heading, here are a few characteristics of the…

Profiling OCaml with gprof and jbuilder

I am currently using OCaml for part of my research and ran into more trouble than expected when trying to profile my program. This post details step by step how to compile an OCaml program using dune(jbuilder) to profile the binary using gprof. As an example program to profile, I will use a short code implementing the tak function of dear prof. Takeuchi . (* tak.ml *) let rec tak x y z = if x <= y…

assertRaises in Python

In this blog post, we will cover how assertRaises in unittest.TestCase works and implement a simplified version of it. For the sake of example, let’s say we want to check that next(iter([])) raises a StopIteration error. We will use a very simple Python script to try the code import unittest class SampleTest ( unittest . TestCase ): def test_assert_raises ( self ): pass if __name__ == '__main__' :…

What's coming in Elixir 1.3

I recently gave a talk about Elixir 1.3 in Tokyo, and spoke about the changes, new features, improvements and all the awesome stuff coming in Elixir 1.3. I decided to write this as a blog post, with a little more details, and some links for those who want to check in more details. Here is a short table of contents: Deprecation of imperative assignment with on steroids Calendar datatypes ExUnit new…

Use Atom to edit in Chrome

After GitHub added plenty of shortcuts to edit markdown in the browser, I had some problem editing directly, having all the native Emacs like shortcuts overridden. I decided to use Atom to edit even more or less short comments, but the copy-pasting was becoming a bit superfluous, taking more time than it should. I therefore decided to create a plugin to simplify the process, which I named Atomic…

Run commands only on git update with Ansible

I have recently switched my automation workflow from Chef to Ansible, and just bumped into a simple issue. I wanted to run some commands only when the git repository had been updated, and do nothing if it was already up to date. I did not find anything in the documentation , but after looking a little at the source code, I found out that when using register , myvar.changed was set to true or false…