Published work: ocean journalist Melissa Hobson, the Ocean Writer
As an ocean journalist, I've written about all sorts of fascinating things going on beneath the waves. Read some of my published work here.

The Boneyard
The latest from bestselling, award-winning author Riley Black. Expect strange dinosaurs, amazing invertebrates, and other prehistoric wonders, exhibited right in your inbox.
Recology
I recently had a use case at work (a LiteStar app) where I needed to write to two linked tables (see below) in a transaction in our PostgreSQL database. In the models for the two tables was included a foreign key relationship: from sqlalchemy import Column, String, DateTime, ForeignKey from sqlalchemy.orm import Mapped, relationship from typing import List # UUIDBase automatically generates a UUID for the primary key from advanced_alchemy.extensions.litestar import base class flows(base.UUIDBase): __tablename__ = 'flows' name: Column(String) date: Column(DateTime) files: Mapped[List["Files"]] = relationship( back_populates='flow', cascade='all, delete-orphan' ) class Files(base.UUIDBase): __tablename__ = 'files' file_name: Column(String) date: Column(DateTime) flow_id: Mapped[UUID] = mapped_column(ForeignKey('flows.id')) flow: Mapped["Flows"] = relationship(back_populates='files') My first - very naive approach was to include both writes in a single transaction (see next block). This kept failing because the foreign key from the first write (to the flows table) wasn’t available yet. The error that arose was that the ID wasn’t found, which took probably too long for me to figure out that it just wasn’t available yet. ...
Content – Michael Clark
Here you’ll find documents of varying technical degree covering things of interest to me, or which I think will be interesting to those I engage with. Generally you’ll find a mix of demonstrations on statistical and machine learning topics, programming, and data processing and visualization. Most focus on application in R as that’s what I used to primarily program with, but you’ll find plenty of Python demonstrations as well. Be aware that some of the content is a bit dated, but even if the programming aspects are a bit off, the concepts should still be relevant.
R for cats · and cat lovers
This is an introduction to R. I promise this will be fun. Since you have never used a programming language before, or any language for that matter, you won’t be tainted by other programming languages with different ways of doing things. This is good - we can teach you the R way of doing things.
Math Modeling with R
<p>Math Modeling with R (RMath) engages students in solving real-world problems with mathematical modeling and computational thinking practices.</p>

Dynamic Data Science
<p>Use our Common Online Data Analysis Platform (CODAP) to explore dynamic data science activities and gain fluency in data moves to examine large datasets.</p>

Coding Club: a positive peer-learning community
Free and accessible tutorials on data analysis, manipulation, visualisation and more.
