Final Project About 9-1:30: final project set up and greatest hits 1:30-4:30 final project Presentation make sure to answer the questions on the page open house after--usually around 5 but longer but given pandemic might be 5-6 - Neil will post a minute by minute schedule so let him know what you can't present Pages Neil explains RS232. In the ATtiny 412 code Neil has, he uses the arduino serial. HE also shows his make file which takes the c code and makes it executable. MakeCode is usable in Arduino. Design class hack to put into mp4. He doesn't want us linking to google drive/outside. videos in repo. HTML5 has specific formats that are standard for website. not all mp4 will play though. how to resize by code: http://academy.cba.mit.edu/classes/computer_design/video.html ESP32 should be on mounts apparently, not directly soldered to board. lol Offset doesn't change trace diameter, but amount of Cu taken off board. Neil's notes on my rock: Victoria used copper vinyl cut need to check force, speed, depth of blade, age of blade, is blade clean, condition of copper (shiny and smooth) vinyl cutter on electronic production HongHao page Vinyl doesnt stick to backing. a trick is to use 3 layers: 1 flexible backing mateiral, then layer of expoy film transferred copper to epoxy film then smoothed it out and then puts on vinyl cutter. need to transfer to another stickier backing. About user interface app week. HE goes through page as usual for assignment: 1. pick language hello world:starting languages c++: used in microcontroller. can be written on desktop applications. not all but many OS lower levels are written in C and super computers are written in C. Lower level and high performance. C++ extends to object orientations. C-sharp: attempt for better C for microsoft. .net framework. Go, rust: modern languages. main issues with C is it's easy to introduce vulnerability. Classic C issue is you can design an array which doesn't prvent you from trying to access memory outside of array range. Program can reach into things its not supposed to interact with. Go and rust are descendants of C that are more secure for designing OS. Linux using. java: started as a language that would run everywhere and not compile. first issue was that installations were tricky so it couldnt actually run everywhere. Arduino is kind of based on java flutter/dart are apple and android kotlin, swift are apple and google Just C runs everywhere for now. these other iterations try to deal with C limitations in app development. still evolving. apl is neil's favorite. we won't use it for antyhing. an attempt to make a language to redo math notation ffrom scratch and turn it into a computer language. python based on apl. haskell, scala, julia: functional languages. you describe functions and relationships processing: C good for performancing. processing is builds on java. if you like arduino, you'll like processing language. arduino is attempt to make embedded processig. labview, simulijk, grasshopper, etc: coding by using images. MIT has one too. bash is a terminal scripting language. he uses in class for his size checking code. used to automate things in terminal. python inspired by apl; takes elemtns of lisp and C++ and merges into "beautiful" language according to neil. lots of suuport with some catches. large performance overhead and package distribution is a mess. --> python.xkcd.packages? he shows a comic of pythone nvironment. javascript grown beyond it shouldve. best documented through mozilla? javascript is faster(?) i'm confused by compiler, v8, stuff etc. node is javascript outside of browser. security stuff. mods is a javascript thingy! if like arduino, use processing. if interested, use python if online, use javascript 2. talk to a device. python has pyserial. on input device week, in step response, he used a python code in the video. uses serial package and open a serial port and reads data from it. node has serial port as well. i2c circuitpython: python to talk to embedded systems that understands i2c on hardware that supports it. lots of packages? i2c devices usb: pi-usb. node version of usb. usb had profiles. can talk to usb protocol itself irda: protocol talk to ir devices mott, xmpp, iftt, etc line: versions for many devices.need to keep track of what device has what capabilities, etc. typically should have scribed models socket interfaces: talk to anything anywhere on internet web socket: safe subset of sockets for web apps . his example is him interace to sensor from webpage. websocket in node to make local server on local computer. from browser, nothing is running. reaches out to websocket server. browser manages webpage. socket manages talking, socket talks out chrome can use webserial. 3. user-interfaces last line: meteor, bable, react, etc: all of these are attempts to make development environment that runs everywhere 4. now you have UI, now you gotta do GRAPHICAL things does not recommend X windows lol? linux and osx are making difficult transition to more modern window managers. don't rec java unless needed. canvas, svg, webgi, are recommended canvas started as extension from apple. it's a bitmap. put pixels on screen. bad is that it's just pixels. svg: good standards for 2d drawing on web. expressive, "beautiful". resolution independent. objects have identity. WebGL: standard for 3d graphics. talks to gpu on web. efficient for 2d. nontrivial three.js: started as hack to use webgl. simpler than GL programming. scene description language. can do full 3d renderings. can create object and "move camera". can do directly not on desktop(??) vtk is environment for data visualization. paraview too. unity, unreal, etc are game environments. godot is open game environment. Blender has physics engine. 6. audio/video--runs through the links. html5 adds web audio. fauxmoesp: esp emulates.......... something. in audio interfaces. can make esp talk to and with alexa for example. 7. math, machine learning matlab is not beautiful lol numpy, scipy is beautiful, according to Neil. numpy code is short. he goes through his graph of something. i can read this! :Db tensorflow for machine learning. js in browser machine learning. nature of mathematical modelling taught by neil about algorithms behind ML. gitlab.cba.mit.edu/pub/pi/blob/master/README.md