⚡ Sangsakala Proxy 🏠 Home
Skip to content
View MarieLynneBlock's full-sized avatar
👏
developers. developers. developers.
👏
developers. developers. developers.

Organizations

@fccinternational @EddieHubCommunity @Design-and-Code

Block or report MarieLynneBlock

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
MarieLynneBlock/README.md
Marie-Lynne Block. Audio-reactive header rendered from the visitor sequencer below

↑ The header is not a picture. It is the waveform of the loop you can edit further down; redrawn every time someone adds a note to the sequencer.


Professional & creative code

website LinkedIn Hugging Face OpenProcessing

Art & media

YouTube Bandcamp SoundCloud VI.BE / Personal VI.BE / The Munchkin Algorithm Instagram / Munchkin Instagram / Photography


visitors

Hej! I'm Marie-Lynne 👋

I'm an AI expert and technology coach with a long background in data science; working with AI since before the hype. I love building intelligent systems, creating playful digital experiences, and designing sound with a story. Through hands-on workshops, I help curious humans become makers.

For me, technology is a tool; human connection is the goal. The best algorithms have a heartbeat.

Inspired by my website, this profile follows one rule: no static pixels. Wander through the commit tree, add a note to the sequencer, and make yourself at home in the code.


🌿 The garden

A single tree of commits, grown from my public commit contributions across GitHub, including repositories I contribute to. Each active season-year grows a limb, with the oldest at the roots and the newest in the crown. Its foliage follows the seasons: winter frost, spring greens and blossoms, summer greens, and autumn colours. Empty seasons grow no foliage, and years without public commits leave knots. The tree refreshes nightly rather than inventing growth. It is generated entirely from history, with no visitor controls.

A commit tree with one limb per active season-year, oldest at the roots and newest in the crown. Seasonal foliage shows winter, spring, summer and autumn; empty years are knots.

1,951 public commit contributions | 2016-2026 season-years
Grown from public commit history · refreshed nightly

how does this work?

An L-system is a tiny grammar: start from an axiom (X), apply rewrite rules (X → F+[[X]-X]-F[-FX]+X, F → FF) a few times, then let a turtle draw the result — F steps forward, +/- turn, [/] push and pop a branch. Lindenmayer invented them in 1968 to describe algae; they also happen to make lovely plants and, if you map the same symbols to pitches, lovely music. Here they draw the seasonal foliage attached to each year's limb. Limb length and foliage size reflect activity on a logarithmic scale, with limb lengths adjusted to shape the crown. Leaves are illustrative, not one per commit; foliage detail can simplify as history grows to keep the image manageable. Exact seasonal counts and repository totals live in the public history cache; the SVG also contains season counts as metadata, though GitHub's embedded image does not expose them as tooltips.

Seasons use UTC and Northern Hemisphere months. Winter 2019 means December 2018 through February 2019; spring is March–May, summer June–August, autumn September–November. December starts the following year's winter. All years from account creation are retained; seasons without public commits leave no foliage, and empty years leave knots.

Counts use GitHub's commit contribution rules (linked author email and eligible default/gh-pages branches), not every commit on every branch. Private activity, issues, reviews and pull-request counts are excluded. GitHub attribution rules, deleted repositories and API visibility can limit what history is available. A refresh fails explicitly if GitHub's 100-repositories-per-year query limit is reached, instead of silently publishing an incomplete tree. In-progress seasons show only activity recorded so far.

The cached public data lives in generators/garden/history.json; it contains seasonal totals and public repository counts. Tree structure and colour are generated deterministically from that history, with no visitor-controlled garden state. Refresh with authenticated gh (or GH_TOKEN): python generators/playground.py --refresh-history --render-only. Rebuild offline: python generators/playground.py --render-only. Sources: forest.py, tree.py, lsystem.py.


🎛️ The sequencer

Sixteen steps, C minor pentatonic over two octaves, 120 BPM. Pick a note and it lands on the next free step (then wraps around and overwrites). A workflow re-renders the piano roll, synthesises a WAV and a MIDI file, and redraws the header from the new audio.

Visitor step-sequencer

♪ C4 ♪ E♭4 ♪ F4 ♪ G4 ♪ B♭4 𝄽 rest
♪ C5 ♪ E♭5 ♪ F5 ♪ G5 ♪ B♭5 ▶ listen · ⬇ MIDI

12/16 steps filled · next free step: 3 · 2 notes placed by visitors
recent composers: @MarieLynneBlock
latest: @MarieLynneBlock placed Bb5 on step 2

why does it always sound fine?

Pentatonic scales have no semitone clashes, so any combination of these ten pitches is consonant — it is the same trick behind the black keys on a piano and most crowd-sourced music toys. The audio is synthesised with NumPy (a sine with two harmonics, an exponential envelope and a dotted-eighth delay), written with the standard-library wave module, and the MIDI file is hand-rolled bytes. No audio libraries, no services. Source: generators/sequencer/sequencer.py · header: generators/waveform/waveform.py.


🧰 Toolbox

Toolbox: AI & data, audio/DSP, creative coding, languages, platforms, creative tools

one SVG, generated from a YAML file — not two hundred badge requests.


👩‍💻 Meet the maker

🔬 Science · 💡 Technology · 🏗 Engineering · 🎨 Art · 📈 Maths
a happy advocate of the full STEAM 💨

Professionally — I'm an AI expert and data scientist at CM/MC, with almost a decade of turning messy data into decisions, products and (ethical, interpretable) models. I hold a BSc (Hons) Creative Computing from the University of London (magna cum laude), an MBA in Health, and I did Berklee's AI for Music & Audio summer programme because I could not help myself. Healthcare, NLP/OCR and human–machine interaction are the problems that keep me up at night — in a good way.

Creatively — my programming started in sound engineering and sound design, and it never left: MIR, DSP, generative music, L-systems that draw and play, live algorithms on stage. I research with the Sound of AI community, shoot photos and music videos on mirrorless cameras, and run The Munchkin Algorithm — a studio for intelligent systems, creative code, sound and workshops.

As a human — I coach at Django Girls (since 2018), beta-test courses for Coursera, speak several languages and collect more, read everything, and split my time between Belgium and Sweden with a junior programmer who commandeers my keyboard and two feline QA engineers who sleep on it.

a few more things
  • Theme purist — I cannot look at an unstyled Matplotlib plot. Nord on everything (yes, this page too).
  • Live coding — I would love to perform live-coded music more often. Encouragement and tips from fellow algoravers welcome.
  • Teaching — I learn fastest when I have to explain it; workshops are my favourite excuse.
  • Most of the code here is me monkeying around 🐒 — experiments, courses, hobby projects. A glimpse into my exploration 🧪, not a testament to my day job 🦸.

📓 Noteworthy

Creative computing, sound & generative art (click to expand)
AI, data & agents (click to expand)
Studies (click to expand)
  • 🎓 BSc (Hons) Creative Computing — University of London · magna cum laude (GPA 3.9)
  • 🎓 MBA, Healthcare Management
  • 🎓 AI for Music & Audio — Berklee College of Music summer programme · summa cum laude (GPA 4.0)
  • 🎓 Music Information Retrieval — UVic professional programme
  • 🎓 Generative Art & Computational Creativity — SFU professional programme
Open source & community (click to expand)
  • 🍪 api-bakery — a Cookiecutter template for well-behaved APIs.
  • 🎧 Sound of AI — research collaborator since 2021 (NSynth dataset work, open-source audio ML).
  • 👩‍💻 Django Girls — code coach and guest speaker since 2018.

📈 Metrics

show stats (click to expand)

GitHub metrics
Coding habits

rendered daily by lowlighter/metrics running in this repo's Actions — self-hosted, so it does not vanish when a free service does.


🖇️ Let's connect

I'm always up for learning something new, collaborating on odd projects or talking shop about sound, AI and everything in between.

🪼 Website · 💼 LinkedIn · 🤗 Hugging Face · 🎧 Bandcamp · 🎮 Steam


🔧 how this page is built
piece source trigger
header waveform generators/waveform/waveform.py whenever the sequencer changes
social buttons generators/social.py manually: python generators/social.py
commit tree generators/garden/forest.py · tree.py · lsystem.py nightly history sync
step-sequencer (SVG, WAV, MIDI) generators/sequencer/sequencer.py visitor issues
toolbox generators/toolbox/toolbox.py on push to its config
metrics lowlighter/metrics daily
glue generators/playground.py · .github/workflows/ —

Every SVG exists in a dark and a light variant, picked with <picture> and prefers-color-scheme. The header and tree generators update their image URL versions whenever their SVGs change, avoiding stale caches. When a social button's artwork changes, bump its asset key and README paths to avoid stale image caches; older assets remain available for existing links. Fork it, change the owner in forest.py and playground.py, refresh the history, and customise toolbox.yaml and the sequencer state.json for your own living README.

Created with 🫀 and 🧠 by Marie-Lynne Block · ©2026 · nothing on this page is a static image

Pinned Loading

  1. arcanum-artifex arcanum-artifex Public

    Prompts, skills, and agents that survive contact with real workflows. No vendor loyalty. Occasionally heretical. 🧙🏻‍♀️

    Python 4

  2. nanodegree_AI-product-management nanodegree_AI-product-management Public

    The AI Product Manager Nanodegree programme is meant for product managers that are responsible for building and deploying AI products. The AI PM Nanodegree program is focused on the hands-on tasks …

    HTML 1

  3. sonic-alchemy-lab sonic-alchemy-lab Public

    Jupyter notebooks designed for the analysis of sound waves, audio, and music. The notebooks aim to facilitate research and development in Digital Signal Processing (DSP), Music Information Retrieva…

    Jupyter Notebook 1 1

  4. nanodegree_data-product-management nanodegree_data-product-management Public

    The Data Product Manager Nanodegree is for experienced Product Managers aiming to specialise in data product management. From developing an MVP, to decide on launch strategies for new data driven p…

  5. digital-sound-playground digital-sound-playground Public

    Design new algorithmic patterns to generate music samples or build drum machines and on top of it, build user-friendly and beautiful UIs to make the music tools available outside music environments…

    JavaScript 62 11

  6. nanodegree_generative-AI nanodegree_generative-AI Public

    Comprehensive course for advanced learners, covering optimisation algorithms, Bayesian networks, classical search, and more. Taught by experts like Sebastian Thrun and Peter Norvig, it offers hands…