Sonney's Blog

Claude Code

A friend of mine once said that “Its a fascinating time to be in the tech industry at the moment. My ways of working are changing every three months”. At the time, I would have disagreed, but my first experience of Agentic AI was given to me when I was told to check out Claude Code.

Claude Code is a “CLI coding tool”, that is to say it operates within the command line of your computer (the black box). Unlike the regular means by which we interface with AI – copy and pasting, screenshotting, Claude Code is at liberty to read files and execute commands on your computer.

Gone are the days when I would have to serve as the middleman between the AI and the problem I was facing. Honestly, sometimes I felt like that was exactly the role I was playing – a middleman. During particularly desperate days, I would copy code errors into Claude, and wait for its response. Now that doesn't even happen anymore. I can ask Claude Code what my intentions are, and it will go off (with my permission) and build out an entire codebase at the press of a single button (or few).

This sends me into an interesting spiral about the future of the nature of our work. My mind is drawn to the Last Question, by Isaac Asimov, a short story I would urge the reader to peruse in their spare time – Engineers ceased to do the work, but only maintained communication between AI and intellectual property.

Someone on Reddit said “Software Engineering is experiencing the punk rockification that happened to music in the 70's, where a musician used to spend their entire life learning music theory to play in an orchestra. Now they only need to learn a few chords to make a band”. I think this is largely true.

So where does this leave us?

If the logic component of business development is going to be flattened by the onslaught of AI, then its fair to say that this “door” by which humans moved up from the lower classes to the middle class by means of software development and other logic based work may also close and I think that's what scares everyone.

On the other hand, I think this opens up some very interesting doors regarding how we live our lives. Now more than ever it is important to: – Nurture good relationships – Read wide

I say to nurture relationships, because I think people drive themselves to loneliness consuming themselves in their jobs – I certainly did that sometimes. I think finding ideas happens when conversations happens – exchanging ideas.

I also think there's merit to reading wider than ever. Pick up those unusual books on psychology that fascinate you.

#LastQuestion

On the Ethics of VPN

If you know the industry I'm in, you'd guess I believe in regulating the internet to some extent.

I have to exist in this space where I'm surrounded by people who think any form of regulation is going to strangle our livelihoods, and then on the other side there is probably a boat load of nasty content on the internet that would all be better if it went away – videos of beheadings, public executions, revenge porn, child porn. I'm sure there exists a content that we can all unanimously agree needs to be removed from the internet, even if you are a fringe thinking person.

The United Kingdom set into effect the expectation for all websites managing NSFW content to verify the age of its users. Some of them ask for photo ID's, others federate with Google.

There is a good argument that giving our personal biometric data to third parties is risky, especially if you are then going to browse a porn site where a data breach could lead to much embarrassment.

There is soon the point where I explain how to setup a VPN on a private server. Its cheaper (I think), than paying for a subscription.

The objective of a VPN is to encrypt internet traffic, but also mask your location. Now, services will think you're “elsewhere” and since you're “not in the UK”, they won't ask you to identify yourself, because this is a UK only thing to ask for one's facial ID to visit a porn site.

But Why?

I think rules are important. The Online Safety Act is not so prescriptive that it's demanding websites capture information about you, it just wants to ensure children are not able to see offensive content. The problem I have is how its being implemented.

How to Install WireGuard on a Linux Server

I haven't messed around with spoofing locations just yet, but my private server is deployed in an EU country. You can tell by opening up terminal, typing in ifconfig, taking the ip address and pasting into a “wheremyIp.com” style website in order to find out where you allegedly are. (You can even try with your own computer if you run a UNIX style system).

Install Wireguard

sudo apt update
sudo apt install wireguard

Before doing any Linux work, its good practice to update your system, remove outdated libraries etc.

Enable IP Forwarding

 echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

This enables your server to act like a router. It would allow it to receive information and forward it to other destinations. In our case, with VPN enabled, your computer can ask your server for Google.com, and instead of dropping the packet (if IP forwarding was disabled), it would pass it to Google for a response.

Configure the firewall

sudo ufw allow 51820/udp

I found out about ufw, its simple and easy to understand as firewalls go. (To be honest, prior to doing this, I had no idea how firewalls actually worked)

51820 is the port most VPNs work off so that needs to be enabled. UDP is the protocol and is beyond the scope of this post.

Generate Server Keys

sudo nano /etc/wireguard/wg0-client.conf

In there, place the following configuration:

[Interface]
PrivateKey = [CLIENT_PRIVATE_KEY]
Address = 10.0.0.2/24

[Peer]
PublicKey = [SERVER_PUBLIC_KEY]
Endpoint = [SERVER_IP]:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

I found these were quite helpful. Place these in your .bashrc or .zshrc and call them when you want to use vpn

alias vpn-up='sudo wg-quick up wg0-client'
alias vpn-down='sudo wg-quick down wg0-client'
alias vpn-status='sudo wg show'

Verification

To verify your vpn works, you can execute curl ifconfig.me

You should notice a difference between when vpn-up or vpn-down

I realised first hand that setting up VPN didn't disrupt my other services, say this website, since they operate on completely different ports, this makes sense.

Final Thoughts

I think building my own VPN server provided good privacy benefits whilst giving me complete control over my internet traffic routing. The setup process, while initially complex, resulted in a robust solution that cost me only the price of my server hosting – which I pay for anyway. The key advantage over commercial VPNs is trust – I know exactly where my data is going and who has access to it. For anyone with basic Linux skills and a cloud server, it's definitely worth the effort.

I'm still personally debating how I feel about using perfectly legal tools to sidestep age verification on online platforms.

I lost my first blog.

“I never look back darling, it distracts from the now” – Edna Mode, The Incredibles.

About a month ago, I thought I would give blogging a shot. I'm not a good writer by any measure, but I liked the fact I had carved out my own federated space on the internet, and I was approaching it in nifty ways that made this an interesting piece for me: – I'm going off learning a lot about kubernetes deploying one on my private server. – I'm interested in the #fediverse and the approach to social media it presents. – I'm doing this all off my Arch Linux laptop that I configured and I'm falling in love with.

So what happened?

I'm tired of my laptop fans running at super hot temperature. I like the quietness of my laptop and I prefer it not to burn my lap. So I thought I'd give remote dev a chance.

Essentially, I wanted to deploy some #Docker containers on my private server to run my application. I then intended to try developing remotely using a combination of Jetbrains Gateway, or LazyVim, both are fantastic in their own right.

The principle here is to outsource my entire development workload to a server away from me. This begins to suggest that I don't need to spend exorbitant amounts on money on a new Mac (as mine approaches vintage status slowly, but surely).

I realised that my instance was inadequately powered to do this task, so I stupidly (without testing the backup procedures), scaled my instance. It was then that I discovered I had lost my blog – the DNS from blog.sonneypatel.com resolved to a page displaying a Server Error, and a non descriptive 500 error.

Diagnosis (and Facepalm)

I suppose it was always my fault that I hadn't tested the persistence of my blog prior to writing it. I should have spent a few days knocking the pod over and seeing if I was able to login and observe some test posts.

The silver lining in all this is that I didn't really like what I was writing anymore, and sometimes a clean slate is good for me.

The Kubernetes Deployment I had configured was not correctly mounting the volumes nor setting the correct volumeMounts. This resulted in files not being where they should, leading to initialisation procedures needing to be executed, duplicate config files hanging around the box and the various stages of trying to set everything straight.

Notable commands I used were:

kubectl cp <pod-name>:<path-to-file> <local-destination>

In the end, I just went nuclear. I initialised the WriteFreely blog once, and copied the files over to a secure location and mounted the volume from there. Using the above command, I was able to take an “initialised” state and just copy it over to my private server.