Install fish shell.
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.
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.
- CyberDojo - could set up a server and host sessions
- repl.it: Program in the cloud! Many languages available (but scripting languages appear to be better supported/more featured.) Google Docs like collaboration. Learning tracks/tutorials available.
Learning to Program
- https://www.udacity.com/: from intro comp sci all the way up to applied cryptography. Assignments are done in Python, in the browser.
- https://www.coursera.org/: University certificates from various universities and colleges. Provided by some big name organizations.
- https://www.edx.org/: competition to Coursera
- https://www.khanacademy.org/cs: Khan academy touches on most subjects…
- http://www.youtube.com/user/derekbanas: tutorial videos about design patterns
Block Based Systems
- 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
- turtleblockjs at SugarLabs. Source code is on GitHub.
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
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.
Learning works best if you’re having fun!
Look for the [programming] section of the [Minecraft page].
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’
- included with GetChip (~$9USD) small computers
- Pico8 Zine
Small, embeddable (can be put inside other programs, eg written in C/C++), easy to learn scripting language.
- for embedded, CircuitPython + Jupyter Notebooks: https://learn.adafruit.com/circuitpython-with-jupyter-notebooks?view=all
Building ASM with GNU Tools
ASM file -> nasm -> ld
In short: a virtual CPU in your browser that allows the execution of “web assembly” at near native speed, with secuity.
An introduction on Hack-A-Day.
The performance can be amazing: e.g. V86 an X86 (~Pentium III) virtual machine in your browser!
Emscripten is a compiler and library tool set that allows cross-compiling C/C++ to WEBASM. Includes support for WebGL, SDL1 & SDL2, audio, and more.
Wasmer is similar to
emscripten but more focused on utilities that can be run anywhere- eg client side or server side. Includes libraries to host WEBASM in other languages, eg Python, C/C++, Go, Rust, and many more.
- Dear ImGUI - simple, straight forward, but expansive UI library that has minimal dependencies; bindings for many languages available
- ImTUI - port of ImGUI for text based consoles.
Virtual Reality (VR) and Augmented Reality (AR) - “XR”
Systems specifically for creating VR/AR experiences.
- WebXR - landing page for AR & VR development using web technologies- no installation required for end users!
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.