Programming Resources

Coding Fonts

Monospaced fonts usually make writing code easier on the eye- eg to clearly line up blocks of code and see how nested things are.

  • FiraCode: has programming ligatures… this means multi-character symbols, eg ! =, - > etc become single character math symbols, arrows, etc, eg !=, ->
  • Victor Mono: elegent, with italic style being a semi-connected cursive. Really highlights comments. Supports code ligatures.
  • Anonymous Pro: very tidy, and boxy
  • B612: developed for AirBus for use in cockpit instrumentation. Goal was to make it very clear and legible.

Practicing

  • CyberDojo - could set up a server and host sessions

Learning to Program

Online Courses

Block Based Systems

  • Microsoft MakeCode - block based system, that also trails into text based coding (javascript) that supports Mindstorms EV3, Micro:Bit, Circuit Playground Express, BrainPad Arcade, … includes limited on-screen simulation, which allows for rapid experimentation, shortens code-debug cycles, and rapid achievement. Until you hit the limits of the simulator :slight_smile:
  • Scratch - very popular, lots of online resources. Very interesting; it allows/uses concurrent/event based programming trivial. Note, Scratch 2 is flash based; Scratch 1.4 is perhaps more commonly used. Read the scratch fan
  • Trinket
  • turtleblockjs at SugarLabs. Source code is on GitHub.

Integrated Environments

Programming systems that are self contained. Less parts to install to get going.

  • squeak - Smalltalk. Early object oriented language, very dynamic, fast, portable. Local expert: Tim Rowledge

Mechatronics

Learn to program by making things happen in the real-world.

Most of these are their own mini-worlds, so linking out to other reference wiki pages here.

Extensible Games

Learning works best if you’re having fun!

Minecraft

Such a phenomenon. Deserves it’s own section.

Note: Julian likes to use MultiMC to manage versions of Minecraft + installing Mods.

Others

  • Roblox. Apparently programmable.
    *Pico-8 and Voxatron
    • fantasy consoles (think NES, Playstation 1/2) with arbitrary limitations (e.g. small memory)
    • full systems, include program, music, and visual editors
    • Lua based, very quick and easy to try ideas
    • games (applications) saved embedded in a PNG image… called ‘cartridges’
    • javascript player/version- so can put games on your website
    • included with GetChip (~$9USD) small computers
    • Pico8 Zine

Languages

Lua

Small, embeddable (can be put inside other programs, eg written in C/C++), easy to learn scripting language.

Python

JavaScript

Virtual Reality (VR) and Augmented Reality (AR) - “XR”

Systems specifically for creating VR/AR experiences.

Web Based

  • WebXR - landing page for AR & VR development using web technologies- no installation required for end users!
    • WebAR landing page
      • lists quite a few tools/apps/utilities
      • also some development frameworks - AR.js looks to be maintained and very easy to use.

Unity

Unity is a very powerful and easy to use (relative to it’s power) game development environment. It works across many devices, and includes support for VR and AR development.

  • Unity AR - AR Foundation is included with Unity for free. MARS (editor for simplifying the process of creating AR apps) is a paid subscription.
  • Vuforia tutorial - Vuforia is an existing framework from PTC that adds AR to Unity. Free to explore, but costs to deploy