Inspired by _why's Shoes and ART && CODE talk. How can we make programming simple and fun in today's web-dominated world?
You can play around with Slippers in your browser here. You can see some examples here.
- Programming can be a fun, creative tool for self expression
- Self expression and creativity cannot be hindered by rules or dogma
- There's always another way; there's no single right way
- If a path is blocked, guidance must be provided to find another way
- Start from the experience, not the tools
Starting with the web as a platform today is tedious. You need to learn HTML, CSS, and JS to get anything done, and all 3 are very different languages. Wouldn't it be ideal to learn only 1 of them?
JS is the answer! JS can allow any newcomer to build fun, creative little apps, without ever having to touch HTML or CSS. Now, of course, at some point, they'll have to. But they should be free to explore and tinker away, and let their imagination run wild.
Any programming language follows a distinct syntax. And although JS' syntax is not "complicated", it cannot rival with CoffeeScript. The risk of a syntax error seems much more likely in JS than CoffeeScript, if you have no previous experience in programming. Furthermore, the ability to use aliases like yes
and no
for boolean values is much more beginner friendly.
We can basically distinguish 2 types of objects in any layout:
- containers: contain other elements, useful for grouping
- elements: any visual (or not) element to layout on the page
Allowing these to be stacked and nested allows for an intuitive experience, simply by passing them as arguments to containers.
For positioning, we should make any object follow the HTML document flow, unless any positioning is given. In this case, the most intuitive course of action will be to position the object absolutely, relative to its parent container (which, by default, should be relatively positioned).
Handling events should be simplified as much as possible to provide a low barrier of entry. To do this, we must provide some simple tools that can help start creating fun little apps, with little to no knowledge of event handling, bubbling, etc.
Provide some helpful constants, similar to using yes
or no
for true
or false
.
aqua
black
blue
cyan
fuchsia
gray
green
lightGray
lightGreen
lime
maroon
navy
olive
purple
red
teal
white
yellow
serif
sansSerif
cursive
monospace
left
right
center
solid
dashed
dotted