If you have a domain name, you possess (ok, rent) your very own little corner of the internet. Congrats! When you now publish a Go module as github.com/jo-m/mymodule, you hand over part of that control. The module path is a permanent identifier, baked into every go.mod file that imports it. That would now be tied to GitHub, a company that is actually Microsoft, which can change its terms, ban you,…
As a software engineer with a bit of job-induced paranoia, I love the idea of escaping the claws of big tech via self-hosting. In recent years, a plethora of amazing free and open source projects have emerged, providing alternatives to everything from Dropbox and iTunes to Android Home. However, I don’t want to manage yet another server in the cloud, I already do that for work. Managed…
When I first heard of the Got-it Bluetooth tags, I just had to order a preview set. Those are active Bluetooth Low Energy beacons, embedded into a thin and flexible sticker, including battery. The proposed use case is asset tracking in commercial settings. They are 28mm x 76mm x 0.75mm Battery life is supposed to be one year Waterproof, flexible A preview set containing 10 stickers costs 99$, they…
When I went to the US last year on a J-1 visa, I had to figure out how to buy a car. I had never owned a car before, and I did not have a US driver license. If you are thinking about buying a cheap car for a road trip in the US to save on rental costs, it is probably not worth it: buying a cheap beater car exposes you to the risk of it breaking down, which will then cost you a lot of money to fix…
In 2016, I finally learned OpenGL. So I decided to ditch THREE.js and rewrite my old Waterfall-Plot project in pure WebGL. The only external Javascript library used is gl-matrix for matrix transformations. All the line offsetting (z-direction in time, y-direction for frequency magnitude) is now done directly in the shader. This makes the animation much smoother, as no THREE.js points/lines have to…
Disclaimer: for this to work, you must be an ETH Zurich affiliated person and own a nethz-account . So, you wanna play around a bit with machine learning. Or run a crazy particle physics simulation. But you only have a lame Macbook. Your gaming rig would do the job, but its fans are spinning so loud your neighbors complained. Solution? Just use ETHs Euler general purpose super computer ! Even…
For a long time, I wanted to try out WebGL. After some initial research, it became clear that it is not that simple to use WebGL without having prior experience with OpenGL. Thats why I settled with THREE.js . This library abstracts away all the WebGL things and gives you a nice 3D interface. I like the Joy Division Unknown Pleasures album cover. You can find something about its history here . The…
I had a Raspberry Pi and an old analog volt meter lying around. To finally do something “useful” with it, it was decided that our CoWorking Space needs a WiFi detector. Functionality in short : It captures WiFi packets from the air, and counts them. This then gets mapped to a scale from 0 to 10, and displayed on a rainbow-colored LED chart. Hardware # This runs on a Raspberry Pi Model…
Telegram is an (encrypted) messenger service which also offers an API. This makes it ideal for bots and automation. Here it is shown hot to set up telegram-cli on your Pi. Get a shell on your RasPi, I prefer to do this over SSH. You can also plug your RasPi to a screen and ann a keyboard. Build # sudo apt-get install -y git sudo apt-get install -y libreadline-dev libconfig-dev libssl-dev lua5.2…
Intro # You have probably heard of the song [Equation] by Aphex Twin. It is known for having a scary face hidden in its frequency spectrum . So I asked myself, how can I do this by myself? It is possible using a bit of matlab and basic knowledge in signal processing. I choose a short mp3 track to modify: Cartoon (Interlude) by French House Artist SabastiAn. This is the image we’ll try to…
When working with scientific data, NumPy, SciPy etc. are often used. They can be quite a pain in the ass to setup: many dependencies, some modules have to be compiled (which sometimes works…), so often PIP does not work out of the box. Also, the Apple Developer Command Line Tools have to be installed for this to use the compilers. The very simple solution to this is Anaconda , a Python…
Recently, I migrated Apovedas Gitlab installation from using MySQL as database server to PostgreSQL. Thats because until now, I have used the manual gitlab setup guides, and I now want to change this to use the automatic setup/provided packages, which all use postgres. Install Postgres and create the database # ( Taken from the Gitlab installation manual ): sudo apt-get install -y postgresql…
Software Engineering Principles # Start simple and iterate, you won’t get it right the first time anyways. Make it fail gracefully. There can never be enough logging, debug statements, asserts. Measure before you optimize. Make it hard to do the wrong thing. Ugly hacks keep the world spinning. Limitations are as important as features. Magic is bad. Hyrums Law is very real and needs to be…
Bugs and debugging # A list of bugs encountered in the wild. Not as much fun as those , though. 🐞 = bug cause Logical Errors # Python program got stuck where it shouldn’t — 🐞 Confused threading.Thread.start() with threading.Thread.run() In C++ code, used << instead of <<= in an assignment, which caused a bitmask to be all 0, leading to a bunch of numbers being 0 as well……
Shell Snippets SSH # SSH Keygen # ssh-keygen -o -a 100 -t ed25519 SSH Tunnel # ssh -N -L2001:localhost:80 somemachine Now you can access the website by going to http://localhost:2001/ SSH Proxy # ssh -q -N -D 5001 user@host # e.g. ssh -q -N -D 5001 pi4 You can now set localhost:5001 as a socks proxy in Firefox and it will appear as connecting from host . SSH port forwarding # ssh -R…
Quotes Some of my favorite serious and non-serious quotes. Science & Engineering # Analysis without numbers is only an opinion. — David Akin Modelle sind auch nur Meinungen, die sich als Mathematik verkleided haben. — Mark-Use Kling, QualityLand “Revolution” has many definitions. From the looks of this, I’d say “going around in circles” comes closest to applying… —…
About Hi! My name is Jonathan, I live in Zürich, Switzerland. My interests are software engineering, computer vision, and the interfaces between computing and the physical world. I also have lots of experience in networking, web, databases and devops. Technologies # Bits and pieces of technology and tools I use or have used, sorted alphabetically: afl++ (Fuzzer) Android AngularJS Ansible Arch…