From: Alexander Goussas Date: Tue, 19 May 2026 17:19:23 +0000 (-0500) Subject: Merge branch 'rss-feed' X-Git-Url: http://git.frustrated-labs.net/?a=commitdiff_plain;h=b11b9fb56d666935097e703ac107a559519debdc;p=frustrated-functor.dev.git Merge branch 'rss-feed' --- b11b9fb56d666935097e703ac107a559519debdc diff --cc content/2026-04-19-one-of-the-best-skills-ive-learned-as-a-programmer.smd index 0000000,ba16b8b..69ebf85 mode 000000,100644..100644 --- a/content/2026-04-19-one-of-the-best-skills-ive-learned-as-a-programmer.smd +++ b/content/2026-04-19-one-of-the-best-skills-ive-learned-as-a-programmer.smd @@@ -1,0 -1,32 +1,32 @@@ + --- + .title = "One of the best Skills I've learned as a Programmer", + .date = @date("2026-04-19T00:00:00"), -.author = "Sample Author", ++.author = "Alexander Goussas", + .layout = "post.shtml", + .draft = false, + --- + + There are many different skills one might invest it when getting into programming. + There is a plethora of programming languages, each with their unique appeal. + And within each language ecosystem, a plethora of web frameworks and stuff to learn. + + But for me, one of the greatest investments came from something else altogether: + learning how to touch type. + + For those of you that don't know, touch typing basically means typing without + looking at your keyboard. But I include in the definition typing with all your + fingers. + + Before learning to touch type, I only used both my index fingers. I literally did + not use any other finger. One day, I decided to change that and started dedicating + a lot of time to acquiring the ability to touch type. + + There was a free website I used for this, whose name I have since forgotten. + Something like typingrace of something like that. + + Anywho, today, I can write at ~120 WPM, which is not a crazy speed, but pretty + respectable, if I may say so myself. Sometimes I just like typing whatever to feel + the vertigo as my fingers speed through my keyboard. + + Also, this is a transferable skill, so if you can't touch type yet, I encourage you + to. diff --cc content/2026-04-30-how-i-manage-my-blog.smd index 0000000,b6ac3bc..0a9d8fb mode 000000,100644..100644 --- a/content/2026-04-30-how-i-manage-my-blog.smd +++ b/content/2026-04-30-how-i-manage-my-blog.smd @@@ -1,0 -1,48 +1,48 @@@ + --- + .title = "How I Manage my Blog", + .date = @date("2026-04-30T00:00:00"), -.author = "Sample Author", ++.author = "Alexander Goussas", + .layout = "post.shtml", + .draft = false, + --- + + There is an accompanying video devlog available on YouTube, where I go more in + depth about how this stuff is actually implemented: https://www.youtube.com/watch?v=c6z5A_PRodg. + + Recently I went down the Kubernetes rabbit-hole and automated my whole blog's + pipeline. From build to deployment. No GitHub actions or any other 3rd party CI + provider. All self-hosted, literally. Well, with the sole exception of + CloudFlare Tunnels, of course. + + How did I do it? + + For starters, my blog repository is deployed as static files in a NGINX Docker + container. As part of the build process, I execute a little CLI tool I built in + Zig to transform my posts from markdown to html. + + So, I process the posts, build the image, tag it appropriately and push it to + Docker Hub. This is all automated in my git server, as we'll see in a minute. + + Next, my stuff is hosted in a git server that I own. This server is exposed via + SSH and cloudflare tunnels. I have it configured to only allow public key + authentication and no root login, for example. Also, the SSH port is not + publicly exposed and is only accessible via cloudflared. + + Now, Git has hooks for both server and client. In this case, we are interested + in the post-receive server hook. This hook runs after the changes have been + accepted by the server, so we have access to the latest code. + + In my case, what the hook does is clone the repository from the bare repo in + the server, execute the build script (that is located in the cloned + repository), and finally executes a rollout in my Kubernetes cluster to pull + the latest image. + + So, that's it. A pretty damn simple configuration, if I may say. + + Next steps for me would be to configure redundancy for the disk where my git + stuff is. Right now I have the stuff in my local dev machine and on that + server, but ideally I'd want to make backups to an external drive periodically. + + If you, dear reader, have any tips or tricks for me, please feel free to + contact me in whichever way you might deem appropriate. diff --cc content/2026-05-01-how-i-cut-my-expenses-by-a-freaking-lot.smd index 0000000,d0764f9..b89b685 mode 000000,100644..100644 --- a/content/2026-05-01-how-i-cut-my-expenses-by-a-freaking-lot.smd +++ b/content/2026-05-01-how-i-cut-my-expenses-by-a-freaking-lot.smd @@@ -1,0 -1,71 +1,71 @@@ + --- + .title = "How I cut my expenses by a freaking lot", + .date = @date("2026-05-02T00:00:00"), -.author = "Sample Author", ++.author = "Alexander Goussas", + .layout = "post.shtml", + .draft = false, + --- + + Let's start with the why. + + I have no family, and, as of the time of writing, no university degree either. + This means that were I to be fired from my current job, I'd have a hard time + (probably, I don't really know) finding a new one, and that I'd have no where + to go but the street. I could go to a friend's, but I would not want to + bother them like that. + + Then, a few months ago I started seriously thinking about the role of AI in my + area of work. I do not think AI can replace developers (I've seen it try and + fail magnificently) but I am also aware of the fact that employers do think so, + and, at least in my environment, have already started putting into action plans + to cut personnel and replace humans with AI tools. + + This led me to have a little crisis. I thought about switching careers and more + extreme things as well. As of today, I no longer have these feelings. I love + programming and I will continue doing it in whichever way I can. At the same + time, I was thinking: what is it that I really need to have a "happy" life? For + me, the answer is books, coffee and someplace I can walk in peace while + listening to podcasts and stuff. + + As you can see, I need barely any money for these things. And right now I am + living in a city where I can do the latter. So, this realization led me to make + a budget. Write down how much money I actually need in order to live. This + resulted in a grand total of about 250 US dollars per month. Let's break it down. + + I spend around 120 USD a month in groceries, 20 USD in laundry, 8 for YouTube + premium and ... well, that's it. I am excluding rent because I am in the + process of moving, but I am aiming to go somewhere under 200 USD. Right now I + am in a 500 USD apartment, but only because I took the first thing I found, + since I came fleeing Guayaquil after being almost murdered in the street. + + What did I do in order to achieve this? + + First, groceries. I started really looking at the prices of stuff I was + buying. I did not sacrifice quality for price. I found alternative products, + and bought at cheaper replaces. I also set a hard rule of absolutely no eating + out. Only in very special ocassions. You might try and gaslight yourself + into believing that you need to eat out in order to socialize or + whatever, but if you learned to cook well you could have friends at your house + for dinner, for example. I say from the bottom of my heart that I like my food + way more than a great deal of restaurants I've been to. + + Next, I stopped smoking. This one is self-explanatory. Cigarrettes are freaking + expensive. + + The other thing is I started doing as much as I can online. So for example, + books and classes for whatever are usually cheaper online. You don't have to + pay for delivery or transportation this way either. + + Then, I started using the least amount of clothes possible. A week, I use 12 + pieces of underwear, 6 shirts, 2 short and 1 sweater. Also, the cloth needs to + be as lightweight as possible. So, no jeans. This way, I took my laundry cost + from ~8USD a week to ~3USD. I live in a pretty cold city, but surprisingly I've + found that my body has adapted pretty well. I barely feel any cold anymore. + + That's basically it. Pretty simple, but effective. I honestly think we've + gotten too lazy and used to the comforts of modernity, which is exactly what + our capitalistic society wants. They want us to cOnSOom. + + I hope you got something useful from this, and I really encourage you to try + and get out of the trap of consumerism. If you can afford it. And if you have a + different perspective, please don't hesitate to share it. diff --cc content/2026-05-05-on-linkedin-connections.smd index 0000000,0000000..d491a8a new file mode 100644 --- /dev/null +++ b/content/2026-05-05-on-linkedin-connections.smd @@@ -1,0 -1,0 +1,33 @@@ ++--- ++.title = "On LinkedIn Connections", ++.date = @date("2026-05-05T00:00:00"), ++.author = "Alexander Goussas", ++.layout = "post.shtml", ++.draft = false, ++--- ++ ++A little while ago I sent a connnection request to Mr. Simon Peyton Jones. In ++case you don't know who he is, he's one of the major ++contributors to the creation of Haskell. ++ ++He replied asking me what the connection was about, which surprised me since it ++was the first time someone asked that. I said that I only wanted to follow him ++because I'm a long time Haskell fan. He then told me that that's ok, but that a ++note with the connection to make it more personal would have been better. And I ++agree. ++ ++I often rant about how dehumanized human connection in social media is. Trolls ++everywhere saying shit they would not dare utter in person. It's as if when ++online, people really think they're the main character in an RPG and everyone ++else is an NPC. ++ ++And yet, for a long time I've spammed connections on LinkedIn, precisely ++thinking I am a main character in an RPG, and connections items to be collected. ++But not anymore. ++ ++My goal is henceforth to build a genuine network of people sharing cool stuff ++and caring at a personal level. People that actually interact with each other. ++ ++So, if you want to connect, I'll be more than happy to. Just make sure you send ++your personal note on the request ;). diff --cc content/2026-05-13-how-to-intercept-http-requests.smd index 0000000,0000000..ebd7f6f new file mode 100644 --- /dev/null +++ b/content/2026-05-13-how-to-intercept-http-requests.smd @@@ -1,0 -1,0 +1,73 @@@ ++--- ++.title = "How to Intercept and Modify HTTP Requests", ++.date = @date("2026-05-13T00:00:00"), ++.author = "Alexander Goussas", ++.layout = "post.shtml", ++.draft = true, ++--- ++ ++This blog post comes with an accompanying YouTube video where I showcase a demo ++application and intercept its requests. Watch it here: TODO. ++ ++You have a flashy HTTP API and everybody wants to talk to it. Great! But with ++great power comes great risk. All these fuckers could be sending bullshitty ++strings to your carefully (or rather, not carefully) crafted service. ++What's more, some shady hackers could be waiting, licking their lips and ++drooling all over, to do nasty stuff, such as modifying in-flight requests! ++ ++Granted, my understanding is that tampering like this is not possible with ++encrypted protocols such as HTTPS. But alas, my security team knows better (I ++guess). ++ ++So, in this post and from painful experience, I am going to show you a very ++cool tool you can use to intercept and modify requests to your APIs, so that ++you know what insidious vulnerabilities are hiding before the security guys. ++ ++The tool in question is Charles. ++ ++## Installation and setup ++ ++It's pretty freaking easy to set up. First, install it following the ++instructions here: https://www.charlesproxy.com/documentation/installation/. ++Then just run it! ++ ++Capturing web traffic should work out of the box, but you have to configure the ++tool to allow for SSL capturing (HTTPS). For that, you can follow these ++instructions: ++https://www.charlesproxy.com/documentation/proxying/ssl-proxying/. ++ ++You should add each hostname for which you want to enable SSL proxying in the ++configuration. ++ ++## Configuring you mobile device for capturing ++ ++Now, I was more interested in capturing mobile traffic from the emulator ++running on my machine. The steps are equally easy, if a little bit more ++involved. ++ ++Actually no, it's dead simple. Basically, it should work out of the box. The ++documentation says that if you are not seeing your mobile traffic in ++Charles, you should make sure that Charles is already running before ++launching your simulator. ++ ++Once that's done, you should be able to start intercepting requests coming from ++you emulator. ++ ++## Intercepting requests (AKA Breakpoints) ++ ++You can either set breakpoints at the host level or at the request level. For ++my use case, I wanted to intercept all requests going to my backend, so I ++activated breakpoints on the host. ++ ++To do this, go to the TODO view, right click on your host and toggle the ++"Breakpoints" option. Then make a request and you should see execution pause a ++new window open in Charles where you can do things like aborting or canceling ++the request, allowing it through, or, in our case, modify it before sending it. ++ ++You can select the option to modify the request and then alter the JSON ++payload. ++ ++So that's it. I hope you found these instructions clear enough and sorry for ++not using images. I haven't gotten to decide where I would host such images ++yet. diff --cc public/index.html index 31c3172,03b89e4..19a4f74 --- a/public/index.html +++ b/public/index.html @@@ -1,53 -1,78 +1,129 @@@ + + + + + + + + Alexander Goussas + + + + + + + + ++<<<<<<< HEAD + + + Alexander Goussas | Programming & Friends + + + + + + + + + +
+ +
+ +

Alexander Goussas

+

Blog about programming & friends

+ + + + +
+

Posts

+ +
+ + ++======= + + + + +
+ +
+ +

Programming and Friends

+
+
+

Posts

+
+
+ May 02, 2026 + +

How I cut my expenses by a freaking lot

+
+
+ +
+ April 30, 2026 + +

How I Manage my Blog

+
+
+ +
+ April 19, 2026 + +

One of the best Skills I've learned as a Programmer

+
+
+
+
++>>>>>>> rss-feed + +