These are my self-amusing posts written in Gemini text/gemini format. Rendered to HTML. You can find the same content on my Gemini capsule gemini://gemini.clehaxze.tw[what is gemini://?]. In fact I recommend viewing through a Gemini browser (like this one) for the best experience. An Atom feed is also avaliable.

Latest Posts

2023-08-28: Adding a fan to my OrangePi 5+

I wasn't expecting this to be so hard. I ordered an RK3588 based Orange Pi 5+ a while back as a development platform. It's great. A good combination CPU and GPU power. As well as a very competitive price to performance ratio. I also bought a large heat sink for it. However it kept hitting thermal l...

2023-08-26: Benchmarking RK3588 NPU matrix multiplication performance

My goal with my RK3588 dev board is to eventually run a large language model on it. For now, it seems the RWKV model is the easiest to get running. At least I don't need to somehow get MultiHeadAttention to work on the NPU. However, during experimenting with rwkv.cpp, which uses pure CPU for infere...

2023-08-16: Failed attempt at free multilingual TTS by abusing IPA

My recent job have been developing a very fast TTS system for our internal use. I can't share too many details about it because NDA. But I do want to share some findings while messing with our system. - My boss is ok with me sharing these findings. We are looking to open source it soon anyway. It's...

2023-08-03: How incredibly easy it is to break (weak) passwords

Just a few minutes ago, my fried sent me an encrypted ZIP file and says "This ZIP file contains some artwork, but the password is distributed in a past, live event. And it's the birthday of the artist. 8 digits. Can you crack it?" Apprantly he can't find the password. "Sure" I said. I've learned in...

2023-07-23: New Public Service: Publically Accessible GNUnet Hostlist

Quick announcement. I'm running a publically accessible GNUnet hostlist at `http://clehaxze.tw:9876/` due to me failing to bootstrap 3 new nodes today. I was experimenting and this issue really annoyed me. I don't know what happened with the default one. `https://v15.gnunet.org/hostlist` is down. B...

2023-07-15: Inexhaustive List of AI Models that works on RK3588

Armed with experience converting scikit-learn to RKNN. I spent the past few days trying to get Waifu2x (Anime image upscaling) and endup defeated. Either RKNN got stuck submitting commands or I get the mysterious message `W RKNN: [07:11:36.064] Output(Deconvolution2DFunction_0): size_with_stride la...

2023-07-13: Rockchip NPUs and deploying scikit-learn models on them

My first experience with my RK3588 board was mildly infuriating. I bought my Orange Pi 5Plus for it's quite capable NPU. However the low level matrix multiplication API segfaults every single time. After a long period of headbanging I decided to dump that approach for now and the barely working rkn...

2023-06-27: Backups of RK3588 TRM and Datasheet (on the decentralized web)

My plan of running language models on my RK3588 board failed because the official SDK segfaults with the simplest of examples. Nothing I can do until Rockchip fixes it. In the mean time, me and my friend cam across the RK3588(S) Technical Reference Manuals on GitHub (not linked in the hope that Roc...

2023-06-22: Empowering the masses to wreak havoc (my view and wish for Large Language Models)

I've been asking myself lately. Epically after Large Language Models becoming the new hot girl in the town. - Thing are, mostly, owned and propelled by large mega-corps. The situation of the field of AI is even worse. So far only Facebook, Google and Microsoft have the capacity to build new LLMs d...

2023-06-17: Setting up OpenCL on RK3588 using libmali

I finally got the OrangePi 5 Plus board I ordered. I was going to mess around with the NPU with the rknn2 SDK. However, their matrix multiplcation is broken, segfaulting, and the core SDK is closed source. Nothing I can do becides reporting a bug and wait for them to fix it. In the mean time I deci...

2023-06-11: Introduction to GNUnet GNS

So, recently I saw some old-ish discussion on hacker news anout GNS, and mostly the misunderstanding on how it work. So this is my attempt to explain it. Espically to developers whom have not dabbled into the world of decentralized systems. In this post, I'll assume that you are already GNS is...

2023-06-10: Writing my HTML minimizer in half a day

This Saturday, I got too bored and decided do some long overdue housekeeping on my website. I wanted to minify the HTML files, one because this website runs on Drogon's template engine, which is just like PHP and won't collapse whitespace and indentations, and two because I dislike that the HTML I'...

2023-06-10: Rambly rant about my Apple fan boy coworker and tech illiteracy

So, I had dinner with other people in my company today (as of when I started this post). One of them are absolute Apple fan boys. He knows that I piratically a VR resident. And the topic of Apple's new Vision Pro headset showed up. I expressed my view that I don't like it and it does nothing what c...

2023-05-28: One thing the GNUnet DHT does right - Typed records

After spending days archicturing and building my own decentralized public key infrastructure. I find myself consistantly thinking about how attackers can DoS my system or how the trust model is flawed. Then I come up with a solution and realize GNUnet already has something like it built in. Typed ...

2023-05-26: Subsystems in GNUnet and using them in GNUnet++

I'm back working on GNUnet++ after months of not knowing what to do with it! Now I've a fun project that I'm working on. In the mean time I have fixed and added a lot of things to GNUnet++. I think it's a good time to write a blog post about what each GNUnet subsystem does and how to use it in GNU...

2023-05-09: Converting repeated callbacks into C++20 coroutines

C++20 introduced coroutines. Which drastically simplifies the implementation of asynchronous code. However, converting existing callback-based code to coroutines is not always easy. The simple case, where the callback is guarenteed to be called only once is covered by the fillowing question on Sta...

2023-05-04: Stop Comparing Rust to C and C-with-classes!

Quick rant. **Stop comparing Rust to C!** I saw too much comparsion on the internet about why C is unsafe and Rust is safe. True. But they are NOT even the same class of language. C is minimal. The compiler is easiy to write. And nicknamed "portible assembler" for how low level it is. Rust on the...

2023-04-24: Armchair Philosopher on Definition of Creativity

Recently, I got into a debate with a friend of mine about whether AI art is.. art and whether is should be allowed in commercial projects. He is on the position that it is not as it can only mix and replicate existing works. Thus not art. While I'm on the team calming that it can be and we don't kn...

2023-04-14: Bypassing Indonesia's Internet Censorship

Short post. I've traveled to Indonesia for a few weeks and I've found sites like Reddit is blocked. Although I come prepared with my own WireGuard VPN to bypass it. It's still annoyning. Mostly because the added latency. First I tried some low skill bypasses After messing around. I find that Blz...

2023-04-08: Trantor's new TLS backend, CSPRNG and improvements

I've spent a few months rewriting Trantor's TLS infrastructure. The old one was purely based on OpenSSL and messy. It's hacked together and not very well documented. Over time we added more and more features to it. And it's getting harder and harder to even understand what's going on. This and my ...

2023-03-30: Install The KDE Konsole terminal emulator on macOS

My work machine is a 2019 MBP. The machine is nice and UI,, ok, I still like Gnome a lot better. But I miss a good and fast terminal emulator. To be specific, I want the following features For the longest of time, I've tried and used several options. Non of them are as good as Konsole. I've trie...

2023-03-25: Oddball Technologies

One of my core principle to IT: Try to use different stuff. Don't be afraid of the _weird_ things. In a lot of cases, the weirdness is your friend. Usually the weird is a deisgn or feature to solve a need that is not met by the mainstream. Even if not, there's a lot to learn from the weird. This ...

2023-03-19: FYI: Use X509 v3 certificates for Gemini capsules to comply with RFC 8446

I've been working on upgrading TLS code for TLGS. One of the improvments is that besides OpenSSL, Botan can also be used as the underlying TLS library. In the process I discovered one thing. According to RFC, a TLS 1.3 server must send X509 v3 certificates unless explicitly negotiated. And Bota...

2023-03-18: Setting up vits-models to generate Waifu voices on demand

I got my hands on LLaMA and I'm trying to build an automatic translation bot and throw it into VRChat for assist in language exchange (credit to my friend Pichu for the idea). Thinking about it. Why not make the voice as quite as possible? It fits the weeb colture there. The standard TTS tools, e...

2023-03-09: Hypocrisy of enterprise IT security

Quick rant. In work I've been debuging issue with some customers. Recently we updated how our virtual camera works on MacOS. Before we use the DAL interface and now switched to the more secure system extension. DAL works more like how Windows implements virtual camera using Direct Show. The system ...

2023-02-26: Additional features decentralized services needs - practical web3 ep.2

I've been thinking more about what can I build with GNUnet. To be particular I started by thinking about how I can replicate existing service on GNUnet. See my previous post about properties I think a decentralized service needs in order to be useful and somewhat robust. After more mind storming. ...

2023-02-19: Running SteamVR and VRChat on Arch Linux (2023 Feb guide)

I'vm a heavy VRChat player. I've friends on there. I can talk about supporting CVR and the entire EAC debacle, but I'm not here to talk about that - I use Linux as my daily OS. It respects my privacy, I can do full customization, I just got VRChat and SteamVR to work at a usable state on my Arch...

2023-02-08: Using my capsule as guinea pig (upgrading Trantor TLS infrastructure)

A while ago, I announced my plan to rewrite how Trantor does TLS. I finally found the motivation to do it. The plan was quite in the right direction and I'm at the point where I can start testing the new code. To test in a real world environment, I think it's easier and better to use my capsule as...

2023-01-28: Validate email address using Regex in C++

Qucik one. Something I want to write down before I forget. Validating email addresses have been a constant pain for software developers. The RFC spec for a valid email is complex. No, it's not simply `^\S+@\S+\.\S+$`. For example. The spec prohibits email addresses on TLD. Thus `bob@example` is no...

2023-01-27: GNUnet++ Jenuary update - multi-threading primitives and toy projects

It's mostly bugfixes and extending GNUnet++ to handel multithreaded enviroments. Last month I started working on peerinfo support. But ended up focusing on other stuff. GNUnet in of itself is single threaded and runs on it's own event loop. But to support more complex applications, GNUnet++ nee...

Pages:
Author's profile. Photo taken in VRChat by my friend Tast+
Martin Chang
Systems software, HPC, GPGPU and AI. I mostly write stupid C++ code. Sometimes does AI research. Chronic VRChat addict

I run TLGS, a major search engine on Gemini. Used by Buran by default.


  • marty1885 \at protonmail.com
  • Matrix: @clehaxze:matrix.clehaxze.tw
  • Jami: a72b62ac04a958ca57739247aa1ed4fe0d11d2df