How am I spending my time?
As of November 2023, I'm:
I'm interested in
- Mitigating risks from artificial intelligence.
- Improving government services, particularly in local government and healthcare services.
- Self development and improvement, with a focus this quarter on the theme of 'health'.
Things I would like to exist
- A reasonably priced password manager (especially for non-profits with many volunteers), to improve organizational cybersecurity.
- An easy-to-use and free DMARC configuration tool, to be able to better clamp down on email spam.
- A todo-list like tool, where I can specify recurring tasks and have the system automatically follow up on things and escalate if necessary. For example, we need to prepare accounts for Raise each year and want to send a reminder to the treasurer - but if they don't acknowledge this then the trustees should be alerted.
Featured projects
- AWS Email Simulator: enables devs to test emails without AWS credentials, and work productively without internet. Downloaded over 150,000 times.
- YouTube thumbnail hider: browser extension with over 50,000 weekly active users and plenty of glowing 5-star reviews.
- Apply for a postal vote service: fully-working GOV.UK-style service. I think this is the first ever properly electronic version of this form.
- Serverless offline watcher: developer tool that enables extending the Serverless framework with arbitrary file or directory hooks.
- London cycle parking: find cycle parking quickly in London.
- ISA tracking tool: compatible with 4 brokers for read and write operations. Has reliably tracked my ISA performance every day for the last 3 years.
- PDF scanner: add a scanned look, more convincingly than existing services.
- RSA SecurID library: reverse-engineered security token generator, derived from a C library. Also available as an easy-to-use browser extension.
- TypeScript i18n library: A lightweight, flexible, and fully type-safe translation framework for websites, native apps and servers.
- Google Doc to LaTeX: Converter that makes writing LaTeX a piece of cake.
- Discord reminder bot template: send reminders from GitHub. 2 min setup.
- Day visualiser: ever felt you needed more existential dread in your life? See how fast the day is slipping away from you.
- Media: I publish free-cultural works on places like Wikimedia Commons (where I also helped build the Android app). They've ended up in US state forestry manuals, South African national textbooks, papers on language models, and YouTube videos with millions of views.
Most of these have their source code availabile on my GitHub.
Communicating with me
From you to me:
- Please bias towards overcommunicating with me. Leave pauses or occasionally check so I can interrupt you if you're telling me stuff I don't think is relevant.
- State your uncertainties and where you've made assumptions.
- Give me feedback. Prefer unpolished timely feedback to no or late feedback. Bonus points if you can be specific or provide examples.
- Prefers asynchronous communication. Dislikes surprise phone calls.
- Exception: use synchronous communication if we are colleagues and something is blocking you from completing work.
- Asynchronous:
- Use Slack if we have a workspace in common relevant to the topic, you know I check that workspace, and it's something short.
- Use WhatsApp, Messenger or Telegram for personal stuff (no formal work comms).
- Exception: If we're working somewhere that doesn't have a communication tool, you can send work comms here.
- Use Google Docs or similar for anything longer or that needs collaboration.
- Use email for everything else, or where you're not sure.
- I think it's fine for you to send me asynchronous communications while sitting next to me.
- If you need me to do or answer something, make it obvious.
- Add '[Action required]' to the subject.
- Prefix tasks with 'Action required:' and bold them.
- State any relevant timelines upfront.
- If I need to read it, use the email 'to' line or tag my Slack handle.
- When writing something with multiple parts, give them unique numbers. This helps us refer back to them.
- Don't inline reply to emails. It's hard to see what's been added, muddies email history, and causes difficult-to-resolve forks.
- Don't just say hello.
- Where relevant, communicate widely (e.g. Slack channels/email distros, not DMs) so others can learn from our conversation later.
- Synchronous: In person, or Google Meet. Hates Webex and Lync.
- If you're asking me for a review, see my review guide.
From me to you:
- Will try to follow your communication preferences. If I'm not aware of them, I'll generally assume the same for you I have requested above.
- I try to triage comms within 24 hours, and respond within 1 week. Slower when I'm extra busy. I don't usually send acknowledgement messages.
- Assume misunderstanding, not malice. In particular:
- If you think I'm going in the wrong direction, tell me early.
- I err on the side of overcommunicating to ensure we're aligned. This can lead to overexplaining: if this is the case let me know!
- If I am slow to respond, I'm likely just a bit overloaded with other stuff.
- I may cut you off if I don't think the conversation is going down the right path. This is not meant as a slight to you: but to make the most of both of our time.
- I will send you asynchronous communications for non-blocking issues while sitting next to you, unless you ask me not to. This is to avoid interrupting you, and so that you can instead address comments at a time that is convenient to you.
- 👀 is 'looking', ✅ is 'done', 👍 is 'acknowledged' (not meant passive aggressively), ➕ is 'agreed', 🙌 or 🎉 is 'yay'
Other trivia
- Lives in London. If you're around and would like to meet up, let me know!
- Enjoys getting around by bike, and will encourage you to give it a go. Happy to help find you a good commuting route and get you confident on the road.