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-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...

2023-01-25: First time messing with Sway

It's Chinese New Year (or Lunar New Year), whatever and I have a long vocation with my family, being lazy and whatnot. I decided to today I'm too bored to do anything scrious. I ended up trying to use a tiling window manager for once. Why? Because they feels very cool the first time I saw somone u...

2023-01-14: RE: DNS oddity

Saw JBanana's gemlog yesterday about a weird phenomenon with DNS. Namely in the logs, the IP address 127.0.0.1 got logs as some Brazillian domain name. And the resolver runs in a NAT so no external entity could access it. Thus there mush be some issue somewhere. I hope I can provide some insight...

2023-01-03: Long Rambling about Artist Reaction to AI

Ok, this is going to be an long rambling post. But I feel it has to be done. I see too much artist talking like they know how AI works. They talk about how AI is "stealing" their work, creating what looks like art but without any life in it. I DO agree that the current way we use AI will become a...

2022-12-31: Deisgn of a war time civilian network

If you are watching news, you might see that especially recently, Taiwan and China isn't having a great relation. And unfortunately I live in Taiwan. I'm not going into the politics of it, but I'm going to talk about my plains of keeping my surroundings to have access to important information. Thu...

2022-12-24: Christmas update: GNUnet++

Two weeks ago I announced GNUnet++, my C++ wrapper for common GNUnet functions. It's christmas time and I'm happy to share that I've made progress. The last version of GNUnet++ purely runs on callbacks. Which makes advanced usage cumbersome. Now there's full support for coroutines. This means th...

2022-12-23: Counting accumulated changes in Git

It's almost christmas and our team is tasked with sharing some highlights this year. We thought sharing how much code we've written is a good idea. Sure it's not a good metric for measuring productivity, but good enough for bragging rights. But.. how? `git diff --shortstat` works but I don't exact...

2022-12-18: Introduction to P2P messaging using CADET and GNUnet++

GNUnet is GNU's (yes, that GNU in GNU/Linux) framework for p2p applications. CADET (Confidential Ad-hoc Decentralized End-to-end Transport) is GNUnet's transport layer protocol. Think it like a replacement of TCP/IP. Practically it provides the following some over plain TCP/IP: This post explain...

2022-12-15: Echo Server using gnunet-cadet command

I just want to write down this before I forget. I have been working on CADET support for GNUnet++ in the past few days. CADET is not very well documented. The doxygen and comment in headers are really helpful. But a lot of times in order to understand how to use a function, I have to read the sour...

2022-12-11: Announcing GNUnet++, experimental high level GNUnet C++ wrapper

Today I'm announcing GNUnet++. An experimentable yet sensable C++ wrapper for GNUnet services. You can find my introduction to GNUnet in my older articles [1][2]. TL;DR GNUnet is GNU's version of IPFS and libp2p. It has some pros and cons over `libp2p`. Like built-in trafic covering, firewall bypa...

2022-11-26: Language levels problems with Rust while learning day 1

I started learning Rust recently as on of the other maintainers of Drogon tries and likes it. And C++ have it's own pile of problems. Not saying I don't like C++ anymore just that I'm trying to learn something new. In the process I found a few places I dislike about Rust. Especially from the point...

2022-11-19: Complaining about Trantor's SSL code and my plains to fix it

Just some quick rant about how Trantor does it's SSL stuff. For thoes who don't know. Trantor is a TCP library that I also maintain as a part of the Drogon web application framework. Personally, I think trantor is easier then boost::asio to use, and it's also more efficient. It also comes with int...

2022-11-07: Mental Barrier and Culture of Gemini

I've saw may posts on Cosmos replying to the "Mayan and Gemini priests" post in the past week. And I want to add a points to the discussion. Hopefully not disrupting the flow of the conversation. I mostly want to add points from a (non-tech) user and user support perspective. Also, to avoid furth...

2022-11-05: How GNUnet File Share stores it's data securely, on other people's computers

Took me a while to understand how GNUnet File Share is able to encrypt and store data on the decentralized network. While making nodes unable to decrypt it. The answer is in the GNUnet whitepaper published in 2002. Like any technical documentation, you need some background knowledge to understand ...

2022-11-01: [EO] Jes, mi parolas Esperanton

Malmulte da homoj scias ke mi parolas esperanton. Kial? Mi lerin esperanton ĉar mia gepatroj demandu min "Vi paroras la anglan bone. Lernu novan lingvon". Sed mi ne ŝatas lerni lingvon. Mi lernis japana malsukcese. Estas malfacila lerni vortprovizon kaj gramatikon. Do mi serĉas la interreto por la...

2022-10-24: Thinking About Pratical Web3.0 and GNUNet as Infrastructure

The title is gonna make people reading this from Gemini mad. Saw that a mile away. But hear me out. I just came back from g0v hackathon and decentralizing and Web3 has been a huge topic there. Heck even the Ministry of Digital Affairs joined discussion. That got me thinking. What can Web3 really ...

2022-10-14: A year on Gemini

It has been about a year that I'm been on Gemini. I feel this is a good time to share my experience with the community. A, or two post about my search engine is coming soon. So I won't be talking about that here. But general Gemini and Internet stuff. I learned about Gemini from MentalOutlaw's ...

2022-10-08: Finally Solving TLGS Socket Descriptor Leak

After months of on and off work, I finally figured out what's causing TLGS' crawler to experience socket leak. I've a gemlog 4 months ago[1] detailing how I solved it. Well, kinda. I found a misuse of `shared_ptr` and timers causing references to TCP connections not released properly. Solving that...

2022-10-04: The easy decision to move from Electron to Qt at Lumina

At Lumina[1] (the statup I work), we switched our UI stack from Electron to Qt. Both are extremely popular and mature technologies, both had their pros and cons. But we ended up migrating by the end of 2021. I think the story is interesting and worth sharing. Hence this post. For some context, L...

2022-10-03: AWK the ultimate swiss army knife for data

I want AWK to be more well known. It was treated as soem weird-ass tool that somehow works but no one knows why. It's all over the place on StackOverflow whenever we need to select a reagon of a file or something. I didn't apprishate this in the beginning. I was forced to learn `sed` and `awk` bac...

2022-09-03: Drunking Ramblings - Tech, Social and Whatnot

Yes, I'm _drunk_ right now. Maybe not **drunk** drunk but enough to make me write this (and maybe not remember that I wrote this tomorrow). Just stupid stuff I've thought of over months and years. Also fuck you who made me decide getting drunk tonight is better then writing code. Like, we'd expe...

2022-09-01: Zero Copy OpenCL Buffers

This is another subject that is complicated to explain. But is crucial to understand to write efficient code. Especially on embedded systems and integrated GPUs. I explained this with my coworkers recently. I figure to write it down as a reminder. This post mostly references Intel's article on min...

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