Public Software

When I write software to meet my needs, I often find that those needs may be shared by others. So I try to make the software more generally applicable, and offer it to others who might have use for it. The process of generalizing helps me write better software. And usage by others improves the quality and features through user feedback & bug reports.

Here is a list of publicly available software tools & systems that I develop, maintain or largely contribute to:

UnetStack – an extensible underwater network stack

  • UnetStack – project page, UnetStack download, documentation
  • Unet handbook – an online book providing step-by-step guidance to working with UnetStack
  • unetpy – Python interface to UnetStack
  • UnetSockets.jl – Julia interface to UnetStack
  • unet-contrib – UnetStack community repository

fjåge – a general-purpose agent framework for Java/Groovy

The fjåge framework forms the core of not only UnetStack, but also several other robotics projects that I contribute to. It provides an agent-based operating system that makes development of modular and extensible software systems easy.

  • fjåge – agent framework repository, documentation
  • fjåge-sentuator – sensor/actuator interface for agent-based systems
  • fjågepy – Python interface to fjåge
  • Fjage.jl – Julia interface to fjåge

Python packages & tools

  • arlpy – Python tools for:
    • Signal processing (arlpy.signal)
    • Communication systems (arlpy.comms)
    • Beamforming & array processing (
    • Stable distributions (arlpy.stable)
    • Geographical coordinates (arlpy.geo)
    • Underwater acoustics (arlpy.uwa)
    • Underwater acoustic propagation modeling (arlpy.uwapm) – Python interface to Bellhop
    • Plotting utilities (arlpy.plot)
    • Miscellaneous common utilities (arlpy.utils)
  • unetpy – Python interface to UnetStack
  • fjågepy – Python interface to fjåge

Julia packages & tools

  • SignalAnalysis.jl – Signal analysis toolbox
  • UnderwaterAcoustics.jl – underwater acoustic propagation modeling tools, including an interface to Bellhop
    (Julia versions are aimed at being compatible with automatic differentiation and probabilistic programming)
  • InteractiveViz.jl – interactive visualization tools
  • jajub – Java-Julia bridge, for Java applications with Julia components
  • UnetSockets.jl – Julia interface to UnetStack
  • Fjage.jl – Julia interface to fjåge