Questions: python arguments f(p1, p2, p3, kw1=3, kw2=4) -- invoke def f(a) -- either def f(a=1) -- either, but optional def f(a, /) -- must be positional def f(*, a) -- must be keyword def f(*args) -- will get any leftover position def f(**args) -- will get any leftover keywords what does a router do (IP, etc) connectes you to a local area network gateway: connects LAN to Internet DHCP gets me an IP address from the router multithreading vs multiprocessing process = app or daemon (usually) thread = one workflow in app every process has at least one thread what is a thread how are threads and sockets related they aren't thread: allows multiple concurrent paths in code socket: talk to other processes/machines threads and networking TCP/IP what does join mean mythread.join() will 1. wait for mythread to finish 2. clean up the thread's resources what are daemons usually: background processes helping a system sometimes: running with no supervision no-preemption vs hold-and-wait no preemption: hold until I release hold and wait: hold one while wating for another deadlock in mp6 dining philosphers -- when simultaneous?