Q&A

Q&A

General Questions:

  1. Is there a plan to register a Block plugin?

  2. Will you bring in some stuff from Scratch for CS First into Blockly?

    • Aaron’s talk covers some of this; highlights are the key features that are planned to be brought into Blockly.

  3. Can Blockly support infinite horizontal expansion?

    • One of the nice things about Blockly is that you aren't constrained to moving in a single dimension. Our interest is more in having a way to mix inline/external modalities.

  4. Do you have a plan to implement the feature request Collapse/Expand Block when we double click on Block (Issue #4686)?

    • Not on the roadmap right now.

  5. What exactly is the "input_dummy" type and what are shadow blocks?

  6. Has anyone used a Blockly editor in VR?

  7. Would you use a block that auto-extends?

    • Thought inline and external would be cool, but we could not make it work.

  8. What would things look like for Blockly in 10 years?

    • Blockly Core is "complete", meaning it's small, focused, maintainable, stable yet there is no reason for you to not use it.

    • Would need to evolve to keep up with technology.

    • Getting a stable core, might allow experiments in text to block.

    • Look at what Blockly is being used for. The education space is well known for Blockly. In 10 years, we will have a good sense for where else Blockly can be used in non-edu space.

    • Things that should be optional plugins are made into plugins.

    • Blockly is not the right tool for all use cases (some may jump to using Blockly when there may be better alternatives).

  9. There is an interesting aspect of programming, where you have to kind of think backwards (e.g., select "addition" then the numbers: addition block, then 4 then 4 then 8 to construct 4 + 4 == 8).

    • This is especially important when considering whether or not the audience are programming students.

  10. Where do we get Blockly shirts?

    • Getting hired onto the team is the most guaranteed way ;-)

  11. What are poor use cases for Blockly?

    • Blockly apparently slows down when paired with 3K lines of COBOL, as learned by one user :-P

    • Developers should consider doing research on how to use Blockly well for their audience and use features to make things easier for the end user. A common example of a design anti-pattern: dumping the entire default toolbox into the UI with a couple of additions, when the user does not need the entire toolbox and/or will likely be overwhelmed by it.

  12. Why is the plus minus plugin not built into core. It seems to be a drop in replacement.

    • We've moved from adding new features in core to adding features as plugins in order to reduce the size of core. But yes, it's intended to be a drop-in.

    • We're moving towards not putting optional features or lots of alternative options into core to keep it streamlined for people who don't want those options.

  13. Suggestions for how to tackle blue triangle/bad code/non functional code?

    • Greg Dyke shared code that does this.

    • App Inventor also has some errors and warnings.

    • Warnings are indeed a Blockly feature!

  14. Is there a good example to learn how to use warnings?


"Computing + Data Science Education" by Peli de Halleux

  1. How do you manage the sizing of React content rendered in foreignObject?

  2. Is the data in/out of each block a vega thing/custom data frame/generic data frame?

    • It's a JSON payload that contains the graph spec (vega grammar) + data table attached to the block


"Programming Cellular Automata with Blockly" by Max Bittker

  1. How does the no blank slate approach interact with the Blockly recommendation (I think it was a Blockly recommendation?) to not give "fill in the blank" exercises to students, because they don't have full ownership/feel like they *could* have built it from scratch? Thoughts of how to find a good balance?

    • Part of the goal is to make it feel like you're "modding" the game with Blockly. To fulfill some fantasy like "I wish the game worked like _____". If the user wants to totally change the game (e.g., turn it into an ecosystem sim) they can remove everything. We're currently working out how to make this easier. Instead of "fill-in-the-blanks", we might want "make-your-own-blanks".


"Functional Programming with Blockly: A Work in Progress" by Mark Friedman

  1. What about the version where all "statements" pipe their expression value into their next statement (kind of like Peli's talk with data science)?

    • That's a nice approach, but I'm not sure that it would fit with Scheme/JavaScript/Python. I'll think more about it.


"Demo of Pre-release Versions of Blockly (from 2011)" by Neil Fraser

  1. Icons for mutators?

    • Started "+", but App Inventor said they were already using a "+", so switched to a star (but it was unicode and every browser rendered it different;y; so, now use gear icons).

  2. Favorite feature?

    • Surface tension: blocks have rounded corners (first versions were square). There was a triangle of white spaces, surface tension removes rounded corners; you probably didn't notice it as a user, but if I changed the code, you would notice it.

  3. Dart?

    • Blockly was almost in Dart, but Dart wasn't ready yet :-P

  4. What were the first generators?

    • Dart, then Python, then PHP, then Lua

  5. Interest in converting from text to blocks?

    • Lots of interest in this, but it's very complicated, especially with open ended languages (e.g., Closure). Maybe if you have a restricted set of blocks, but it's not possible in the general form. It has been done for more limited languages.

    • App Inventor has two languages in the pipeline: Scheme and bytecode for Arduino.


"Blockly Team Plugin Show & Tell" by Abby Schmiedt

  1. Is there a plugin for real-time collaborative editing?

    • No plugin but we had a prototype demo.

  2. What are the most popular plugins?

    • Workspace search is by far the most popular.

  3. ​​For the backpack, does the open operation take a callback? One of our use cases is we have a shared backpack between users so we fetch the contents from the server before rendering the backpack flyout.

    • No, it doesn't, but you could subclass the backpack to override the open function--that would be a good feature request as well.


"Dynamic Block Recommendation Through Shadow Blocks" by Jonathan Small

  1. Was the recommendations tab inspired by Marlow?

    • A bit yes, though we challenged ourselves to do it differently.

  2. Does hinting use plugins or did you hack core?

    • We used custom blocks. We click an image that triggers the feature. It's not a plugin, it's clicking images; so, we didn't need to reach into the guts of Blockly.

  3. Have you done anything to measure click and pick speed vs drag and drop?

    • No analysis, but people seem to be happy. As a developer, it feels faster to me.


"Exploring the Intersection of AI and Education: Experiences with MIT App Inventor" by Evan Patton

  1. What were some of the challenges in building Aptly?

    • Handling the round trips of blocks.

    • Would be nice to extend the grammar (like this part of tree is going to support this block).


"Using Language Workbenches to Generate Block-based Environments" by Mauricio Verano Merino

  1. Wanting to design DSL, what are the alternatives to language re-engineering, without having to use context free grammar (this could be arcane)?

    • Plan to research this.

  2. How much work do I need to do to convert the syntax?

    • It's not too hard, maybe an hour or so.


"Designing an Integrated Interactive Tutorial for a Blockly Application" by Amber Miller

  1. Have you tested the tutorial with end users and what was most useful to them?

    • Conducted six user tests and that exposed multiple pain points.

    • Adults sometimes want to directly build rather than learn.

    • Kids generally are more open to breaking stuff.

    • Adults need goals/context and tend to stop if there are none.


"Sound Effect Block Field Editor" by Richard Knoll

  1. Can you go over the differences when working with virtual Microbit vs physical? I teach over zoom and the hardware is not available.

    • The main drawback is that you usually hook up servos, etc. and we can't see this using the virtual microbit, but there are a lot of basic things you can do, like test with the accelerometer. Microbit Classroom is used at schools.

  2. Would like to hear about how you did the user testing.

    • We did 1:1 interviews with teachers, and did one round of user testing with students in our Insiders program. This is kind of a "v1", and we expect it will evolve as we release it more broadly.

  3. Curious about adding audio filters. Control of pitch using MIDI note number and/or pitch class names etc.

    • Yes! I really want to add more features to the synth engine at some point. Especially filters, more types of modulation, and defining a sound effect as an "instrument" that you can use for melodies.


"Advantages of Designing Custom Fields" by Beka Westberg

  1. Is there a way to pop up contextual warnings?

    • Yes and no. For built-in fields with validators, it only turns red and reverts to the prior value, but custom fields can use validators to validate whatever you want; with this, you can do whatever you want.

    • We want to help the user know why something is not allowed and not just find that something is not allowed. Maybe something to think about.

  2. With field customization, is there some starter code?

    • There is a part that goes on the block that you build using document.createnode.

    • You can create a widget on the dropdown div and create the elements yourself, and size will be adjusted automatically.

    • If you want to use a dropdown UI, you can subclass the built-in dropdown class, but it depends on your need.

    • If you want to use a UI that some built-in field already has, you can subclass that and use that as the starter code.


"Blawx: User-Friendly Rules as Code" by Jason Morris

  1. If all laws are codified in blocks, why can't the government and courts use this?

    • Imagine if all lawyers and judges felt comfortable with the technology, then maybe judges could test laws using interpretations (via blocks) from two lawyers. But judges typically do not rely on a determinative tool to make legal decisions

    • The idea here is: let's encode our interpretation, not THE (single/"correct") interpretation.

  2. Considered looking at spoken language as input for Blawx?

    • Not spoken language. Natural language of legislation (legal language/"legalese") does not appear to be easy for ML models to interpret. It's not inconceivable that we may generate data that could train models in the future, assuming we have sufficient datasets.