How am I spending my time?
As of December 2024, I'm:
- Working full-time at BlueDot Impact, an education non-profit where I focus on AI safety and alignment. I've recently been working on:
- Seconded part-time in the Department for Science, Innovation and Technology, to help advise on governing frontier AI systems.
- Handling technology and governance at Raise, a charity that encourages students to think about effective giving. This includes handling our end-of-year submissions to the Charity Commission, and looking after our open-source software.
- Learning about:
- implementing AI evaluations with local LLMs, including making improvements to projects like inspect-ai, inspect-evals, llama-cpp-python
- agentic AI coding tools, particularly Cline, which I made the game "controller-tutor" with
- science of learning principles, from Stephen Kosslyn's books, so I can apply these to the courses at BlueDot and my blog writing
- physical networking, including how to flash and configure devices with OpenWrt
- Playing:
Featured projects
- AWS Email Simulator: enables devs to test emails without AWS credentials, and work productively without internet. Downloaded over 210,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. You can contribute to support their development.
Things I would like to exist
- A free or cheap team password manager. My case is a non-profit with many volunteers, but I think this would likely improve password manager uptake generally which would significantly improve organizational cybersecurity. Thanks to someone for suggesting pass, including QtPass which might be pretty close and can be used by multiple people: I think I just need to figure out a way to make it super user friendly.
- An easy-to-use and free DMARC configuration tool, again to improve cybersecurity for organisations. NCSC offers this free checker which is a great step in the right direction, but isn't quite there yet.
- 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. Someone suggested this might be close to a tickler file system, or a computerized maintenance management system.
- More benchmarks and tutorials for hardware stuff, not just the same intro to programming tutorials over and over again.
Communicating with me
Note: Don't worry too much about following these exactly! Details here are mostly relevant for people I work with a lot.
From you to me:
- Bias towards overcommunicating with me. Leave pauses so I can interrupt you if you're telling me stuff I don't think is relevant.
- Give me feedback. Prefer unpolished timely feedback to no or late feedback. Bonus points if you can be specific or provide examples.
- State your uncertainties and where you've made assumptions.
- Dislikes unplanned synchronous communications.
- Exception: if we are colleagues and something is blocking you.
- Asynchronous comms:
- Slack if we have a workspace in common relevant to the topic, you know I check that workspace, and it's something short.
- 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.
- Google Docs or similar for anything longer or that needs collaboration.
- Email for everything else, or where you're not sure.
- 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. For example:
- 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.
- 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.
- Prefer to communicate widely (e.g. Slack channels/email distros, not DMs) so others can learn from our conversation later.
- Exception: discussions about personal or sensitive matters
- Synchronous comms:
- Enjoys working in public
- If you're asking me to review something, see my review guide.
From me to you:
- I try to triage comms within 72 hours, and respond within 1 week. Slower when I'm extra busy. I don't usually send acknowledgement messages unless asked.
- Assume misunderstanding, not malice. In particular:
- If I'm going in the wrong direction, tell me early.
- I tend to overcommunicate to ensure we're aligned. Interrupt me if I'm telling you something you know!
- If I am slow to respond, I'm likely a bit overloaded with other stuff.
- I will send you asynchronous communications 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'