{"request":{"options":["mode=llm"],"pageUrl":"https://theorangeone.net/","api":"article","version":3},"objects":[{"date":"Wed, 15 Apr 2026 00:00:00 GMT","images":[{"title":"\nFirewalling Docker with nftables","url":"https://images.unsplash.com/photo-1638896379589-eb1b3fd1f33c?crop=entropy&cs=tinysrgb&fit=max&fm=webp&ixid=M3wzNjExNzd8MHwxfGFsbHx8fHx8fHx8fDE3ODA2OTE5Mjd8&ixlib=rb-4.1.0&q=80&w=400"},{"title":"\nMy not-so-static new static website","url":"https://images.unsplash.com/photo-1650648065204-0b8d52b18447?crop=entropy&cs=tinysrgb&fit=max&fm=webp&ixid=M3wzNjExNzd8MHwxfGFsbHx8fHx8fHx8fDE3ODA4Nzg2OTF8&ixlib=rb-4.1.0&q=80&w=400"},{"title":"\nMoving on from Gandi: Registrar and DNS migration","url":"https://images.unsplash.com/photo-1614000531369-40de532d00bf?crop=entropy&cs=tinysrgb&fit=max&fm=webp&ixid=M3wzNjExNzd8MHwxfGFsbHx8fHx8fHx8fDE3NzgzMjQyNzJ8&ixlib=rb-4.1.0&q=80&w=400"},{"title":"\nExtracting directories into their own repositories","url":"https://images.unsplash.com/photo-1550090597-753fa061fc6a?crop=entropy&cs=tinysrgb&fit=max&fm=webp&ixid=M3wzNjExNzd8MHwxfGFsbHx8fHx8fHx8fDE3NzgzMjQyNzJ8&ixlib=rb-4.1.0&q=80&w=400"},{"title":"\nState of the Server 2026","url":"https://images.unsplash.com/photo-1760411538002-62e66adec844?crop=entropy&cs=tinysrgb&fit=max&fm=webp&ixid=M3wzNjExNzd8MHwxfGFsbHx8fHx8fHx8fDE3NzgzMjQyNzJ8&ixlib=rb-4.1.0&q=80&w=400"},{"title":"\nJake versus 2025","url":"https://live.staticflickr.com/65535/54799637116_0fe5569afe.jpg"}],"author":"TheOrangeOne","shareLinks":false,"estimatedDate":"Wed, 15 Apr 2026 00:00:00 GMT","icon":"https://theorangeone.net/static/img/favicon.b36806dd1565.ico","diffbotUri":"article|3|-1499963850","siteName":"theorangeone.net","type":"article","title":"TheOrangeOne","interactive_elements":[{"searchTemplate":"https://theorangeone.net/search/go/?q={searchTerms}","type":"search"}],"content":"Home :: TheOrangeOne  [/home/theorangeone ](https://theorangeone.net/) ≡ × \n-  [~/contact ](https://theorangeone.net/contact/) \n-  [~/posts ](https://theorangeone.net/posts/) \n-  [~/projects ](https://theorangeone.net/projects/) \n-  [~/talks ](https://theorangeone.net/talks/) \n\n\n\n\n# Jake Howard \n\n## Latest Posts  [![](https://images.unsplash.com/photo-1638896379589-eb1b3fd1f33c?crop=entropy&cs=tinysrgb&fit=max&fm=webp&ixid=M3wzNjExNzd8MHwxfGFsbHx8fHx8fHx8fDE3ODA2OTE5Mjd8&ixlib=rb-4.1.0&q=80&w=400)\n\nFirewalling Docker with nftables ](https://theorangeone.net/posts/docker-nftables-firewall/)  [![](https://images.unsplash.com/photo-1650648065204-0b8d52b18447?crop=entropy&cs=tinysrgb&fit=max&fm=webp&ixid=M3wzNjExNzd8MHwxfGFsbHx8fHx8fHx8fDE3ODA4Nzg2OTF8&ixlib=rb-4.1.0&q=80&w=400)\n\nMy not-so-static new static website ](https://theorangeone.net/posts/not-so-static-website/)  [![](https://images.unsplash.com/photo-1614000531369-40de532d00bf?crop=entropy&cs=tinysrgb&fit=max&fm=webp&ixid=M3wzNjExNzd8MHwxfGFsbHx8fHx8fHx8fDE3NzgzMjQyNzJ8&ixlib=rb-4.1.0&q=80&w=400)\n\nMoving on from Gandi: Registrar and DNS migration ](https://theorangeone.net/posts/moving-on-from-gandi/)  [![](https://images.unsplash.com/photo-1550090597-753fa061fc6a?crop=entropy&cs=tinysrgb&fit=max&fm=webp&ixid=M3wzNjExNzd8MHwxfGFsbHx8fHx8fHx8fDE3NzgzMjQyNzJ8&ixlib=rb-4.1.0&q=80&w=400)\n\nExtracting directories into their own repositories ](https://theorangeone.net/posts/git-directory-extraction/)  [![](https://images.unsplash.com/photo-1760411538002-62e66adec844?crop=entropy&cs=tinysrgb&fit=max&fm=webp&ixid=M3wzNjExNzd8MHwxfGFsbHx8fHx8fHx8fDE3NzgzMjQyNzJ8&ixlib=rb-4.1.0&q=80&w=400)\n\nState of the Server 2026 ](https://theorangeone.net/posts/state-of-the-server-2026/)  [![](https://live.staticflickr.com/65535/54799637116_0fe5569afe.jpg)\n\nJake versus 2025 ](https://theorangeone.net/posts/jake-versus-2025/)  [View all posts » ](https://theorangeone.net/posts/) \n\n## Recent Talks  [![](https://i.ytimg.com/vi/6rwlhrXb_sQ/hqdefault.jpg)](https://theorangeone.net/talks/django-chat-200/) \n\n##  [ Django Tasks - Django Chat #200  ](https://theorangeone.net/talks/django-chat-200/) \n-  2026-04-15 \n-  2 hours \n-  [ Video  ](https://www.youtube.com/watch?v=6rwlhrXb_sQ) \n-  [ Django Chat  ](https://djangochat.com/) \n\n\nI was invited to an episode of Django Chat, to chat about Django Tasks, the Security Team and much more. I'm well aware that a podcast isn't really a \"talk\", but it's appropriate enough. \n-  [#django ](https://theorangeone.net/tags/django/) \n [![](https://i.ytimg.com/vi/DkWHdLu97uk/hqdefault.jpg)](https://theorangeone.net/talks/forcefully-stopping-python/) \n\n##  [ Halt and Catch Fire: Forcefully Stopping Python  ](https://theorangeone.net/talks/forcefully-stopping-python/) \n-  2025-09-20 \n-  25 minutes \n-  [ Slides  ](https://slides.jakehoward.tech/pyuk25-stopping-your-python-code/) \n-  [ Video  ](https://www.youtube.com/watch?v=DkWHdLu97uk) \n-  [ PyCon UK 2025  ](https://2025.pyconuk.org/) \n\n\nAs developers, we're tasked with writing code, with the intention of running it. In most cases, we want to run said code for as long as possible - either until completion or until something external restarts us. But in some cases, we want to run until another part of our program tells us not to. When defining background reusable tasks, you don't want them to run forever. If the task takes too long, for\u2026 \n-  [#programming ](https://theorangeone.net/tags/programming/) \n-  [#python ](https://theorangeone.net/tags/python/) \n [![](https://theorangeone.net/images/5LyKCMVHkV5bGHiND9wJ-MMAl8NbzfofdxJCDkSCAg4/400/talks/public-tailnet-services/tailscale-london-meet.webp)](https://theorangeone.net/talks/public-tailnet-services/) \n\n##  [ Unleashing Tailscale with Public and Private Services  ](https://theorangeone.net/talks/public-tailnet-services/) \n-  2025-07-03 \n-  20 minutes \n-  [ Slides  ](https://slides.jakehoward.tech/tscm25-public-tailnet-services/) \n-  [ Tailscale London Meetup  ](https://tailscale.com/events-webinars/tailscale-community-meetup-London/) \n\n\nA talk about how I use Tailscale (well, technically Headscale) and why. Tailscale's promise is making networking easier, which I hate. But sometimes it's necessary to achieve something cool (building Funnel myself), and something not recommended (Private Funnel). The talk wasn't recorded, but my slides are available. However, I'd recommend reading the related post, instead. \n-  [#self-hosting ](https://theorangeone.net/tags/self-hosting/) \n\n\n##  [ Bringing Background Workers to Django  ](https://theorangeone.net/talks/bringing-background-workers-to-django/) \n-  2024-09-10 \n-  20 minutes \n-  [ Slides  ](https://slides.jakehoward.tech/dls24-bringing-background-workers-to-django/) \n-  [ Django London  ](https://www.meetup.com/djangolondon/) \n\n\nThis talk was almost identical to the one I gave at Djangocon Europe 2024. Django London isn't recorded, but the slides are linked. If you want to watch the talk, I recommend watching the Djangocon version. There's a lot more to a web application than just the request/response cycle. Running tasks in the background, whether on a trigger or schedule unlocks a lot of extra functionality, performance and reliability.\u2026 \n-  [#django ](https://theorangeone.net/tags/django/) \n [View all talks » ](https://theorangeone.net/talks/) \n\n### Popular right now \n-  [Firewalling Docker with nftables ](https://theorangeone.net/posts/docker-nftables-firewall/) \n-  [Exposing Docker's internal DNS with CoreDNS ](https://theorangeone.net/posts/expose-docker-internal-dns/) \n-  [Exposing your Homelab ](https://theorangeone.net/posts/exposing-your-homelab/) \n-  [Mount NFS inside LXC containers ](https://theorangeone.net/posts/mount-nfs-inside-lxc/) \n-  [Replacing a Proxmox boot drive ](https://theorangeone.net/posts/proxmox-boot-drive-replacement/) \n\n\n### Common Tags \n-  [#self-hosting 54 ](https://theorangeone.net/tags/self-hosting/) \n-  [#linux 44 ](https://theorangeone.net/tags/linux/) \n-  [#programming 36 ](https://theorangeone.net/tags/programming/) \n-  [#security 34 ](https://theorangeone.net/tags/security/) \n-  [#containers 22 ](https://theorangeone.net/tags/containers/) \n-  [#website 16 ](https://theorangeone.net/tags/website/) \n-  [#django 14 ](https://theorangeone.net/tags/django/) \n-  [#server-2020 14 ](https://theorangeone.net/tags/server-2020/) \n-  [#docker 13 ](https://theorangeone.net/tags/docker/) \n-  [#privacy 12 ](https://theorangeone.net/tags/privacy/) \n [View all tags » ](https://theorangeone.net/tags/) \n\n### Social \n\n [View more » ](https://theorangeone.net/accounts/) \n\n### Pages \n-  [/accounts ](https://theorangeone.net/accounts/) \n-  [/contact ](https://theorangeone.net/contact/) \n-  [/feeds ](https://theorangeone.net/feeds/) \n-  [/guestbook ](https://theorangeone.net/guestbook/) \n-  [/posts/all ](https://theorangeone.net/posts/all/) \n-  [/support ](https://theorangeone.net/support/) \n [View sitemap » ](https://theorangeone.net/sitemap/) \n-  [Contact ](https://theorangeone.net/contact/) \n-  [Support ](https://theorangeone.net/support/) \n-  [Feeds ](https://theorangeone.net/feeds/) \n-  [Search ](https://theorangeone.net/search/) \n-  [Sitemap ](https://theorangeone.net/sitemap/) \n\n\n© 2026   [TheOrangeOne ](https://theorangeone.net/contact/) \n\n [To top ](https://theorangeone.net/#)  [ *in style * ](https://theorangeone.net/#)","humanLanguage":"en","authorUrl":"https://theorangeone.net/contact/","pageUrl":"https://theorangeone.net/","authors":[{"name":"TheOrangeOne","link":"https://theorangeone.net/contact"}]}]}