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

Subscribe to Feed

Categories

Calendar

June 2017
M T W T F S S
« May    
 1234
567891011
12131415161718
19202122232425
2627282930