Cardiac Arrest Survivor

This year has thrown a lot at so many of us with the ongoing COVID-19 pandemic. My family and I have been observing the restrictions since they came in… indeed K and I were working from home for a couple of weeks before the restrictions came into effect here in Melbourne, as we have K’s parents staying with us from the UK. I have missed my regular run commutes with my friends and parkrun, of course, but have made up for this by running 5km each day and catching up with friends online for coffees or beers, depending on the time of the day.

On Saturday, 16 May 2020 my family got a big disruption thrown their way. Our five-year-old found me face down in the doorway of the bedroom. He calmly alerted K and then sought out his granny (whose flights back to the UK had been cancelled shortly after arriving in Melbourne back in March) and told her that I’d fallen over. My wife and her mother called the ambulance and identified that I was in cardiac arrest. They performed effective cardiopulmonary resuscitation (CPR) until the ambulances arrived about 15 minutes later. K had recently injured her wrist in a running accident, making CPR quite painful to perform, so I was doubly fortunate that my mother-in-law was stranded with us and in the house and able to assist. The ambulance crew got my heart beating by itself using their automated external defibrillator (AED) and took me off to hospital.

I don’t remember anything from the Saturday morning until the Tuesday evening, but have had the story relayed to me a number of times. I had to be shocked three or four more times after that initial use of the AED to allow my heart to re-establish an effective rhythm. I had burn marks on my skin as a testament to this but they have since faded. I was then put into an induced coma to stabilise my condition.

Coming out of the coma was very confusing. I didn’t know where or when I was. The drugs they’d had me on caused an hallucination where it felt like I was in a tunnel with amber flashing lights. A voice told me I was in the Royal Melbourne Hospital and eventually I was asked if I knew what the date or even the month was. I thought it was March, isolation perhaps adding to the confusion. Apparently I realised pretty quickly I’d missed World Whisky Day but I don’t recall saying this out loud. Funny how the brain works!

I was tired and drowsy after becoming conscious. K helped me eat some cold custard in the Coronary Care Unit (CCU) ward to try to boost my energy levels. I slept well that night.

On the Wednesday morning, two of the physotherapy team helped me learn to walk again. Putting my feet flat on the floor felt like a big deal but it felt good to take those first tentative steps around the CCU, with one arm hooked around the physio’s. It felt like a very positive step to get upright and mobile and I made every effort to get up and walk around when there was a nurse around to assist that day.

By Thursday, I felt comfortable walking short distances without assistance. I’d had all kinds of readings and measurements taken to check that the levels of medication I had been prescribed were working to keep my heartbeat regular and my heart muscle strong. Day on day, I was feeling stronger and stronger.

On Saturday morning, I had a visit from some cardiology experts who were really happy with my progress and talked to me about fitting me with an implantable cardioverter defibrillator (ICD) to prevent a similar incident in future. The operation was planned for Monday, with a view to me being discharged from hospital on the Tuesday. I felt elated! I had envisioned a much longer road to recovery at the beginning of the week. We were still unclear as to what the cause of the cardiac arrest was and we may never know for sure.

The weekend was quiet on the hospital ward. I followed the physio’s advice “Don’t get the sits” and took regular walks around the ward to keep myself active but also used the time and the fact that I had the two bed room to myself for most of the weekend to catch up with some friends with video calls and to read some books.

I wasn’t fitted with the ICD on the Monday but I was told that I might be better suited to a subcutaneous ICD (S-ICD) because I am “young” and “athletic” (not adjectives I’m used to hearing but it’s all relative, I suppose) but this would require a stress test. I did the stress test on the Monday afternoon, walking, jogging and running on a treadmill, while hooked up to an electrocardiogram (ECG) as well as an S-ICD simulator to ensure that the device wouldn’t administer any shocks that I didn’t need.

The stress test was a success and I was fitted with the S-ICD first thing on the Wednesday morning. Having such a sizable device implanted under the muscle under my left arm resulted in quite a lot of discomfort but that was a welcome distraction from the sore ribs from the CPR!

Now that I had suitable drugs to keep my heart free from ectopic beats and my own personal defibrillator to keep the heart beating should they fail (or, more likely, I forget to take them), there was no reason for me to take up a hospital bed and I was sent home to convalesce on Wednesday.

I am so very grateful to my family for their fast response, to Ambulance Victoria for administering the defibrillator and getting me to hospital, and to all the team on the CCU at Royal Melbourne Hospital for giving me the very best of care. I am also very thankful to everyone who sent my family messages of support, reading each one gave me a real boost and I am sure that the positivity really helped with my speedy recovery.

It is so good to be back home with the family. I am still adjusting to life post-cardiac arrest and post-implant but I know one day the ribs will heal, my fitness will return and I’ll be able to ease back into work and into running. Each patient on the CCU ward had a whiteboard for noting important information (name, nurse’s name, doctor’s name, estimated discharge date, daily plan, et cetera) and this board had a question about what is important to the patient. I had plenty of time and space to think about this and thought I’d share it as a part of this post:

To be an active member of a global family and to leave the world a little better than I found it.

Having this written down and shared with my family I’m sure will be helpful as I settle back into life. Much like the pandemic we’ve all lived through and the restrictions associated with that, we get to evaluate which parts of “normality” we want to keep and which we don’t.

I now have a plan from my GP for easing back into work and am looking forward to being back online with my colleagues. I’m told that cardiac arrest survivors have a high risk of depression, so my mental health is something I need to pay attention to in the coming months.

There were a few other things I want to share with you that my family and I have learned over the past few weeks. I hope you find them useful.

Learn CPR

The survival rate for out-of-hospital sudden cardiac arrests is terrifyingly low. Effective CPR saved my life. Please learn how to do this properly: lock your elbows (don’t bend them like actors do) and don’t be afraid of cracking a rib or two, the casualty won’t mind. Trust me!

Know the location of your nearest defibrillator

There’s an app for that. If you don’t have one in your office or other building where you frequently meet other people, consider asking for one to be installed.

Family rooms in hospital are not just for bad news

K feared the worst when she was seated in the family room to have what had happened explained to her and had to ask at one point if I was still alive!

Offer specific help

We felt very well supported for all of the time I was in the hospital and many people said, “if there’s anything I can do”. Genuinely we couldn’t think of anything. Some friends offered very specific help such as cooked meals, looking after the kids and taking the eldest running: these were absolutely amazing.

Store you partner’s work contact details in case of emergency

Your employer probably has your emergency contact details on file for should something happen to you at work, but do your family know how to contact your work if you are incapacitated?

Have someone you can delegate to at work

At the beginning of the pandemic, I nominated a member of my team who could represent me were I incapacitated due to COVID-19. This made it easier on my team when I was out of action.

2019 Sandy Point 10km

This weekend I completed my first 10km road race since June 2016. It wasn’t a personal best time for the distance nor was it my longest run, but I finished the event feeling more proud than I’ve felt in any running event. To understand why, I have to cast my mind back to February 2014 when our then three-year-old would leave me breathless running after him around the local park. I started doing the Couch to 5K programme to give me a hope of keeping up with him as he got faster and faster.

Five-and-a-half years later, I’ve come to really enjoy running and have completed six official marathons. In 2019 I wanted to focus less on events and more on running with my family; after all, they were the reason for taking up the sport in the first place. This year I’ve done a couple of parkruns with D(5) and we’ve had plenty of parkrun adventures with him in the pram while his brother was enjoying Little Athletics over the Summer months. I’ve also run 16 parkruns with E(9), notably the New Year’s Day double at Coburg and Darebin and his 50th parkrun at Foster (24:48). These two events were milestones as I realised that I would (again) have to start working hard to keep up with E and I started participating in track training at my local athletics club to give myself a hope of keeping him within arms’ reach until he’s old enough to run by himself at parkrun (eleven years old). The New Year double gave us the idea that we might run a 10km race together this year.

And so there we are… E’s first 10km race! He was excited when I woke him up. On our way to the start line he said he’d like to finish in about 1 hour 15 minutes, which I thought was easily achievable. I had said to K that I’d expect us to finish somewhere between 55 and 65 minutes.

It's cold but we're ready to go!.

We found ourselves near the front of the starting pen. Probably a little too far forward so we kept ourselves to the left, out of the way. The race started and we found ourselves running at a very comfortable pace; we completed the first kilometre in five-and-a-half minutes. My estimated finish time didn’t look unreasonable. The course was ever-so-slightly uphill from here and E found himself settling into a pace closer to six minutes per kilometre, which was great. We went with that and I checked in from time-to-time that he was comfortable. He certainly wasn’t out of breath. We reached the half-way point, and turnaround, at 31 minutes. Still in the window of my prediction. At half-way E seemed to get a bit of an energy boost, perhaps from reaching the 5km marker, perhaps because we were heading back downhill, but he certainly picked up the pace a little. The 60 minute pacer passed us at about this point and I said to E to keep his head up and follow that balloon. He stopped at the drink station, as he had at the two previously and caught me up effortlessly as I kept the pace. The next few kilometres ticked by pretty easily but I could see he was starting to fade a little.

As we hit 8km, I commented, “It’s 8 o’clock on a Sunday morning, what does that mean?”, he looked at me and I continued, “junior parkrun, 2km to go!”

“8 minutes, let’s go!”, he replied and took off like a rocket. E’s junior parkrun PB is 8:35. The ninth kilometre was our fastest of the run, 4:48. I wasn’t expecting that. We had breezed past the 60 minute pacer and were on our way to the finish. E kept close to a 5 min/km pace for the last kilometre and as we approached the end I could see that the official clock was on 59 minutes something. “Push hard!” and he did, leaving nothing on the track E pushed hard to finish his first 10km run in 59:43.3.

Pushing Hard to Cross the Line before the Hour

And that is why I have such a big grin on my face. I’m a very proud parent right now and am looking forward to sharing more runs with the kids.

Medals

See the details on Smashrun.

Back in England my Mum ran her first 10km on the same day. Doubly-proud!

Essential Browser Plugins

Sometimes my add-ons in Firefox go absent without leave and the only way I’ve found to get them back is to uninstall and reinstall them. I was making a list of the ones I use a lot for my own records and wondered whether others would find this list useful. So I’m publishing it.

1Password extension (desktop app required)

You need a password manager. Really.

https://1password.com/browsers/

Bitly

Shorten, measure, and optimize your links.

https://bitly.com/pages/tools#extension

DuckDuckGo Privacy Essentials

Privacy, simplified.

https://duckduckgo.com/app

Facebook Container

Facebook Container isolates your Facebook activity from the rest of your web activity in order to prevent Facebook from tracking you outside of the Facebook website via third party cookies.

https://github.com/mozilla/contain-facebook

HTTPS Everywhere

Encrypt the Web! Automatically use HTTPS security on sites that support it.

https://www.eff.org/https-everywhere

Neat URL

Remove garbage from URLs.

https://github.com/Smile4ever/Neat-URL

Privacy Badger

Privacy Badger automatically learns to block invisible trackers. It’s also really easy to block unwanted content!

https://www.eff.org/privacybadger

Running Challenges

Adds challenge progress information to your parkrun athlete results page. I’ve written before about how I use this to track my NENDY and since then I’ve helped to add the v-index.

https://running-challenges.co.uk/

uBlock Origin

An efficient blocker. Easy on CPU and memory.

https://github.com/gorhill/uBlock#ublock-origin

Video Speed Controller

Speed up, slow down, advance and rewind any HTML5 video with quick shortcuts.

https://github.com/codebicycle/videospeed

That’s it!

Which add-ons am I missing?

Vote For Aurora parkrun

Vote For Aurora parkrun

In January of this year, I joined the parkrun Australia Event Ambassador programme and I’m finding it’s a great way to give something back to this great community as well as sharing the experience I gained as founding Event Director of Coburg parkrun with other event teams. It’s also a great excuse to visit parkrun events besides my home event, which is a short jog from home.

I’m also working with a passionate pair of parkrunners who are looking to establish a parkrun a short jog from their own home in Epping North, near Wallert, in Melbourne’s North. This event is very close to being fully-funded and has recently secured a a base grant of $1,000 to go towards the start-up costs.

We are looking to launch this event soon and it will be one of over 360 parkruns in Australia to provide a free, timed, 5km running/walking event to the local community, every Saturday morning.

The overarching goal of establishing a parkrun event is to encourage the health and wellbeing of community members. The project aims to engage people from all backgrounds and of all fitness levels, abilities and ages, both to volunteer and participate.

We are looking to raise the funds now to purchase an Automatic Electronic Defibrillator (AED) in order to create the safest possible environment for our community to get together.

Could you please help us to secure this essential funding? To vote for our event go to The Aurora Seedling Fund and click the “vote” under our event or (if you’re nearby) head over to Sprout Hub Aurora and grab a coffee, with every purchase you get a bean to put in the voting box of your choice!

Then share this link with your friends :-)

Deep thanks.

Vote For Aurora parkrun

Words

A highlight at work recently wasn’t directly work-related at all but a positive comment from a colleague on my use of the word “outlandish”.

“Outlandish” isn’t a word I remember using very much until maybe three years ago and now I use it quite a lot.

In the workplace, and in life in general, I value diversity and inclusion. I find myself drawn into conversations about inclusion a lot. One day about three years ago we were discussing the use “guys” when addressing groups of people; I’d successfully weaned myself off that word and onto “folks” as a more inclusive address. Moving away from the gendered term “guys” to folks took a little conscious effort, for a short time, but soon became second-nature. It was on that day that one of the team shared a link to a presentation entitled Sidestepping Ableist Language by Ashley Bischoff and viewing that presentation was a watershed moment for me. I’d say it was that day that I started to use the word “outlandish” instead of other ableist words, which were more prominent in my vocabulary. Again, it didn’t take much time or effort for me to move off one word onto another.

It makes me happy to know that a small change on my part can make a big difference to how included a member of a group feels.

I still wish I had a broader vocabulary.

For years now, I’ve been subscribed to the A.Word.A.Day email. I remember the moment I read the word petrichor for the first time and how I nearly leaped out of my chair when I discovered that my favourite smell had a name! This is a great source of word knowledge.

More recently, I’ve been enjoying listening to Something Rhymes with Purple, which is hugely entertaining as well as educational.

What’s your favourite source of new words?

HTTP Status Codes with Alfred

I’ve been doing commercial web-based development for about six years now and I still don’t haven’t committed each and every HTTP status code to memory. I refer often to HTTP Status Codes — httpstatuses.com to appear way smarter than I am.

Today I realised I could do this with fewer keystrokes (e.g. [Alt]+[Space]hs 418[Enter]) using the amazing Alfred - Productivity App for macOS.

Somebody’s probably already done this and I wish they’d shared it with me, so I’m sharing it with you.

Alfred Custom Search

You can import these settings (apart from the icon) using the following URL: alfred://customsearch/HTTP%20Status%20Codes/hs/utf8/nospace/https%3A%2F%2Fhttpstatuses.com%2F%7Bquery%7D

I tried to share the URL in a tweet but Twitter mangled it.

I hope this little tip helps improve your productivity.

What’s your favourite Alfred custom search?

Addendum (2019-04-22)

I am glad I shared this tip. It led to Ricky sending me this knowledge upgrade:

One brew cask install dash and a couple of clicks later and I found myself with an even easier workflow than I’d had before. No need for web browsers (or even an Internet connection):

Alfred and Dash FTW

Thanks Ricky!

Running to Work

The Story

I completed my first run commute in November 2015 but it wasn’t until after my last cycling commute the following April that running to work became my preferred start to the working day.

These days I run to work on Mondays, Wednesdays and Fridays, with the latter usually being a long run (over 21km). I’d like to share some thoughts on my active commutes with you. My journey is a little shy of 12km, which is a nice distance to start the day. Run commutes allow me to keep a base level of fitness without me taking too much time away from my family… it’s mostly time I’d be travelling anyway!

Logistics

One question I get asked a lot is “do you run home?”. I don’t usually. I’m a morning runner for preference and I’ve had a couple of bad experiences of “doing the double” (i.e. running both ways), which have ended up with minor injuries. So I catch public transport home on the days that I run to work.

I habitually work from home on Tuesdays, which facilitates me taking the kids to where they need to be (Kirsty kindly does this on my run-to-work days).

On Thursdays I bring my clothes and toiletries to work in a holdall or small suitcase (depending on what I need to bring with me) for the next three runs. I bring my running gear home with me each running day. These days tend to start with the family travelling together to daycare, school and work, which takes the sting out of having to catch the train!

Carrying stuff

I’m often on-call for work and need to keep my laptop (a 12-inch MacBook) close by. I think I’ve been “paged” twice in three years of run commutes.

The light but powerful MacBook sits snuggly in the place of the removable reservoir in my Skycrane 2L hydration backpack. This backpack is absolutely ideal for my run commutes, it stays in place while I’m running and has sufficient storage space for my laptop, phone, keys, wallet, glasses and a jacket for after the run on the cooler mornings. It also has loops to which I can attach a pair of Million Mile Light V2 units so that I can be seen by other trail and footpath users on those dark winter mornings.

Motivation

It doesn’t take a lot of motivation to run through the Melbourne Spring or Autumn… those mornings are the best. The hot Summer mornings can be more of a struggle and when it’s freezing cold and dark through the Winter it can be very difficult to get out of bed! My motivation for these mornings is simple, I promise my Merri Creek Running Club friends that I’ll meet them at a pre-arranged time and place via our WhatsApp group the night before and that’s enough to get me out the door on time!

Running with friends makes the commute go so much faster, which is a bonus. We often finish our run at one of Melbourne’s many excellent coffee shops for a post-run coffee (or gelati if we’ve run 21.1km or more, but that’s another story).

On the rare occasion that nobody is available to run, I know that my announcement in the group will mean somebody will be watching Strava to hold me accountable! For these mornings there are podcasts for company (and the Apple AirPods are splendid for running with).

Nutrition

While I prefer to run fasted, I was advised by my GP not to do this. Over the past six months or so I have been eating a slice of toast or a banana about 30 minutes before leaving home. For the long runs (anything over two hours) I’ve been taking bags of honey – one bag per 30 minutes is my rule-of-thumb; I typically stop at a water fountain to have one of these.

End-of-trip facilities

Active commuting would not be possible without suitable facilities at my workplace. I’m very grateful that not only does my employer provide on-site showers but also has a laundered towel service. When I arrive at my desk after a run commute, I feel set to start a productive day – far more so than the days where I’ve squeezed onto a crowded train.

Nearest Event Not Done Yet (NENDY)

Since handing over the Event Director role at Coburg parkrun to Marcus last year, I’ve been taking the opportunity to enjoy being one of the parkrun adventurers and have been ticking off my Nearest Event Not Done Yet (NENDY) as time permits.

Visiting local parkrun events is a great way to experience parkrun and to discover hidden gems in our neighbourhood (Newport Lakes parkrun comes to mind).

If you want to find your NENDY, install the Running Challenges plugin in Firefox or Google Chrome on your computer (I haven’t found an iOS version) and set your home parkrun in the preferences.

NENDY

The Running Challenges extension displays a whole host of fun statistics about our parkrun participation but I’m finding the NENDY to be the most enjoyable to chase!

Improving Online Security

The revelation of the “Collection #1” data breach highlights, once again, that we do a poor job of keeping ourselves safe online. January is a good time for setting personal goals and if I could recommend one goal for you, it would be to improve your online security. I’m not a security professional but my work involves online identity management and I find our community’s behaviours fascinating. This blog post contains free, unsolicited advice, so you are guaranteed value for money but do give it some consideration.

Get a Password Manager

Password Entry

First thing’s first… get yourself a password manager! No, really. I used LastPass for many years and found it sufficient but a couple of security issues gave me pause for thought. I recently switched to 1Password (the migration was very straightforward) and have been impressed with its slick user interfaces and its Watchtower functionality for highlighting where I may be vulnerable online.

I have literally hundreds of online accounts, many of which are years old and I have no idea how secure my credentials are with those services. I know from services such as Have I Been Pwned (HIBP) that some of these services have stored my credentials in plain text and those credentials have subsequently leaked, so I treat all online services with suspicion. Keeping track of all these accounts is only manageable with a password manager.

Use Strong, Unique, Memorable, Diceware Passphrases Locally

There are some places where password managers don’t work, such as unlocking your computer’s operating system and getting into your password manager. Since your online security is only as strong as the weakest link, these logins need to be strong enough to keep others out and memorable enough to let you in!

I’d like to see the word “Password” eradicated from all authentication setup scenarios as it encourages poor security choices. Passwords are guessable by other humans and are quickly found by computer algorithms. Where you see this word, read it as “pass phrase”.

The diceware method of creating a sequence of words makes for strong login credentials. To make these words memorable, compose an image in your head that joins the words together. The XKCD “correct horse battery staple” comic is a good illustration of this concept but please don’t use “correct horse battery staple” as your pass-phrase, it has already been breached!

Use Long, Unique, Random Passphrases Online

Your password manager doesn’t care for the legibility of your credentials, so turn up the strength of your “password” to the maximum. 1Password and LastPass offer generators that will do the heavy lifting for you.

Password Generation

Sometimes websites, even ones I’d expect to know better, such as those belonging to telecommunications companies will tell us that our generated passwords are “too long” or “contain invalid characters”. I’m pretty certain that these are storing our passwords in plain text and are therefore insecure. Which is the perfect segue to the next piece of advice.

Never Reuse Credentials

It’s safe to assume that your credentials from at least one online service will be leaked at some point in time. See HIBP, it probably has been already! When this happens, those credentials are likely be used in credential stuffing attacks. If an attacker gets hold of your credentials for, say, your favourite band’s online discussion forum it would be bad for them to impersonate you on that service but potentially far worse for them to impersonate you using the same credentials to log into your social media or email service.

Enable Two-Factor Authentication (2FA)

Multi-factor authentication (MFA) is not available everywhere but it is available on many major online services. The site Two Factor Auth (2FA) keeps a great list and provides us with ways to contact those who don’t yet offer 2FA.

I remember reading the real life horror story Hacked! in April 2012 and sitting up late that night enabling 2FA on a bunch of accounts. At the time I used the popular Google Authenticator application to manage my time-based one-time passwords (TOTP) but have since switched to using Authy, which makes moving from one mobile device to another much more convenient.

The only times I have ever found 2FA to be an inconvenience are those when my browser has crashed or Google has logged me out in the middle of a Hangout (or “Meet”).

I don’t consider SMS-based MFA to be secure due to the risk that SMS messages may be intercepted or redirected so prefer TOTP or Universal 2nd Factor (U2F) devices, where available. When presented with backup codes, keep these safe as you would your birth certificate, passport or driving licence.

Conclusion

Please keep strong, unique pass-phrases in a password manager and secure your email and social media accounts with 2FA.

Let me know how you go!

On meaningful error messages

Today I was trying to make a simple change to a Git repository, privately hosted with GitHub. I cloned the repository, made the change and went to push it up for review. The git push didn’t succeed and I thought maybe I had fat fingered the remote URL when I cloned the repository (but that couldn’t be right because I’d successfully cloned the repository, right?). I tried removing and re-adding the remote but still “no dice”, as they say.

See if you can understand my initial confusion…

% git remote -v               
origin    https://github.com/our-organisation/some-repository.git (fetch)
origin    https://github.com/our-organisation/some-repository.git (push)

% git fetch -v origin
From https://github.com/our-organisation/some-repository
 = [up to date]        MO_Adding_ECS_configs             -> origin/MO_Adding_ECS_configs
 = [up to date]        update_gems                       -> origin/update_gems
 
% git push -v origin
Pushing to https://github.com/our-organisation/some-repository.git
remote: Repository not found.
fatal: repository 'https://github.com/our-organisation/some-repository.git/' not found

[Some names may have been changed.]

What do you mean, “Repository not found”? Look harder! After spending some time troubleshooting and getting increasingly frustrated, I sought the counsel of my colleagues. Some of my colleagues helpfully suggested I try an SSH remote. So I do this…

% git remote add ssh git@github.com:our-organisation/some-repository.git

% git fetch ssh
From github.com:our-organisation/some-repository
 * [new branch]        MO_Adding_ECS_configs             -> ssh/MO_Adding_ECS_configs
 * [new branch]        update_gems                       -> ssh/update_gems
 
% git push ssh     
ERROR: Repository not found.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

“The correct access rights?”

Well why didn’t you say so?

It’s worth noting at this point that while the SSH failure mode in this scenario is slightly better, I use HTTPS remotes over SSH because GitHub recommend HTTPS over SSH.

I understand that GitHub uses “Not Found” where it means “Forbidden” in some circumstances to prevent inadvertently reveling the existence of a private repository:

Requests that require authentication will return 404 Not Found, instead of 403 Forbidden, in some places. This is to prevent the accidental leakage of private repositories to unauthorized users.

GitHub

This is a fairly common practice around the web, indeed it is defined:

The 404 (Not Found) status code indicates that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

6.5.4. 404 Not Found, RFC 7231 HTTP/1.1 Semantics and Content (emphasis mine)

What makes no sense to me is when I am authenticated with GitHub using a credential helper and I have access to that repository (having successfully cloned and fetched it) that GitHub would choose to hide its existence from me because of missing write permissions. That’s pretty terrible user experience and cost me a whole bunch of time when I could have been doing more valuable work.

Checking https://github.com/our-organisation/some-repository/ using a web browser confirmed that I didn’t have write permissions to the repository. Our team’s GitHub administrators were able to grant my team write access in a short time and I was able to push the branch up. When I did this I got a custom success message:

% git push        
Enumerating objects: 23, done.
Counting objects: 100% (23/23), done.
Delta compression using up to 4 threads
Compressing objects: 100% (14/14), done.
Writing objects: 100% (16/16), 2.07 KiB | 706.00 KiB/s, done.
Total 16 (delta 12), reused 0 (delta 0)
remote: Resolving deltas: 100% (12/12), completed with 6 local objects.
remote: 
remote: Create a pull request for 'paj/my-branch' on GitHub by visiting:
remote:      https://github.com/our-organisation/some-repository/pull/new/paj/my-branch
remote: 
To https://github.com/our-organisation/some-repository.git
 * [new branch]        paj/my-branch -> paj/my-branch

I like this success message. It’s helpful.

Developers: Failures happen, plan for them and make your error messages as helpful as your success messages!

← Newer Page 1 of 12