Înapoi la articole →

Cel mai recent articol

Ultima verificare

Urmăritori 0 urmăritori
Articole: 133
  1. An LLM TDD loop

    This post details a Bash script that runs a TDD loop where an LLM is iteratively used to write Python application code to make a fixed set of tests pass.

  2. Writing Markdown in Vim

    I write a lot of Markdown in Vim and have spent considerable energy configuring it to my liking.

  3. Based on a few weeks of using vim-copilot, I recommend the following: Enable Copilot for the gitcommit, markdown and yaml filetypes: let g:copilot_filetypes = { \ 'gitcommit': v:true, \ 'markdown': v:true, \ 'yaml': v:true \ } By default, these and few ot…

  4. A friend of mine has been retweeting great paintings from Twitter accounts like @HenryRothwell, which I’ve greatly enjoyed.

  5. New project: Food price scraper

    I’ve created a deeply middle-class Git scraper project which tracks the prices of a basket of goods sold by the British online supermarket, Ocado.

  6. OpenAI Git poetry

    OpenAI provides a REST API where you can generate prompt completions.

  7. From the final novella of David Mitchell’s The Bone Clocks, set in Ireland in 2043: ‘Number one is to survive’, answers Hood, watching the men on the roof.

  8. Auditing 1Password activity

    As a 1Password admin, there are common audit questions you need to answer around who created various resources.

  9. For the record, I wrote up some patterns that cause flakey tests on the Kraken Technologies tech blog.

  10. Explaining

    Someone has asked a question (in Slack or Github) and you’re about to write an explanation.

  11. Vim's useful lists

    A good understanding of Vim’s various lists is a massive productivity boost — it’s taken me many years of Vim use to truly appreciate this.

  12. Here’s a useful command-mode mapping for Python development: " ~/.vim/ftplugin/python.vim function!

  13. This is a note-to-self on setting up a 2020 13-inch MacBook Pro, largely for Python development.

  14. Here’s a useful technique for using Terraform’s dynamic blocks to create conditional nested blocks.

  15. Maintainable Terraform CIDR lists

    Problem Your Terraform config requires managing many CIDRs that control firewall ingress rules.

  16. Easy Github URLs from Vim

    URLs are great aren’t they?

  17. On code smells: If your codebase is tightly coupled to data in your database (ie the codebase has a data value hard-coded), it is a sign you should extract that data from your database into a code-layer model.

  18. Resolving conflicts from a Git rebase can be tricky.

  19. On software development: Everything you create that has a name lives in a namespace.

  20. Text objects, as in the iw from ciw (“change inner word”), form an important part of your Vim mentalese1.

  21. Debugging Vim by example

    There’s only so far you can get by cargo-culting other people’s ~/.vim folders.

  22. I wrote up a lesson on the dangers of renaming the related_name of a Django model field over on the Octopus Energy tech blog.

  23. Using black and isort with Vim

    FYI, the easiest way to get Vim to automatically run black and isort over a Python buffer when saving is to use Ale’s fixer functionality. " In ~/.vim/after/ftplugin/python.vim (or somewhere like that) let b:ale_fixers = ['black', 'isort'] let b:ale_fix_o…

  24. When provisioning a virtual machine running Ubuntu 16.04 or later, a common problem if being unable to install packages since another process is holding a lock (eg on /var/lib/dpkg/lock-frontend).

  25. I wasted a morning trying to install RabbitMQ v3.7.12 (the latest version as of Feb 2019) on an Ubuntu 18.04 machine using Puppet.

  26. Easy to change

    I care about writing maintainable software1: code that is a pleasure to work with in the long-term; where new requirements can be accommodated smoothly and swiftly – above all, software that is easy to change.

  27. Listing groups in G-Suite

    Oddly, you can’t pull a report of all groups from G-Suite like you can for users.

  28. Advanced pull-request crafting

    I spend most of my day reviewing pull requests in Github.

  29. As I get older and grumpier, I increasingly value clean, uncluttered working environments.

  30. Joining tables on date and timestamp with timezone fields in Postgres1 needs careful handling because of time zones and daylight-saving time.

  31. A curated1 collection of words-of-the-day from @qikipedia: Word of the day: ARSLE - to move backwards. — Quite Interesting (@qikipedia) May 14, 2017 Word of the day: VERSCHLIMMBESSERN - (German) - to make something worse while attempting to make it better…

  32. Using a custom Sentry client

    I wrote up a short tip on using a custom Sentry client.

  33. Why your Django models are fat

    Because: You moved everything out of the views.py modules when you heard fat controllers were bad.

  34. Bash error reporting

    Two tips: Fail fast You probably already know that you can force Bash scripts to exit immediately if there’s an error (that is, if any command exits with a non-zero exit code) using: #!

  35. Using pgbadger with AWS RDS

    There’s two non-obvious things to know when starting to use pgbadger with AWS RDS.

  36. A mnemonic for mock decorators

    Using both @mock.patch decorators and py.test fixtures can be confusing as it’s not always clear what order arguments are being injected.

  37. Your codebase is your house

    “Remember, code is your house, and you have to live in it.” - Michael Feathers 🏠 — Programming Wisdom (@CodeWisdom) April 19, 2017 This is the best metaphor I know for promoting or defending software quality.

  38. I spend at least 50% of each day reviewing, amended (and occasionally merging) pull requests, adding both commits and comments.

  39. Like many people, I use Google Sheets to quickly create and share tabular data.

  40. Podcast.__init__ on Oscar

    I was interviewed, along with Michael van Tellingen, on the “Podcast.

  41. If your Consul key-value store is structured as: / A/ X = 1 Z = 2 Y = 3 C D but you now realise you should have namespaced everything within WEBSERVER/ (or something like that): / WEBSERVER/ A/ X = 1 Z = 2 Y = 3 C D then this Bash script will help you mig…

  42. In approximate chronological order: “Sorry I missed stand-up this morning” “I didn’t see that email” “I’ll get back to you shortly” “Sounds easy - should only take a couple of days” “It’s nearly finished” “I didn’t have time to write tests” “We’ll clean t…

  43. Hugo

    I’ve migrated this site to Hugo so I can host it on Github pages1.

  44. I wrote an article on Django, ELB health checks and continuous delivery.

  45. Octopus Energy has a tech blog.

  46. Octopus Energy

    Last Wednesday was my last day at Yoyo Wallet.

  47. Here’s a useful heuristic for writing better commit messages.

  48. I often need to grab information from a Postgres database and paste it into a spreadsheet for sharing with others.

  49. An SSH tip for modern AWS patrons

    Cloud computing and immutable infrastructure deployments have changed the way I use SSH.

  50. commandlinefu.com is in new hands

    For the record, I no longer maintain commandlinefu.com.