Josh Hansen
Josh Hansen
@josh@joshhansen.tech
68 posts
0 followers
  • Concept: Music Server / Music Server Protocol v2

    (Updates Concept: Cross-platform music playback daemon) Motivation: I’m trying to move away from Spotify, tired of renting my own playlists back month after month. So I’m paying for music downloads online (MP3s and FLACs) and ripping CDs, and generally moving to an old-is-new-again post-Spotify music workflow. As Linux is my primary desktop environment, I’m reacquainting…

  • Javascript, The Bad Parts #3: no negative array indexing 😾

    On the petty side—gets frowny cat, rather than horror cat. After a decade of Python, it’s surprising to me that Javascript doesn’t allow arr[-1] and such. Maybe negative indices returning undefined is widely relied upon, leading to compatibility issues? Not sure why it’s not a thing—arr[arr.length – 1] is just no fun.

  • Javascript, The Bad Parts #2: no custom comparisons in `Set` 🙀

    In Javascript, Set treats objects only by reference, not by value, requiring weird contortions to maintain unique sets of non-primitive values. In every other modern language I’ve worked with, the standard library set allows custom comparisons. But not Javascript. In Java / Kotlin, HashSet defers to an object’s hashCode method, which can be overridden to…

  • Javascript: The Bad Parts #1

    No Array.prototype.remove (a la Array.prototype.filter) 😿 You have to use splice based on an index instead. Would be much simpler to provide an item to be removed. The equivalent of arr.splice(arr.indexOf(item), 1). https://stackoverflow.com/questions/5767325/how-can-i-remove-a-specific-item-from-an-array

  • Concept: People

    A contact manager on steroids. Real social networks. A person or group view that shows all known interactions, notes/diary entries, etc. Desktop application, I hope.

  • Concept: Donation Daemon

    Set a weekly / monthly / annual donation level. Daemon monitors app usage, and distributes donations proportionally, possibly through a third party service.

  • Concept: Music Server / Music Server Protocol

    Identifies, indexes, and manages music files, and exposes them for playback via the Music Server Protocol. Difference from Concept: Music Player Daemon: the playback occurs on the client, not the server Differences from Navidrome: no built-in web interface; supports editing of tags. Differences from Subsonic API: supports tag editing; has a concept of permissions; mult-user;…

  • Concept: Cross-platform music playback daemon

    Coming back to local Linux music playback, I’m pretty disappointed with the state of things. Spotify’s UI feels nice in comparison, which says something, given how neglected it seems. Things largely feel like 2016 or so. Every music player seems to solve the same problem using a totally new codebase, with only low-level libraries shared…

  • Concept: The Projects Blog

    Like this document. But in the open. Allow for comments on my project ideas, refinement, collaboration, etc. to bring things to reality. this blog

  • Concept: Evolute

    My stab at evolving a self-replicating virtual lifeform.