trane
typeshare
trane | typeshare | |
---|---|---|
26 | 10 | |
759 | 30 | |
0.0% | - | |
8.4 | 0.0 | |
4 days ago | over 4 years ago | |
Rust | Rust | |
GNU Affero General Public License v3.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
trane
-
Benjamin S. Bloom: Learning For Mastery (1968) [pdf]
My implementation of mastery learning (along with other related ideas): https://github.com/trane-project/trane/
It bothered me enough that there was not something like this already available, when the idea seemed so simple, that I ended up doing it myself. The user experience is not very polished yet, but I managed to turn the courses in here https://improviseforreal.com/learning-materials into courses for this software that can teach you ear training and to improvise on any instrument in all keys, all modes, and most common chord progression. Currently, I am doing it for piano, but I've only reached about 15% of the total jam tracks so far. Obviously, I am not distributing the tracks myself.
I am pretty sure the main issue is that there's no one funding implementing these ideas. We've known about mastery learning, spaced repetition, interleaving, etc. for decades, but it's not all been put together into a coherent system. Something like https://mathacademy.com/ is similar, but it's not open sourced and cannot be used to create your own materials. No need for LLMs or anything fancier to be involved when there's so much low-hanging fruit that's not been implemented yet. The core of my software is just a depth-first search over a graph, lol.
-
A half-hour to learn Rust
Not sure if I disagree but your example is terrible. Let patterns in if statements greatly simplify things. The alternatives are a lot more convoluted.
See example from code I wrote this week: https://github.com/trane-project/trane/blob/master/src/data/...
Without the let, I'd have to do a match statement followed by an unwrap just to check if a field in an enum is set.
-
Jazz Comping
That's pretty much what I've been trying to do with https://github.com/trane-project/trane/
I wanted something like you describe, but as far as I know nothing existed. So I've been hacking at this and the basic idea does work. It's now just a matter of designing the courses and polishing the user experience.
I am just coming up with the structure for how to define what music would depend on each other. Trying to do it based on music theory would be ideal, but probably beyond my capacity. So I think the historical development of the genre you are trying to learn is a good proxy. For jazz, for example, this would be something like learning African music first, then spirituals, then blues songs, then new orleans jazz, then basic standards and so on. Trane works based on a graph, so the progression does not have to be linear.
It's pretty early stages at the moment. Only one course for now since I've been trying to work out the process first: https://github.com/trane-project/trane-music/blob/master/cou...
These "transcription" courses first ask you to loosely sing the song, then loosely improvise over it with your instruments (you can customize your own), then sing in different keys and do it more thoroughly, then improvise more closely to the actual song. The last step is what is normally called transcribing, but the course is meant to progressively lead you to that. The whole process is meant to recreate the apprenticeship process that all the early Jazz masters went through.
Ideally there's a graphic interface that downloads the music and lets you loop, slow down, and change the pitch. But for now, there's only a command-line interface and the user has to do that themselves. Not ideal, but it works.
-
I’ve fallen in love with rust so now what?
Link to my project: https://github.com/trane-project/trane
-
Anki-Fy Your Life
I've been working on https://github.com/trane-project/trane for the past year or so, mostly to get around these limitations. I tried to find a way to use Anki or another existing software to aid my music practice, but I couldn't get it to work.
Some ways in which it's different:
- Dependencies are core to the system. For example, if I am learning a music piece, I want to start by learning small sections and only move on to larger sections when I am good enough the small stuff, eventually ending with a final exercise that tests my performance of the whole piece. A lot of knowledge/skills follow that pattern, but I couldn't find a way to make Anki or SuperMemo understand this.
- It's meant for both memorizing stuff and practicing exercises. I have tested it with your exact example (math problems from textbooks). It works fairly well, but it's at a very early stage (you can look around at https://github.com/trane-project/trane-math, but it still needs a readme). So it's doing the same thing as the students you mentioned. The difference is that the scheduling is done automatically. Review of existing problems and addition of new ones happen without requiring planning or tracking from the student.
- There's an emphasis on generating the flashcards as text files, so they can be shared. I don't understand why people insist of remaking their own flascards every time. If someone wishes to learn guitar, for example, it's my hope they just download some courses and start learning without spending any time redoing flashcards. This design choice probably makes it harder to write the flascards, but it balances out once the flashcards are done and can be passed around.
-
Coltrane: A music theory library with a command-line interface
Curiously enough, I have been working on a project named after the same person (John Coltrane) as a way to help me practice music: https://github.com/trane-project/trane/
I have been meaning to generate flashcards to teach you the notes of scales and chords so that I can have instant recall. It gets really annoying to not know them when improvising or composing. I have some basic courses, but I found the process a bit tedious, so I have been working on other courses and features instead.
I am going to try to use this utility to help me generate the flashcards instead of writing my own logic. Hopefully it works well as it would save me a lot of time.
-
The Lone Developer Problem
I started doing that with my own project after I reverted a (correct) change a few weeks later because I forgot to write down the original reasoning anywhere. No other contributors so far, so I can't say how much it helps on that front, but it has helped me a lot and I feel safer making big changes without fearing I'll break anything.
The entry point docs are here: https://github.com/trane-project/trane/blob/master/src/lib.r...
-
Bloom's 2 Sigma Problem
Already working on fixing this: https://github.com/trane-project/trane/
No AI needed. Just an old fashioned depth first search through a graph of skills and dependencies.
I made it to help me practice music, but I have been branching out and using it to study math for a few weeks. I find myself saying "just one question more" and then spending another half hour in it.
Still needs more material to be useful to other people but it's a solid experience. I learned and memorized how to play most of the notes in the saxophone with good intonation in about a week, as a complete beginner.
-
GPT for Second Brains
I've been thinking of using GPT or similar LLMs to extract flashcards to use with my spaced repetition project (https://github.com/trane-project/trane/). As in you give it a book and it creates the flashcards for you and the dependencies between the lessons.
I played around with chatgpt and it worked pretty well. I have a lot of other things in my plate to get around first (including starting a math curriculum) but it's definitely an exciting direction.
I think LLMs and AI are not anywhere near actual intelligence (chatgpt can spout a lot of good sounding nonsense ATM), but the semantic analysis they can do is by itself very useful.
-
Do u think it's a good idea to ankify ur hobbies
Theres a program that you might wanna check out for learning skills, it's called Trane. https://github.com/trane-project/trane
typeshare
-
Using rust to generate typescript client
It doesn’t generate a complete client but 1Password’s Typeshare can generate TypeScript from Rust data structures https://github.com/1password/typeshare
-
Is rust overkill for most back-end apps that could be done quickly by NodeJS or PHP?
Aren't there things like typeshare to aid with that case?
-
Bloom's 2 Sigma Problem
Sure. I would love some help. I am visiting my family all March (I am typing this from the airport), so I don't know how much time I'll have to work on trane for the next month. But maybe that gives you some time to use it, and read the code and docs.
I am not going to put my personal email here, and I don't see an option to send private messages on hn, although it's probably out there somewhere. Probably in the commits, lol. Worst case, feel free to open an issue on the trane repo.
As a first ask, what do you think of this: https://github.com/1Password/typeshare?
I figured writing the UI in rust is probably not a good idea. The ecosystem for UI is very immature and the language itself is probably overkill. But doing it in typescript/html/css requires you to understand the internal data structures (all the JSON files you see in the courses are just serialized rust objects).
I found that repo and it seems like a promising approach to autogenerate the types and make the interaction easier.
-
Generating java code from rust structs
How does this compare to typeshare?
-
Upcoming Q and A re: Typeshare, a tool to help Rust developers generate consistent type schema
Recently, 1Password open-sourced Typeshare, to help Rust developers create FFI (foreign function interfaces). Curious to learn more? Join the team behind the tool this week on Zoom at 11a Eastern to discuss Typeshare and answer any questions.
-
Open Source Project
Newly open-sourced project that might be handy for some of you all https://github.com/1Password/typeshare
- Typeshare: Synchronize type definitions between Rust and other languages
- 1Password releases Typeshare, the "ultimate tool for synchronizing your type definitions between Rust and other languages for seamless FFI"
-
How to Build a Rust CLI Tool to Generate Typescript Types from Rust
Typeshare by 1Password, the original inspiration for this blog post. It's available on crates.io.
-
Rust in Production: 1Password
For sure! We actually open sourced an early version of it a while back (https://github.com/1Password/typeshare), but it became a slowdown to work on it both for our own internal needs and for the outside world, so that was abandoned and it's since fallen out of sync with the project internally today.
What are some alternatives?
fsrs4anki - A modern Anki custom scheduling based on Free Spaced Repetition Scheduler algorithm
card_game
genanki - A Python 3 library for generating Anki decks
bitwarden_rs - Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs [Moved to: https://github.com/dani-garcia/vaultwarden]
trane-cli - A command-line interface and utilities for Trane
silver_editor - A small editor for quicksilver and Mergui
trane-math - Official math courses from the Trane Project
trane-music - Official music courses from the Trane Project
FrameworkBenchmarks - Source for the TechEmpower Framework Benchmarks project
chords2midi - Create MIDI files from numerical chord progressions!
aerospike-client-rust - Rust client for the Aerospike database