------------------------------------------------------------------- +title: go-gopherproxy - A Gopher-To-Web proxy in Go +date: Wed, 19 Mar 2025 02:07:18 +0100 +author: -fab- ------------------------------------------------------------------- <== go-gopherproxy - A gopher2web proxy in Go ==> I'm developing a Gopher-To-Web proxy for my own needs. It's in early development, but I already have set it up on my server. So I'm eating my own dog food and my Gopher content is now also available on my www homepage[1]. [1]: https://redterminal.org/gopher/ The repository is available on my Codeberg.org account[2]. So if you want to have a look at it you can see it there. [2]: https://codeberg.org/fab/go-gopherproxy <== My first Go project ==> I'm just learning Go at the moment, and I'm intrigued by it. It's a fantastic mixture of C++ and Python. But to me, C++ is too dangerous (no garbage collection) and Python is just a scripting language, so you don't get binaries. The toolchain for Go is also excellent. One of my decision points towards Go is, that it's easy to cross compile. I develop on Linux and compile for FreeBSD (what my server runs), which is really simple and nice. <== Early stage ==> I've just published v0.1.1, after a first refactor. I'm working on it since the last weekend, and there are a lot of things to optimize in the code and I need to add support for some types. But the types are not my primary concern, because I only use type "0" (TXT), "1" (DIR) and "h" (URL) for now in my own Gopher hole. External Gopher pages are marked as "(EXT)" and aren't proxied, so it's just for my own pages. Type "h" (URL) links aren't changed at all and I sometimes link to gemini:// or finger:// sites. These won't open in your standard web browser, but in case you have set up an application for them with xdg-open, these links should use that instead (maybe lagrange by skyjake) <== There's a lot to do ==> The code is still not really clean and needs further optimization. That's how I feel at least. It looks kind of hacky and unpolished. But I'm working on it. There is also no code testing and documentation. I still have to learn how to do this in Go. <== So that's the state of things ==> I'll keep on learning Go and develop the proxy further. After some code optimizing I'll most likely implement type "I" (IMG), so I can view images on my Gopher hole. For 5 days of coding in a language that I'm still not fully familiar with, I'm proud of it though. So if you want to comment or make some (constructive) criticism, please send me an email to fab@redterminal.org. You can also open an issue on the issue tracker on the repository. All in all - Have fun! -fab-