-
Notifications
You must be signed in to change notification settings - Fork 10
Home
Gave up on the wiki log. TODO: do a dev blog somewhere.
Made a dependency graph today
- Added some spectron tests
- Moved over a few tweaks from the music library experiments from the last couple weeks
- Got rid of const in favor of var
- Set up a new milestone https://github.com/hypermodules/hyperamp/milestone/1
- Added some more notes about SQL
Basically, pulling the goals back even further to just get the foundation of a music player in place.
-BAC
Fixed a few bugs in leveldb indexing, but the more I read about SQLite the more I realize how this problem is a perfect fit for a relational database. The only issue is the ability to replicate stats and edits across computers and the lack of conflict resolution. SQLite isn't good for that, so that puts a serious limitation on making the entire SQLite database a 'secondary' view into the underlying metadata extracted from the files. It would be cool to have stats synced across systems as well. Syncing is a super hard problem.
I populated the table/state with 10049 songs, and choo slows to a craw. The slowdown happens when we map over that array every state update in the table component. Scrolling performance is still good, but we need to find a way to decouple state updates from recalculating the list.
Next steps:
- Find a way to render a list of 10,000 objects in a way that doesn't thrash when unrelated state changes.
- Investigate dom-recycling table libraries
- Start developing a relational database workflow
- Brainstorm an async worker queue and UI to indicate what its doing.
-BAC
Threw together a super simple music-library class in https://github.com/hypermodules/music-library that scans and cleans up missing files. It uses leveldb and some indexing wrappers and is pretty crappy, but should at least help quickly recall a list of pre-scanned metadata objects for quickly populating the library view.
A few points of concern:
- The metadata library is good, but not great. It comes along with artwork which slows things down like crazy. Maybe investigate how to turn that off.
- Leveldb is a massive yack shave for what should be a fairly conventional process of sorting things according to row properties. I've started reading about SQLite via http://shop.oreilly.com/product/9780596521196.do and http://www.informit.com/store/effective-sql-61-specific-ways-to-write-better-sql-9780134578897
-BAC