Fixing 400 Bad Request - Cookie too large error for Nginx Ingress
In some scenarios when integrating with an Identity Provider (IdP) - Keycloak, Auth0, or any similar solution - a 400 error may occur in Nginx due to the size of the request and/or cookie (headers). To solve this issue, some additional configuration for your Nginx ingress is required.
Nginx Ingress is one of the resources used in Kubernetes to receive external requests and direct them to the appropriate service in the Kubernetes cluster. It merely acts as an nginx deployment in your cluster - so, x pods running nginx with a config file that can inherit values. It’s available in 2 flavors: one is free (community edition), the other one is the enterprise version.
· 3 min read
Remapping tilde on MacOS for a Logitech INT keyboard
Just as the title states, I had this pity situation where I bought a Logitech MX Keys Mini keyboard and tried to use it on any of my MacBooks. All cool and fancy, but the layout I could find for the external keyboard is INT and I’m used to working on US ones. And having the tilde/grave (~/`) key right next to Z is not something a programmer can really get used to.
· 2 min read
Using GPT-Neo on an M1 under MacOS 12
I’ve tried to spin off tensorflow locally and play with GPT-Neo on my M1 mac. Found some official reference online beforehand, so my intentions should have been supported out of the box without any headaches. Buuut, apparently this doesn’t totally apply for MacOS 12 (Monterey). That’s why I’ve fixed the process and I’m documenting it (for myself) down below.
Setting up the env Steps:
install xcode & brew MiniForge3 (don’t use Anaconda) -> download the arm64 sh from GitHub setup conda for your shell (fish in my case) create a new virtualenv with conda and switch on it set up tensorflow + tensorflow-metal for GPU (in case you plan to use it afterwards) install jupyter install happytransformer and use it for generating text leveraging EleutherAI/gpt-neo Some detailed steps 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # set up conda for fish ~/miniforge3/bin/conda init fish # create and use a new env conda create --name tf python=3.9 conda activate tf # install tensorflow deps conda install -c apple tensorflow-deps # base tensorflow + metal plugin python -m pip install tensorflow-macos python -m pip install tensorflow-metal # install jupyter, pandas and whatnot conda install -c conda-forge -y pandas jupyter Installing transformers For this one, we’ll have to accomplish 2 different things:
· 3 min read
About Polyglot Programmers
I’ve been analysing a bit the current landscape when it comes to technology, areas where several things may fit and whatnot. Things have changed a lot and are still moving around quite quickly.
How were things a few years ago when I’ve started working (let’s say, give or take, around 15 years ago)? Quite easy:
1 2 3 4 5 - Random dude #1: I hate mobile development! - Random dude #2: I hate C! - Random dude #3: Only functional languages! ... - Random dude #n: I dislike javascript! There was this habit of staying with only one language. (or at least in my bubble) Always up-to-date with your niche; always should know it’s quirks; always should know how to get past the compiler’s warnings. So, whenever you were starting with game development in C, that was to be your area - people weren’t experimenting too much and still didn’t have the need to do so. Software development was following back then some closed principles as everything was siloed and complex solutions as we know them today weren’t part of any business plan due to several factors. (even internet’s spread was one of them, alongside other factors)
· 6 min read
Deloying an Nginx-powered API Gateway in Kubernetes
Purpose: using Nginx as an API Gateway in Kubernetes
The problem described here is quite simple if you have in mind a pretty usual situation where your team is writing several microservices (supposedly svcA, svcB, svcC) which need to be exposed from the backend side of the world so they can be later on consumed by a frontend app.
The setup on a classic env would be pretty straight forward: