See also: Creative Coding Notes list
Some hardware needs special device drivers
- There's not a simple messaging scheme (like Serial communication) that you can replicate without major reverse-engineering. for example:
- Kinect / Realsense
- Leap Motion
Some hardware uses electrical signals and basic data transmission
- Arduino / Raspberry Pi sensors & output devices
- Keyboard/mouse HID
- Webcams -
[UVC](https://en.wikipedia.org/wiki/USB_video_device_class)means that a camera of video device can be seen as a webcam by your operating system - MIDI
- Network protocols
- Serial I/O - This is how we talk to custom sensors via Arduino (or other PCB boards)
- Example: Epic React: Instant Go treadmill
- Example: 30 Years of Air - sensor & motors
- Wireless protocols
- Lighting protocols
- Shared textures between apps
- Video streaming
You can use these protocols to create larger integrated systems!
Open source software (OSS) = Freely-available source code!
- Be aware of the different kinds of OSS licenses
- These determine how you can (or can't) legally use the code in your projects. Make sure you're allowed to use the code for your commercial (or non-commercial) purposes.
- How does open source happen?
- Aligning an Open Source Ethos
- OS development funding models
- Internal tools that become their own library, like React by Meta (Facebook)
- Personal projects or tooling that the author wants to share
- Mine is Haxademic
- What open source project should I contribute to?
- The dark sides of open source
- The struggles of an open source maintainer - being a OSS maintainer can be difficult
- Awful OSS Incidents - open source can create security risks
Open source libraries & frameworks that you'll find
- Many popular OSS projects are either a library or a framework
- What is the difference between a framework and a library?
- p5js is a larger framework, but has libraries that can add extra functionality
Package (library) managers
- Why use a package (library) manager?
- Quick & easy to add functionality to your project
- Dependency management - any library you use may have its own dependencies, and the package manager will download (and solve version conflicts) for you
- It's nice to have one source for the latest tools
- Downsides of package managers
- Writing Javascript without a build system
- Security risks
- Large download size (with lots of extra library dependencies you might not use)

- Versioning/dependencies can break or become outdated over time

- Different languages have different package managers
- p5js: Doesn't have one! You include remote javascript files or upload them
- Processing & Arduino: library manager inside IDE
- Javascript: npm
- Java: Maven or Gradle
- Ruby: Bundler
- Python: pip or conda
- OS X: Homebrew
- Windows: Chocolatey
Listen to an episode from either podcast:
- Tech+Art Podcast
- That's So New Media!?
Build something with hardware or explore an open source project
- Hardware ideas
- p5js: use the Web Serial API with Justin's example sketch (Chrome only)
- Show example video
- Processing: use the Serial library
- MIDI (Chrome only)
- p5js: use the Web Serial API with Justin's example sketch (Chrome only)
- Open Source ideas
- Find an interesting open source project and explore its code
- Contribute to an open source project
- Start your own open source project
- Present your web browser/Node.js projects