Ephes Blog

Miscellaneous things. Mostly Weeknotes and links I stumbled upon.


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



 

Weeknotes 2022-01-03 fastdeploy

, Jochen
Well, I skipped the last two month's weeknotes because I couldn't bring myself to write them. I'll try to be more consistent doing this in 2022 :).

My little side project fastdeploy is now good enough to use it for my needs, so I'll switch back to other things, mainly building a podcast hosting app on top of django-cast. We also released a new podcast episode about refactoring on new year's eve, which we recorded earlier in December.

Funny Quote: Time flies like an arrow. Fruit flies like a banana.


Small Improvements

  • Switched to delta as a git pager
  • Started to use a brewfile to keep track of my installed packages via homebrew and store it in a dotfile repository
  • Build a service for fastdeploy that installs some command line tools (bat, fd, fzf) and changes the root users shell to fish
 

Articles

 

Software

 

Podcast Episodes