Yes, that's great! Source is always a welcome way to view intent of design for me! I'll do a deep dive this evening.
kniknoo
Creator of
Recent community posts
I'm working on my Ruby "201" right now specifically to fork Sonic Pi into a (literally) modular system with a (hypothetical) JIT/AOT compiled synthesis description language written in Crystal (an up and coming Ruby-like language for LLVM). I love Sam Aaron to death as he's essentially my first Ruby mentor, but I can tell his goals for the project as an educational tool are very different from my own as a glitch/breakcore/chiptune/electro-jazz performer.
It's an ambitious project but I hope to have the pieces together for Ruby to sequence a compiled synth with minimal outside dependencies within a year in order to build both the DSL for the synth and a library that will send build directives to Crystal/LLVM from Ruby and then magically connect to the resulting optimized binary in the background. I have a feeling I'll have to do the former myself, but I think when I can show a proof of concept about a live coding a compiled language, live coders and web developers who hate building between updates will see the value. I noted that Matz unveiled an MJIT in Ruby 2.6 and what he's doing here is basically the same idea with a pure Ruby twist and automatic decisions about what to compile.
Long story short... OMG that would be awesome and if there's any way I can help to enable that within the Ruby ecosystem, I certainly will. By the same token, if you have a lib out there in a Ruby-like syntax that generates a waveform with only minimal c dependencies, I'd be grateful to know about it as that would save me a lot of fundamental work and let me focus on the implementation language.
I have a Pie in the Sky wish too, and that's for a synthesizer built into the SDK. I have no illusions that that's an easy request, and in fact, I'm starting to work on resolving the issue to help simplify Sonic Pi and other live-code concepts in Ruby (and Crystal). I'll talk to y'all about it as my progress matures.
But I'd give anything for a GDK with a synthesis engine baked in so that I can create a generative soundtrack based on user input.
Flesh out the DragonConsole a bit more to get it closer to IRB.
I'm dependent on return values and line editing, I'd really appreciate getting the full overt and implied feedback from every command and the ability to edit a line rather than backspace through it.
I was going to make this separate, but we need some sort of hyperlinked help. An ri-like command in the console would be great, but at least some formatted docs with an overview of the API pieces so I'm not studying the samples to (poorly) infer functionality. It took me about 6 hours to grok the 3 x,y parameters in a sprite (I was approaching it as absolute value stretching) and I'm still not convinced I have the parameters sanely labelled.
(I'm super stoked about you adding Hashes, that will resolve a lot of my derpiness)
I just updated my OP so you can see what I'm looking at. Take a look at https://github.com/kniknoo/oo_dragon_demo/blob/master/lib/sprite.rb , line 34 will point you to the workaround above and the default behavior below.
Am I missing a command to quit within a script?
Also, check out what I did with the inflection in my tick. I couldn't wrap my head around the word args because it's nouns all the way down, but when I think of it as "as" the whole thing flows in my head. https://github.com/kniknoo/oo_dragon_demo/blob/master/app/main.rb
Please let that always be a modifiable term...
IMHO, standardizing a /lib (or similar) and having it auto-require "/lib/*/*.rb" would make for the simplest interface.
For reusable libraries,
"../lib/"
with a
set :require_all_libs true
or manually calling the library name. Assume we copy/paste or otherwise import ../libs into /libs via a command when it's time to package.
Thank you, I'm going to look at 02_collision* and see how I can implement that today with the dragon (do they have a name?). I'll increasingly use the API and helper methods as I understand them, but right now the examples come with very little context for "args". Could you produce a very basic map for it that I could explore the endpoints for a better understanding? My attempts to inspect my way through it yield nothing.
I have a few points of feedback after yesterday about making sure the console is a Ruby experience. I will list most in a later thread after I delve in deeper, but before anything else... can you PLEASE make "exit" an alias for "quit"? I literally just found out after 5 years that "quit" even works in IRB, but "exit" is the ruby command assumed to leave to the console/desktop. Most of my feedback is nitpicky language stuff like that that is critical to the intuitive and linguistic aspect of Ruby. The other thing is I NEED to be able to use the left key to go back and fix a mistake, even the Beginner Ruby Tutorial sample was frustrating without that. The actual DR experience itself is great now that I'm wrapping my head around it. I love the console idea and can't wait to see it grow!
Hello. I'm Nick.
Amir graciously gifted me a copy of DragonRuby a few weeks ago, and after the new version came out yesterday I decided it was time to dig in.
I don't really understand the programming style in the tutorials, so I decided to piece together what I could from some of the samples to make a more Ruby-like tutorial. I wanted to show off a few Ruby features, and I documented the code with the assumption that it's an introduction to some Ruby concepts.
https://github.com/kniknoo/oo_dragon_demo
This demo just shows off the dragon with U/D/L/R control, including vflip, as well as defining and extending an object class. The Castle came from a stock image provider.
Hope y'all find this helpful, and I can't wait to see other people's projects!