Recovering front-end developer, now I just write JavaScript

Training: Three Months In

Training: Three Months In
Photo by Nicholas Grande / Unsplash

It's been 3 months since I started working with a personal trainer. I'm seeing some changes now, so I thought I'd jot those down.

I started at 60kg (130 lbs), and while I don't have a target weight in mind–preferring to gauge it on how I look & feel–I'm still weighing myself daily. This helps me keep an eye on whether I'm eating enough and that I'm not going down. Even though I'm not aiming for a specific weight, I'm still early in my journey so a loss in weight either means I'm not eating enough or I'm not gaining muscle.

May 17th, 60.7 kg – 29th July, 64.9 kg

In my first several sessions, we'd start with a 1km row. Initially, it was a 'take as long as you need' kind of thing, but it soon turned into an aim for 4:30, then aim for 4:15, then one day I did a 3:48. That's well below what it could be–a 3:30–but it's all good progress. Whenever we did this, it would wipe me out for the rest of the session, so we don't row much anymore.

We are focusing on weights more though, and this is where I'm noticing the difference. Several weeks back, I'd to struggle with a 6kg dumbbell bench press, now I can do a set of 10x 6kg, 10x 8kgm and 10x 10kg. I can also do a 35kg trap, but unsure what my max would be. Not big numbers by any means, but it's an improvement for sure.

I've also been running more. My distances are still pretty short being in the 1.2km to 1.6km range, but it's something I can do easily without much prep, and again, it's better than nothing.


I'm learning that it's cardio that is my biggest issue. My body just isn't used to it. I did go to the doctors (for free, thanks NHS!) to get some blood tests and an ECG after my PT suggested it for my high heart rate. The ECG was good, with 1 doctor & 2 other nurses all agreeing it's just my body acclimatising. The bloods came back as a vitamin D & B12 deficiencies, for which I take pills for now. It'll take months –even from here–to get to the point where I can run a few kilometers without stopping.

I'd like to do a 5k parkrun by the end of the year, even if that means getting up at 7am on a chilly December morning to do it.

Training: One Month In

After a month of light training, how am I getting on?

Training: One Month In
Photo by Greg Rosenke / Unsplash

I've been training with a personal trainer for a month, so I thought I'd check in here and track some progress. I've been doing 30-minute sessions until now, but I start 1-hour sessions this Friday, so it feels like a natural point to do this.

If you haven't read the why, here it is:

Starting With A Personal Trainer
I’ve started training with a personal trainer. But why?

I now weigh 2kg more than I did when I started. This is largely down to me eating more. I'm eating breakfast & lunch every single day, and have massively increased my protein intake with the help of a mass gainer shake.

I'm drinking water. Note I didn't say more water. My liquid intake for years was a single coffee in the morning, maybe a small glass of something fizzy with lunch, and a beer or two after dinner. I now have at least 2 pints of water a day, and I'm trying to get this to 4. With the weather getting warmer, this should be easy.

I'm also doing some simpler exercises at home to keep momentum. I have some old weights and I've been replicating some of what we do in sessions at home. I'm always asking questions about what muscles are targeted with different exercises, so when doing them myself, I know I'm doing it right.

I'm also trying to run more. My distance is very short right now, 0.5km, but it's a step in the right direction and further helps with that momentum.


We'll probably do a fitness test in a few weeks, so that'll give me some solid numbers to report on and compare with in a few months.

Build & Deploy Ghost Themes with GitHub Actions

How to have GitHub actions build your theme assets so you don't need to have built files in source control.

Build & Deploy Ghost Themes with GitHub Actions
Photo by JJ Ying / Unsplash

A while back, I was chatting with my colleague Ryan about Ghost theme deployment and how cool it would be to not need to commit built files to source control and have GitHub Actions build them and then deploy.

Ryan took that idea and ran with it. He wrote a really nice article about how to achieve just what I was after.

Build and Deploy with GitHub Actions
Let the machines take the wheel with GitHub Actions. Push an update to your Ghost theme and then see it automatically built and deployed, anywhere and everywhere.

I borrowed most of the code & ideas, and adapted it slightly to suit my needs. I use yarn instead of npm, so my version accounts for that and skips deploying to a demo site.

If you already use GitHub Actions to deploy your theme, you can probably drop this right in. You may need to adapt the build task, which is run: npm run build in this yaml file and "build": "gulp build", in the scripts in my package.json file.

name: Deploy Theme
on:
  push:
    branches:
      - main
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18.x'
          cache: 'npm'
      - run: |
          if [ -e yarn.lock ]; then
          yarn install --frozen-lockfile
          elif [ -e package-lock.json ]; then
          npm ci
          else
          npm i
          fi
      - run: npm run build
      - name: Deploy site
        uses: TryGhost/action-deploy-theme@v1
        with:
          api-url: ${{ secrets.GHOST_ADMIN_API_URL }}
          api-key: ${{ secrets.GHOST_ADMIN_API_KEY }}

I'm mostly sharing this incase anyone with the same setup as me is in a ind and needs a quick solution. Happy building!

Starting With A Personal Trainer

I've started training with a personal trainer. But why?

Starting With A Personal Trainer
Photo by Victor Freitas / Unsplash

In April 2023, the Ghost team was on a retreat in Wales. Several members of the team are runners, and looking at the team Strava group, average distances range from 3km to 25km.

Through a little bit of peer pressure and a lot of potential FOMO, I decided to join them for a run. I had not done anything close to physical exercise since school in 2006, so I didn't know how it would go, but waking up and starting the run at 7:15 am would be an achievement in itself.

The planned loop was 3km, I made it 600 meters before my legs were jelly and my lungs were on fire.

I tapped out and retreated to a convenient bench and sat for 10 minutes. Whatever level of fitness I have is clearly not enough and I need to do something.


Rationale

Researching how to get fitter when you're skinny (190cm and 60kg) is hard. Almost all advice & marketing is about how to lose weight. There's lots of anecdotal information about how to get fitter and not lose weight, but if I'm doing this, I want to do it safely—I need someone who can see me in person to give me the right advice and instruction. I need a personal trainer.

I've toyed with the idea of hiring a PT for a while and have done a lot of Googling, but never had the kick I needed to act on it. I contacted a PT who's local, has their own gym, knows nutrition, and was reasonably priced.

I emailed, he replied, and after a few messages about my current nutrition, what I'm looking for, and availability, I was booked in for the first session on May 9th at 10:30 am.


I currently own zero gym equipment. All the clothing I have that's even remotely close to being suitable is cotton and more fashion-focused. No shoes that properly support my feet, no t-shirts that are light & breath nicely, and no shorts that allow proper movement. I have now acquired one complete outfit with the help of some nice people at a sports shop.

I don't know what to expect, so I don't know how much to prepare, so I'll leave it there until I'm told otherwise.


Post-visit

I arrived a few minutes early, saw the previous people leave, and then walked in. We exchanged pleasantries, went up to the mezzanine, filled out a form, and had a chat about nutrition, my current fitness activities, and how flexible I can be. Thankfully I work with an amazing team so flexibility isn't a big deal. Speaking of the team, I also mentioned my short-term goal of being able to complete a run with everyone on the next retreat.

We then moved on to some light cardio, which was a few minutes in a cycling machine, then a rowing machine. I was later told that I'm not the worst he's had, but there's definitely work to do. Win?

We then went back downstairs where we did some squats, press-ups, curls with some light weights, and a few other small bits.

It was only a half-hour session (starting slowly) but by the end of it, I could definitely feel my heart rate was up and my muscles had worked more than they are used to.

I think this was the perfect intro. He didn't work me too hard and it's shown both of us that's definitely work to be done and lots of ways to improve general fitness.

My homework is to drink at least 2 liters of water a day, keep a food diary, and incorporate more fruits & protein into my diet. The water part is easy (there's an app for that) but the extra nutrition part requires a bit of research to find the best way to fit it into my life.

Unshorten URLs

How to convert a list of short URLs into a list of unshortened URLs

Say you have a text file called old-urls.txt that looks like this:

https://example.com/?p=1234
https://example.com/?p=5678

We know those redirect to a fuller URL, but don't yet know what.

Run this in your terminal:

cat old-urls.txt | while read f; do echo "${f}"; curl -Ls -o /dev/null -w %{url_effective} "${f}" -O; echo "\n"; done;

And get a readout in the terminal like:

https://example.com/?p=1234
https://example.com/2022/02/03/my-post

https://example.com/?p=5678
https://example.com/2022/02/04/another-post

You can then turn that into some JSON or whatever format you need to work with.

Hi! I'm Paul 👋 I write code for a living. Specifically, I work at Ghost where I build & maintain the tooling that enables migrations from other platforms to Ghost.

On this blog, I mostly share random things I find interesting or useful. There is no pattern, there is no plan.