New version 2.99.011 at http://byob.berkeley.edu with (tada!) a Pause button, and a few other bug fixes. Use some today!
Offline
All the prime numbers inside your computer! http://byob.berkeley.edu/streams.ypr
Offline
I finally got around to downloading BYOB 2.99.07 (the installer) and noticed that you changed the desktop icon. It looks good! I only have one suggestion. I would make the outline larger and bolder, a little like the Scratch icon. Here is an example:
In fact, feel free to use this one if you'd like.
Also, I love the new pause button! It really helps with debugging! The only think I'd suggest would be to have some sort of graphic effect change the pause sign so that you know it is in action.
Finally, why does BYOB use so much CPU? Unity3D is pretty powerful and it only uses 14-15% of my Central Proccesing Unit's juice. BYOB uses up to 50%! You wouldn't believe how many times my computer has crashed between it and java.
Last edited by shadow_7283 (2010-05-18 20:14:37)
Offline
Hey, I love the pause button!
I noticed one interesting feature of BYOB today:
When you change the parameter names while building a block, that parameter is made into a variable for the block. However, nothing of the sort happens when changing the anonymous "the script" parameters...the parameter that might initially be named "#1", used in the contained script, is not renamed with the parameter. This forces users to go back and replace all the #1 blocks with their new parameter name.
Offline
I'm glad you like the pause button. It's a first venture into making threads pausable and resumable for debugging purposes. Did you notice that while threads are paused they still have a white outline? Let's see where this all leads too...
Thanks for you suggestions about the graphics for the button, I'll try to change it so the button reflects if it is paused or not.
Oh, and thanks for the great suggestion about the desktop icon! We'll consider it.
shadow_7283 wrote:
why does BYOB use SOME MUCH CPU?
because it's the worlds fastest and most most powerful programming environment (just kidding).
Well, actually BYOB (and Scratch) is pretty complex software, but nonetheless performance ultimately needs to become much better. At the moment I'm still focusing on getting things done in a reliable way.
fullmoon wrote:
When you change the parameter names while building a block, that parameter is made into a variable for the block. However, nothing of the sort happens when changing the anonymous "the script" parameters...the parameter that might initially be named "#1", used in the contained script, is not renamed with the parameter. This forces users to go back and replace all the #1 blocks with their new parameter name.
Yup. The variable getters that you drag off the script / the block / script variables are lexically scoped and late-bound. you can rename them and use them elsewhere, and they'll always look through their enclosing scopes for a match.
Opposed to these are the variable setter blocks. They are actually "bound" to a variable frame when you select them from the drop-down menu. This allows us to access both outer and inner scopes. E.g. you can have a global variable of the same name as script variable or as a parameter of the script block. By selecting the accoring one in the block's menu (they are separated in the menu by a line) the block is "fixed" to that variable.
Same with the variable getters from the palette. These are also fixed to their local or global variables.
Last edited by Jens (2010-05-18 20:13:45)
Offline
Jens wrote:
Same with the variable getters from the palette. These are also fixed to their local or global variables.
Wait, I thought they were late-binding, too! Isn't that how we were going to solve the problem of duplicating a sprite and then its scripts not being able to find the right sprite-local variables?
Offline
shadow_7283 wrote:
Finally, why does BYOB use so much CPU? Unity3D is pretty powerful and it only uses 14-15% of my Central Proccesing Unit's juice. BYOB uses up to 50%! You wouldn't believe how many times my computer has crashed between it and java.
I sympathize; BYOB crashed my MacBook Pro several times until I discovered a control panel you can use to speed up the fans.
I know of two distinct reasons why BYOB is slow. One is that the way lists are stored is recursion-unfriendly, and I'm pretty sure I know how to fix that. But the other is that the evaluator is tied in too much with the display manager, because in Scratch one of the design principles is that everything that happens should happen visibly, on the stage. But when we start doing heavy composition of functions, with intermediate results that are never going to be displayed, that's a waste. The big question is whether Jens can find a way to fix that short of entirely rewriting the evaluator. (Which would be good in its own right, but probably not before August! That'll be BYOB 4... maybe.)
Offline
shadow_7283 wrote:
why does BYOB use so much CPU? Unity3D is pretty powerful and it only uses 14-15% of my Central Proccesing Unit's juice. BYOB uses up to 50%! You wouldn't believe how many times my computer has crashed between it and java.
How fast is your processor, because I have a 2.26GHz Intel Core Duo one and BYOB only uses about 25%
Last edited by ScratchReallyROCKS (2010-05-19 15:30:38)
Offline
Mine's an Intel Pentium with I think 2.1 or 2.2 Ghz. But it is a laptop, and although they are portable, laptops can't really compete with desktops with procrssing power and
speed.
Offline
bharvey wrote:
Jens wrote:
Same with the variable getters from the palette. These are also fixed to their local or global variables.
Wait, I thought they were late-binding, too! Isn't that how we were going to solve the problem of duplicating a sprite and then its scripts not being able to find the right sprite-local variables?
I might have expressed myself wrongly: The getters from the palette are tied to the sprite (not to a particular variable). It looks for a variable of its name in the scope of that sprite. Therefore you can create a variable for a sprite, use the getters somewhere, delete the variable from the sprite and create it for the stage, and the getters still work. When a sprite gets duplicated all blocks bound to it are also duplicated and bound to the copy.
Offline
BYOB 2.99.012 at http://byob.berkeley.edu with Italian localization (thanks, Stefano!), some bug fixes, and this:
Last edited by bharvey (2010-05-18 23:49:07)
Offline
To BHarvey.
I'm starting to do my own ScratchByob tutorial, and I'm now faced with one irritating question. How to pass one function (name or definition), as a variable input of another function.
See the scripts at :
www.xleroy.net/PlayWithScratchByob/Forum/XL-ListOfNumbers-03.gif
In this example I've created one POW function to calculate num (power) exp, and one SIGMA function which calculates the sum of the application of POW on a list of numbers. How to pass into SIGMA any POW function as variable input, like POW 2, POW 3, POW 4 etc
With Logo it was possible to create a string of the command like this :
RUN (SENTENCE :CMD (ITEM 1 OF :LIS))
I'm impressed by the very good job you are accomplishing, "for our pleasure", as it is now a real pleasure to program with ScratchByob ..."Educere ludando"
xly
Offline
Glitch!
How to do it:
Take the script variables block.
Click on the A variable, change it to B.
Click the arrow adding the B variable, then to prove that its a glitch, click the arrow again adding C, then try change it to B.
Offline
xly wrote:
How to pass one function (name or definition), as a variable input of another function.
Inside the definition of your SIGMA function, where you say CALL <POW> WITH ..., you don't want a grey border around POW. The value of the variable POW is already a function (because in the call to SIGMA you correctly have a grey border around the POW function), and you want to call that function, not a function-of-no-inputs-that-reports-POW.
My high school students are having trouble with this grey border issue also. We need either to rethink the notation or to have really good beginning tutorials on the topic.
Offline
markyparky56 wrote:
Take the script variables block.
Click on the A variable, change it to B.
Click the arrow adding the B variable, then to prove that its a glitch, click the arrow again adding C, then try change it to B.
Right you are, thanks! (And especially thanks for the text explanation; at this moment I am inside a school whose web proxy doesn't let me get to your gif! )
Offline
bharvey wrote:
markyparky56 wrote:
Take the script variables block.
Click on the A variable, change it to B.
Click the arrow adding the B variable, then to prove that its a glitch, click the arrow again adding C, then try change it to B.Right you are, thanks! (And especially thanks for the text explanation; at this moment I am inside a school whose web proxy doesn't let me get to your gif! )
Ahhh...
[ Script Variables (b) (b) (c) (d) < > ]
(Crude remake.)
Offline