Francis Windram's Avatar

Francis Windram

@franwin.co.uk

Postdoc, Computational ecologist interested in spiderwebs, biological traits, imaging, vector-borne disease and good solid R code. www.franwin.co.uk for more details. he/him. Views my own.

75
Followers
100
Following
105
Posts
20.09.2023
Joined
Posts Following

Latest posts by Francis Windram @franwin.co.uk

Also if we were going to get people to take anything from package dev into their normal analysis, it should be 1) Dependency checking using rlang::check_installed() and then using ::-style calling, 2) Proper messaging using cli, & 3) properly documenting functions with Roxygen.

08.03.2026 12:40 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

That's kind of a wild suggestion for researchers (and one that I haven't personally encountered). I'm all for spinning off reusable functions into their own package, but the way one uses R for analysis is just so very different to how one writes a package. Just code/data/results works in most cases!

08.03.2026 12:35 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
We are exhibiting at AMCA 26!

We are exhibiting at AMCA 26!

Will you be at AMCA 26? Come find @vectorbyte.bsky.social and chat to us about our databases, workshops, data management, and let @samrund.bsky.social give you stickers, perhaps?
#AMCA26

03.03.2026 15:35 πŸ‘ 4 πŸ” 4 πŸ’¬ 0 πŸ“Œ 0
ohvbd 1.0.0 has been released on CRAN! - Blog Announcing ohvbd v1.0.0 on CRAN: a unified R interface for retrieval and harmonisation of vector-borne disease data.

ohvbd 1.0.0 has now been released on CRAN!

This package should help those looking for VBD data by interfacing with vbdhub.org for searching, and the VectorByte trait and population dynamics databases for data download (alongside much more).

vbdhub.org/blog/ohvbd-c...

#rstats #vectorbyte #vbd

11.02.2026 16:33 πŸ‘ 5 πŸ” 3 πŸ’¬ 0 πŸ“Œ 0

It's so good!!! I initially was a bit sceptical about recode_values until I was shown the whole lookup table approach, and now I am super excited. Recoding is one of the least enjoyable things that I actually do regularly.

09.02.2026 21:01 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
ohvbd: One Health VBD Hub Interface with the One Health VBD (vector-borne disease) Hub &lt;<a href="https://vbdhub.org/" target="_top">https://vbdhub.org/</a>&gt; and related repositories (VectorByte &lt;<a href="https://www.vectorbyte.org" target="_top">https://www.vectorbyte.org</a>&gt;, GBIF &lt;<a href="https://www.gbif.org" target="_top">https://www.gbif.org</a>&gt; and AREAdata &lt;<a href="https://pearselab.github.io/areadata/" target="_top">https://pearselab.github.io/areadata/</a>&gt;) directly to find, download, and subset vector-borne disease data.

New on CRAN: ohvbd (1.0.0). View at https://CRAN.R-project.org/package=ohvbd

09.02.2026 14:16 πŸ‘ 1 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Google with AI buttons

Google with AI buttons

Google without AI buttons

Google without AI buttons

I made a filterlist for uBlock Origin to remove Generative AI features on websites. Includes blocks for
* Google AI Summaries
* YouTube Ask button & chat summaries
* GitHub Copilot
* Facebook AI chat
* X's Grok buttons
* Deviantart DreamUp
* Booru AI images
* And more

github.com/Stevoisiak/S...

03.02.2026 00:30 πŸ‘ 23322 πŸ” 11637 πŸ’¬ 287 πŸ“Œ 230

It is a tool, and it is one that is not right for every purpose. I personally believe coding is a situation where it can significantly enhance the already highly-skilled. I also believe that one does themselves a disservice by relying too heavily upon it. It can _code_, but it can't _think_ for you.

02.02.2026 16:34 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

You do not have to think it is terrible at everything to think it is less useful than others find it. You do not even have to believe it is good at everything to believe it is good at some things. It is certainly good at natural language processing for example.

02.02.2026 16:34 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

My own take at least is the following:
- When it works it's great.
- When it doesn't work it's not.
- Knowing when it doesn't work can be hard.
- It is hard to realise when it hasn't worked without out-of-band knowledge.
- It is hard to develop said knowledge without other skills.

02.02.2026 16:34 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Oh I shall, thanks!

10.01.2026 17:09 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Changelog

I did actually play with that (parquet is such a cool data format). Alas as this is not _primarily_ a spatial package I figured it was probably best not to add an extra dep for that sweet sweet extra 300ms reduction.

You did get a shoutout in the changelog though! ohvbd.vbdhub.org/news/index.h...

09.01.2026 17:11 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Out of interest I actually ended up switching up a little more and settling on GeoPackage for this particular usecase. It further reduced load time by 33% for the largest files.

09.01.2026 01:04 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image

Oh that's a fantastic idea! Honestly shapefiles have always annoyed me, but I don't do enough with them to have done a deep dive into alternative formats. Already implemented and this saved me 25% storage size and ~35% load time for the largest files!

Thank you so much!

09.01.2026 00:36 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image

I definitely agree, devs should strive to inform the user when caches are created (and, better yet, used).

In the end it is a little tricky if your code is only ever run once, because after that you have no ability to affect the user's system in any meaningful manner. But still...let them know!

08.01.2026 20:55 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

That is super interesting and very much along the lines of what I was thinking for a unified cache tracking mechanism should that be needed. Thanks!

08.01.2026 14:30 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Yeah that's a really good point, though I also have support for custom cache locations specifically for those cases. Still I'm inclined to agree. I hope the CRAN folks view it the same way!

08.01.2026 03:31 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Ahh yes memoisation would be great within sessions, these are more like large lookup shapefiles and data tables that get used across sessions. I'm inclined to agree that I should just rely on the user to handle it.

Thanks for the link!

08.01.2026 03:29 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I could (and possibly will) make it so that any function that interacts with the outside world automatically cleans the cache, but I don't _really_ love that either as then a function that interfaces with one DB might clean the cache relating to another.

07.01.2026 12:20 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I struggle with this because on one side I don't like doing things under a user's nose, but on the other I really don't like the idea of just eating up space on a user's drive until they interact with the cache-maintenance helpers (which they may not find).

07.01.2026 12:20 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

An #rstats question for package developers: If my package maintains a cache to minimise data downloads, is it sensible/preferred to put an automatic cache cleaner (delete anything older than x days) in .onLoad, or to just mostly leave cache maintenance to the user (with appropriate helpers)?

07.01.2026 12:20 πŸ‘ 5 πŸ” 3 πŸ’¬ 5 πŸ“Œ 0

{ggview} can print plots to Viewer (Rstudio or Positron) with true scaling. Adjust plot settings and see the final proportions immediately.

Save the plot once πŸ‘Œ

e.g.:
ggplot(...) +
ggview::canvas(width = 220, height = 220*2/3, units = "mm", dpi = 300)

per @nrennie.bsky.social #datavis #rstats

16.12.2025 22:53 πŸ‘ 122 πŸ” 33 πŸ’¬ 3 πŸ“Œ 3

@franwin.co.uk drove a massive rework of rTPC this year, making package maintenance much easier. rTPC now supports 49 different model formulations, vignettes are updated, & you can parallelise model fitting using new purrr & mirai, which is DOPE. #rstats πŸ§ͺ

padpadpadpad.github.io/rTPC/article...

12.10.2025 19:04 πŸ‘ 13 πŸ” 3 πŸ’¬ 1 πŸ“Œ 0
Preview
The role of large ungulate grazers on Ixodes ricinus and tick-borne pathogens in the New Forest - a case study for future rewilded landscapes Large ungulate grazers can manage habitats via conservation grazing, a practice using livestock to control vegetation growth, which has many ecologica…

🚨 New paper 🚨

How does livestock grazing impact tick-borne disease hazard? Our new study in the New Forest National Park used a paired experiment to find out.

Important for #rewilding and #conservation grazing schemes!

#Ticks #LymeDisease @ukhsa.bsky.social

www.sciencedirect.com/science/arti...

29.08.2025 07:59 πŸ‘ 2 πŸ” 1 πŸ’¬ 1 πŸ“Œ 1

Honestly, for me I'm still being pushed away from Positron by the lack of inline output for qmd/Rmd. Being able to play around then build and send is pretty important for me.

05.08.2025 10:29 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Ah, esquisse was the package!

27.07.2025 17:25 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I wish I'd had R before my Master's (though 4 languages in 7 weeks definitely made up for it). For point and click basics, Jamovi ain't terrible. Though there is an R package (the name of which escapes me) which allows for really easy visual exploration of data, which would be good for teaching!

27.07.2025 17:21 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Coding does it to us all. I blame undergrads taught in SPSS for triggering this particular sadistic (stadistic?) streak though.

27.07.2025 17:09 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Or "# the only way to win is not to play". And if you type it on a solvable problem it randomly replaces 5 double quotes in your code with single quotes and vice versa.

27.07.2025 16:23 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

This would very quickly become my favourite game I reckon. As a bonus it should very occasionally throw in a problem that seems easy and actually was a fiendish open question in computer science or mathematics for 50+ years.

27.07.2025 11:33 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0