Technology Tales

Notes drawn from experiences in consumer and enterprise technology

19:56, 27th June 2025

The latest release of chromote, version 0.5.0, brings new features that make it easier to download and use any version of Chrome. This is a package that allows users to drive and access the Chrome web browser programmatically from R using Chrome's headless mode, which is ideal for automated testing and server environments. Headless mode is a special browsing mode without a visible interface, and chromote automatically launches Chrome in this mode. The latest version of chromote includes features that let users download any version of Chrome or chrome-headless-shell from the Google Chrome for Testing service, ensuring reproducibility of automated scripts. Users can manage Chrome versions with functions such as local_chrome_version, which sets the version of Chrome for the current session and chrome_versions_add, which adds a new Chrome version to the cache. Additionally, chromote now has a new method called set_viewport_size, which makes it easier to adjust the virtual window size of a chromote tab. Overall, the updates in chromote version 0.5.0 aim to improve the user experience and provide more flexibility in managing Chrome versions.

11:22, 28th May 2025

Musings on R is a blog by Martin Chan covering a broad range of topics related to R programming and data science. Posts span practical tutorials and vignettes on packages such as ggplot, dplyr, data.table and RMarkdown, alongside more conceptual pieces on learning approaches, working directories and duplicated artefacts. More recent entries explore the use of large language models and generative AI tools, including running local models and integrating Azure OpenAI with R for tasks such as summarising web content and generating route descriptions from GPX files.

22:45, 3rd May 2025

The ellmer R package, launched in February 2025, has revolutionised how scientists can harness large language models in their research workflow. This innovative tool stands out by supporting both tool use (enabling LLMs to run commands on computers for accurate calculations or information retrieval) and structured data extraction from documents. Unlike previous solutions that required knowledge of other languages such as JSON, ellmer makes powerful LLM capabilities readily accessible to R users. Its practical applications are particularly valuable for scientific work, including performing literature reviews, interpreting metadata from online databases, analysing data, writing up findings, and batch processing documents for summarisation. The package simplifies authorisation through API keys and offers both interactive and programmatic interfaces, allowing researchers to experiment with different system prompts before implementation.

22:14, 21st April 2025

The sassy system is a collection of R packages aimed at enhancing productivity, particularly for users familiar with SAS® software. Addressing limitations in areas such as logging, value formatting, data management, and report creation, these packages introduce concepts and workflows inspired by SAS to streamline R programming. The system includes key packages for logging, libraries, data formatting, reporting, and general utilities, along with specialised tools for tasks like generating define.xml files, accessing data, and creating analysis datasets.

22:11, 21st April 2025

Claude Code is an agentic coding assistant by Anthropic that integrates directly into the terminal, helping developers understand, edit and manage their codebases via natural language commands. After installing Node.js 18+ and Claude Code, users authenticate with their Anthropic Console account to access features such as file editing, bug fixing, codebase querying, Git operations, test execution and deeper project analysis, all within a secure environment. Designed for macOS, Ubuntu, Debian, and Windows via WSL, Claude Code employs a tiered permissions system, comprehensive memory management for persisting preferences, and built-in tools for code search and modification, while providing robust safeguards against command injection and other security risks. Customisable at both global and project levels, it supports automation in CI pipelines, accommodates various shell environments, offers Vim mode, cost tracking and model selection, and is compatible with Amazon Bedrock, Google Vertex AI, proxies and devcontainers. Privacy is emphasised, with limited retention of feedback data used solely to improve functionality and not for model training. Extensive configuration, troubleshooting and notification options ensure adaptability and usability for individual developers and teams.

22:56, 30th March 2025

While ActiveState has moved on from its Komodo and OpenKomodo editors, you still find the cod on GitHub. With all the other options out there, it is difficult to see why anyone would use these tools, save for an escape from the incessant onset of AI into everything we do.

19:31, 28th March 2025

It’s astonishing what a misplaced wp-config.php file can cause. Today, one ended up travelling in here while I was setting up a test blog for seeing how WordPress 2.7 was coming along. The result was that content more appropriate to my hillwalking blog turned up on web browsers and in feeds instead of what should have made its appearance. I’ll have to be more careful in future…

P.S. I realise that I have been quiet over the last few weeks, but that’s down to my being away in Scotland hiking on some of its islands and catching up with some friends in Edinburgh. I have some ideas for new posts, so they should manifest themselves sooner rather than later.

15:03, 27th March 2025

In delivering an overview of the current state of statistical programming recruitment, it's evident that the field is experiencing rapid transformation driven by increased complexity in clinical trials, heightened regulatory expectations, and technological advancements. The demand for programmers skilled in multiple languages beyond SAS, knowledgeable about automation and AI integration, and experienced in handling real-world evidence is rising. To remain competitive, companies must adapt their recruitment strategies to attract candidates with both technical proficiency and the capacity for cross-functional collaboration. This means prioritising those who can manage complex data, ensure regulatory compliance, and collaborate effectively across teams. Moreover, employing a balanced approach between permanent hires and contract specialists will provide the flexibility needed to meet high-demand projects whilst maintaining core expertise for ongoing operations. Companies that align their hiring processes with these evolving needs will position themselves to navigate regulatory shifts and technological advancements successfully, ensuring data integrity and timely project execution in a competitive landscape. Engaging specialist recruitment services can be instrumental in identifying candidates who meet these exacting standards, thus helping organisations build robust and future-ready statistical programming teams.

21:54, 19th March 2025

Pygments is a versatile, open-source syntax highlighting library, supporting 598 programming languages and other formats. It can be used as both a command-line tool and a library, and produces output in several formats including HTML, RTF, LaTeX and ANSI sequences. The project places particular emphasis on highlighting quality and makes it relatively straightforward to add support for new languages, with most relying on a regex-based lexical tokenisation mechanism. Available via the Python Package Index, it is maintained by Georg Brandl, Matthäus Chajdas and Jean Abou-Samra, with contributions from various other developers over the years.

20:30, 17th March 2025

When securing database credentials in R, several methods are available in order of preference. Integrated security with a DSN is optimal as it requires no plaintext credentials in code. Without a DSN, you can still use integrated security by passing connection settings as arguments. For storing credentials, the keyring package utilizes your operating system's credential storage (Keychain on macOS, Credential Store on Windows, Secret Service API on Linux) to securely encrypt and retrieve credentials. The config package allows credentials to be stored in a separate config.yml file. Environment variables can be set in the .Renviron file and retrieved with Sys.getenv(). Base R's options() function can store credentials temporarily during a session. As a last resort, the RStudio IDE can prompt users for credentials with masked input. Each method has different security implications and implementation complexity, but all aim to keep sensitive information out of plaintext code.

  • The content, images, and materials on this website are protected by copyright law and may not be reproduced, distributed, transmitted, displayed, or published in any form without the prior written permission of the copyright holder. All trademarks, logos, and brand names mentioned on this website are the property of their respective owners. Unauthorised use or duplication of these materials may violate copyright, trademark and other applicable laws, and could result in criminal or civil penalties.

  • All comments on this website are moderated and should contribute meaningfully to the discussion. We welcome diverse viewpoints expressed respectfully, but reserve the right to remove any comments containing hate speech, profanity, personal attacks, spam, promotional content or other inappropriate material without notice. Please note that comment moderation may take up to 24 hours, and that repeatedly violating these guidelines may result in being banned from future participation.

  • By submitting a comment, you grant us the right to publish and edit it as needed, whilst retaining your ownership of the content. Your email address will never be published or shared, though it is required for moderation purposes.