These are posts I have written. A lot of them are for self amusement. Feel free to send me a message if you have thoughts or questions. They are written in the Gemini text/gemini format. Then rendered to HTML. The same content is avaliable on my Gemini capsule gemini://gemini.clehaxze.tw [what is gemini://?]. In fact I encourge you view them through a Gemini browser (like this one) for the best experience. An Atom feed is also avaliable.

Latest Posts

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

2022-08-19: Taiwan's Digital Intermediary Law is more than Stupid

Yes, this is one of _those_ posts complaning censorship on Gemini again. Consider this as a call for attention as Taiwan (where I live) government tries to push forward a new censorship law. The Digital Intermidary Law[1] is a new law that tries to solve the rampant fake news and disinformation pr...

2022-08-18: Likely Indonesian Internet Survelience

So, recently I was on a business trip to Indonesia. I made major security and OpSec preparations due to being forced to use airport and hotel WiFi for a large chunk of my time. Also some physical defence, but that's more personal paranoia, my main goal is to evade large scale, automated attacks. A...

2022-08-10: GNUNet File Sharing Tutorial and an Alternative to IPFS

With Web3 on the headlines all the day. I want to shift my view onto more traditional technologies. Blockchain is a great. Really, especially for transactions. Once I had to wire some money to an overseas bank. It literally took a week from sending to confirmed receiving. The fees are high too. Wi...

2022-07-29: Some Boring Analysis on TLGS Index (and messing with CERN's ROOT analysis framework)

Lupa[1] provides constant basic statistics about the Gemini network. Stats like how many servers are online, number of virtual hosts, TLS distribution, etc.. It's a really cool project. It got me asking.. what kinds of information can I extract from TLGS' index? Furthermore, I want to provide some...

2022-07-22: Search Engine Dilemma Bias VS Accuracy

One problem with the 3 current major Gemini search engines (GUS, Kennedy and TLGS) is the accuracy of their results. Searching anything too specific and they fail. I saw a lot of people writing about this frustration. "Fine, I'll bring bigger guns out" I thought. After days of reading on arXiv ...

2022-07-17: Cyber attack over Gemini is now a thing

This morning I logged into the server hosting TLGS, my Gemini search engine, and updated a few things. Then I go through the logs to see if anything intresting happened. Ohh... There were attempts to SQL inject through the search query! Yup, Gemini is big enough for security to matter now! It is d...

2022-07-11: Mixtile Blade 3 (RK3588) OpenCL performance

Mixtile Blade 3[1] is an intresting dev board. It runs on a RK 3855 SoC, the successor of the RK3399. Which a whole lot of other boards uses. Including QuartzPro64[2], ITX-3588J[3] and Rock Pi 5[4]. The 16GB model Blade 3 is priced at $369, much more expensive then the Rock Pi 5 at 189$ and the ex...

2022-07-09: Handle large file upload with Drogon web framework

Sometimes, you just need to handle large file uploads in your web application. Let's say you are writing a web drive. Dealing witch chunked upload can be a pain in most web frameworks. Not in Drogon - not well-known since the maintainers doesn't advertise much - Drogon supports processing large re...

2022-07-06: The trouble with trantor's threading design

This is just something on my mind and I'm trying to figure out how to solve. Most web frameworks use a work-stealing thread pool to improve throughput. Maybe one of the threads is overburdened with 100 tasks in its queue. But all the other 15 threads are idle. Other threads should be able to take ...

2022-06-30: FBInfer reduced our product crash by 50%

Just want to share how powerful this tool is. Infer[1], or FBInfer (since it's written by Facebook), is a static analyzer that can detect cross-function logic errors and potential data race in C, C++ and Objective-C. Which is just amazing. The company I work for runs on a C++ heavy product. Unfor...

2022-06-28: Coverage testing with CMake and GCov

This took me 3 days of on and off work to figure out. So I decide to write it down in case I need it again. And I want this to be more widely known. CMake is the most popular build system (generator) for C++. While test coverage is an important tool to find where bugs can hide. Testing usually tr...

2022-06-23: Understanding explicit OpenCL memory migration between devices

Lately someone emailed me asking how OpenCL memory migration works. To be specific, when and how to use the `clEnqueueMigrateMemObjects` API when using more then one device. Yeah, the description of it in Khronos's documentation[1] is very unhelpful. Nor is this API used often. I also spent quite...

2022-06-17: Upgrading WiFi bandwidth, hardware codec for VR Expreience

I'm a heavy VRChat player. My setup wasn't really good for VR per se. I had a relatively weak PC and limited LAN bandwidth. The upgrade is a bit costly, but I'm happy with the money spent. Also some unexpected issues caused my the upgrade. My setup is weird. Most people have their PC and playsp...

2022-06-14: RE: RE: The useful part of cryprocurrency

I feel I ought to explain my position. I think I understand and respect idiomdrottning's view. I just feel misinterpreted. And I'll try my best not to strawman him. If I do, by all means, it's my fault. My fault. I should have make it clear in my post. I mean "secure" by cryptographically secure...

2022-06-13: The useful part of cryptocurrency

Amid the current crypto price drop. I want to write about what cryptocurrency is actually useful for. And what I believe Crypto should be used for. Non of those NFT and ICO bulls*it. Or you can think this as my DD for investing in crypto. Or confirming my confirmation bias if you read WSB. At the...

2022-06-11: Unexpected complexity writing an async Spartan protocol server

Spartan[1] is a cool smol internet protocol. It's even simpler than Gemini. There's no TLS, no need for URL parsing and even less status codes! I just wrote my own Spartan client and server - Spartoi[2] in an afternoon, for fun. What I'm not expecting is some parts of it being (slightly) more comp...

2022-06-06: The stupid socket file descriptor leak in Dremini

TLGS'[1] crawler has had a crashing issue from the very beginning. The crawler tries to open too many sockets at the same time with the error message "sockets::createNonblockingOrDie: too many open sockets". The crawl dispatcher already limited how many concurrent craws can happen at any time. Fir...

2022-05-28: I can't stand developer interviews with algorithms (Or, why I'm learning APL)

I've been contacted by several HR people who are looking for a software engineer. It's good. I'm always looking for new challenges. What I can't stand is a large portion of the company decides that they should test the candidate's algorithm skill. Sorry, what? You just said you want to hire a seni...

Pages:
1 2
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
  • GPG: 76D1 193D 93E9 6444
  • Jami: a72b62ac04a958ca57739247aa1ed4fe0d11d2df