-
Notifications
You must be signed in to change notification settings - Fork 10
User Tests
The first open user test of Zajal went very well! Zach Gage, Matt Ruby, Kurt Bieg, Ryan Raffa, Manuel Iragorri, Brett Burton, Aaron Druck and I met up in the lab to play around with the current build. I got their initial reactions to the language, what worked for them, what didn't and the things they would like Zajal to be able to do. Below is a quick run down of what I took away from their feedback.
Thanks again to everyone for coming out!
Clean up live coding logic – The so-called "settings methods" like rectangle_mode
and background
that affect the global state of the interpreter need to be implemented differently. When called in the setup
event, they should only modify the default settings. Then, at the start of each loop, all settings are reverted to their defaults. This should achieve the expected live-coding behavior of turning changing settings outside of setup
.
Alpha blending enabled by default – Suggested as a common source of confusion. Not as big a performance killer as smoothing, and those interested in performance tuning can turn it off.
Color class – Colors will get a Color
class that will support color arithmetic, interpolation, conversion and so on along with a use
or apply
method to set it as the current color.
# this
color 240, 128, 64
# would be the same as
my_red = Color.new 240, 128, 64
my_red.use
Instances of the Color
class can be used for advanced color usages, while the color
method will serve as a short hand to just set the current color.
HSB Colors – Support for HSB will be added. The syntax is not yet decided, but this OF forum post will serve as a jumping off point.
Named colors – Using names from an established palette like the X11 colors or maybe just the HTML colors. Syntax will use Symbols and possibly class constants of the color
class.
# shorthand
color :red
color :purple
color :crimson
color :dark_sea_green
# longhand
my_color = Color.new :red
my_color.use
my_color = Color.new :dark_sea_green
my_color.use
# possible use of class constants. they're a bit chunky.
Color::Red
Color::DarkSeaGreen
Color ranges – Not sure about the syntax, but making color ranges work the way number ranges do with respect to interpolation would be awesome.
c = Color.new(:red)..Color.new(:blue) # ew, clunky syntax
color c * 0.1 # set current color to 10% red, 90% blue
color c * 0.5 # set current color to 50/50 red/blue
color c * 0.9 # set current color to 90% red, 10% blue
Hex color syntax
color 0xff02b8 # easy to implement
color 0xf6b # needs a bit more work
Time methods – Splitting up time
into more explicit seconds
and milliseconds
methods and possibly keeping time
which will default to returning milliseconds, but can be overridden with the time_mode
setting
time_mode :seconds
text time # displays 15.65
time_mode :milliseconds
text time # displays 15650
A console window – Useful for debugging/printing. Not sure how to approach this one. Something for the longer term.
Triangle overloads
triangle 20, 40, 50 # draws an equilateral triangle centered at 20, 40 with a radius of 50
triangle 20, 40, 50, 30 # draws an isosceles triangle centered at 20, 40 with a radius of 50 and an angle of 30
Range interpolation operator – The *
will interpolate over a range instead of %
Animation in reduced mode – This feature is being removed as it causes confusion