Code

Having programmed in Python since 2000, I have created and contributed to numerous open-source tools for both music and data processing.

Featured Code

My passion for writing fast and maintainable Python DataFrame code led to the creation of StaticFrame, an immutable alternative to Pandas.

  • StaticFrame
    A library of immutable and grow-only Pandas-like DataFrames with a more explicit and consistent interface.
    2018 to present
    Python, NumPy

For three years at MIT I implemented the foundations of music21, a leading tool for analyzing and generating symbolic music.

  • music21
    A Toolkit for Computer-Aided Musical Analysis and Computational Musicology.
    2009 to 2012
    Python, MusicXML, MIDI

All Code

  • StaticFrame
    A library of immutable and grow-only Pandas-like DataFrames with a more explicit and consistent interface.
    2018 to present
    Python, NumPy
  • ArrayKit
    Python C Extensions for StaticFrame.
    2020 to present
    C, NumPy C API, CPython API, Python, NumPy
  • ArrayMap
    Dictionary-like lookup from NumPy array values to their integer positions.
    2023 to present
    C, NumPy C API, CPython API, Python, NumPy
  • FrameFixtures
    Use compact expressions to create diverse, deterministic DataFrame fixtures with StaticFrame.
    2020 to present
    Python, NumPy
  • StaticFrame API Search
    Search and explore the StaticFrame API.
    2023 to present
    TypeScript, React
  • function-pipe
    Tools for extended function composition and pipelines in Python.
    2014 to 2017
    Python
  • music21
    A Toolkit for Computer-Aided Musical Analysis and Computational Musicology.
    2009 to 2012
    Python, MusicXML, MIDI

Articles

My writings in software engineering, Python, and algorithmic music composition have been published in journals, conference proceedings, and popular publishing platforms.

Featured Articles

This article demonstrate complete DataFrame type hinting for both static analysis and run-time validation.

This recent article provides a concise demonstration of why immutable data matters for DataFrame performance.

All Articles

  • Type-Hinting DataFrames for Static Analysis and Runtime Validation
    2023
  • The Performance Advantage of No-Copy DataFrame Operations
    2022
  • One Fill Value Is Not Enough: Preserving Columnar Types When Reindexing DataFrames
    2022
  • StaticFrame from the Ground Up: Getting Started with Immutable DataFrames
    2022
  • Using Higher-Order Containers to Efficiently Process 7,163 (or More) DataFrames
    2022
  • Ten Reasons to Use StaticFrame instead of Pandas
    2020
  • Boring Indices & Where to Find Them: The Auto-Incremented Integer Index in StaticFrame
    2019
  • Two Pioneering Projects from the Early History of Computer-Aided Algorithmic Composition
    Computer Music Journal 2011
  • The music21 Stream: A New Object Model for Representing, Filtering, and Transforming Symbolic Musical Structures
    Proceedings of the International Computer Music Conference 2011
  • Analytical and Compositional Applications of a Network-Based Scale Model in music21
    Proceedings of the International Computer Music Conference 2011
  • music21: A Toolkit for Computer-Aided Musicology and Symbolic Music Data
    Proceedings of the International Society for Music Information Retrieval Conference 2010
  • Modeling Beats, Accents, Beams, and Time Signatures Hierarchically with music21 Meter Objects
    Proceedings of the International Computer Music Conference 2010
  • The Interrogator as Critic: The Turing Test and the Evaluation of Generative Music Systems
    Computer Music Journal 2009
  • Sonifying Sieves: Synthesis and Signal Processing Applicatinos of the Xenakis Sieve with Python and Csound
    Proceedings of the International Computer Music Conference 2009
  • Python at the Control Rate: athenaCL Generators as Csound Signals
    Csound Journal 2008
  • Serial RSS Sound Installation as Open Work: The babelcast
    Proceedings of the International Computer Music Conference 2007
  • Automata Bending: Applications of Dynamic Mutation and Dynamic Rules in Modular One-Dimensional Cellular Automata
    Computer Music Journal 2007
  • The Xenakis Sieve as Object: A New Model and a Complete Implementation
    Computer Music Journal 2005
  • Navigating the Landscape of Computer-Aided Algorithmic Composition Systems: A Definition, Seven Descriptors, and a Lexicon of Systems and Research
    Proceedings of the International Computer Music Conference 2005
  • An Open Design for Computer-Aided Algorithmic Music Composition: athenaCL
    Ph.D. Dissertation, New York University 2005
  • Ornament as Data Structure: An Algorithmic Model based on Micro-Rhythms of Csángó Laments and Funeral Music
    Proceedings of the International Computer Music Conference 2003
  • Prokaryotic Groove: Rhythmic Cycles as Real-Value Encoded Genetic Algorithms
    Proceedings of the International Computer Music Conference 2002

Talks

I have given presentations at numerous national and international conferences, both in music and software engineering.

Featured Talks

My recent SciPy compares a variety of approaches to optimizing NumPy routines in Python C-extensions.

  • Out-Performing NumPy is Hard: When and How to Try with Your Own C-Extensions
    SciPy 2023

My 2022 PyCon USA talk describes a novel approach to using Numpy's NPY binary format to encode complete DataFrames, with performance faster than Parquet.

  • Employing NumPy's NPY Format for Faster-Than-Parquet DataFrame Serialization
    PyCon USA 2022

All Talks

  • Out-Performing NumPy is Hard: When and How to Try with Your Own C-Extensions
    SciPy 2023
  • Building NumPy Arrays from CSV Files, Faster than Pandas
    PyCon USA 2023
  • Employing NumPy's NPY Format for Faster-Than-Parquet DataFrame Serialization
    PyCon USA 2022
  • Why Datetimes Need Units: Avoiding a Y2262 Problem & Harnessing the Power of NumPy's datetime64
    PyData Global 2021
  • The Best Defense is not a Defensive Copy (lightning talk starting at 18:25)
    PyData LA 2019
  • Fitting Many Dimensions into One The Promise of Hierarchical Indices for Data Beyond Two Dimensions
    PyData LA 2019
  • A Less Kind, Less Gentle DataFrame (lightning talk starting at 53:00)
    PyCon USA 2019
  • StaticFrame, like Pandas but safer
    TalkPython['Podcast'] 2019
  • StaticFrame: An Immutable Alternative to Pandas
    PyData LA 2018

Music Composed

Starting in the mid 1990s I composed experimental music in a variety of mediums, including acoustic, electronic, and computer music.

Featured Music Composed

A goal of this work was immersive textures of color and noise. To this day I enjoy the immersive space this work creates.

One of my favorite acoustic compositions, this work explores a variety of rhythmic environments.

All Music Composed

About

More about this site.
  • Biography
  • Site History
  • About the Flexatone

flexatone.net site v5.1.3. Copyright 1996-2023. Post comments or questions at the flexatone-comments GitHub repository.