Programming Resources

Shell Enhancements

Treat yourself!

Install fish shell.

Then Oh My Fish, and the Bob my Fish theme.

Finally, add powerline.

Your eyes will thank you!

Don’t forget to install the powerline or nerd fonts below, and use one of these as your terminal font.

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.

  • powerline-fonts - hacked to include special symbols, used by utilities like powerline.
  • nerd-fonts - powerline fonts++!
  • 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
  • [MicroBlocks](
  • 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

Look for the [programming] section of the [Minecraft page].

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