Luke Plant's home page
- Posts
- 309 from 17 May 2004 to 12 Oct 2026
- Posting
- monthly (6 in the last year)
- Kind
- personal blog
- Feed
- https://lukeplant.me.uk/blog/atom/index.xml
2026 5
2025 7
2024 10
- Recursive project search in Emacs
- Check if a point is in a cylinder - geometry and code
- Should we use AI and LLMs for Christian Apologetics?
- Keeping things in sync: derive vs test
- Never, Sometimes, Always
- pyastgrep and custom linting
- Programming mantras are proverbs
- Enforcing conventions in Django projects with introspection
- Older »
- Python packaging must be getting better - a datapoint
2023 14
- Python Type Hints: pyastgrep case study
- Super-fast Sphinx docs, and SNOB driven development
- Is the Lord's Day the Christian Sabbath?
- No one actually wants simplicity
- You can stop using user-scalable=no and maximum-scale=1 in viewport meta tags now
- Re-using CSS for the wrong HTML with Sass
- Django and Sass/SCSS without Node.js or a build step
- ChatGPT: abstract logic and the doubling down bias
- ChatGPT: it has no inner monologue or meta-cognition
- ChatGPT: it makes things up (that's its job)
- What if none of it is true?
- The different uses of Python type hints
- Python’s “Disappointing” Superpowers
- Accepting the paedo-baptised into credo-baptist churches
2022 11
- A model for the soul
- Test factory functions in Django
- Python Type Hints: case study on parsy
- Tools for rewriting Python code
- Better Python code grepping with pyastgrep
- Older »
- The argument from unwanted children
- Raising exceptions or returning error objects in Python
- REPL Python programming and debugging with IPython
- The technological case against Bitcoin and blockchain
- The Christian case against Bitcoin and blockchain
2021 7
2020 10
- Evolution of a Django Repository pattern
- Everything is an X
- Test smarter, not harder
- Announcement: Django Views - The Right Way
- Please stop trying to blacklist ‘blacklist’
- Keyword-only arguments in Python
- Why I'm leaving Elm
- Double-checked locking with Django ORM
- Older »
- 50 reasons why Christians should take climate change seriously
2019 3
2018 2
2017 3
2016 3
2015 4
2014 9
- Handling Django's get_query_set rename is hard
- You can’t compare language features, only languages
- HP Pavilion 17-e153sa on Linux Mint
- How to learn Django without installing anything
- Older »
- Things that can be self-hosting
- Approval and acceptance in the tech community
- Import Chrome passwords into Firefox on Linux/Gnome
- Export and import for Gnome password manager (Seahorse)
2013 10
- Zero-based indexing in the real world
- Wedding hacks - seating planner using simulated annealing
- Wedding hacks - making A4 booklets from A5 PDF sheets
- Wedding hacks - John Lewis gift list hyperlink
- MVC is not a helpful analogy for Django
- Bundling dependencies
- Best practices with Django on WebFaction
- Now it's your turn
- Controlling Sozi remotely from an Android phone
- Translating sentences with substitutions
2012 15
- Full screen WebView Android app
- Dynamic typing in a statically typed language
- On Boys and Bikinis
- Why escape-on-input is a bad idea
- PHP, Python and Persuasion
- Moved to blogofile and disqus
- Older »
- Never fix a bug twice
- Django's CBVs were a mistake
- Reasons to love Django, part x of y
- WordShell - WordPress command line admin utility
- LearnScripture.net launched
- KTimeTracker replacement - TimeCult
- Async Raven/Sentry client with Django/Python
- Some quick Django optimisation lessons
2011 7
2010 17
- django-anonymizer released
- django-output-validator released
- Fuzzy testing with assertNumQueries
- Class Based Views and Dry Ravioli
- Use JSON instead of YAML for Django test fixtures
- Older »
- The kind of comments that will get ignored on Django's Trac
- player_do – control multiple media players from a single (command line) interface
- Cleverbot never admits defeat
- Leaving KDE
- Why eating shrimps is not like homosexuality
- Exploratory programming with IPython
- Linux and calendars - bad combination...
- Mercurial tree visualisation
- Eclipse and Mercurial with existing checkout
- Blackberry Curve ↔ KDE-PIM sync on Kubuntu Karmic. FAIL
- Eclipse, PyDev, Django and virtualenv
2009 13
- According to their deeds
- Is static type checking a redundant testing mechanism?
- Haskell blog software
- Building GHC is fun...
- A plea to KDE developers
- Haskell string support
- Python and copyright
- 1 Corinthians 7:36-38 – “Marry” or “give in marriage”?
- GHC bug?
- Amarok 2 can corrupt MP3 files
- Emacs and personal trac wiki
- Review: Django 1.0 Template Development
- Multiple output formats in Django
2008 14
- Haskell regex problem - help needed!
- Ella
- Does the church meet for worship?
- Haskell API docs suck. A lot.
- Managing Django patches using Mercurial
- Haskell Regex replace
- Haskell Blog Rewrite - Session 7
- Django, Python 2.5 and memory usage
- MOC and last.fm
- Django newforms-admin upgrade
- Konsole/Yakuake and drag/drop
- Bible memorisation web app
- Django and Twill
- Personal wiki and desktop integration
2007 31
- AJAX validation with Django, newforms and MochiKit
- Django Validator 1.3
- Older »
- Older »
- Older »
- Fixing Facebook in Konqueror
- Facebook broken in Konqueror
- Haskell Blog Rewrite - Session 6
- Last.fm, Konqueror, Amarok
- Sharing internet connection to chroot
- Implementing a dictionary using first class functions
- Jordan - part 1
- Jordan - Wadi Rum
- Gutsy woes
- Rewriting my blog in Haskell
- HaWiki has disappeared!
- Haskell Blog Rewrite - Session 5 - 2007-07-20
- Haskell Blog Rewrite - Session 4 - 2007-07-19
- Mature Wine
- HSQL and HaskellDB anguish
- Haskell Blog Rewrite - Session 2 - 2007-07-06
- Beryl usefulness
- Configuring Samba in KDE, with Kubuntu Feisty
- O'Reilly code quiz
- Null pointers vs None vs Maybe
- What's so bad about the Nazis anyway?
- Edgy, Feisty, and Pheenet WLU-703Z
- Human chromosome 2 - a creationist response
- Django validator updated
- Portable computer
- Amarok / Ubuntu integration
2006 24
- Kio-Sword Sourceforge page
- Kio-Sword 0.3 released
- Working with email offline
- Howto expand/resize a VMPlayer image
- Adventures in Haskell - ODBC under Windows
- Replacement dos box for Windows - emacs shell mode
- Why learning Haskell/Python makes you a worse programmer
- Ie7
- Understanding Monads Via Python List Comprehensions
- Pyrex and Lisp
- A Django website that took (a lot) more than 20 minutes.
- Django-updates gem
- bacKing up
- View Source in Konqueror
- Older »
- Empty files and templates
- Leading whitespace in comments
- pychecker vs pylint vs Django
- Django Admin Hack - Fields varying with user permissions
- Clipboard diff
- Wajig is da bomb
- KDirStat
- Is Google talk talking?
- Kio-Sword 0.2 released
2005 46
- Last.fm taster
- Updated validator and CsrfMiddleware
- Django dreaming
- Django validator app. And fuse/webdav/bazaar
- Cross Site Request Forgeries
- Scott Adams on blogging
- Django
- chroot with X applications
- Kio-Sword 0.1-3
- Over and out
- Blogging critique part 4: Reading matter(s)
- Older »
- Blogging critique part 3: Nutters
- Blogging critique part 2: Mixed witness?
- SimplyMEPIS
- Phishing phloored
- Uptime
- Konqueror incremental search
- iTunes for Linux
- Kio-Sword 0.1-2
- Blogging critique part 1: Genuine influence?
- Web development on Linux
- Ubuntu and Win4Lin
- Subversion on AMD64
- Automount gotchas
- Fun with 64-bit Linux
- Accumulator Generator in PHP
- Ubuntu and Debian AMD64 repository
- More Ubuntu experiences
- Back to Debian - with Ubuntu this time
- Back online!
- Juice
- Older »
- Psalm 51:8
- Cleaning and Jasper Fforde
- Mandrake firewall fixed
- PHP View-Controller
- My blog code
- New blog system
- Spam
- Plans
- Money
- Linux friendly radio
- Networking fun
- New computer, new OS
- Feed my sheep
2004 44
- GMail invite, anyone?
- Sufficient for all?
- Being predictable
- My King / The Seven Way King
- Kompare - a tool of beauty
- Abusing GMail
- Iron Warning
- Older »
- Firefox - make the switch
- CSS signatures
- Irregular Expressions
- Working life
- First day
- The Man in Romans 7
- By the Spirit
- Blogging politics
- How to get hits
- Going up in the world
- Sesquipedalianism
- Geeky updates
- Deuteronomy 24:14,15
- Catch up
- Comics by RSS
- It's not enough
- MrKnowItAll's inbox
- The pains of hell
- Toothache
- To shave or not to shave
- Older »
- Reboot Blues
- LP Phone Home
- Psalm 51:12,13
- Back to sunny Bradford
- For no-one
- daily news
- CodeExporter 1.0
- John 15:9
- Everyone likes a blog
- New fractal gallery
- Kio-Sword 0.1
- Kio-Sword 0.0.1
- Kio-Sword
- CodeExporter 0.2
- VBA modules