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.
- 17.1. API
- 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