Modkit: a simple graphical programming system for Arduinos and other microcontrollers

Discuss

20 Responses to “Modkit: a simple graphical programming system for Arduinos and other microcontrollers”

  1. I think children are being done a disservice by these sort of kiddie languages.  Once they get the basics about logic and program flow, it’s really not that big a step to learn the formal structure of a “real” language. Why dumb it down unnecessarily?

    We don’t teach kids reading by using made-up kiddie languages. They learn with regular “adult” languages but with simpler content – vocabulary, structure, etc. So they should get their start programming with some “hello, world” stuff – Scratch gives them shortcuts to making things like graphical games that /should/ be considered more advanced programming when approached in the correct way.

    • gllsskj says:

       I don’t mean to be rude, but your post kind of rubbed me the wrong way.  I don’t think that by creating a tool that makes programming more fun and easy to learn, MIT was doing a disservice to kids.

      I decided recently that I wanted to learn to learn how to program, and scratch was where I started.  Specifically a online course offered by UC Berkeley.  I was very impressed.  Having blocks that just snapped into place made everything very intuitive.  And the course covered some moderately complex topics, like recursion and the filter, map, and reduce functions, or parallel processing.

      I’ve started learning Python now, since there’s a lot of great material available.  I would say that working with Scratch definitely gave me a great foundation from which to start working with Python.  Scratch isn’t for children.  Its for novices.  Yes lots of children use it, but that’s because they tend to be novices.  But several well respected computer science departments use it in their intro level courses.  UC Berkeley and MIT for example.

      I decided recently that I wanted to learn to learn how to program, and scratch was where I started.  Specifically a online course offered by UC Berkeley.  I was very impressed.  Having blocks that just snapped into place made everything very intuitive.  And the course covered some moderately complex topics, like recursion and the filter, map, and reduce functions, or parallel processing.

      I’ve started learning Python now, since there’s a lot of great material available.  I would say that working with Scratch definitely gave me a great foundation from which to start working with Python.  Scratch isn’t for children.  Its for novices.  Yes lots of children use it, but that’s because they tend to be novices.  But several well respected computer science departments use it in their intro level courses.  UC Berkeley and MIT for example.

    • Bob McCormick says:

      Why?  Learning the text syntax of various programming languages is the *least* important part of learning to program.

      The important thing for kids (or adults for that matter) to gain by learning to program is experience structuring problems for execution by the computer.  It’s an exercise in abstract, logical thinking and in visualizing large logic structures in your mind.  
      IMHO, avoiding the minutia and trivia of programming language syntax, either through a graphical programming environment, or through a programming language with simple, minimal syntax like Basic, is a great way to introduce kids or beginners to the important early concepts of programming.

    •  Yeah get rid of all these kiddy languages, everybody should write in assembler code!

    •  Yeah you need to provide more than anecdotal evidence to make me buy that something like scratch is harmful.

      It’s visual type checking, you still need to code.

  2. Rindan says:

    It isn’t a bad idea, I suppose I would just have the caveat that it should expose the real code if you want it.  Stuff like this is great for getting people interested, but when they hit the limits, they should be able to pull back the kiddie stuff and start to learn what is going on inside.

    People don’t give kids enough credit.  I’m taking an Arduino class.  There is a kid in there who couldn’t be much older than 12.  He is programming and building, and for the most part doing better than most people in the class.  You have to be careful how much you dumb things down.

    Like I said, I’m not crapping on the project.  It is a neat idea.  I just hope that they “leave the wires exposed”.

    • Edward Baafi says:

      @boingboing-1a24d0708b32892bc735d64fa20d9dfb:disqus  - This ability to move beyond graphical blocks is explained in the video at about 1:02: “With modkit micro, you are not limited to graphical blocks.  Just switch to code view to see and edit traditional C code”.  We hope that helps clarify.  
      @google-a437c300bafc3f64bcc655d8c54fbed6:disqus  - While we understand that the colorful presentation makes the programming look like child’s play, this is intentional but a bit misleading.  Modkit Micro is not a “kiddie language” any more than a Mac Book Air becomes a kiddie computer just by putting a colorful case on it.  Modkit Micro is one of only two graphical languages we are aware of that has a true 1-to-1 relationship between graphical blocks and traditional code.  This means the kids and adults (it’s not just for kids) that use Modkit Micro ARE  learning the formal structure of a REAL language – C.  

      At first they can use training wheels (graphical blocks) to help them avoid falling off the bike (syntax errors from missed semicolon etc) while they learn to steer (everything else like control structures, input, output, operators, variables).  Once they are ready, they can drop the training wheels and move right into traditional coding by clicking “code view.”   While kids could certainly learn to ride bikes without training wheels, we think it is pretty clear that training wheels help build confidence while allowing kids to enjoy bikes even before they are ready for the complete experience.

  3. Andrew Meyer says:

    A similar project is Julian daSilva’s Minibloq. It a successful kickstarter a while back. Minibloq is open source (MIT licensed), supports a variety of different hardware (such as Maple, Seeeduino, ATTiny, Duinobot, etc). Of course Modkit is also great, congrats to Ed Baafi and the Modkit team on this latest milestone!

  4. bcsizemo says:

    I think it is an interesting idea, but at the same time I do have some of the same concerns as others have noted.

    On one hand anything that makes programming easier to comprehend on a more visual and simplistic in nature should make it more accessible to non-tech people.  (Much like all my college peers that had to take C++ 101 and struggled through every class of it.)

    On the other – we were started on languages like BASIC/QBasic and Pascal.  I mean in 9th grade me and friend were building a GUI interface for a spreadsheet program for our Pascal class…so it’s just the other side of the coin.

     My only other concern is not the ability to see how the blocks work in standard code, but the understanding of what is going on.  Programming isn’t entirely about just making things work, it is seeing how the individual parts work together to build the whole.

  5. ImmutableMichael says:

    As someone who worked his way through Basic, Pascal etc etc back in the day, I can’t tell you how much joy I’ve had with my youngest kiddo and Lego’s NXT tools. I’m really looking forward to building devices with a programming language where Mr 7yo can trace what’s happening and understand the joy of algorithms with physical world consequences.

    The question for me is whether this is going to encourage or discourage him from programming when there are all these other distractions? I’ve got a clear answer to that in my head.

  6. BeaverBeaver says:

    Some of logic being used above is a little scary. I don’t subscribe to the concept that you have to “earn” results the hardest way possible. Of course  knowledge is good and learning is good but that doesn’t mean that for the next 20 years people have to stick to having knowledge of and learning what is relevant today. Why don’t we just stick to to Assembly, that way everyone will learn a ton! 
    This is the future and it will allow way more progress than shaming people into traditional/archaic tools and standards. Instead of the focus being so heavy on technical side maybe there will be room for higher level thinking… like “Why am I making this” “Who can this help” http://vimeo.com/36579366 Not discrediting “learning”  but making things easier to understand and faster to interact with is not a bad thing.

    • ImmutableMichael says:

      Exactly. Do we stand on the shoulders of giants or do we bitch that the giants don’t have it as tough as giants did in our days?

      Oh and kids? GET OFF MY LAWN!!!!!

  7. Robert Cruickshank says:

    I do a lot of work with artists using technology, and there’s a great deal of interesting work being done with graphical environments like Pure Data and MAX/MSP. Some people’s brains may just might not be wired for text-based interfaces, and they thrive in a graphical  environment.  I’m curious to see what will come out of these approaches to hardware programming.  And I don’t know about you, but when I learned to program, there was a lot of cutting and pasting text (or rather, retyping…) from programs that you knew worked, but hadn’t written or analyzed yourself. I’m not sure how that’s conceptually different from clicking and dragging that teddy bear into your program.

    (Full disclosure: when I was twelve, I had to walk a mile to the computer lab, and we fought to get the electronic terminals, so we wouldn’t have to use the teletype.  )

  8. mkanoap says:

    Since this is all about interfacing with and building upon open sourced projects, I would be more excited about it if it were open source or creative common’s licensed.   It looks pretty cool, but the closed nature of it is a bit of a turn off.

    • Alexandra Olivier says:

      There are complex reasons why Modkit’s user interface isn’t open-source, but Modkit is actively involved in the open-source community.  We’re interested in (and working on) making parts of Modkit’s editor available as modular, open-source components.  We believe this approach will lead to much more interesting derivative projects, while allowing us to take the necessary time to build an intuitive and consistent user experience.   Managing Modkit’s whole codebase as an open-source project would be too much of a distraction from the serious work ahead.

      Here’s a great story of how one such open-source building block led to an interesting and unexpected application -an NBA dunk-o-meter!

      http://blog.modk.it/2012/05/fabkitfabduino-in-big-leagues-how-my.html 

      • Show me the open source! I don’t see it. Really. I see that you use jquery and raphael and you rely on arduino but that is solely in a client fashion.

        This is echo’d by the lack of understanding displayed on Sparkfun: http://www.sparkfun.com/news/446

        Your project uses and takes from the community but doesn’t actually give anything back. If the front-end is opensource then we as the community now have a stake and can maintain it, port it, do as we will with it. If it is closed we might as well just go buy any random proprietary setup and use that.

        Many people use licenses like MIT and BSD optimisticly and hope you will have it in your heart to donate your creations back to the community. So please stop claiming there’s any opensource aspect to this project unless there is actually an opensource aspect.

    • Exactly I’d rather fund an FLOSS project rather than some pseudo open crap. Proprietary software violates the “spirit” of the Arduino.

      Catenary can program the arduino from scratch [unfinsihed?] https://sites.google.com/site/chalkmarrowfiles/

      Also http://blog.minibloq.org/p/credits.html

      • Edward Baafi says:

        Hi.

        Thanks for pointing to open source alternatives.  What I think it comes down to is whether someone wants to modify a project like this or simply use one that is well thought out and executed.  It is great that there are alternatives for both populations.  Our primary population is decidedly one of novices so the idea that our population will want to modify our source code needs to play a back seat to creating a tool that can help get novices to that level of proficiency.

        What I think you will find when you research the projects you mention (Scratch and Arduino) is that they initially had non-commercial clauses in their licenses:  http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1184102866 and http://info.scratch.mit.edu/Scratch_Source_Code_License

        Of course earlier versions of scratch were not even this open and the Arduino IDE was based on the Wiring IDE which itself was based on the Processing IDE, so the IDE has always been GPL (arguably out of necessity).  

        Why did these projects have non-commercial clauses in the beginning?  My discussions with the Scratch Team leads me to believe that they wanted to build a community without competing for mindshare (or confusing end-users) with derivatives of their own software (I can’t speak for them though).  I think they moved away from this when they built a strong and loyal community and had thoughtful discussions with that community around the overall benefits and appropriate timeline of open sourcing the project.

        It will be interesting to see what the Scratch team does when they release the web (flash) based version of their editor.  Either way, I think Github has proven that you can be an open source company without releasing your primary codebase  as open source.  Github is essentially a front end for the open source Git just as we are a front end for the open source Wiring Framework.  You will see us evangelizing and contributing to the Wiring project just as Github does for Git.  For some reason I think most in the open source community are just fine with that.  You’ll have to touch base with the Wiring Project in a few months to see if they are happy with our contributions.  They are on GitHub.

        If you want to continue the discussion, please email us at info [at] modk.it as any alternatives to our current business model need to be discussed offline with our whole team.

        P.S. we don’t use Raphael.js (not sure why you assumed that) and we use Jquery in the way it was intended, as a client library.  

      • Edward Baafi says:

        PPS. I know this is so off topic for most that have come here and we are sorry for that.  If you just want to support this project without this kind of debate, please go on to the kickstarter page.

        But I doubt if the commenter will contact us offline (his user id is an anonymous anti-identity – click it to see) so I wanted to point out that we have dozens of patches waiting for Arduino but after seeing the pressure Arduino’s lead developer is under (Dave was my lab-mate at the MIT Media Lab) I only submitted the most important one: https://github.com/arduino/Arduino/pull/49   And this was only after making sure he wanted to add it.  The reality is it has yet to be applied.  Running an open source project is hard work and is often distracting from your core work.  Like any decision, this needs to be weighed appropriately and is never as simple as the black-and-white scenario the original commenter has laid out.

        We’re going to get back to work on Modkit Micro and our educational programs.  Forgive us if we do not answer these kinds of negative messages here again.

Leave a Reply