YAK STACK
Yak Shaving is a nerd's term for an esoteric and seemingly unnecessary activity that you find yourself doing to solve a problem that, several iterations later, solves the problem you initially set out to solve. The link takes you to an apocryphal story, but my current one is how I initially set out to organize my music collection and ended up somehow re-writing the library management layer of a popular programming language...
The Yak Stack is my stack of projects that I'm working on, or would like to work on someday. The stack shrinks as I finish and release projects, and grows as I discover issues that need to be addressed. Sometimes an entire chunk of the stack may be deleted or replaced as needed.
The Yak Stack:
* 1. Hy Improvements
* 1.1. Fix importer to work with Django
* 1.2. Implement iter_modules layer for Hy
* 1.2.1. Abstract importer into its own library
* 1.2.2. Use cookiecutter to initialize the project
* 1.2.3. Learn Tox to unit test the importer
* 1.2.4. Implement a Jenkins layer for unit testing
* 2. Catalogia
* 2.1. A simple Django app to manage large personal music archives
* 2.2. Add search feature
* 2.3. Add discontinuity detection
* 2.4. Add write features with historical tracking on a per-file basis
* 3. Verb: That's What's Happening
* 3.1. Toy programming language written on top of Python
* 3.2. Library compatibility
* 3.3. IDE
* 4. Fy:
* 4.1. Toy strongly-typed programming language written on top of Python
* 4.2. Hindley-Milner lessons
* 4.3. Type/Untype border (a'la Racket)
* 4.4. IDE
* 5. Intimacy: A Transpiler for Javascript
* 5.1. Wishlist
* 5.2. Make list of features from: Coffeescript, Pixie,
* 5.3. Take code generator, and enrich with features as required.
* 5.3.1. Macros
* 5.4. Consider macro language extensions (auto-add backends)
* 5.5. Use macro generators to enhance:
* 5.5.1. Generators
* 5.5.2. Cells/FRP
* 5.5.3. Async/Await
* 5.5.4. DOM/CSS/JS-building DSL via reader macros
* 5.5.5. Try/Catch
* 5.5.6. For/While (See Earl-Grey's "labeled continues")
* 5.5.7. Auto-Currying (consider promoting)
* 5.5.8. Pattern Matching (consider promoting)
* 5.5.9. μKanren
* 5.5.10. Advanced Regular Expressions
* 5.5.11. See: Pixie's stdlib.pxi (nee' Prelude)
* 5.5.12. Gradual Type Reconstruction
* 5.5.13. Tail call optimization
* 6. Jarvis: A 2-D implementation of an SFnal Gauntlet/Berzerk/Roguelike
* 6.1. It's been done: See "Alien Breed"
* 6.2. One step closer to Unity
* 7. Gravity: The interpreter/compiler for Intimacy
* 7.1. Fast interpreter (chapter 6 of LiSP)
* 7.2. LLVM code generation (chapter 7 of LiSP)
* 7.3. Read Evaluation and Reflection (chapter 8 of LiSP)
* 7.4. Macros, use & abuse (chapter 9 of LiSP)
* 7.5. Compilation into C/C++ (Chapter 10)
* 7.6. Read chapter 11
* 7.7. Compile direct to: Front end, back end, Postgres
* 8. Narrator: A website for writers
* 8.1. Version 2.0 Dependency: TOXIC
* 8.2. BE: Create databases for stories, story collection, users
* 8.3. BE: Create databases for templates
* 8.4. MT: Generate Table of Contents on the fly, using template selection
* 8.5. MT: Generate Story on the fly, using template selection
* 8.6. FE: Display a story with next/previous
* 8.7. FE: Collection editing via drag & drop
* 8.8. FE: Sub-collection assignment to template
* 8.9. FE: Sub-collection assignment to automatic EPUB generation
* 8.10. FE: Sub-collection assignment to automatic LaTEX generation
* 8.11. FE: Cover Art Assistant
* 8.12. FE: Association and generation of EPUB with ONIX
* 8.13. FE: Automatic dispatch to Lightning Source
* 8.14. FE: Automation association and generation of print edition with ONIX
* 8.15. BE: Create Database for multiple users
* 8.16. MT: Create DNS-based dispatch
* 8.17. Policy: Reserved namespaces.
* 8.18. Research: What do FF/AO3/Ravelry do?
* 8.19. FE: Beta readers
* 8.20. FE: Alpha readers
* 8.21. FE: Mobile Necessary
* 8.22. FE: Uploadable, personalized themes.
* 8.23. FE: Flavorish theme editable
* 8.24. FE: Autogrid
* 9. Twilight: A graph database
* 9.1. Security and Privilege
* 9.2. Triggers
* 9.3. Constraints
* 9.4. Collective insertions
* 9.5. Collective deletions
* 9.6. Views (?)
* 9.7. Recursion
* 9.8. Cost Prediction
* 9.9. Types and User-Defined Types
* 9.10. XPath and XSTL issues
* 9.11. Buffer and Page Layout, Files of Records (RB 1)
* 9.12. Catalog Design using C++ Templates (C++11 auto features, too)
* 9.13. Indexes And B+ Trees (RB 2)
* 9.14. Indexes and Hashes
* 9.15. B-Link trees?
* 9.16. Alternatives (B-Skip-List?)
* 9.17. System Management (RB 3)
* 9.18. Query Language (RB 4)
* 9.19. Pluggable embedded languages for stored procedures (Javascript, Python, Guile (?) to start) (RB5)
* 9.20. A "page fault" is when the DBMS references a page that is not in memory, so it must be loaded.
* 9.20.1. See Lecture One for details on Page Fault architectures and Algorithms: LRU, MRU, "Hot Set"
* 9.20.2. Query Locality Set Model: Methods of Database Access are predictable; reference access methods should be too
* 9.20.3. This is an interesting question for GraphDBs, especially ones that are DAGs
* 9.21. Multi-field indexing
* 9.22. Concurrency Issues
* 9.23. On-the-fly Compression
* 9.24. Versioning (multiversion concurrency control)
* 9.25. Distributed Graphs
* 9.26. Query execution visualization tools.
* 10. TOXIC: Terrabytes of XML Indexed and Compressed
* 10.1. Lessons learned from Twilight
* 10.2. Huffman and page loading
* 11. Gardenia: An app suite for gardening, using USDA data
* 11.1. Study how to capture geographic information
* 11.2. How to capture topological information
* 11.3. BE: Associate address with microclimate
* 11.4. BE: Associate microclimate with date.
* 11.5. MT: Capture user's plant list and scale
* 11.6. FE: Terrain editor, with pop-ups to indicate actions.
* 12. Potlatch: An app suite for organizing potlucks
* 12.1. Get USDA nutrition database
* 12.2. Allow organizers to register new potlatch
* 12.3. Allow organizers to send out invitations
* 12.4. Allow users to specify what they'll bring
* 12.5. Allow users to see what is still required
* 12.6. Show balance
* 12.7. Use NUT as your central data source
* 13. FaeryBriar (interlinked page builder)
* 13.1. Dependency: Twilight
* 13.2. Look up that IBM documentation on Web Application Organization
* 13.3. Allow users to draw pages, recognize page gestures, and link
* 13.4. Allow users to see prototype pages with content.
* 14. Butterfly Effect (analysis plug-in)
* 14.1. Diassesmble analytics
* 14.2. Provide your own variant
* 14.3. Provide a dashboard
* 14.4. Empower that dashboard with WS
* 15. Gapfill (relational spreadsheets, like Airtable)
* 15.1. Dependency: Twilight
* 15.2. Figure out database schema for relational show
* 15.3. API
* 15.4. Metadata API (create or modify tables)
* 15.5. Figure out front-end display
* 15.6. Thematize (you know how to do this)
* 15.7. Provide client-side completion of actions
* 15.8. Widget types:
* 15.8.1. Link
* 15.8.2. Text
* 15.8.3. Rich Textbox
* 15.8.4. Attachment(s)
* 15.8.5. Checkbox
* 15.8.6. Single select
* 15.8.7. Web clipping
* 15.8.8. Multi Select
* 15.8.9. Date, Time, Datetime
* 15.8.10. Phone Number (I18N!)
* 15.8.11. Email
* 15.8.12. URL
* 15.8.13. Number
* 15.8.14. Integer
* 15.8.15. Currency
* 15.8.16. Percent
* 15.8.17. Function
* 15.8.18. Select / Multiselect (records from remote table)
* 15.8.19. Length (Number of records in table.column)
* 15.8.20. Summary (Aggregates of linked records, like SUM(prices))
* 15.8.21. Function support:
* 16. NeedToKnow (card-based everything API, like Relevant)
* 16.1. APIs for collecting data
* 16.2. API to API map mechanism, safe for outsiders to use
* 16.3. API read/describe/transform/republish
* 16.4. Card Representations
* 16.5. Data gathering for later display
* 16.6. RSS Reader?
* 17. TODO/Notebook (Wunderlist/Evernote/Trello(?))
* 17.1. API
* 17.1.1. API Overview
* 17.1.2. Concepts
* 17.1.3. Authorization
* 17.1.4. Formats
* 17.1.5. Revisions
* 17.1.6. Endpoints
* 17.1.7. Avatar
* 17.1.8. File
* 17.1.9. File preview
* 17.1.10. Folder
* 17.1.11. List
* 17.1.12. Membership
* 17.1.13. Note
* 17.1.14. Positions
* 17.1.15. Reminder
* 17.1.16. Subtask
* 17.1.17. Task
* 17.1.18. Task comment
* 17.1.19. Upload
* 17.1.20. User
* 17.1.21. Webhooks
* 17.1.22. Tools
* 17.2. Features:
* 17.2.1. Folders: Group all related lists in one easily accessible Folder.
* 17.2.2. Comments: Host all your communication in one place, accessible for all.
* 17.2.3. Share lists: Share your lists with colleagues, friends and family.
* 17.2.4. All your devices: Free on iPhone, iPad, Android, Mac, Windows and the Web.
* 17.2.5. Reminders: Add a Reminder to make sure no to-do is forgotten.
* 17.2.6. Due Dates: Set Due Dates so that no deadline is missed.
* 17.2.7. Notes: Add Notes to make sure all your ideas are captured.
* 17.2.8. Notifications: Updates via push, email and in-app notifications.
* 17.2.9. Mail To Item: Send mail to your server, see it become an action item
* 17.2.10. Web Clip: Add anything from the web straight to your Wunderlist.
* 17.2.11. Tags: Use hashtags to add more context to your to-dos.
* 17.2.12. Print: Print your to-dos and lists with just one click.
* 18. Chainkeeper
* 18.1. Jerry Seinfeld's consistent (but not necessarily weekly) "don't break the chain" app
* 19. Paperchase
* 19.1. NNTP Protocol
* 19.2. Database
* 19.3. Database abstraction
* 19.4. Database-to-schema.NNTP translation layer
* 19.5. Front-end
* 19.6. WebUI
* 20. French Press
* 20.1. Database schema resembles Wordpress's, for easy upgrade
* 20.2. Front-end resembles Ghost or Medium
* 21. Simplestory
* 21.1. Adding Scrivener features to Narrator
* 21.2. Plus plotline engine
* 21.3. NLP discovery of characters and locations
* 22. Ptah
* 22.1. A kanban display
* 23. Omnipotence
* 23.1. A wunderkit clone
* 24. Meadowtation
* 24.1. A Stoic's version of Mindbloom
* 25. Seamcarve
* 25.1. A seam carving addition to PNM (needed?)
* 26. Defender: A game engine
* 27. Comic Opera…
* 28. Abysss…
* 28.1. README: An in-the-browser editor like Medium or ZenWrite.
* 28.2. BUY/BUILD decision
* 29. Spine Reader: A client/server model of an RSS reader
* 30. Flavor / Tumble Integration
* 31. DITA / Gamification Integration
* 32. Ogre / GEV / Rivets Clone