Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Microsoft MakeCode (makecode.com)
407 points by mdturnerphys on Jan 17, 2018 | hide | past | favorite | 90 comments


Wow, cool - the 'block editor' looks a lot like Scratch. Is it Scratch? I'm having trouble finding many details about the technical side of it.

I think 'visual programming' has a lot of promise for education, but...jeez, after looking into it for awhile I'm sort of losing hope that it isn't a gimmick or fad.

Has anyone actually made a complex project with these initiatives, and had it spark an interest in computing/electronics that didn't already exist? Have they managed to make the jump from visual interfaces to lines-of-code? Is there any evidence that these programs REALLY help when it comes to engaging a wider group of people?

I'm starting to worry that it's just more cynical grant-grabbing as the projects pile up and the results don't seem to. I hope it isn't, I just worry that this is all starting to sound a little 'magic solution'-y.

The Arduino came out about 15 years ago, for perspective.


Only a single data point, but Scratch has definitely sparked an interest in programming in my 12 year-old daughter.

Though still early days, she has taken her first steps into learning Python. The concepts of loops, variables, counters, and even objects has definitely carried over from Scratch.

She still spends most of her time in Scratch though, sometimes creating her own games or drawing programs, sometimes playing others' creations, sometimes looking behind the curtain to see how her favorite games work and doing light remixing.

Will this turn her into a career programmer? Probably not, but she has told me that she now really appreciates what makes programs work, and every time she sees a new app she can't help but think about how it might be structured.

Overall, I think that's a pretty good argument for early exposure to visual editors.


Well, that is great to hear - with any luck I'm just being too cynical.

But what I'm saying is, it sounds like your daughter has a nurturing environment, easy access to these tools, and a healthy amount of encouragement.

Are these new tools any better at reaching the marginalized people who the projects profess a desire to educate? That's where the real impact would be, in people who wouldn't otherwise have the opportunity/environment to learn about these concepts.

But...most of this stuff is fairly expensive, and doesn't seem to be gaining any traction in any sort of national-scale programs. Maybe I'm just not paying enough attention.


Exactly my view =)

I have a 7yo daughter and she has just tried some block based programming challenges and she loved tinkering and predicting what the program would do, and then fixing the bugs. Gave her a real sense of accomplishment.

I also don't think it will automatically send her on to a career as a programmer. But I think it is important for everyone nowadays to have at least an notion of how software works, given that there is software is almost everything we use these days...


> I think it is important for everyone nowadays to have at least an notion of how software works, given that there is software is almost everything we use these days...

I couldn't agree more. Education isn't just learning facts, it's providing tools so kids can contextualize the world around them.

When the world is powered by software, even a passing familiarity with the basics of programming will be as important as learning history, literature, or basic science.


There is a toggle between blocks and javascript in MakeCode. You can write code in blocks and switch to javascript or vice versa. This dual modality hopefully helps students to make the jump from blocks to javascript on a long term.

Blocks editor is based on the fork of google blockly(https://developers.google.com/blockly/).


Scratch 3.0 uses Google's Blockly in their new software, for those curious about the similarities. The tech is widely used in many different applications, as evidenced by Microsoft's use of it in MakeCode.

Though I'm not a part of the team and so can't provide much more information beyond an interested outsider, unfortunately. :)


Blocky team member, here. Microsoft and MIT/Scratch have been amazing partners and contributors. We're really excited about Scratch 3.0 and the efforts on Scratch Blocks.


Cool, thanks for the information!


> I think 'visual programming' has a lot of promise for education, but...jeez, after looking into it for awhile I'm sort of losing hope that it isn't a gimmick or fad

This comment strikes me as slightly oxymoronic. If it does fulfil its promise for education, how can it just be a fad? Is education of no value?

Even in narrow instrumental terms, it has value in providing a pleasurable and accessible approach for kids to try out programming. But beyond that, I wonder if the platforms that provide both block and text representations of a program might help programmers at an early stage to gain a more abstract view of what programs are? A mental model in which (eg.) javascript syntax is just one representation of an algorithm, isomorphic with one using 'mere' visual blocks, is pretty easy to come by with these platforms. That might have real educational value (at least for some learners), completely regardless of whether or not visual programming extends to professional uses.

Much of the educational material using these platforms that I've seen does seem pretty poor though, persisting far too long in providing students complete screenshots of the final program. Learning activities then become little more than a rote pattern-matching exercise.


[citation needed], as the very next paragraph of GP's asks:

> Has anyone actually made a complex project with these initiatives, and had it spark an interest in computing/electronics that didn't already exist? Have they managed to make the jump from visual interfaces to lines-of-code? Is there any evidence that these programs REALLY help when it comes to engaging a wider group of people?

--

Personally, I'm not sure if "visual programming" itself is introducing anything useful to make education easier. The difficult thing in getting started in writing code isn't writing, it's all the bullshit you have to do to set things up (installing a compiler, editor / IDE, creating projects, generating boilerplate code, deploying, etc.). Make that simple, and learning to code becomes simpler too.

About the only case where I can imagine "visual programming" being better than writing code is if you're trying to teach 3-5 y.o.


> Personally, I'm not sure if "visual programming" itself is introducing anything useful to make education easier. The difficult thing in getting started in writing code isn't writing,

I worked with a 6 year old child yesterday, who was exposed to Scratch for the first time. Within the class hour she had several animations running, all controlled from the keyboard. It was all her own work -- I just showed her the ropes and checked in with her from time to time whilst rotating amongst a bunch of kids.

What the 'visual' syntax offers in this instance is a discoverable palette of things to play with, and visual cues for what fits with what. That's far harder with a linguistic syntax, particularly for young kids, as you suggest.

I'm quite new to teaching programming, so don't have much to go on. I'd say the main problem with Scratch is making a transition from dragging blocks to writing code. I'll be interested to see if the MakeCode/code.org approach is helpful


> About the only case where I can imagine "visual programming" being better than writing code is if you're trying to teach 3-5 y.o.

Visual programming is the way most people work in electronics and game industry.

I really enjoyed designing my own circuits, making parts into usable components for my toolbox and visually simulate its behavior.

Just like doing shaders is way more productive to visualize the intended effect doing it graphically than typing GLSL/HLSL code.


Except there are html, css, javascript. Everyone already uses a browser so nothing to set up. Just code and open it in your browser.


> Except there are html, css, javascript. Everyone already uses a browser so nothing to set up.

You haven't seen the current JS ecosystem, have you?

Now if you opt to ignore the entire modern JS scene - all that Babel, Webpack, NPM stuff - and just write plain old JS in a text editor to execute directly, then yes. And with browser dev tools having a half-decent REPL, I'd say this is a pretty good way to introduce someone to programming. Browsers have powerful features for UI and graphics built in, so even the "hello world" programs won't be boring.

(Also: technically, there is something to set up; you won't be able to run everything through file:// because $security, so you need a minimal local HTTP server to serve your files for you.)


Is writing "plain old JS in a text editor" really that rare nowadays?

Honest question - I've only done a few websites, some with basic JS functionality and a few more advanced (for a website, that is) Go apps now - but never really felt the urge or need to reach for the "modern JS scene", so I'm unsure just how prevalent that kind of setup is.


It is for modern commercial products, yes.

And while there's some fragmentation and hacks that justify derision, it's not that bad. Any complex software component needs a package manager and a build system.


I don't think anything could scare a child away from programming faster than the three headed hydra that is html, css and javascript.

I mean, I know how we got to where we are and it makes sense - "thing works, use thing more". But with html+js+css the amount of bullshit about angle brackets and ids and names and escape characters and css quirks and floating divs and lambdas and selector syntax that you need to get through before you can make a rudimentary game or interactive page is very unfriendly.


That was in the happy days of Web 1.0.

In 2018, it looks a bit different because VanillaJS is so 90's.


> I'm sort of losing hope that it isn't a gimmick or fad

Visual coding is huge among people who aren't technical. I first got into "programming" when I was 9, through lego robots, they had a visual control flow thingy, basically visual coding. I think that must have helped me understand programming and its implications much faster when I got into college.

Visual programming is not ergonomic enough to justify never writing code again. It will remain a paramount educational tool, and a great tool for designers and game developers. I believe people do use visual programming for Unreal projects (Unity, maybe?), textures, effects, etc.

I don't think it is aesthetic enough right now to get the masses into it. Visual programming will eventually be important in getting people to do more complex things on the web (think IFTTT).


Just a correction: you are writing code with visual programming, its just visual code instead of textual code. You haven't gotten rid of code.

VPLs are great for people who aren't programmers and don't wan to be programmers; e.g. Facebook designers using Quartz Composer or Orgami, game designers using Unreal blueprints, Blender, and so on.


To be very pedantic, the context makes it clear I'm using "code" as shorthand to refer only to written programs.

True, visual code may well be a first class citizen in programming. As of today, there are still programs people would not write visually. It's a tool for simple procedural work, which could change as the ergonomics get even better.


There are codeless visual programming methods, like Pygmalion and Sketchpad, among others. So we shouldn't get confused with them.


Visual programming: Drag and drop nodes and edges to form a control-flow/compute graph.

Code: Python, JS, C++, etc.

I don't think this is confusing for our readers at all.


Was it Lego Mindstorms? Man I had so much fun with that as a kid. I would totally recommend it for learning to code too.


Yep, that's the one.


There is a lot of research surround this transition, and solid evidence that is does help novice programmers (not just kids) transition: http://www.jite.org/documents/Vol16/JITEv16ResearchP209-226S...

Our goal is to reduce barriers surrounding syntax and discoverability, so that they reach computational skills (sequences, conditions, functions, lists and other data structures) faster and with higher confidence and motivation. With the motivation (e.g., "I already built this") and a solid foundation, text programming can feel more achievable to the student.


Max/MSP and TouchDesigner are used heavily in creative industry, especially related to large-scale "experiences" that marketing agencies throw in urban spaces. Max/MSP is interesting because it was originally created under the auspices of a publicly funded French organization (IRCAM) before being commercialized.


Max/MSP has been around for a long time too. I've got a magazine article from 1997 about how U2 used Max to drive everything on their PopMart & Zoo TV tours. Not just the lighting & video screens, but also controlling the synthesizers & the effects pedals routing on The Edge's guitar for different songs. The whole show was run from a single Macintosh Quadra 650 running Max (though they kept a second Quadra 650 booted in case the first one crashed during the show). [The article was "U2 Live! The computers behind PopMart" by John Krogh, in the Nov/Dec 1997 issue of Music & Computers.]


Visual programming is also very popular among engineers. All kinds of test, automation, are monitoring systems are built using LabVIEW.


I wonder at this point whether the causality isn't reversed. I.e. it's not LabVIEW that's popular because visual programming works for engineering; it's engineers doing visual programming because LabVIEW is the industry-standard fad, stuck in the self-reinforcing loop of universities teaching it because companies use it, and companies using it because potential candidates all know it.


As a software architect (current title, but I had a technical education, "electrical/mechanical", incl. technical drawing, lab work, metal work, decades ago, before studying CS), who prefers text most of the time I still can see the appeal of something like this (All links lead to pictures):

- http://forums.ni.com/legacyfs/online/202594_Hololens_LabVIEW...

- http://sine.ni.com/cms/images/casestudies/a14_02.jpg?size

- https://m.eet.com/content/images/edn/LabVIEW-NXG_editor_1920...

Even this is not any worse than a complex text-based software project, you can zoom to the part that you want to look at in detail, just like you navigate between modules/classes/code files:

- http://www.ni.com/cms/images/devzone/pub/nrjsxmfm91216399872...

Also beneficial for a visual approach is that that is how electrical circuits are visualized. It's been a long time, maybe they describe more electrical circuits in text (I know VHDL but that is not for all kinds of circuits, nor does it concentrate on the electrical aspects), AFAIK it's still mostly diagrams.

Another point is that unlike software, where you deal with abstract things in any case (even registers, if you program in assembler, are pretty abstract). What you design in LabView is made of actual physical components, and you really physically run wires from one to the next.

What is shown as an enclosing box with "gates" between inside and outside as in this diagram really looks like this, LabView is a simulation of a physical system:

- http://www.egr.msu.edu/classes/me451/me451_labs/robot/LabVIE...

I have done quite a few courses (edX, Coursera) over the last few years, and when there were LabView portions I had no difficulty and actually found it quite appealing. I would not say the same for software, where I still prefer text.


The blocky part of scratch got open sourced. This is what it’s built upon.

So to answer your question. Yes very similar to scratch. In fact it transpiles to a JavaScript like language as well.


I really don't understand why Minecraft Education Edition (the only way to use MakeCode with Minecraft AFAIK) is only available to schools. I'm willing to pay for it but I'm not allowed to.

Not MakeCode's fault, this is great software. But clearly this is Microsoft's fault.


MakeCode works with Minecraft Windows 10 as well. Please see the setup instructions here: https://minecraft.makecode.com/setup


I stand corrected, i don't think that was the case sometime last year when I first checked out MakeCode, glad to see that has changed

Edit: I may also be misremembering, I primarily use Mac OS, and Education Edition has a Mac OS version. Plus Education Edition has some unique features that I would like to be able to use.



I assume there's a technical reason that a normal Minecraft account/client can't be used?

Ideally, I'd be able to get a free transferable license from the Microsoft store for already owning the game. (lol, I know..)

*edit: I shouldn't be so cynical; and am gobsmacked - there is a free version available for existing owners. Nice job Microsoft! (Login to Mojang account to claim the copy.)


"there is a free version available for existing owners"

I was also pleasantly surpise and with this I actually have a reason to use it. My 6y old has tinkered with the tutorial in Scratch and plays Minecraft like a mad man so this is a match made in heaven.

Almost makes up for having to buy it one more time on the Switch.


You can now also use Minecraft for Windows 10, see https://minecraft.makecode.com/setup


That is good news, my only complaint now is that Education Edition has a Mac OS version which is the platform I prefer.


Education Edition is based off Bedrock Edition, which is the console/UWP codebase (as opposed to the Java version available already). You'll have to wait for that to come to macOS first before seeing EE there.


I realize that, actually EE is already on Mac OS, it was there even in the beta of EE. I would like to be able to use the Bedrock Edition on Mac OS but EE and being a school is the only way to do that.


Oh, huh, I didn't even realize. I do wonder how far the two codebases have diverged (especially with the recent "Better Together" update on Bedrock). Kind of a shame MakeCode doesn't work on Java Edition, since that's where I invested my time.


I know what you mean but Bedrock just has much better performance. The ideal for me would be Bedrock on all the same platforms as Java (including Linux) with a supported way to make mods that didn't break on every version update


Good news for anyone who is interested, it seems Microsoft is working on bringing the Bedrock (C++) version to Linux and Mac OS: https://www.reddit.com/r/Minecraft/comments/769uli/confirmed...


As long as we can also run our own servers! There is no server software available for people to run their own servers for the Bedrock edition. I was really surprised when I found that out.


There are a few unofficial projects for a BE server though: https://minecraft.gamepedia.com/Bedrock_Edition_server_softw...


Do any of them implement the full standard game, including mob AI, the Nether, and the End? It seems like most of them are targeting the easy creative/peaceful mode subset. I'm just a sucker for the full standard game.


I haven't personally used any of them, but I would have to assume at least one of them does since most hosting providers support both BE and Java (though not on the same server, one could dream...)

I personally have a JE server hosted through a company that I play on. I like the ability to have server-side plugins (through Spigot) and being able to back up my world automatically offsite.


The transition between block-based code and JavaScript is implemented better than I expected. If I write something in JS, and switch back to blocks, the equivalent blocks actually appear! Going back to JS shows rewritten code but still readable.


I'm really excited about this project! It seems like it's Google Blockly with a lot more bells and whistles. I'll have to dig into the code more to tell.

At BlockSchool, my online coding school for kids 6-13, we've had a pretty good experience using Blockly. We've managed to hook it up to our own Minecraft-esque world.

If you're interested in what we're doing with kids you can learn more here: https://block.school



Off topic but this is one of the best UIs I have seen in a while. It clearly illustrates what it is about with examples, tutorials etc. I didnt have to go to any sub pages to understand what it actually does


I ran a code club at my local primary school last year using the micro:bits. They're awesome little devices, super simple to get some pretty effective results with. I had 15 kids aged 7 - 11, some of whom were there only because they went along to every after school club it's cheaper for working parents than a childminder, and all of them absolutely loved it. We did some great little projects - making 'musical instruments' with speakers and the gyroscope, making those buzzy 'steady hand' games, sending messages to one another via bluetooth, etc...


Microsoft have tried this kind of thing more than once in the past, usually ultimately cancelling the projects. There was Microsoft Popfly (retired), Project Spark (retired), Microsoft Kodu (still going), now MakeCode. I suspect there are even more if you go further back.

Our startup has been doing the visual programming thing successfully for around 6 years now, and our latest tool is at www.construct.net. Maybe they should give us a call since it looks like they're struggling to get this right ;)



I’m just sitting here in awe over the Minecraft integration.

And that’s just one bullet point in the feature set.


I was just about to start an every other day programming course for my 9 and 11yo kids. Could anyone help me compare this curriculum with code.org (which they've used through school)?


Cool! It just reminded me that yesterday I have stumbled upon a 'visual programming' environment built on Haskell: http://www.luna-lang.org/

Haven't had time to play with it yet.


I didn't take a deep look, but it reminds me to Bret Victor's proposal on "Inventing on Principle" from 2012:

https://vimeo.com/36579366


It also supports compiling to ARM Thumb.

https://makecode.com/language


This is great to introduce programming to my daughter. Switching between blocks and actual code helps.


What age are you starting this with?


It works and it is usable in the mobile phone! That is great.


Where can I get one of these for Terraform?


Looks very attractive.


It's sad that these "get everyone and their dog into 'coding'" initiatives by large companies are just attempts to provide cheap workers for themselves in the future. There's so many of them, and yet there's no evidence that they help anyone other than the company's PR team in generating exposure and promoting their products.


This isn't the only reason.

It's obvious that coding is becoming a skill on par with math for its utility in the modern world.

If more people understand the fundamentals of coding, it will completely change the user interfaces and sophistication of applications in the future. People will be able to code up simple features and behaviours they need, for example.


I don't think so. Coding bootcamps might motivate and help those already fascinated with computers to some degree, but a vast majority of computer users just use it as a device, much like using a toaster or oven.

It's not even that their minds are different from technically inclined people or that they're just dumb. It's just that they have OTHER occupations in life, and using a computer may be just a means to look up info, entertainment, communication or as a digital assistant.

Computers are deep, involved and time-consuming, once you scratch below the surface. And you generally don't have the time in modern life to be holding a full-time career AND to investigate the innards of computing systems, even just the software.


I somewhat agree both with you and PP. But

> It's obvious that coding is becoming a skill on par with math for its utility in the modern world.

I am not sure it's obvious, sadly. I feel like having a programming environment on your computer is similar to having a workshop at home. So you could repair and build many physical things yourself.

I can imagine an alternate reality where most people have workshops in their homes, and they repair most (and build some) of the stuff they bought themselves. But it's not the highly-specialized, consumer-oriented society we live in (actually, I think this was more true in the past).

In a similar way, I could envision a world where everybody routinely scripts their applications to automate and customize them. But the trend seems to go the opposite way, away from scriptability, to specialized, task-oriented applications. So I am skeptical this world will happen.

I would love coding to become a new form of literacy, and I am certainly going to treat it like that with my kids. But I currently don't believe many people will use these skills on regular basis.

Addendum: It's interesting that the very same companies that want everybody to code are the ones that don't want the software buyers to have to customize the applications themselves, so they could sell them the customization.


I work in civil engineering and literally every application used here comes with a very powerful scripting environment that could make just about everybody's jobs a lot easier if only they felt comfortable using them. Programming isn't just for programmers, but useful for everybody who has to use a computer as any a part of their job (which is verging on everybody).


"Programming isn't just for programmers, but useful for everybody who has to use a computer as any a part of their job (which is verging on everybody)."

VBA does not get much respect, but there are probably a vast number of accountants, managers etc. today that write code in Office applications.


VBA does not get much respect, but there are probably a vast number of accountants, managers etc. today that write code in Office applications.

In my experience the number is far from 'vast'. But whatever the actual number might be, it is definitely much too small.


> I would love coding to become a new form of literacy, and I am certainly going to treat it like that with my kids. But I currently don't believe many people will use these skills on regular basis

It's been added to the primary school curriculum in the UK. And annecdotally, a good number of my (20-something, recent univeristy grad) friends are finding that a little coding is neccesary for their jobs, even if it's not the main focus.


That's nothing new, really. I was taught programming (but not much, just a little BASIC, and I already knew it by the time) in a public elementary school in Czechoslovakia in late 1980s, during the communist regime period.

But it should be pointed out that the real socialist society was much more do-it-yourself than western capitalist societies are. Mostly out of necessity, but partly because people had quite a bit of free time and couldn't freely associate (and argue about politics on social networks). So hypothetically, if the communist regime continued to this day, programming skills would probably become much more useful to an ordinary person.


Most people don't have the analytical approach engineering-minded people have. They understand most of their surrounding reality in terms of blackboxes. Pull a trigger and a bullet comes out. Press a button and receive a parking card. Touch the screen and the facebook app launches. They're not interested in the internal mechanisms. And if you're not already interested in that, then no amount of coding bootcamps are going to spark that interest.


Sure, but a lot of people don't have the mindset required for cooking or construction or sports, yet these are still things we teach in school and try to make accessible for more people.


Or any of the liberal arts.

The "well rounded" argument works both ways!


To an extent though, is that something that you're born with, or something you can be taught? I think a lot of people attribute something to 'genetics' just because their parents have a particular trait. Parents are also the people raising you, so they have the highest impact regardless of genetics


Sure, most people don't, but an increasing number of people do.

Most people a few centuries ago used to think about the world without any scientific awareness.

There are still people like that, and there always will be, but people in developed nations with an education are far more scientific in their thinking as an average trend.

The same will be true of the analytical mindset for coding


If that was the goal, wouldn't efforts be better placed in the Jr Colleges, online courses, and similar institutions. Grade-school level curriculum is a pretty far-future return on investment is the only goal is cheap workers.


> to provide cheap workers

doubtful, rarely the self taught can pass the hr screening


it does help unemployed people


Unemployed people would be helped if business wouldn't be so greedy in their selection criteria, and would give a position to anyone actually wanting to work there, instead of spending months looking for the perfect candidate that would be willing to work at the misery they want to pay.

EDIT: typo


> spending months looking for the perfect candidate that would be willing to work at the misery that want to pay.

That's what I don't understand. These companies completely forget the law of supply and demand when it comes to hiring. They keep complaining they can't find anyone yet the salary they are offering stays the same. I'll bet that if you double or triple what you're paying that shortage you're complaining about will mysteriously disappear.


> They keep complaining

The squeaky wheel gets the grease.

(PR honchos are kept from idleness, newspapers pipelines are filled, company didn't want to hire anyway, and maybe the gummint will drip in some cash for training internships. Win, win, win, win.)


If the salary stays the same it's because that is the value having someone in that position produces for the company. Paying your employees more than the value they produce is a quick was to bankruptcy.


Then maybe you should draw the conclusion that your company no longer has a valid business case.


Absolutely. But it explains why many companies are so reluctant to raise their wages. Admitting you no longer have a valid business is hard.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: