Coder's Notebook
Part of what you find here once got strewn around the LinkBlog and Data Science Directory pages because I have taken to trying out new computing languages. R, Python and Julia were among those that were new to me, and I am curious about Go too. Shell scripting and web coding items fall within the remit now too, so there is diversity here. Regardless of the type of technology, my way of learning often involves trying out things and finding out possible approaches from the web. This collation comes from those ongoing efforts, and I am adding some brief comments too. This may turn out to be more substantive than how I thought it might become.
14th August 2025, 23:43
The SAS Developer Portal serves as a comprehensive platform enabling developers to integrate SAS artificial intelligence and analytics capabilities with open source technologies. The portal provides extensive REST API documentation across multiple categories including automated machine learning, cloud analytic services, data management, fraud detection, healthcare applications, and visualisation tools. Developers can access resources for integrating SAS with various programming languages such as Python, R, Lua, and Java, whilst also utilising software development kits and frameworks to embed SAS insights into custom applications and dashboards. The platform supports SAS Viya programming and CAS actions for data processing and analytics operations, complemented by tools like the Visual Studio Code extension. Key solutions include Customer Intelligence 360 for marketing automation, SAS Viya Workbench for cloud-based analytics, and SAS 360 Match for advertising delivery, all underpinned by trustworthy AI principles emphasising transparency and accountability. The portal connects developers through community forums and GitHub repositories containing code examples and collaborative resources.
13th August 2025, 23:35
This is a public GitHub repository that serves as a collaborative platform for sharing SAS Studio Custom Steps, which are user interface tools that enable SAS Studio users on SAS Viya platforms to complete specific tasks through standardised workflows. The repository contains over 100 custom steps spanning various categories including data quality operations, natural language processing, computer vision, machine learning, cloud integration, file management, and synthetic data generation. Contributors have developed tools for tasks such as data anonymisation, sentiment analysis, image processing, database connections, API interactions, and automated report generation. The repository operates under an Apache 2.0 licence and welcomes community contributions through established guidelines, providing comprehensive documentation and tutorials to help users implement these custom steps within their SAS Studio environments. Recent activity shows ongoing maintenance with regular updates to documentation, bug fixes, and the addition of new functionality, particularly in areas like large language model integration and advanced analytics workflows.
13th August 2025, 23:34
The SAS Airflow Provider is an Apache 2.0 licensed open-source package that enables users to execute SAS Studio Flows and Jobs within Apache Airflow workflows. The provider offers comprehensive functionality including the ability to run SAS Studio Flows stored on file systems or in SAS Content, selection of compute contexts for execution, optional return of SAS logs to Airflow, parameter specification for code generation, proper handling of return codes with exception raising for failed flows, and flexible authentication through either OAuth tokens or username-password combinations. Installation can be accomplished through PyPI or by building from the repository sources, whilst connections to SAS Viya require configuration through the Airflow interface with host, login credentials, and optional OAuth token specification in JSON format. The provider supports TLS verification settings and custom certificate bundles for secure connections, and includes example DAG's for implementation guidance, though users must first create SAS Studio Flows or Job Definitions before referencing them in their workflows.
13th August 2025, 23:32
This Visual Studio Code extension provides comprehensive support for the SAS programming language, enabling users to connect directly to both SAS Viya and SAS 9.4 servers to run code within the familiar development environment. The extension offers syntax highlighting, code completion, help documentation, and snippets for SAS programming, whilst also supporting SQL, Python, and Lua syntax highlighting capabilities. Users can navigate SAS Content and libraries through an integrated table viewer, create notebooks for multiple programming languages, and benefit from features such as code folding, outline views, and line commenting functionality. The open-source project operates under an Apache 2.0 licence and actively welcomes community contributions, with support available through SAS Communities, comprehensive documentation, and GitHub issue tracking. Recent development activity has focused on enhancing file navigation capabilities, improving dependency management, and expanding multilingual support across various European and Asian languages.
13th August 2025, 23:26
To update SAS Analytics Pro on Viya with a new licence, users must first download the JWT licence file from their software order on the My SAS portal after logging in and selecting their order details. The process involves stopping the currently running container using either container-manager commands or Docker stop commands, then copying the new licence file to the deploy/sasinside
directory. On Windows systems, users can restart the container using either the container-manager with the new licence path parameter or by editing the launch script to reference the new licence file name before running the deployment command. For macOS and Linux environments, the same steps apply with the addition of modifying file permissions using chmod 0644
on the licence file. Kubernetes deployments require updating the configuration YAML file by inserting the complete contents of the licence file under the apro.SETINIT_TEXT
parameter whilst maintaining proper indentation, then redeploying using kubectl
apply commands. Throughout all platforms, users should save their current licence file as a precautionary measure before beginning the update process.
13th August 2025, 23:21
4th August 2025, 14:07
In Python, using `__slots__` can effectively enhance code performance by reducing memory usage and increasing the speed of attribute access. Normally, Python objects store attributes in a dictionary, which offers flexibility but incurs additional memory usage and slower access times. By declaring `__slots__`, developers can specify a fixed set of attributes that the object will need, thereby eliminating the need for a dictionary and leading to more efficient memory management. Though the performance gains from `__slots__` may be subtle in small datasets, they become more pronounced as data scales, reducing memory consumption and improving speed dramatically. This technique proves invaluable for memory-bound tasks, such as machine learning, where optimising computational resources is crucial.
26th July 2025, 13:58
There are three primary barriers to adopting automated testing, and that a lack of time is not typically one of them. The first issue is code that is not designed to be testable by nature. Many development teams face challenges with legacy codebases, where the architecture hinders test automation. This includes tightly coupled components, hard-coded configurations, and missing interfaces for injecting test doubles or dependencies. A substantial refactoring or architectural redesign is often necessary for meaningful automated testing to be implemented. Secondly, the lack of accessible and realistic test data can prevent tests from being written, as relying on production data poses significant risks.
Developers should create a self-contained testing environment using fake data, mocks, and factories to simulate data. Utilising factory functions to wrap reusable data structures allows for reliable and maintainable tests. Lastly, the tight coupling with external dependencies can turn test runs into unpredictable experiences. Code should be refactored to decouple business logic from external systems using interfaces, adapters, or dependency injection, allowing tests to run independently of such dependencies. Adhering to these strategies can make automated testing a natural part of the development process.
19th July 2025, 16:52
Stack Overflow, presenting from WeAreDevelopers in Berlin, has unveiled its new vision: to be the world's most vital source for technologists by providing a trusted human intelligence layer in the AI era. Their mission focuses on cultivating community, powering learning, and unlocking growth. Recent survey findings reveal 83% of developers use AI tools, yet 46% distrust AI outputs, highlighting Stack Overflow's crucial role in providing reliable information. The company has simplified its brand architecture, with public platforms now unified under "Stack Overflow" and business offerings labelled "Stack Overflow Business." New features include Community Activity displays, revamped Chat functionality, an AI-powered search tool, and Coding Challenges. For enterprise users, Stack Internal offers Knowledge Ingestion, new Connectors for Microsoft Graph and Backstage.io, and an upcoming bidirectional MCP server to enhance AI interaction with trusted data.
9th July 2025, 22:06
Observable is a JavaScript-based reactive programming environment that offers R users significant benefits for interactive data visualisation. This framework allows for advanced customisation using various JavaScript libraries whilst eliminating the need for server-side code execution, resulting in faster rendering of interactive visualisations in browsers. Though Observable can handle some data wrangling, R remains superior for statistical modelling; fortunately, Quarto enables users to combine both tools effectively. Users can perform data manipulation in R, pass the processed data to Observable, and then create sophisticated visualisations. The integration process is straightforward, requiring only Quarto installation and simple code blocks that transfer data between environments. For those interested in JavaScript libraries like D3.js but deterred by their complexity, this approach provides a gentler introduction to creating compelling, interactive data visualisations whilst leveraging R's robust analytical capabilities.
27th June 2025, 19:56
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.
3rd May 2025, 22:45
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.
21st April 2025, 22:14
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.
21st April 2025, 22:11
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.
30th March 2025, 22:56
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.
28th March 2025, 19:31
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.
27th March 2025, 15:03
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.
19th March 2025, 21:54
17th March 2025, 20:30
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.
17th March 2025, 19:52
16th February 2025, 02:04
Apply Functions in R with Examples [apply(), sapply(), lapply (), tapply()]
15th February 2025, 17:21
After checking in with R again as part of getting client work on the go once more, I went about setting up R and RStudio on a new machine. It was when I tried to add packages that things did not proceed so smoothly. It turned out that there were system dependencies that were missing. The combination of a console showing red against black and a lot of output made the problem difficult to spot. Handily, AI had a use here, and Google Gemini is turning out to be very useful when I have some debugging to do. All got sorted on this occasion; it might help to harvest a list of packages, so I have them for future reference.
6th February 2025, 22:04
The January 2025 release of Visual Studio Code, version 1.97, brings numerous updates and enhancements aimed at improving coding efficiency and security for developers. Notable features include GitHub Copilot's Next Edit Suggestions, which predicts coding edits, and enhancements in workspace management, such as a repositionable Command Palette and enhanced log filtering capabilities. The update introduces significant security features like extension publisher trust and compound log views for better log analysis. Developers can now debug Python scripts without setup and benefit from advanced git blame functionalities and support for various source control actions. Accessibility features have also been refined, enhancing sound clarity and adding keyboard shortcuts for easier navigation. The update further includes support for customisable terminal settings, enhanced debug capabilities, and diverse improvements in documentation and syntax highlighting. Remote development is also enhanced with better SSH configuration, and contributions from the community have helped streamline the codebase and improve the development workflow.
17th December 2024, 14:22
Steve's Data Tips and Tricks provides a comprehensive guide to using the na.omit() function in R to manage missing values effectively in vectors, matrices, and data frames. Missing values, often represented as "NA", can arise from various issues such as data collection errors and incomplete surveys, which can adversely affect statistical calculations, model accuracy, and data visualisation. The guide explains the basic usage of the na.omit() function, its syntax, and how it can be applied to vectors and data frames for removing incomplete cases. It offers practical examples, advanced applications like conditional removal, and best practices, such as backing up original data and considering the implications of data removal. The guide addresses FAQs, highlighting that while na.omit() is effective, alternative methods exist for handling missing values, and ultimately emphasises the importance of documenting strategies for managing NA values in data analysis.
8th November 2024, 10:58
10 Python One-Liners That Will Boost Your Data Science Workflow
2nd October 2024, 20:33
26th September 2024, 22:23
26th September 2024, 16:10
25th September 2024, 14:24
22nd September 2024, 21:45
13th September 2024, 22:32
26th August 2024, 20:33
17th April 2024, 20:47
14th March 2024, 15:20
26th February 2024, 16:59
2nd February 2024, 16:29
31st January 2024, 22:26
29th January 2024, 23:19
22nd January 2024, 20:01
Flight, DataFusion, Arrow, and Parquet: Using the FDAP Architecture to build InfluxDB 3.0
6th December 2023, 11:58
3rd November 2023, 16:47
31st July 2023, 16:33
4th July 2023, 19:53
14th June 2023, 17:01
12th May 2023, 09:33
11th May 2023, 14:01
26th April 2023, 09:10
Shiny User Adoption Fails: 9 Reasons Why Nobody Uses Your App
25th April 2023, 17:14
23rd April 2023, 14:51
15th April 2023, 11:06
15th April 2023, 11:06
15th April 2023, 11:05
15th April 2023, 11:04
19th March 2023, 19:21
9th March 2023, 13:52
6th March 2023, 10:25
WordPress 4.6 Admin Font Change Fix – How To Restore Open Sans Font?
25th February 2023, 01:30
20th February 2023, 11:44
12th February 2023, 14:28
10th February 2023, 18:20
8th February 2023, 14:04
7th February 2023, 10:32
7th February 2023, 10:31
7th February 2023, 10:30
7th February 2023, 10:29
7th February 2023, 10:28
7th February 2023, 10:18
5th February 2023, 16:37
5th February 2023, 16:36
5th February 2023, 16:35
5th February 2023, 16:34
3rd February 2023, 23:47
3rd February 2023, 23:46
3rd February 2023, 23:44
3rd February 2023, 23:43
3rd February 2023, 23:42
3rd February 2023, 23:41
How to run command or code in parallel in bash shell under Linux or Unix
3rd February 2023, 23:39
3rd February 2023, 23:28
20th January 2023, 17:55
20th January 2023, 11:31
12th January 2023, 10:13
10th January 2023, 18:08
10th January 2023, 18:08
10th January 2023, 18:06
3rd December 2022, 20:09
30th November 2022, 13:18
21st November 2022, 11:38
19th November 2022, 18:14
18th November 2022, 22:34
29th October 2022, 19:50
27th October 2022, 17:00
25th October 2022, 19:20
How can I redirect and rewrite my URLs with a .htaccess file?
24th October 2022, 09:40
24th October 2022, 09:39
The JSON LIBNAME Engine: Real-World Applications Using Open APIs
23rd October 2022, 20:49
21st October 2022, 09:37
21st October 2022, 09:35
14th October 2022, 09:25
LEAVE and CONTINUE: Two ways to control the flow in a SAS DO loop
12th October 2022, 11:57
3rd October 2022, 14:04
3rd October 2022, 14:03
3rd October 2022, 14:03
1st October 2022, 09:39
1st October 2022, 09:38
1st October 2022, 09:37
Linux / UNIX: Bash Script Sleep or Delay a Specified Amount of Time
29th September 2022, 12:05
29th September 2022, 12:05
28th September 2022, 15:14
27th September 2022, 17:02
27th September 2022, 17:01
27th September 2022, 17:00
16th September 2022, 12:41
24th August 2022, 18:06
24th August 2022, 18:05
20th August 2022, 11:54
Using Pandas with Python Decimal for accurate currency arithmetic
18th August 2022, 13:10
13th August 2022, 12:56
29th July 2022, 15:34
29th July 2022, 15:33
28th July 2022, 12:02
28th July 2022, 12:01
27th July 2022, 10:57
27th July 2022, 10:57
27th July 2022, 10:56
26th July 2022, 18:39
26th July 2022, 18:38
26th July 2022, 18:37
26th July 2022, 18:36
26th July 2022, 18:35
26th July 2022, 18:35
26th July 2022, 18:34
21st July 2022, 18:33
8th July 2022, 15:54
1st July 2022, 09:02
29th June 2022, 14:05
16th June 2022, 16:23
16th June 2022, 16:22
16th June 2022, 16:21
15th June 2022, 14:35
26th May 2022, 13:11
27th April 2022, 14:55
4th April 2022, 10:21
Splitting string into array of substrings in Julia – split() and rsplit() Method
4th April 2022, 10:21
4th April 2022, 10:20
27th March 2022, 19:30
18th March 2022, 20:59
9th March 2022, 15:13
8th March 2022, 15:24
7th March 2022, 14:35
28th February 2022, 07:55
26th February 2022, 09:10
Show Amount Of Posts, Pages, Categories, Tags, Comments For WordPress Themes
26th February 2022, 09:08
Count the number of posts in the custom post type in WordPress
24th February 2022, 09:15
21st February 2022, 11:07
21st February 2022, 11:06
18th February 2022, 18:52
18th February 2022, 18:51
18th February 2022, 16:33
18th February 2022, 11:06
18th February 2022, 10:39
16th February 2022, 15:48
15th February 2022, 09:26
14th February 2022, 09:24
13th February 2022, 19:42
11th February 2022, 09:03
11th February 2022, 09:03
10th February 2022, 21:14
8th February 2022, 09:51
8th February 2022, 09:47
8th February 2022, 09:47
8th February 2022, 09:46
8th February 2022, 09:37
8th February 2022, 09:35
8th February 2022, 09:30
8th February 2022, 09:29
8th February 2022, 09:29
5th February 2022, 10:30
4th February 2022, 16:12
4th February 2022, 16:01
4th February 2022, 16:00
4th February 2022, 15:59
Build a Search Bar for Your Hugo Blog With a JSON Index and Some Vanilla JS
4th February 2022, 15:59
4th February 2022, 15:56
4th February 2022, 15:55
4th February 2022, 15:54
29th January 2022, 22:06
29th January 2022, 22:05
29th January 2022, 22:05
29th January 2022, 22:03
29th January 2022, 22:03
29th January 2022, 22:02
29th January 2022, 21:54
29th January 2022, 21:54
29th January 2022, 21:20
How the Bootstrap 4 Grid Works
This also helps with understanding Bootstrap 5 as well. That was something that I discovered while porting a website from WordPress to Hugo.
29th January 2022, 21:04
How to Open Link in New Tab with Hugo's new Goldmark Markdown Renderer
29th January 2022, 21:04
29th January 2022, 21:02
29th January 2022, 21:02
27th January 2022, 11:55
27th January 2022, 11:49
27th January 2022, 11:49
27th January 2022, 11:48
24th January 2022, 09:00
23rd January 2022, 18:14
22nd January 2022, 15:19
22nd January 2022, 11:13
22nd January 2022, 11:06
22nd January 2022, 11:05
16th January 2022, 21:09
16th January 2022, 21:09
16th January 2022, 21:03
Freeing the data scientist mind from the curse of vectoRization
16th January 2022, 14:22
16th January 2022, 14:15
16th January 2022, 14:13
16th January 2022, 14:12
16th January 2022, 14:07
The Future of Machine Learning and why it looks a lot like Julia
16th January 2022, 14:01
5 Julia Projects for Beginners — Easy Ideas to Get Started Coding in Julia
16th January 2022, 13:58
14th January 2022, 17:52
13th January 2022, 18:22
12th January 2022, 15:45
11th January 2022, 13:16
10th January 2022, 12:15
10th January 2022, 12:08
Top 7 Best R Shiny Books and Courses That Are Completely Free
10th January 2022, 12:06
How renv restores packages from r-universe for reproducibility or production
10th January 2022, 12:04
8th January 2022, 13:58
8th January 2022, 13:58
8th January 2022, 13:18
8th January 2022, 13:17
8th January 2022, 09:49
New features in DataFrames.jl 1.3: Part 1
New features in DataFrames.jl 1.3: Part 2
New features in DataFrames.jl 1.3: Part 3
2nd January 2022, 18:12
2nd January 2022, 18:12
2nd January 2022, 18:11
25th December 2021, 15:41
25th December 2021, 15:39
Tips to create beautiful, publication-quality plots in Julia
25th December 2021, 14:38
25th December 2021, 11:39
DTable – an early performance assessment of a new distributed table implementation
24th December 2021, 18:08
24th December 2021, 18:07
24th December 2021, 17:54
23rd December 2021, 17:38
23rd December 2021, 13:58
23rd December 2021, 13:56
23rd December 2021, 13:55
23rd December 2021, 10:34
23rd December 2021, 10:31
12th December 2021, 11:45
10th December 2021, 17:07
10th December 2021, 17:05
10th December 2021, 16:58
9th December 2021, 10:07
9th December 2021, 10:05
7th December 2021, 13:47
7th December 2021, 13:38
7th December 2021, 13:38
2nd December 2021, 16:54
30th November 2021, 14:45
30th November 2021, 14:44
28th November 2021, 15:13
28th November 2021, 15:12
28th November 2021, 15:10
28th November 2021, 15:10
28th November 2021, 15:09
DataFrames.jl: why do we have both subset and filter functions?
28th November 2021, 15:08
28th November 2021, 15:07
28th November 2021, 15:06
28th November 2021, 15:05
28th November 2021, 15:04
28th November 2021, 15:02
26th November 2021, 08:58
26th November 2021, 08:57
26th November 2021, 08:57
25th November 2021, 11:55
18th November 2021, 16:14
18th November 2021, 16:12
18th November 2021, 08:13
17th November 2021, 14:53
10th November 2021, 12:18
4th November 2021, 16:38
Error: No CurrentVersion entry in Software/JavaSoft registry
2nd November 2021, 08:55
How To Add Labels to Grouped Barplot with Bars Side-By-Side in R?
21st October 2021, 12:47
SAS Problem Note 31278: Table 1 node generated by PROC REPORT
9th October 2021, 16:21
No line in plot chart despite + geom_line()
5 Ways to Subset a Data Frame in R
Eclipse StatET: Tooling for the R language
My favourite R package for: summarising data
How to Easily Create Descriptive Summary Statistics Tables in R Studio – By Group
Saving plots to a file with pdf(), jpeg() and png()
YaRrr! The Pirate’s Guide to R
Convert Data Frame Column to Vector in R (3 Examples)
ggplot does not work if it is inside a for loop although it works outside of it
strptime: Date-time Conversion Functions to and from Character
How to sum a variable by group in R?
How to write your own ggplot2 functions in R
Rename Data Frame Columns in R
Reordering Data Frame Columns in R
How to calculate a rolling average in R
Remove Element from List in R (7 Example Codes) | How to Delete a List Component
Journal of Statistical Software
ggplot2: Elegant Graphics for Data Analysis
Run system commands or shell scripts from an interactive R session
R Markdown: The Definitive Guide
Tables in R (And How to Export Them to Word)
How to Create Customized Tables in Displayr Using R
Create Awesome HTML Table with knitr::kable and kableExtra
How to Make Beautiful Tables in R
High Performance Computing in R
Speed Up Your Code: Parallel Processing with multidplyr
Using the {plyr} (1.2) package parallel processing backend with Windows
R Programming for Data Science
Remove grid and background from plot (ggplot2)
Download, Tidy and Visualize Covid-19 Related Data
Data Visualization: A practical introduction
The Mathematics and Statistics of Infectious Disease Outbreaks
8th October 2021, 15:28
5th October 2021, 18:24
5th October 2021, 14:14
1st October 2021, 19:20
30th September 2021, 12:44
29th September 2021, 16:56
Compare the default definitions for sample quantiles in SAS, R, and Python
29th September 2021, 13:27
29th September 2021, 13:26
28th September 2021, 10:34
27th September 2021, 13:36
26th September 2021, 19:10
24th September 2021, 14:56
24th September 2021, 09:02
23rd September 2021, 13:07
23rd September 2021, 10:44
GxP Compliance in Pharma Made Easier: Good Documentation Practices with R Markdown and {officedown}
22nd September 2021, 09:13
20th September 2021, 14:24
13th September 2021, 20:32
11th September 2021, 12:19
Parallel Processing in Python – A Practical Guide with Examples
Multithreading in Python: Running Functions in Parallel
Python: run functions in parallel with a multiprocessing wrapper function
Python – Run same function in parallel with different parameters
Run Python Code In Parallel Using Multiprocessing
Asynchronous Parallel Programming in Python with Multiprocessing
9th September 2021, 15:51
9th September 2021, 15:50
26th August 2021, 14:03
Using SYSTASK and SAS macro loops for massively parallel processing
24th August 2021, 21:31
24th August 2021, 21:30
23rd August 2021, 10:58
22nd August 2021, 18:18
17th August 2021, 18:27
16th August 2021, 12:45
16th August 2021, 11:17
9th August 2021, 10:47
7th August 2021, 17:55
4th August 2021, 14:10
SAS OnDemand for Academics: Working with Python, including Jupyter Notebook
4th August 2021, 14:09
4th August 2021, 14:01
4th August 2021, 09:02
4th August 2021, 09:02
JuMP | JuMP is a modeling language and supporting packages for mathematical optimization in Julia.
27th July 2021, 18:00
27th July 2021, 17:59
26th July 2021, 14:12
24th July 2021, 19:07
21st July 2021, 10:26
15th July 2021, 14:57
Get image size (width, height) with Python, OpenCV, Pillow (PIL)
15th July 2021, 14:56
15th July 2021, 09:32
15th July 2021, 09:31
15th July 2021, 09:30
15th July 2021, 09:15
How to conditionally stop SAS code execution and gracefully terminate SAS session
15th July 2021, 09:14
15th July 2021, 09:14
15th July 2021, 09:11
13th July 2021, 12:01
12th July 2021, 08:22
Adding lines or other geoms to a plot in ggplot by calling a custom function
11th July 2021, 12:36
11th July 2021, 12:34
11th July 2021, 09:27
11th July 2021, 09:26
4 tricks you should know to parse date columns with Pandas read_csv()
11th July 2021, 09:26
8th July 2021, 13:12
5th July 2021, 18:19
5th July 2021, 09:03
4th July 2021, 19:26
3rd July 2021, 09:31
2nd July 2021, 16:54
2nd July 2021, 16:48
30th June 2021, 09:19
Common Format and MIME Type for Comma-Separated Values (CSV) Files
27th June 2021, 09:26
25th June 2021, 16:44
25th June 2021, 14:49
24th June 2021, 12:37
24th June 2021, 12:36
24th June 2021, 12:15
24th June 2021, 12:14
23rd June 2021, 12:44
23rd June 2021, 12:44
15th June 2021, 16:58
11th June 2021, 16:49
Problem Note 41684: RTF output appears truncated when a very long text string spans multiple pages
11th June 2021, 10:53
Adding a Column to a Pandas DataFrame Based on an If-Else Condition
9th June 2021, 11:37
3rd June 2021, 13:57
3rd June 2021, 09:10
3rd June 2021, 09:10
3rd June 2021, 09:09
28th May 2021, 11:25
28th May 2021, 11:23
28th May 2021, 11:22
28th May 2021, 11:21
28th May 2021, 11:18
28th May 2021, 11:17
28th May 2021, 11:16
28th May 2021, 11:15
28th May 2021, 11:13
28th May 2021, 11:12
28th May 2021, 11:11
28th May 2021, 11:09
28th May 2021, 11:08
28th May 2021, 11:06
28th May 2021, 11:05
28th May 2021, 11:05
28th May 2021, 11:04
28th May 2021, 11:03
5 Tips for Writing Clean R Code – Leave Your Code Reviewer Commentless
28th May 2021, 11:01
28th May 2021, 11:00
28th May 2021, 10:59
28th May 2021, 10:52
28th May 2021, 10:51
GroupBy in Pandas: Your Guide to Summarizing and Aggregating Data in Python
28th May 2021, 10:33
Pandas Groupby: Summarising, Aggregating, Grouping in Python
28th May 2021, 10:17
28th May 2021, 10:16
Customize Dates on Time Series Plots in Python Using Matplotlib
28th May 2021, 10:15
28th May 2021, 10:09
28th May 2021, 10:08
28th May 2021, 10:07
28th May 2021, 10:07
28th May 2021, 10:06
28th May 2021, 10:05
28th May 2021, 10:04
28th May 2021, 10:03
28th May 2021, 10:02
28th May 2021, 09:50
28th May 2021, 09:49
27th May 2021, 09:03
Sample 24820: Creating a Directory Listing Using SAS for Windows
19th May 2021, 09:17
Python Data Wrangling Solutions — Dynamically Creating Variables When Slicing Data Frames
16th May 2021, 13:52
16th May 2021, 13:45
% Macro Core - Production Ready Macros for SAS Application Developers
16th May 2021, 13:44
16th May 2021, 13:43
16th May 2021, 13:42
Pandas Split strings into two List/Columns using str.split()
16th May 2021, 13:41
16th May 2021, 13:39
16th May 2021, 13:17
Create a nice looking table using R
13th May 2021, 17:02
13th May 2021, 15:25
13th May 2021, 15:24
12th May 2021, 11:22
12th May 2021, 11:17
12th May 2021, 11:16
12th May 2021, 11:15
12th May 2021, 11:07
12th May 2021, 11:07
12th May 2021, 11:05
12th May 2021, 11:03
12th May 2021, 11:02
12th May 2021, 11:01
12th May 2021, 10:53
12th May 2021, 10:52
12th May 2021, 10:50
12th May 2021, 10:48
How to Check if a File or a Directory exists in R, Python and Bash
12th May 2021, 10:46
12th May 2021, 10:45
12th May 2021, 10:42
12th May 2021, 10:42
11th May 2021, 17:02
11th May 2021, 17:02
11th May 2021, 17:01
How to fix common problems in output from SAS ODS Graphics procedures
10th May 2021, 17:12
10th May 2021, 17:05
10th May 2021, 17:02
5th May 2021, 09:43
9th April 2021, 10:49
2nd April 2021, 09:14
12th March 2021, 14:14
Using SAS with Microsoft 365 (OneDrive, Teams, and SharePoint)
9th March 2021, 14:00
9th March 2021, 13:59
3rd March 2021, 10:52
2nd March 2021, 18:43
2nd March 2021, 18:42
Excel VBA – Read Data from a Closed Excel File or Workbook without Opening it
2nd March 2021, 18:41
How to create stunning visualizations from scratch using Python
2nd March 2021, 18:39
27th January 2021, 13:01
31st December 2020, 10:56
10th December 2020, 15:18
Announcing LAMBDA: Turn Excel formulas into custom functions
6th December 2020, 20:53
6th December 2020, 20:47
6th December 2020, 20:43
28th November 2020, 17:17
20th October 2020, 20:24
14th October 2020, 14:08
4th October 2020, 10:43
13th July 2020, 13:44
29th June 2020, 10:25
8th June 2020, 16:46
Summary of SAS Macro Quoting Functions and the Characters That They Mask
4th March 2020, 20:22
25th February 2020, 12:32
25th February 2020, 12:31
25th February 2020, 12:30
25th February 2020, 11:26
25th February 2020, 11:16
24th February 2020, 22:20
20th February 2020, 10:35
Change User's MySQL Password | Reset MySQL Root Password Guide
17th February 2020, 13:02
17th February 2020, 09:32
16th February 2020, 13:10
14th February 2020, 09:45
The Complete Guide to “useradd” Command in Linux – 15 Practical Examples
12th February 2020, 20:30
How to Optimize and Compress JPEG or PNG Images in Linux Command Line
31st December 2019, 21:38
25th November 2019, 17:38
16th November 2019, 21:42
9th November 2019, 14:54
5th November 2019, 14:14
4th November 2019, 11:54
4th November 2019, 10:12
18th October 2019, 16:22
18th October 2019, 15:41
6th September 2019, 20:02
31st August 2019, 13:03
29th August 2019, 20:25
29th August 2019, 20:23
29th August 2019, 20:22
11th June 2019, 14:14
22nd January 2019, 14:43
How to change your working directory for SAS with the DLGCDIR DATA step function
16th January 2019, 16:45
Working with Dates and Times Using the ISO 8601 Basic and Extended Notations
15th January 2019, 11:25
20th December 2018, 14:19
5th December 2018, 15:56
A Second Look at the ODS Destination for PowerPoint
The Dynamic Duo: ODS Layout and the ODS Destination for PowerPoint
Square Peg, Square Hole—Getting Tables to Fit on Slides in the ODS Destination for PowerPoint
24th November 2018, 20:31
24th November 2018, 20:30
24th November 2018, 17:37
Redirecting HTTP to HTTPS Using .htaccess File: Step by Step
22nd November 2018, 21:45
22nd November 2018, 21:43
17th November 2018, 12:04
4th October 2018, 15:19
2nd October 2018, 15:28
Summary of SAS Macro Quoting Functions and the Characters They Mask
20th September 2018, 16:12
Use an Easy PowerShell Command to Search Files for Information
8th September 2018, 17:11
3rd September 2018, 17:50
10th August 2018, 17:09
10th August 2018, 17:07
Five things you (probably) don’t know you can do with a hash table in SAS
22nd July 2018, 13:42
28th June 2018, 22:37
Summary of SAS Macro Quoting Functions and the Characters They Mask
25th June 2018, 10:13
28th May 2018, 09:58
25th May 2018, 16:02
Performance optimizations you can apply today to load the Matomo JavaScript tracker faster
25th May 2018, 16:01
Different ways of embedding the Matomo tracking code for faster website performance
13th May 2018, 23:18
13th May 2018, 23:15
8th May 2018, 10:42
8th May 2018, 10:36
27th March 2018, 10:33
17th March 2018, 11:11
22nd October 2017, 23:29
16th October 2017, 20:01
16th October 2017, 20:00
16th October 2017, 19:59
16th October 2017, 19:59
16th October 2017, 19:55
Here are a few SAS functions that are less well known to me:
24th April 2017, 17:03
21st March 2017, 19:55
31st January 2017, 18:23
27th January 2017, 17:51
Sample 35864: Change line colors and styles for PROC SGPLOT output
14th November 2016, 11:23
19th May 2016, 12:36
1st March 2016, 22:20
10th February 2016, 10:38
SAS trick: get the LIBNAME statement to create folders for you
10th February 2016, 10:36
5th February 2016, 10:19
Usage Note 38339: SAS® file compatibility when upgrading from 32-bit to 64-bit Microsoft Windows
The top gotchas when moving to 64-bit SAS for Windows
Migrating to a 64-bit operating system: Quick pointers
Converting SAS Formats from 32-Bit to 64-Bit
Excuse Me; But, Is That a 32-Bit or a 64-Bit SAS Catalog?
Handling SAS Formats Catalogs across Versions
Proc Migrate: How to Migrate Your Data and Know You’ve Done It Right!
4th December 2015, 16:23
29th October 2015, 20:15
29th October 2015, 20:10
24th July 2015, 11:15
10th July 2015, 18:40
6th July 2015, 18:41
23rd June 2015, 07:35
12th June 2015, 09:24
Excel import from Word: Extracting data from merged cells in a Word 2010 Table using VBA
8th May 2015, 12:07
Linux / Unix ncftp: Upload Directory Tree To Remote FTP Server Recursively
4th May 2015, 20:00
5th March 2015, 01:55
5th March 2015, 01:51
9th December 2014, 17:06
LIBNAME Statement Syntax :: SAS/ACCESS 9.3 Interface to PC Files: Reference
8th November 2014, 19:14
31st May 2007, 19:59
Being a Safari subscriber, I found a pleasant surprise awaiting me in this month's email newsletter: eBooks from SAS Books are now available on Safari. Having a brief look, I found a small but useful selection. Topics like the SQL procedure, the Macro language and Enterprise Guide caught my eye, but there's more than this on offer. It'll be interesting to see where this leads...
25th April 2007, 19:45
Until SAS 9.2, SAS/Access will not support the Oracle timestamp format. There still is no word on when 9.2 might appear, so it's over to the SQL pass-through facility...
21st March 2007, 18:40
What I never realised was that PHP could do image generation, and it's an intriguing possibility that I may yet use myself. This useful ability comes courtesy of GD, and this is included in some PHP distributions.