Blog

Writing

152 articles on subsurface data, petrophysics, Python and AI, newest first. Articles marked Substack open on Subsurface Syntax.

2026

35 ARTICLES

2025

6 ARTICLES
  1. Image of pretty print output 03 Nov Tables, Pretty Prints, and Sanity: Python Output for Geoscience Data
  2. DLIS log preview 02 Oct How to Open DLIS Files in Python with DLISIO
  3. 10 Aug Substack ↗ Less Print, More Clarity: Debugging Python with Icecream and Snoop
  4. 08 Jul Substack ↗ Bring Your Python Terminal to Life With Colour and Clarity
  5. 08 Jul Substack ↗ Add a Navigation Sidebar to Your Multi-Page Plotly Dash App (With Collapsible Menus)
  6. 19 Apr Substack ↗ Adding Gradient Backgrounds to Plotly Charts

2024

6 ARTICLES
  1. 23 Apr Substack ↗ Sphinx-Autosummary: Creating Cleaner API Navigation Menus
  2. Using Python to Explore and Understand Equations in Petrophysics 12 Apr Using Python to Explore and Understand Equations in Petrophysics
  3. Python in Geoscience 08 Apr Python in Geoscience: An Essential Skill
  4. 10 Feb Substack ↗ How to Structure and Organise a Streamlit App
  5. 27 Jan Substack ↗ Getting Started With Python as a Geoscientist? Here Are 5 Ways You Can Improve Your Code!
  6. 14 Jan Substack ↗ Unlocking Data from Graphs: How to Digitise Plots and Figures with WebPlotDigitizer

2023

41 ARTICLES
  1. Portrait of Andy McDonald 03 Nov Adding Inset Axes to Matplotlib Figures
  2. 26 Oct Substack ↗ Well Log Measurement Prediction Using Neural Networks with Keras
  3. 18 Sept Substack ↗ Paid ChatGPT Advanced Data Analytics For Custom Matplotlib Well Log Plots
  4. 12 Aug Substack ↗ Paid 4 Essential Resources to Help Improve Your Data Visualisations
  5. 27 Jul Substack ↗ Paid Using Plotly Express Sunburst Charts to Explore Geological Data
  6. 25 Jul Substack ↗ Paid Converting Well Logging Data From DLIS Files to LAS File Format
  7. 21 Jul Substack ↗ Paid 4 Easy Ways to Instantly Improve Your Data Visualisations
  8. 17 Jul Substack ↗ Paid Creating Scientific Plots the Easy Way With scienceplots and matplotlib
  9. 14 Jul Substack ↗ Paid Exploring the Contents of DLIS Files with Python
  10. 03 Jul Substack ↗ Paid Creating an Infographic With Matplotlib
  11. 29 Jun Substack ↗ Paid Data Aggregation in Python with Pandas: Analysing Geological Lithology Data
  12. 26 Jun Substack ↗ Paid How To Create Cyberpunk-Styled Seaborn Violin Plots with Minimal Python Code
  13. 21 Jun Substack ↗ Paid Using Plotly 3D Surface Plots to Visualise Geological Surfaces
  14. 16 Jun Substack ↗ Paid Plotly and Python: Creating Interactive Heatmaps for Petrophysical & Geological Data
  15. 13 Jun Substack ↗ Paid Utilising pykrige and matplotlib for Spatial Visualisation of Geological Variations
  16. 04 Jun Substack ↗ Paid Visualising Well Paths on 3D Line Plots with Plotly Express
  17. 21 May Substack ↗ Paid Cyberpunking Your Matplotlib Figures
  18. 24 Apr Substack ↗ Paid Enhance Your Polar Bar Charts With Matplotlib
  19. 19 Apr Substack ↗ Paid Create Stunning Radar Plots with Matplotlib
  20. 17 Apr Substack ↗ Paid Streamlit Tutorial: Creating Word Reports for Data Science Projects
  21. 11 Apr Substack ↗ Paid Upgrade Your Data Visualisations: 4 Python Libraries to Enhance Your Matplotlib Charts
  22. 03 Apr Substack ↗ Paid From Dull to Stunning: How Matplotx Can Improve Your Matplotlib Charts
  23. 27 Mar Substack ↗ Paid 7 Steps to Help You Make Your Matplotlib Bar Charts Beautiful
  24. 20 Mar Substack ↗ Paid 3 Unique Charts You Wouldn’t Think Were Created with Matplotlib
  25. 17 Mar Substack ↗ Paid Creating Geospatial Heatmaps With Python’s Plotly and Folium Libraries
  26. 15 Mar Substack ↗ Paid 4 Essential Tools to Help You Select a Colour Palette for Your Data Visualisation
  27. 06 Mar Substack ↗ Paid Create Eye-Catching Radial Bar Charts With Matplotlib
  28. 01 Mar Substack ↗ Paid Using PyGWalker to Enhance Your Jupyter Notebook EDA Experience
  29. 27 Feb Substack ↗ Paid Building a Medium Stats Tracker With Streamlit
  30. 24 Feb Substack ↗ Paid How to Display Data From GeoJSON Files Using the Folium Python Library
  31. 21 Feb Substack ↗ Paid Sketch: A Promising AI Library to Help With Pandas Dataframes Directly in Jupyter
  32. 19 Feb Substack ↗ Paid 3 Easy Ways to Include Interactive Maps in a Streamlit App
  33. 15 Feb Substack ↗ Paid 5 Powerful Python Libraries For EDA You Need to Know About
  34. 13 Feb Substack ↗ Paid D-Tale for Fast and Easy Exploratory Data Analysis of Well Log Data
  35. 10 Feb Substack ↗ Paid 9 Creative Alternatives to the Traditional Pie Chart for Data Visualisation
  36. 08 Feb Substack ↗ Paid How to Create Beautiful Waffle Charts for Data Visualisation in Python
  37. 03 Feb Substack ↗ Paid Building a LAS File Data Explorer App with Streamlit
  38. 24 Jan Substack ↗ Paid Learning Python With ChatGPT
  39. 22 Jan Substack ↗ Paid Uploading and Reading Files with Streamlit
  40. 20 Jan Substack ↗ Paid Notion for Home Renovation and DIY
  41. 17 Jan Substack ↗ Paid How to Use Streamlit’s st.write Function to Improve Your Streamlit Dashboard

2022

38 ARTICLES
  1. 20 Dec Substack ↗ Paid The Streamlit Colour Picker: An Easy Way to Change Chart Colours on Your Streamlit Dashboard
  2. 18 Dec Substack ↗ Paid ChatGPT: Building an Online Course Using AI
  3. 16 Dec Substack ↗ Paid Getting Started With Streamlit: 5 Functions You Need To Know When Starting Out
  4. 11 Dec Substack ↗ Paid 5 Great Data Science Side Hustles to Explore in 2023
  5. 06 Dec Substack ↗ Paid OpenAI’s Amazing ChatGPT: Is It Promising for Niche Topics?
  6. Pandas display options hero image 05 Dec 7 Useful Pandas Display Options You Need to Know
  7. 02 Dec Substack ↗ Paid How to Level up Your Pandas Skills in 5 Easy Ways
  8. 29 Nov Substack ↗ Paid k-Nearest Neighbors for Lithology Classification from Well Logs Using Python
  9. 03 Nov Substack ↗ Paid Creating a Multi-Well Integrated Well Log and Formation Tops Dataframe in Python
  10. 28 Oct Substack ↗ Paid 5 Essential Soft Skills to Succeed as a Data Scientist
  11. 22 Oct Substack ↗ Paid How to Create a Simple Neural Network Model in Python
  12. 19 Oct Substack ↗ Paid Folium Mapping: Displaying Markers on a Map
  13. 6 common characteristics of Data Quality 12 Oct Data Quality Considerations for Machine Learning Models
  14. 29 Sept Substack ↗ Paid Isolation Forest — Auto Anomaly Detection with Python
  15. 26 Sept Substack ↗ Paid 4 Ways I’m Using Data Science Skills to Generate Income From Side Hustles
  16. 21 Sept Substack ↗ Paid 5 Ways to Transform Your Seaborn Data Visualisations
  17. 19 Sept Substack ↗ Paid Working with Well Trajectories in Python
  18. 12 Sept Substack ↗ Paid Combining Formation Data With Well Log Measurements in Pandas
  19. 03 Sept Substack ↗ Paid 7 Simple Ways To Enhance Your Matplotlib Charts
  20. 24 Aug Substack ↗ Paid Random Forest Regression for Continuous Well Log Prediction
  21. 20 Aug Substack ↗ Paid Random Forest for Lithology Classification From Well Log Data
  22. 14 Aug Substack ↗ Paid Seaborn Heatmap for Visualising Data Correlations
  23. 12 Aug Substack ↗ Paid Using Notion for Data Science
  24. 07 Aug Substack ↗ Paid K-Means Clustering — An Introduction
  25. 03 Aug Substack ↗ Paid 7 Tips To Get You Off To A Great Start When Learning Python
  26. 25 Jul Substack ↗ Paid 6 Machine Learning Algorithms to Know About When Learning Data Science
  27. 22 Jul Substack ↗ Paid 5 Essential Tips to Improve the Readability of Your Python Code
  28. 20 Jul Substack ↗ Paid Use Seaborn FacetGrid to Quickly Create Figures With Subplots
  29. 17 Jul Substack ↗ Paid Creating Boxplots with the Seaborn Python Library
  30. 15 Jul Substack ↗ Paid Using the Power of AI to Document Your Code
  31. 04 Jul Substack ↗ Paid Creating True Multi-Page Streamlit Apps — The New Way (2022)
  32. 19 Jun Substack ↗ Paid Seaborn Relplot in Python: Visualising Relationships in Data
  33. 23 May Substack ↗ Paid Getting Started With Streamlit Web Based Applications
  34. 08 May Substack ↗ Paid Pandas Profiling — Easy Exploratory Data Analysis in Python
  35. 06 May Substack ↗ Paid Notion for Academic Research Management
  36. 25 Apr Substack ↗ Paid Convert CSV Files to LAS Files with Python
  37. 17 Apr Substack ↗ Paid Public Datasets for Machine Learning in Geoscience
  38. 10 Apr Substack ↗ Paid 6 Python Libraries You Should Know About for Well Log Data & Petrophysics

2021

21 ARTICLES
  1. 28 Nov Substack ↗ Paid Enhance Your Plotly Express Scatter Plot With Marginal Plots
  2. 21 Nov Substack ↗ Paid Using Plotly Express to Create Interactive Scatter Plots
  3. 14 Nov Substack ↗ Paid Visualizing Well Paths With The Welly Python Library
  4. 22 Oct Substack ↗ Paid Well Log Data Outlier Detection With Machine Learning and Python
  5. 02 Oct Substack ↗ Paid Identifying and Handling Missing Well Log Data Prior to Machine Learning
  6. 21 Sept Substack ↗ Paid Exploring Well Log Data Using Pandas, Matplotlib and Seaborn
  7. 11 Sept Substack ↗ Paid How to Rename Columns in Pandas — A Quick Guide
  8. 28 Aug Substack ↗ Paid Creating Boxplots of Well Log Data Using Matplotlib in Python
  9. 08 Aug Substack ↗ Paid Creating Simple Well Log Plots Using the Matplotlib Library in Python
  10. 01 Aug Substack ↗ Paid Creating Scatter Plots (Crossplots) of Well Log Data using Matplotlib in Python
  11. 25 Jul Substack ↗ Paid Using Histograms to Visualise Well Log Data
  12. 10 Jul Substack ↗ Paid 10 Applications of Machine Learning Within Petrophysics
  13. 13 Jun Substack ↗ Paid Exploring Well Log Data Using the Welly Python Library
  14. 09 Jun Substack ↗ Paid Using the missingno Python library to Identify and Visualise Missing Data Prior to Machine Learning
  15. 03 Jun Substack ↗ Paid How to use Unsupervised Learning to Cluster Well Log Data using Python
  16. Acoustic monopole semblance map and waveform plot generated from DLIS data using Python and matplotlib 21 Apr Loading Well Log Data From DLIS using Python
  17. 28 Feb Substack ↗ Paid Adding Formation Data to a Well Log Plot
  18. 14 Feb Substack ↗ Paid Loading Multiple Well Log LAS Files Using Python
  19. 07 Feb Substack ↗ Paid Displaying Lithology Data Using Python and matplotlib
  20. 31 Jan Substack ↗ Paid Displaying Logging While Drilling (LWD) Image Logs in Python
  21. 27 Jan Substack ↗ Paid Enhancing Visualization of Well Logs With Plot Fills

2020

5 ARTICLES
  1. 28 Dec Substack ↗ Paid Porosity-Permeability Relationships Using Linear Regression in Python
  2. 01 Nov Substack ↗ Paid Exploratory Data Analysis with Well Log Data
  3. 26 Oct Substack ↗ Paid Visualising Well Data Coverage Using Matplotlib
  4. 18 Oct Substack ↗ Paid Petrophysics: Gamma Ray Normalization in Python
  5. 30 Aug Substack ↗ Loading and Displaying Well Log Data