I should probably clarify the visual programming thing. I'm literally using Blockly. There is no career path in Blockly.
I wanted to stick it out for a year since my resume is so shitty otherwise. I get platform tasks here and there (mostly Angular), but that's rare -- especially rare now that so many people quit.
I'm the lead developer at Google behind Blockly, the library that powers hundreds of block-based programming environments (including future versions of Scratch). It is a lot of fun to work on a project that so many children (and a few adults) use. AMA.
I imagine if it's anything like google's blockly scripting language, it's less "no scripting" and more drag and drop blocks together to make code. You still have to understand the logic, but you don't need to make your hyphens perfect.
Google's Blockly is a tool that can help bridge the gap between block based coding and conventional text based languages. It enables you to create code using a block based interface similar to Scratch while simultaneously showing you what the equivalent code is in many of the languages mentioned in this thread (Python, JavaScript, Lua, etc).
We have a platform that let's you create simple apps with Flowable and Blockly, and spits them out for web/ios/android; it's mostly like questionnaires for clinical trials and such. There's a team in another country that does most of the core dev for the platform, but most of the team here is responsible for churning out these apps using the platform. Apparently we also have a licensing model, but I'm not sure if anyone uses it yet (and I have my doubts that model is even viable).
So I basically use Blockly all day to make these shitty, shitty "apps". I get to debug the respective android/ios/web output and occasionally dig into our codebase, but still. It's just really strange. Also, basically no benefits, absurd deadlines, and some management seems shady. I should also say, there was NO mention of the fact that I'd be doing this visual programming stuff when I took the offer. I was desperate at the time, but I would have continued searching had I known that I'd be starting my career in Blockly.
--edit--
If you don't know what Blockly is, see here: https://developers.google.com/blockly/
We used Scratch in a entry lv compSci class. It's super easy to use and i think was a good base for even non compsci students( a lot of people in this class were teachers/business students)
Also we used https://developers.google.com/blockly/
That is pretty young. Depending on the maturity of the kids it might be ok. I was a FIRST LEGO League coach for many years. My kids were older, but I would start them with a discussion as to what a robot is. Is a toaster a robot? How about a self driving car? What about a surgery robot? Does a robot have to be autonomous? Getting a definition for your students is important.
Next came a game I call Human Robot. One kid plays Memory, one is Brain, and two are motors. Later you can introduce sensors. Write a program on index cards and give it to Memory. Memory is to give one card to Brain. Brain does what is on it. Is it is to turn on a motor, Brain tells a Motor to start to move. Now the group (with linked arms) starts to move. You can introduce conditionals, loops, and sensors by adding new index cards.
Now you take the leap from Index cards to a programming language like NXT for LEGO Mindstorms or something like Blockly (https://developers.google.com/blockly/). If you designed your index cards right, they flow into the programming language.
Next design a few very simple tasks for them to program. Drive forward for one second and backwards for a second. Drive forward, turn 180, drive forward. Drive a square pattern, ...
The simple the better introducing one new programing idea at a time.
And then by the time they kids are in college, they should be employable.
If you can integrate something like Blockly, you'll vastly expand your audience.
It's a visual programming language that translates directly into JavaScript. It runs in the client's browser, though the blocks can be saved on the server. If were to disable the client-side javascript input entirely (only support code via blockly) you would eliminate a fair slice of the copy-n-paste issues. Folks would have to take screenshots, and manually "write" the scripts themselves...
Good luck.
I don't know about the first picture.
The second one (with the purple-tinted background) is Dracula.
The third picture (the block-based language) is Blockly, by Google. It doesn't look like VS Code.
Look into project like Google's Blockly, MIT's Scratch and Squeak Etoys. They have a lot of examples of teach children to both learn and explore programming environments.
Weight and height together (i.e. BMI) would typically be an accurate indicator of someone's body type, so they could just allow filters on that, and calculate it from weight/height. If you want to avoid accidentally filtering weightlifters, then maybe these sites should allow for simple AND/OR logic with something like Blockly, e.g. BMI < 22 OR hobbies contain weightlifting
. Barring that, BMI above ~26 for women and ~28 for men lets you pretty well assume that that person is just fat, with a tiny chance that you're excluding people in very good shape.
I don't know what your code is like, but it might be interesting to code it in the form of blockly blocks ... so that each action in the ED interface is a block, and you can then connect together blocks to produce more complex buttons.
https://developers.google.com/blockly/
Note: I don't actually mean the whole thing coded in blockly, I mean the 'select left panel', 'select contacts tab', 'select station', 'request docking' are each blocks which can be combined into a button to 'request docking'
Launch = 'select launch from station', 'thrust up for 1s', 'raise landing gear' ... etc
On the right side of the screen, you can see the application has a tab for 'Javascript'. This looks to be built on Google's Blockly framework, as I know the autotranscription from blocks into javascript is at the core of how Blockly functions. So, I'd be willing to guess that there will be an unrestrained JS API they'll expose by the release date, probably thru a node module or something.
Sure, it can be like Scratch if that's appropriate. I don't personally happen to think much of Scratch, and I guess my colleagues didn't either, because we ended up going with Blockly for 1st-3rd graders.
3rd-8th graders can spell and some can type, so they get to write 'real' (meaning non-visual) code. Python is my go-to language for teaching young people currently; their parents appreciate it because it's used commercially (and they're not thinking far enough ahead to realize it might not be by the time their kid's 22) and the kids appreciate it because its syntax is simple and it's easy to write in a imperative style. I appreciate it because it supports many other styles once a programmer is experienced.
I've taught a few students of high-school age, but typically 9th-10th grade is when the US public education system kicks in with computer science courses, so the demand for that as a third-party service is significantly less.
Not at all tryna toot my own horn, but the mod I wrote for this purpose is publicly available if you'd like to try it. I'm sorry that documentation literally doesn't exist, but feel free to ask me Q's if you try it and get stuck!
You might want to look at blockly which is a Scratch like environment that can produce code in various languages. If you used it to generate Lua or JavaScript you could execute those at runtime in sandboxes to safely run end-user code. There are Java native JS and Lua VMs that you could pull into your project.
If you want something out of the box, take a look at Node Red. Last time I checked it out it seemed more like a thing for hobbyists than a production ready service but you might be able to use it or borrow some functionality from it.
Do you mean you would like to see the logic being built using something like Blockly that Falzon03 mentioned? The app would have to be rewritten from scratch (awful pun, sorry) but I am not opposed to that if enough people would find it more useful than the current app interface.
Thank you for your feedback, it's very much appreciated!
How are your coding skills?
Have you seen blockly
It would be really cool to connect various input devices to the pi.... buttons, switches, sensors (light, temperature, sound, etc) and some output devices (your big led matrix, a speaker, a light on your desk, etc)..... then link them through blockly.
Your class could then "program" your room.
What would really be cool is to have something where you build a flowchart in VR (using 3D objects to represent data, decisions, loops, etc) which can teach the basic programming constructs and then watch it actually affect some resources while running.
For example, you have a conditional decision block or component which you can feed the input in from two sources. It outputs a Boolean value you can use as input to a light bulb to turn it on or off.
While this is a very simplistic idea of what I envision, I think a lot of cool things can be done in the way of visual scripting. Just look at Google's Blockly.
From there, simple algorithms can become methods on components and larger systems built from them.... OK, have to stop now, head hurts from ideas....
Actually there is no ceiling, [Snap!](https://wiki.scratch.mit.edu/wiki/Snap!_(Programming_Language\)) variant of Scratch is pretty much a general purpose programming language. Although I'm not sure programming with that kind of a thing is any easier than Python. To me it feels very non-intuitive, but maybe I'm just more used to Python.
Also note that Google made a Scratch-like Blockly API, which can be used for program customization. Also Blockly can generate code in 5 languages, particularly, JavaScript and Python, so it's clear that it's not really "a different kind of programming", but just a different kind of an input method.
Ease of programming with systems like Mindstorms, Scratch and others was a huge factor in the design of our IDE. These systems are often talked about as having a “low floor” – making it easy for anyone to get started, and a “high ceiling” – extensive enough that more complex ideas can be explored without hitting up against the system limits.
We believe in creative computing for all, and we’ve seen that spending the first few hour or so of coding making syntax mistakes or hunting for a typo can put beginners off ever coming back to try for a second hour. Our system is built on top of Google’s Blockly, which outputs javascript to control the new kits, or create on-screen apps that can be shared across the web. Code blocks have a couple of big advantages. They’re tangible, in a library, on the screen: you don’t need to memorise an API to be able to code. They have affordance, so you get some hints about what should connect where. They let you focus on the logic, structure and principles of what the code does, rather than just how it’s written.
We’re always developing the IDE, and sit in on lots of workshops and user tests to see whether it’s easy to get starter with (low floor), whether it allows for emergence beyond the challenges we’ve designed (high ceilings), and – most importantly – to see whether people have fun with it.
/Mike
As far as I know their IDE is based on the Google Blockly language: https://developers.google.com/blockly/ as for the RaspberryPi Scratch.
And if not based, it is really inspired. Edit: yes it is:
>Google Blockly – Kano Blocks is based on Google’s Blockly, so major >thanks to Ellen Spertus, Neil Fraser and the rest of the Blockly team for >their excellent work in making a beginner-friendly visual programming >editor.
By what you described, the closest existing library according to what you need is Blockly (by Google), where you can create custom blocks, structure the "flow" of your script visually with the building blocks you pre-configured and then have the output in any supported language (JavaScript, Python...)
It is also possible to define custom blocks in Blockly. While they do have to fall under a template, they are still very customizable. You might be interested in looking at the guide for defining custom blocks. Apparently, someone has implemented a subset of SQL on top of Blockly.
Maybe something like this?
<block xmlns="https://developers.google.com/blockly/xml" type="ruleBlock" id="ZQ1|5kLc$VwG*2OZCUmr">
<mutation isOnGoingEvent="true"></mutation>
<field name="NAME">Regen Rockets</field>
<field name="EVENTTYPE">Ongoing</field>
<field name="OBJECTTYPE">Player</field>
<statement name="CONDITIONS">
<block type="conditionBlock" id=")z%|%:na,4g0lH:ns/gE">
<value name="CONDITION">
<block type="GetSoldierState" id="3wZYOAM^?8g|v.0.?~;Q">
<value name="VALUE-0">
<block type="EventPlayer" id="wlBSCBiR*Ph$f3)6zy@7"></block>
</value>
<value name="VALUE-1">
<block type="SoldierStateBoolItem" id="5}WS,bKP:z;a+akPod;">
<field name="VALUE-0">SoldierStateBool</field>
<field name="VALUE-1">IsReloading</field>
</block>
</value>
</block>
</value>
</block>
</statement>
<statement name="ACTIONS">
<block type="SetInventoryAmmo" id="_VQc}r/Y;iV:DGt!v
$c">
<value name="VALUE-0">
<block type="EventPlayer" id="PhY+q1BH$3eYeFcR[Wde"></block>
</value>
<value name="VALUE-1">
<block type="InventorySlotsItem" id="+A@K-0L*EbL78fNoDA!b">
<field name="VALUE-0">InventorySlots</field>
<field name="VALUE-1">OpenGadget</field>
</block>
</value>
<value name="VALUE-2">
<block type="Number" id="kl!`%~.n#%R/Dj9![#G4">
<field name="NUM">2</field>
</block>
</value>
</block>
</statement>
</block>
I'm currently working on something related but I'm a lot less daring. I just poorly re-implement the block-based visual metaphor from Scratch because I believe being visual is important but not as important as showing the affordances. I believe blocks if they have interfaces, e.g function parameters or return values, show make those visible so that one can think of how they can or can not be combined.
So... I'm curious as if you considered that and if so why you didn't got with past work e.g Blockly.
> but as soon as there's more than one dimension or as soon as he needs to work with multiple arrays in an exercise his brain just shuts down (his words, not mine) and he can't grasp how it works and how to use arrays
This line caught my attention — perhaps he needs some help in visualizing the data structures? That was my challenge personally when I was learning how to program, especially when it comes to more abstract data structures or algorithms that aren't as intuitive to someone without a CS/math background.
See if anything of these may help:
You might be interested in Blockly that lets you write code in various languages (Javascript, Python, ...) using blocks, and you can edit the code as well. I think it could help you getting familiar with the syntax of a text based language easing the transition with the ability to still use blocks. Anyway, just a tip, you don't have to remember every single command by heart you can keep docs or web pages open to read "what was that command", writing without the need of them is just a plus that speeds your workflow and it can come just with practice.
Good luck! :)
P. S. You might also like Flowgorithm, it uses flow charts and it's cool to make simple things and focusing on the logic, you can also see the code translation in many programming languages but you can't edit the text, you can just export it
It's the function node in Node-RED that is, hands down, the most powerful node in the entire application (imo). Granted, JavaScript isn't hard, it's just annoying having heterogeneous systems (with HA being written in Python and Node-RED in JavaScript/Node). However, the entire point of HA (and IoT/SCADA in general) is unification of heterogeneous systems. So, in reality, I'm just bitching for the sake of bitching (nothing new). Still, Google Blockly is pretty awesome, lol. I wish we could replace that script/automation editor in the HA UI with it.
AppDaemon is something on my list to do some more research on. Especially with things like the occupancy simulator app. That's something that I've tried to do in Node-RED and it's just not that straightforward.
Not really. When people talk about HTML5 games, they're really talking about Canvas tag, which is useless without JavaScript. There are a number of great game engines that can build the same types of games once written in Flash to html5.
Scratch doesn't create swf files, but .sb files. Scratch files will already run on the web. If you are logged into scratch when you create a file, it will automatically be saved to your scratch account, and you can link to it from any web page. There isn't a good way to embed the scratch game directly into your page that I'm aware of. There used to be a java applet container, but that is no longer supported.
Some variations of scratch (particularly blockly: https://developers.google.com/blockly/) do create pure html5 output.
No most people didn't want to do with music? Actually, 600 people watched the moon landing occurred in 2017, but they ended up going with Blockly for 1st-3rd graders.
I have users (process designers) build simple functions with blockly and need to run them. Too bad the Blockly compiler doesn't really work in Nashorn due to the missing DOM, so I have to compile them once with an external nodeJS service.
But I don't need any nodeJS during the runtime of the process, thereby reducing complexity.
I've run Domoticz on Windows and RPi3.
All local processing, Z-Wave support, MQTT support, 433mhz support, really lightweight.
I also like the event/rules programming. You can use your own scripts or use an implementation of Blockly.
I was figuring it would output kerboscript (blockly has code generators https://developers.google.com/blockly/guides/create-custom-blocks/generating-code) and then the telnet idea was how to get the code from the web site (running blockly) into ksp.
I haven't actually used the telnet feature, but I saw CheersKevin use it once in his video.
I found out that apart from Water Bear there is Blockly, which looks nice and has a suitable (Apache-style) license.
Is Water Bear better than Blockly? If yes, in what respect?
> My idea was to adapt the Scratch environment for kOS.
Might I suggest Blockly as an alternative to Scratch? Only because I happen to know that the guy who wrote and maintains Blockly happens to play KSP...
In Domoticz you can use Blockly for writing rules.
There are a lot of examples with screenshots in this forum thread.
Hello! Sorry for the late reply.
> You mean something like this: https://developers.google.com/blockly/[1] . I play to try adding blocky that at some point.
Yeah that would be pretty sweet or maybe even node based. The blocky code might be a bit advanced, especially if a non-developer or even a beginner programmer tries it. Maybe do a simpler method where you can't break the coding but you can organize it in a way where you put more emphasis on certain upgrades. Like a node where you can connect it 2 different upgrades that then expand to show a tree of upgrades or something.
OR
Maybe your game could even teach basic to advanced programming through this system.
I think there are some really cool ideas that you could add to you game. It was fun playing and best of luck in the future! :]
> Maybe make it so there is visual coding in the demo itself that you can buy through upgrades? I think that might be pretty cool :]
You mean something like this: https://developers.google.com/blockly/ . I play to try adding blocky that at some point.
Upgrades could make additional blocks available... very awesome idea.
I was just posting here for a link to the appropriate venue or subreddit - thanks for the tip!
I'll keep that in mind about payment up front. I'm still finishing the design spec, so might be a little while yet.
The application itself is a stripped down visual programming language in the style of Blockly - but instead of Javascript, you get interpreted code for a little robot. Because the instruction set is extremely small - no more than a dozen - the output is very simple. (If you used the older versions of Lego Mindstorms, you're on the right track.)
I'm not familiar with HTML5, and if there's a framework that can be adapted to this purpose, so much the better - I want to build a prototype, no matter how crude, to see if teachers can use it. I'm aware it'll probably cost thousands for something that gets discarded in favor of starting from scratch; I'm just hoping to avoid hocking my car. :P
Are you looking for graphical code editors? There have been several over the years. Most people use them to build or construct SQL queries.
Interestingly enough, Google apparently has one called Blockly