💾 Archived View for cetacean.club › journal › 12-15-2020-quarantine-5.gmi captured on 2021-12-03 at 14:04:38. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

Quarantine Diary Day 5

19:06

I finished day 2 of my new job. I think I have some idea what's going on now.

Today's lunch was really simple. I made slightly fancy instant ramen. Here's

what I used:

I stuck the ramen in the pot once the water started boiling. Once it cooked for 3 minutes I stuck in the flavor packets, vegetables and soy sauce. I let it settle for a few minutes and then served it. It turned out pretty good. When I do this in the future I would want to add the vegetables at the same time I add the noodles.

Tonight we had cambpells chicken noodle soup with parmesean cheese added to thicken it up. It was pretty good.

I'm considering making a pubnix for a community I'm a part of. It'd have a few simple services, including a gemini server. I'd also base it on NixOS so that it'd be easy to add more user accounts.

This is probably gonna end up being a bad idea, but meh yolo.

21:30

I'm playing with my gemini framework in Go for Rhea[1] some more and I managed to implement reverse proxying in an impressively small amount of code:

package main

import (
	"crypto/tls"
	"fmt"
	"io"
	"math/rand"

	"github.com/Xe/rhea/gemini"
)

type ReverseProxy struct {
	To     []string `json:"to"`
	Domain string   `json:"domain"`
}

func (rp ReverseProxy) HandleGemini(w gemini.ResponseWriter, r *gemini.Request) {
	conn, err := tls.Dial("tcp", rp.To[rand.Intn(len(rp.To))], &tls.Config{InsecureSkipVerify: true})
	if err != nil {
		w.Status(gemini.StatusProxyError, err.Error())
		return
	}
	defer conn.Close()

	r.URL.Host = rp.Domain
	fmt.Fprintf(conn, "%s\r\n", r.URL.String())
	io.Copy(w, conn)
}

That's it. I love how minimal this is.