Posts
Here be blog posts
Diffie-Hellman shared value generation in J
I wanted to try out how to derive p
and g
used in
Finite Field Diffie-Hellman.
How to fix mDNS on macOS Sequoia
Upgrading to macOS Sequoia broke mDNS for me.
My M2 MacBook stopped responding when pinging its host name lithium.local
.
The Anki sync server
running on it became unreachable. It didn’t matter whether I attempted to
resolve lithium.local
from another machine or on that machine itself.
Searching the system log for clues, or changing mDNS related configurations did not help. Turning it off and on again didn’t help either.
Searching system logs for hints turned out to be a rabbit hole. On Debian or
NixOS, I can always just search the logs in /var/log
or journalctl
for
hints. Recent macOS versions are really good at
masking useful debug information
in logs. A few guides,
like this one here,
tell you to add a configuration profile to unmask log information: 5 minutes
later and you are in a Apple Configurator rabbit hole.
Information Security Management Examination
How I passed IPA SG examination this year this yearArcane but Useful Computer Virus Guideline
Learn what the Japanese government thought about computer viruses back thenTry the Pomodoro Technique with Pomoglorbo
Try doing your Pomodoros with this CLI based timer written in PythonMore systemd networking fun
What was once an elegant machine built up by the wisdom of thousands of volunteers is now a rusty bucket with holes; my Debian installation.
As I have recently fixed my interface configuration I thought I was done solving my networking problems.
On my local network, I rely on mDNS a lot, for both macOS as well as Debian. To
ssh
, mosh
, and sync git annexes between computers, I use .local
addresses
extensively.
The one where I leave it to systemd-networkd
I like keeping my Debian 12 installation bare bones. Sometimes bare bones means accidentally disabling your only link to the outside world.
Finding my first bug in Hugo
Here are my notes on diagnosing a bug in Hugo. Hugo is the static site generator I use for this website.
fish and bash Variable Expansion
Some differences in how bash and fish expand variablesAdventures in Japanese Digital Transformation
This is about having a non-Japanese name living as an immigrant in Japan and trying to get a SIM card with UQ Mobile.
Using tmux with the X clipboard
Sometimes I would like to paste shell command invocations from my browser into my terminal and use bracketed pasting, which is pasting without running the command directly.
Since I am running tmux (tmux 3.1c) inside of xterm, in an i3 and X.Org desktop environment, I also want to use the X clipboard. The X clipboard is used when copying text from the browser as well.
Pasting things into tmux
The X clipboard can be accessed through many different commands, such as xsel
and xclip
. I decided to use xsel
, since it appears to be shipped with
Debian 11 by default. Other than the clipboard, X also maintains two more
selections called primary and secondary.
ADS-B Aircraft Tracking at Home
Here’s a quick write up on how I was able to use my
RTL-SDR V3 receiver to see airplanes flying right
over me using the dump1090
app, which FlightAware is maintaining in its
current version.
Notes on: Marx, A Very Short Introduction
Today, I have finished reading Marx: A Very Short Introduction and have thoroughly enjoyed it. I purchased the 2018 edition, which even mentions hot topics such as the gig economy and its relation to Marx’s critique of capitalism.
Yet, the book falls short of defining capitalism itself as a contrast to communism. The author Peter Singer thoroughly describes Marx’s philosophical background in Hegel and Ludwig Feuerbach. Then, he examines the emergence of historical materialism in Marx’s work. Singer continues explaining Marx’s description and critique of capitalism and outlines what might have been communism under Marx. (while explaining that Marx was sparse on how communism should be implemented) Singer immediately says here that Marx’s predictions about the imminent collapse of capitalism have been wrong.
BIOS Modifications, Proprietary Firmware, and Wi-Fi on my ThinkPad X220
In which I describe how I got an Intel wireless network controller running on DebianThis Time It's Different
With the recent hype around ChatGPT, GPT-4, and large language models in general, communities like Hacker News are breaking out into a this time it’s different doom and gloom.
Useful zsh Shortcuts
macOS Catalina introduced zsh as the default interactive shell. zsh is compatible with Bourne shell (sh) to a large degree and introduces many valuable extensions that make everyday productivity more pleasant. In this post, I list some shortcuts for the zsh line editor (also known as the command prompt) in its default configuration.
Software Development Ergonomics and RSI
Some rather intense keyboard clacking over the past years has resulted in me having to give my hands some time off work.
netlify-cli on macOS Ventura with npm ci
If you’re like me, you love npm ci
. A lot. Until that one fateful day.
Japanese conjugation, from two perspectives
Learning a language is different when learned as a native language or as a foreign language. We take a look at how Japanese as a foreign language (JFL) learners and Japanese as a native language (JNL) speakers learn about Japanese grammar.
Errors in J
For the past month I’ve been using the J programming language to solve Project Euler puzzles. The language makes many of the tasks that otherwise take too long, especially with multidimensional arrays, pleasant to work on.
Updates to my blog
I’ve taken some time to enhance my blog with two useful features:
- SVG images generates are now embedded into HTML
- Automatic PDF conversion for posts
This post shows how I’ve implemented these two features.
Hakyll on Netlify
If you are like me, you are more busy switching between static site generators than actually writing posts for your blog.Happy New Year, from Tokyo
On April 15 2018, I moved to Tokyo, Japan. I suppose that changed a few things in my life.
What Hackathons Teach About Making Products
I like hackathons. Hackathons are competitions that typically run over two or three days and in which the participants—programmers and designers—solve a challenge to win a prize. Typically, there are a few challenges that are all based around some theme—blockchains, sustainability, democracy, and so on.
Updating Smart Contracts
Update from 2025: the cryptocurrency boom of 2017 and 2017 and ICOs were an interesting time, huh? It’s not my cup of tea anymore. At the same time, I’d like for this post to stand here as a historical artifact, and encourage you to spend your time on more worthwhile things instead.
Thank you for reading my disclaimer. Please enjoy the following post:
As time goes on, smart contract requirements change. Often, a feature is added or a bug is found. But, once a smart contract has been deployed on the blockchain, it can’t be upgraded. The entire value proposition of a blockchain is immutability. Yet, in the real world, contracts change all the time. For example, a labor contract changes when new labor laws are introduced. Similarly, there are many circumstances under which smart contracts change as well, such as
Smart Contract Ownership
Update from 2025: the cryptocurrency boom of 2017 and 2017 and ICOs were an interesting time, huh? It’s not my cup of tea anymore. At the same time, I’d like for this post to stand here as a historical artifact, and encourage you to spend your time on more worthwhile things instead.
Thank you for reading my disclaimer. Please enjoy the following post:
When building your smart contract platform—whether on Ethereum or any other blockchain—at some you’ll be faced with the question of ownership. In this article, I explain three different types of smart contract ownership and discuss their advantages and disadvantages.
ERC20 Token Allowances
Update from 2025: the cryptocurrency boom of 2017 and 2017 and ICOs were an interesting time, huh? It’s not my cup of tea anymore. At the same time, I’d like for this post to stand here as a historical artifact, and encourage you to spend your time on more worthwhile things instead.
Thank you for reading my disclaimer. Please enjoy the following post:
Have you ever wondered how your users can spend
ERC20 platform
tokens to buy assets and other tokens from you? Or—in more technical terms— how
to make sure a smart contract executes a particular function as soon as it
receives tokens? This post is all about using ERC20 approve()
and
transferFrom()
to allow your users to do much more than just keep tokens in a
wallet.
3 Useful Python Code Patterns
Over the years I have found out how important it’s to constantly challenge yourself. Coding is craftsmanship. A good craftsman always tries to improve the toolbox they use every day. Code patterns belong in any good toolbox.
Anatomy of a Token Platform
Update from 2025: the cryptocurrency boom of 2017 and 2017 and ICOs were an interesting time, huh? It’s not my cup of tea anymore. At the same time, I’d like for this post to stand here as a historical artifact, and encourage you to spend your time on more worthwhile things instead.
Thank you for reading my disclaimer. Please enjoy the following post:
I had the tremendous privilege of speaking about creating sustainable token platforms at TokenSky 2018 in Seoul, Korea. Not only did I have a great time presenting some of the ideas that I’ve come across, I also encountered a lot of stimulating questions from individuals and companies all interested in enhancing their platform using some kind of blockchain token.
Designing a Better Web Analytics Platform
Few things a business owner has to go through are as scrutinous and unpleasant as a data privacy audit.
In Germany, this might include a state commissioner for data protection putting your company’s data processing and storage practices under the microscope. Luckily, as it turns out, most of the time you’ll already be doing the right thing. Salting user passwords, allowing customers to delete their account, and allowing users to request all personal data that’s being stored about them should be business as usual for most of us.
The Four Phases of a Data Science Project
Imagine this: you’re pitching an idea for an interesting data science problem that you can solve for your client. The client is sold on the idea and wants to immediately know how fast you can get it done, and more importantly, what the project milestones are.
Memory Usage of Pandas Categoricals
A great method to improve memory usage of Pandas DataFrames is by converting
columns with
categorical variables to
use the data type categorical
.
Effective Data Science Notebooks
I believe that being a data scientist is about communication first, and data science second.
transform()ing Like a Pro in Pandas
The Pandas API surprises me with a new feature or method almost every day, and I have yet again discovered an interesting piece of functionality.Aggregating in Pandas
1. Introduction
The other day I caught myself writing one too many df.groupby()
in Pandas,
and thought to myself: isn’t there a way I can simplify and reduce the amount
of df.groupby()
calls?
Scaling from Pandas to Dask
Scaling Pandas DataFrame aggregations can be quite tricky. I have had a very specific problem to solve that involved aggregates on group by expressions.When to use C and when to use Python
I’ve now solved the first 15 Project Euler challenges in C. But then, I’ve hit a road block. Let me explain.
Sharpening my InfoSec tools
After a long time of being complacent with my skills, I thought I should up my InfoSec game. I’ve been mainly busy with figuring out how to enhance app security in my work so far. That means I learned how to
The difference between 大切、大事、重要
Let’s look at how 大切、大事、重要 are different.
A brief UberRUSH overview and tutorial
Uber Rush provides cost-effective on-demand courier services. It allows companies to deliver to local customers faster. Uber tries to make the process as easy as possible by providing an API which can be easily integrated into existing shop solutions and lets customers order cheap and easy shipping.
How to Replace Judges with Robots
The other day, I found out something real fun: not all bike lanes in Germany are mandatory to use. Since bike lanes are dreadful and not at all safe, I wanted to write a handy tool to show me when to use a bicycle lane and when not.
The Python 3 Statistics Module and Salaries
Python 3.4 introduced the statistics
module. It contains helpful methods for
determining basic statistical properties, such as mean, median, and standard
deviation of samples and populations.
Byte Histogram in Python 3
I had this curious thought the other day: what is the byte value distribution
in binary files, such as an executable? Take for example /bin/echo
on OS X
10.11.1.
You should get Packing with Python 3.5
The new Python 3.5 unpacking syntax makes a programmer’s life much easier.
To avoid Robocallers, use Pandas
I found a really neat data source online on unwanted robocalls that the FCC (Federal Communications Commission, a United States government agency) has created and published openly. The data source provides times and dates of unwanted robocalls that consumers have reported to the FCC. We can use this data source to find out all kinds of things, but today we are content with just finding out the time of the day households are most likely to receive robocalls.
Parsing S-expressions with Python 3
This is a simple s-expression parser written in Python 3. It understands symbols and numbers and uses tuples to represent the data internally.
Tuples vs Lists in Python 3
Creating tuples from generator expression is fast.
Filtering Trees
Today we’re going to look at how to filter items in tree data structures using Python 3. We’re going to compare a stateful approach and a functional and recursive approach. Finally, we discuss the advantages of a functional implementation.
Exploring Python dis
As you might know, CPython, the most commonly used implementation of Python, uses a stack based virtual machine to run Python scripts.
Programmatically Accessing Cloud Photo APIs
This is a short evaluation on whether one can perform a series of basic tasks using the APIs that cloud photo services provide.
Using Async Functions in Python 3.5
With the new async syntax in Python 3.5, defining asynchronous functions has become a lot simpler. In this article, you can see a simple example for this new feature.
5 Ways to Filter Items in Python 3
Given a list items
, that contains int
s and None
, produce a list that only
contains the int
values with their order of appearance preserved.
Who To Sue If Skype Spam Kills You
The other day I received this ominous message on Skype from an infected machine: