Ephes Blog

Miscellaneous things. Mostly Weeknotes and links I stumbled upon.

Date -

Weeknotes 2022-01-31

, Jochen

Worked on using the new deployment context feature of fastdeploy to automate deploying cast_hosting instances for my podcast hosting SaaS. It finally worked and the hardest part of this was getting the traefik config right. If users can choose domain names by themselves, you have to use wildcard certificates. This means that you have to use an API key for your DNS provider allowing traefik to manipulate DNS records for the dnsChallenge, which is the only one supporting wildcard DNS. But then you still have to get both this part and your httpChallenge based certificates to work well together. Ok, here's the static config part that made traefik work for me.

Additionally, I did two programming streams last week, which is an improvement. And then there was an interesting discussion on the PyDDF telegram channel about automatic speech recognition. I haven't looked at this topic since mid-2019 and wow, a lot is going on there. Maybe it's even possible to train an asr model for german just by using existing labeled training data like the Mozilla common voice dataset plus lots of unlabeled audio data (podcasts maybe?).


Articles

Useful Websites

YouTube

Twitter

Papers 

Software 

Podcasts


Weeknotes 2022-01-24

, Jochen
Didn't record any programming streams last week, let's see how it'll work out in the next one.

For my podcast hosting SaaS. I need a way to deploy a new podcast. All the Unix user, database, and config file creation can be handled via fastdeploy, but there's one pretty scary part: Someone on the internet types stuff like a domain name into a web form and I have to use this user input in deployment scripts running as root on my infrastructure. For example, let's assume I'll just start an ansible playbook and pass this user input as `ansible-playbook podcast.yml --extra-vars "fqdn=foobar.example.com"` in a shell command line. It's easy to see how this might go wrong. After first using a temporary file I found out how to use sudo with environment variables. So I'm now using an environment variable to pass the user input and then validating it in the deploy script using pydantic. The start-deployment endpoint now takes an additional optional DeploymentContext which gets passed like this to the script starting the deployment process. Maybe it's not perfect but safe enough for me to stop worrying :) (probably famous last words).
 

Articles

Useful Websites

Twitter

 

Books 

 

Software 

Podcasts


Chicken Soup

, Jochen

We made a chicken soup a few days ago. It's based roughly on this recipe.

The ist of ingredients

  • 1 chicken
  • 1 onion
  • 500g carrots
  • 1 garlic bulb
  • 20 peppercorns
  • 1 bayleaf
  • some salt
  • 80g rice
  • 1 tablespoon of tomato paste
  • 200g white cabbage
  • some grated parmesan

Instructions

Get the ingredients :).

Put the chicken in a pot.

Cut the onion in half, peel the carrots and cut of the top of the garlic bulb.

Put the vegetables, the bayleaf, peppercorns and some salt in the pot together with the chicken and add cold water until the chicken is covered. Let this simmer for at least 1.5h, probably a bit longer.

Drain the chicken stock from the pot and keep it somewhere. Cut the carrots in bite-sized pieces, remove the chicken's skin and peel the meat of the bones. Throw away the bones. Cook the rice. Meanwhile combine the carrots, chicken and stock and get the heat up again. While the soup is simmering again, cut the white cabbage into thin slices. Add the cabbage and grate the cheese.

After a few minutes after adding the cabbage the soup should be ready. Season with salt and pepper.

Serve with some grated cheese added on top.

 


Weeknotes 2022-01-17

, Jochen
Lots of PCR-Tests and running around last week. But still being lucky to maintain a positive attitude and negative test results. My streaming schedule is still out of order. Did one stream Tuesday evening and one early on Saturday morning. Displaying chat messages in the stream is now routine - ok, not quite, still have to connect my discord server.

Managed somehow to record and produce a new python podcast episode about htmx, which is not yet released because of reasons, therefore the link is not working yet. For my podcast hosting SaaS, I'm planning to use htmx to show deployment progress to users trying to register a new podcast. I already have a vue app in fastdeploy showing deployment events via a websocket connection, let's see how much worse / better it will be using htmx. To make this possible I had to introduce a new endpoint in fastdeploy making the deployment events of a deployment available using plain http without a websocket and allow authentication via just a service token.


Articles

Software

Twitter

Podcast

Talk


Weeknotes 2022-01-10 Changed Streaming Schedule

, Jochen
During the last week, I switched from starting my programming stream around 10 am to 8-10 pm. I had to configure artificial lighting and broke a lamp on the first evening. My setup still needs some fine-tuning.
 

For my podcast hosting SaaS project, I thought about how to deploy a single new podcast and how to integrate this with fastdeploy. Should the podcast hosting app itself create a the database and configure systemd? Should fastdeploy do it? Usually, you would need to have different service tokens for each new podcast in fastdeploy. This clearly needs some redesign. But I think I'll go for something like that:

  1. User submits desired domain name
  2. Podcast registry starts a deployment for the cast_hosting service providing a config including username, token to update the registry, etc.
  3. After cast_hosting is successfully deployed it sends a register/password change URL back to the registry to let the user in

Articles

Twitter

Podcast

Talk