1 of 19

(I can't get no) satisfaction

Can SAT-solvers resolve dependency hell?

2 of 19

Permanent link to this comic: https://xkcd.com/1987/

3 of 19

$ ./scale18x_presentation.sh�** (scale18x_presentation) WARNING **: presentation contains recursion.

_

4 of 19

P vs. NP

5 of 19

The 7 Millennium Problems are:

  • P vs. NP Problem.
  • Riemann Hypothesis.
  • Yang–Mills and Mass Gap.
  • Navier–Stokes Equation.
  • Hodge Conjecture.
  • Poincaré Conjecture.
  • Birch and Swinnerton-Dyer Conjecture.

6 of 19

7 of 19

Some jargon...

  • P (polynomial time) is the set of problems that can be solved in polynomial time.
  • NP (nondeterministic polynomial time) is the set of problems whose solutions can be verified in polynomial time.

8 of 19

Complexity

NP-Complete

NP

P

NP-Hard

P vs NP

9 of 19

10 of 19

Consider the following...

11 of 19

12 of 19

BUT WAIT SPONGEBOB

WE HAVE TECHNOLOGY

13 of 19

Some NP-Complete Problems, indicating the reductions typically used to prove their NP-completeness

14 of 19

THE PROBLEM IS HUMAN

15 of 19

4 states of package management

Dependency resolver solves sudoku here

16 of 19

Permanent link to this comic: https://www.xkcd.com/797/

17 of 19

TL;DR: What can we be doing as a community?

  • Commit your lockfiles
  • Document your API’s + use semantic versioning�(see semver.org)
  • Communicate to your library authors when dependencies go out of date.
  • Provide your feedback to the package management maintainers

18 of 19

Without requirements or design, programming is the art of adding bugs to an empty text file.

19 of 19

The End.

:q!

Permanent link to this comic: https://xkcd.com/1172/

Hyrum's Law

With a sufficient number of users of an API, it does not matter what you promise in the contract:

all observable behaviors of your system will be depended on by somebody.