Skip to content

Instantly share code, notes, and snippets.

View nickcharlton's full-sized avatar
🐢

Nick Charlton nickcharlton

🐢
View GitHub Profile
@nickcharlton
nickcharlton / content.md
Created January 13, 2025 17:15
Gist from Drafts

Running Docker containers on GitHub Actions

Sometimes it's helpful to run a container inside GitHub Actions, like if you want to run something isolated from the rest of the CI environment for one step. Docker already exists (at least on the Ubuntu runners), so we can just ahead and use it.

We could do this directly in the YAML, but extracting out to a script is helpful, especially so if you want to interact with the container itself. But you could also do a multiline string, or similar if desired.

For example, you might have a script like this:

#!/bin/sh
@nickcharlton
nickcharlton / content.md
Created January 28, 2024 17:56
Gist from Drafts
@nickcharlton
nickcharlton / content.md
Created October 11, 2023 09:18
Gist from Drafts

GTD & Things Process

Some David Allen (GTD) and Merlin Mann wisdom (Inbox Zero guy who now makes podcasts)

  • Life is has lots of inboxes, try and move everything to one place
    • i.e.: email to Things inbox, Reminders to Things inbox, your memory to something written down
  • Similarly, make it easy to capture things
    • I use the Quick Entry dialog on macOS and now the Action Button on the iPhone 15 Pro,
    • You'll eventually find yourself doing this all the time
  • For you to trust the process and get the most out of it, you need to do the reviews, otherwise none of this will work
@nickcharlton
nickcharlton / content.md
Created September 19, 2023 11:10
Gist from Drafts

Installing multiple versions of Xcode

When Xcode is upgraded between major versions (for example 14 to 15), the whole compiler toolchain is upgraded along with support for the new platforms targeted. Sometimes this causes problems, like when deprecated APIs are finally removed.

These changes always happen around significant operating system releases, like when a new version of iOS is released towards the end of September. A good short-term solution is to install the old version of Xcode alongside the current one.

  1. Fetch the last Xcode (for example 14.3.1 which is the last before 15) from the Developer Console (you'll need to be signed in with your Apple Developer account): https://developer.apple.com/download/all/?q=xcode%2014
  2. Extract and move it to /Applications, but with a name matching the version, e.g.: Xcode 13.4.1.app
  3. You should now be able to open your project in Xcode and it build successfully again.
@nickcharlton
nickcharlton / content.md
Created May 10, 2023 16:03
Gist from Drafts

Jest: Changing Mocks per Test

I'd been trying to mock react-native-device-info differently per test, so that I could explore setting a more useful User-Agent based on the platform it was running on. But Jest doesn't make doing this particularly very easy, at least not until recently:

Jest 29 and up

We can use [jest.mocked][1] to replace the implementation inside the it:

import { getVersion } from 'react-native-device-info'
@nickcharlton
nickcharlton / content.md
Created April 13, 2023 16:09
Gist from Drafts

Clear Sidekiq Jobs

heroku run bundle exec rails c --app ynab-bridge

And then:

Sidekiq::Queue.all.each(&:clear)
@nickcharlton
nickcharlton / websockets-demo.html
Created September 8, 2022 13:47
A basic Web Sockets client demo
<html>
<head>
<script>
const webSocket = new WebSocket("ws://localhost:4283/ws");
webSocket.onmessage = (event) => {
console.log(event.data);
}
window.webSocket = webSocket;
@nickcharlton
nickcharlton / content.md
Created August 31, 2022 13:15
Gist from Drafts

Homebrew: Install specific version

# jump into the Homebrew repo
cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
# find the sha to check out
git log master -- Formula/packer.rb
# uninstall the current version
HOMEBREW_NO_AUTO_UPDATE=1 brew uninstall packer
# check out the version, not allowing update
@nickcharlton
nickcharlton / doc.md
Created July 25, 2022 17:15
Checking for valid MSIX certificates using Visual Studio

Checking a certificate will work is a bit of an awkward one to solve, but a built-in tool will do it:

 PS> Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\TailoredProjectServices\"
 PS> .\VSCertificateChecker.exe -f "C:\Users\NickCharlton\Documents\Certificates\DevelopmentTesting.pfx" -t msix
The file ALBAIKDevelopmentTesting.pfx is password-protected.
Enter password: ************************

Certificate Details:
        Private Key Found: True
@nickcharlton
nickcharlton / content.md
Last active May 24, 2022 09:41
RSpec: Testing ActiveStorage

RSpec: Testing ActiveStorage

Testing file uploads in ActiveStorage is a little awkward. Fortunately, fixtures comes to the rescue and we can provide a file to be passed through to the parameters. This works across model and system/feature specs.

In your factory, you might define it like:

factory :document do
    name { "Example File" }