Semper	
  Ubi	
  Sub	
  Ubi	
  
…and	
  other	
  advice.	
  
An	
  incomplete	
  list	
  of	
  things	
  they	
  
don’t	
 ...
Know	
  your	
  Unknowns.	
  
@jschauma	
  
@jschauma	
  
@jschauma	
  
@jschauma	
  
Computering,	
  at	
  its	
  heart,	
  
is	
  a	
  people	
  problem.	
  
@jschauma	
  
“A	
  concept	
  is	
  stronger	
  than	
  a	
  fact.”	
  
@jschauma	
  
-­‐-­‐	
  CharloEe	
  Perkins	
  Gilman	
  
@jschauma	
  
You	
  need	
  pracIcal	
  
programming	
  experience.	
  
@jschauma	
  
You	
  don’t	
  fully	
  understand	
  
a	
  problem	
  unIl	
  you	
  try	
  
to	
  solve	
  it	
  yourself.	
  
@jschaum...
Prototype…	
  then	
  toss	
  it.	
  
(Beware	
  Second	
  System	
  Syndrome.)	
  
@jschauma	
  
@jschauma	
  
Perfect	
  is	
  the	
  enemy	
  
of	
  the	
  Good.	
  
@jschauma	
  
Worse	
  is	
  BeEer.	
  
@jschauma	
  
Perfect	
  is	
  the	
  enemy	
  
of	
  the	
  Good.	
  
Worse	
  is	
  BeEer.	
  
@jschauma	
  
Perfect	
  is	
  the	
  enemy	
  
of	
  the	
  Good.	
  
“Good	
  enough”	
  oPen	...
Simplify.	
  
@jschauma	
  
“This	
  is	
  the	
  Unix	
  philosophy:	
  
	
  
Write	
  programs	
  that	
  do	
  one	
  thing	
  and	
  do	
  it	
  
...
Know	
  Unix.	
  
Embrace	
  the	
  command-­‐line.	
  
@jschauma	
  
Know	
  your	
  $EDITOR.	
  
@jschauma	
  
Know	
  how	
  to	
  use	
  a	
  debugger.	
  
	
  
printf(“here: x is now %dn”, x);!
!
does	
  not	
  count.	
  
@jschaum...
Meet	
  your	
  new	
  friends,	
  
the	
  Straces:	
  
	
  
dtrace(1),	
  ktrace(1),	
  strace(1)	
  
@jschauma	
  
Use	
  boring	
  technology.	
  
@jschauma	
  
Use	
  boring	
  technology.	
  
	
  
Write	
  boring	
  code.	
  
@jschauma	
  
$ echo ‘import this’ | python
@jschauma	
  
Readability	
  counts.	
  
@jschauma	
  
Refactor	
  if:	
  
-­‐	
  code	
  trails	
  off	
  right	
  side	
  of	
  your	
  window	
  
-­‐	
  your	
  funcIon	
  doe...
Readability	
  counts.	
  
	
  
You	
  are	
  not	
  charged	
  per	
  character.	
  
@jschauma	
  
(Most)	
  comments	
  
considered	
  harmful.	
  
@jschauma	
  
@jschauma	
  
// increment x by 2
x = x + 2;
@jschauma	
  
// increment x by 2
x = x + 4;
(Most)	
  comments	
  
considered	
  harmful.	
  
	
  
Comments	
  should	
  
explain	
  the	
  why,	
  
not	
  the	
  wha...
Write	
  The	
  Fine	
  Manual	
  
@jschauma	
  
@jschauma	
  
$ cp /usr/share/man/man1/ls.1 hfrob.1
$ $EDITOR hfrob.1
$ nroff -man hfrob.1 | more
Write	
  The	
  
Fine	
  Test	
  
Suite	
  
@jschauma	
  
Write	
  meaningful	
  error	
  messages.	
  
@jschauma	
  
$ hfrob frumbl
Error!
$ echo $?
0
$
$ hfrob frumbl
Unable to o...
Learn	
  to	
  write	
  a	
  bug	
  report.	
  
@jschauma	
  
Try	
  to	
  understand	
  
what	
  you’re	
  doing.	
  
@jschauma	
  
@jschauma	
  
Sufficiently	
  advanced	
  cheaIng	
  
is	
  indisInguishable	
  from	
  learning.	
  
@jschauma	
  
Computering,	
  at	
  its	
  heart,	
  
is	
  a	
  people	
  problem.	
  
	
  
SoPware	
  development	
  is	
  
a	
  socia...
Learn	
  to	
  write	
  an	
  email.	
  
@jschauma	
  http://www.phdcomics.com/comics.php?f=1795
The	
  internet	
  does	
  not	
  forget.	
  
Anything.	
  Ever.	
  
@jschauma	
  
Other	
  people	
  are…	
  
…also	
  people.	
  
@jschauma	
  
@jschauma	
  
Own	
  your	
  mistakes.	
  
@jschauma	
  
You	
  break	
  it,	
  you	
  own	
  it.	
  
@jschauma	
  
You	
  break	
  it,	
  you	
  own	
  it.	
  
	
  
You	
  fix	
  it,	
  you	
  own	
  it.	
  
@jschauma	
  
SoPware	
  maintenance	
  is	
  75%	
  of	
  
total	
  cost	
  of	
  ownership.	
  
	
  
OperaIonal	
  support	
  is	
  th...
ParIcipate	
  in	
  Open	
  Source.	
  
@jschauma	
  
Mind	
  your	
  filter	
  bubbles.	
  
@jschauma	
  
Seek	
  diversity.	
  
@jschauma	
  
GitHub	
  is	
  (not)	
  your	
  resume.	
  
@jschauma	
  
Interviewing	
  is	
  bullshit.	
  
@jschauma	
  
Salary	
  negoIaIon	
  is	
  bullshit.	
  
@jschauma	
  
Salary	
  negoIaIon	
  is	
  bullshit.	
  
	
  
Know	
  what	
  you’re	
  worth.	
  
@jschauma	
  
Your	
  first	
  salary	
  defines	
  future	
  
salaries	
  for	
  this	
  career	
  path.	
  
@jschauma	
  
Your	
  first	
  job	
  does	
  not	
  
define	
  your	
  career,	
  
but	
  it	
  may	
  pidgeon-­‐hole	
  you.	
  
@jschau...
There	
  is	
  no	
  such	
  thing	
  as	
  
mulI-­‐tasking.	
  
	
  
You	
  can	
  either	
  do	
  one	
  thing	
  well,	...
There	
  is	
  no	
  such	
  thing	
  as	
  
mulI-­‐tasking.	
  
	
  
Eliminate	
  distracIons.	
  
@jschauma	
  
“One	
  of	
  my	
  most	
  producCve	
  days	
  was	
  
throwing	
  away	
  1,000	
  lines	
  of	
  code.”	
  
@jschauma	...
Validate	
  all	
  your	
  input!	
  
@jschauma	
  
whitelist	
  >	
  blacklist	
  
“Security”	
  can’t	
  be	
  added.	
  
@jschauma	
  
Your	
  endpoint	
  security	
  model	
  
should	
  assume	
  the	
  network	
  is	
  
compromised;	
  	
  your	
  network...
Always	
  use	
  UTC.	
  
	
  
Use	
  an	
  unambiguous	
  format.	
  
	
  
2016-­‐03-­‐02T14:22:33	
  
	
  
03/02/16	
  2...
@jschauma	
  https://xkcd.com/1597/
Fallacies	
  of	
  distributed	
  compuIng:	
  
@jschauma	
  
	
  
•  	
  	
  	
  	
  The	
  network	
  is	
  reliable.	
 ...
The	
  internet	
  is	
  awesome.	
  
	
  
You	
  should	
  know	
  how	
  it	
  works.	
  
@jschauma	
  
Understand	
  the	
  DNS.	
  
	
  
(Don’t	
  monkey	
  around	
  
with	
  /etc/hosts.)	
  
@jschauma	
  
Know	
  tcpdump(1).	
  
	
  
Be	
  able	
  to	
  read	
  a	
  pcap(3)	
  file.	
  
@jschauma	
  
@jschauma	
  
Understand	
  
the	
  OSI	
  
stack.	
  
The	
  internet	
  is	
  awesome.	
  
	
  
You	
  can	
  help	
  keep	
  it	
  that	
  way.	
  
You	
  can	
  help	
  make...
The	
  internet	
  is	
  awesome.	
  
	
  
You	
  should	
  help	
  keep	
  it	
  that	
  way.	
  
You	
  should	
  help	
...
@jschauma	
  
Understand	
  
the	
  OSI	
  
stack.	
  
Don’t	
  do	
  drugs.	
  
Use	
  an	
  ad-­‐blocker.	
  
Stay	
  in	
  school.	
  
Disable	
  Flash.	
  
Anonymity	
  is	
...
Semper Ubi Sub Ubi - Things They Don't Teach You In School
Upcoming SlideShare
Loading in …5
×

Semper Ubi Sub Ubi - Things They Don't Teach You In School

660 views

Published on

'Always wear underwear' and other practical advice for Computer Science students.

A transcript of the talk is available at www.netmeister.org/blog/semper-ubi-sub-ubi.html

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
660
On SlideShare
0
From Embeds
0
Number of Embeds
28
Actions
Shares
0
Downloads
8
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Semper Ubi Sub Ubi - Things They Don't Teach You In School

  1. 1. Semper  Ubi  Sub  Ubi   …and  other  advice.   An  incomplete  list  of  things  they   don’t  teach  you  in  school.   @jschauma  
  2. 2. Know  your  Unknowns.   @jschauma  
  3. 3. @jschauma  
  4. 4. @jschauma  
  5. 5. @jschauma  
  6. 6. Computering,  at  its  heart,   is  a  people  problem.   @jschauma  
  7. 7. “A  concept  is  stronger  than  a  fact.”   @jschauma   -­‐-­‐  CharloEe  Perkins  Gilman  
  8. 8. @jschauma  
  9. 9. You  need  pracIcal   programming  experience.   @jschauma  
  10. 10. You  don’t  fully  understand   a  problem  unIl  you  try   to  solve  it  yourself.   @jschauma  
  11. 11. Prototype…  then  toss  it.   (Beware  Second  System  Syndrome.)   @jschauma  
  12. 12. @jschauma  
  13. 13. Perfect  is  the  enemy   of  the  Good.   @jschauma  
  14. 14. Worse  is  BeEer.   @jschauma   Perfect  is  the  enemy   of  the  Good.  
  15. 15. Worse  is  BeEer.   @jschauma   Perfect  is  the  enemy   of  the  Good.   “Good  enough”  oPen  is  the   enemy  of  “actually  good”.  
  16. 16. Simplify.   @jschauma  
  17. 17. “This  is  the  Unix  philosophy:     Write  programs  that  do  one  thing  and  do  it   well.     Write  programs  to  work  together.     Write  programs  to  handle  text  streams,   because  that  is  a  universal  interface.”   @jschauma   -­‐-­‐  Douglas  McIllroy  
  18. 18. Know  Unix.   Embrace  the  command-­‐line.   @jschauma  
  19. 19. Know  your  $EDITOR.   @jschauma  
  20. 20. Know  how  to  use  a  debugger.     printf(“here: x is now %dn”, x);! ! does  not  count.   @jschauma  
  21. 21. Meet  your  new  friends,   the  Straces:     dtrace(1),  ktrace(1),  strace(1)   @jschauma  
  22. 22. Use  boring  technology.   @jschauma  
  23. 23. Use  boring  technology.     Write  boring  code.   @jschauma  
  24. 24. $ echo ‘import this’ | python @jschauma  
  25. 25. Readability  counts.   @jschauma  
  26. 26. Refactor  if:   -­‐  code  trails  off  right  side  of  your  window   -­‐  your  funcIon  does  not  fit  into  <200  lines   @jschauma   Readability  counts.  
  27. 27. Readability  counts.     You  are  not  charged  per  character.   @jschauma  
  28. 28. (Most)  comments   considered  harmful.   @jschauma  
  29. 29. @jschauma   // increment x by 2 x = x + 2;
  30. 30. @jschauma   // increment x by 2 x = x + 4;
  31. 31. (Most)  comments   considered  harmful.     Comments  should   explain  the  why,   not  the  what.   @jschauma  
  32. 32. Write  The  Fine  Manual   @jschauma  
  33. 33. @jschauma   $ cp /usr/share/man/man1/ls.1 hfrob.1 $ $EDITOR hfrob.1 $ nroff -man hfrob.1 | more
  34. 34. Write  The   Fine  Test   Suite   @jschauma  
  35. 35. Write  meaningful  error  messages.   @jschauma   $ hfrob frumbl Error! $ echo $? 0 $ $ hfrob frumbl Unable to open file: ‘/usr/share/hfrob/frumbl’: No such file or directory. $ echo $? 1 $ ✔︎  
  36. 36. Learn  to  write  a  bug  report.   @jschauma  
  37. 37. Try  to  understand   what  you’re  doing.   @jschauma  
  38. 38. @jschauma  
  39. 39. Sufficiently  advanced  cheaIng   is  indisInguishable  from  learning.   @jschauma  
  40. 40. Computering,  at  its  heart,   is  a  people  problem.     SoPware  development  is   a  social  acIvity.   @jschauma  
  41. 41. Learn  to  write  an  email.   @jschauma  http://www.phdcomics.com/comics.php?f=1795
  42. 42. The  internet  does  not  forget.   Anything.  Ever.   @jschauma  
  43. 43. Other  people  are…   …also  people.   @jschauma  
  44. 44. @jschauma  
  45. 45. Own  your  mistakes.   @jschauma  
  46. 46. You  break  it,  you  own  it.   @jschauma  
  47. 47. You  break  it,  you  own  it.     You  fix  it,  you  own  it.   @jschauma  
  48. 48. SoPware  maintenance  is  75%  of   total  cost  of  ownership.     OperaIonal  support  is  the   remaining  75%.   @jschauma  
  49. 49. ParIcipate  in  Open  Source.   @jschauma  
  50. 50. Mind  your  filter  bubbles.   @jschauma  
  51. 51. Seek  diversity.   @jschauma  
  52. 52. GitHub  is  (not)  your  resume.   @jschauma  
  53. 53. Interviewing  is  bullshit.   @jschauma  
  54. 54. Salary  negoIaIon  is  bullshit.   @jschauma  
  55. 55. Salary  negoIaIon  is  bullshit.     Know  what  you’re  worth.   @jschauma  
  56. 56. Your  first  salary  defines  future   salaries  for  this  career  path.   @jschauma  
  57. 57. Your  first  job  does  not   define  your  career,   but  it  may  pidgeon-­‐hole  you.   @jschauma  
  58. 58. There  is  no  such  thing  as   mulI-­‐tasking.     You  can  either  do  one  thing  well,   or  mulIple  things  poorly.   @jschauma  
  59. 59. There  is  no  such  thing  as   mulI-­‐tasking.     Eliminate  distracIons.   @jschauma  
  60. 60. “One  of  my  most  producCve  days  was   throwing  away  1,000  lines  of  code.”   @jschauma   -­‐-­‐  Ken  Thompson  
  61. 61. Validate  all  your  input!   @jschauma   whitelist  >  blacklist  
  62. 62. “Security”  can’t  be  added.   @jschauma  
  63. 63. Your  endpoint  security  model   should  assume  the  network  is   compromised;    your  network   security  model  should  assume   the  endpoint  is.     Both  in  fact  are.   @jschauma  
  64. 64. Always  use  UTC.     Use  an  unambiguous  format.     2016-­‐03-­‐02T14:22:33     03/02/16  2:22:33   @jschauma  
  65. 65. @jschauma  https://xkcd.com/1597/
  66. 66. Fallacies  of  distributed  compuIng:   @jschauma     •         The  network  is  reliable.   •         Latency  is  zero.   •         Bandwidth  is  infinite.   •         The  network  is  secure.   •         Topology  doesn't  change.   •         There  is  one  administrator.   •         Transport  cost  is  zero.   •         The  network  is  homogeneous.  
  67. 67. The  internet  is  awesome.     You  should  know  how  it  works.   @jschauma  
  68. 68. Understand  the  DNS.     (Don’t  monkey  around   with  /etc/hosts.)   @jschauma  
  69. 69. Know  tcpdump(1).     Be  able  to  read  a  pcap(3)  file.   @jschauma  
  70. 70. @jschauma   Understand   the  OSI   stack.  
  71. 71. The  internet  is  awesome.     You  can  help  keep  it  that  way.   You  can  help  make  it  awesomer.   @jschauma  
  72. 72. The  internet  is  awesome.     You  should  help  keep  it  that  way.   You  should  help  make  it  awesomer.   @jschauma  
  73. 73. @jschauma   Understand   the  OSI   stack.  
  74. 74. Don’t  do  drugs.   Use  an  ad-­‐blocker.   Stay  in  school.   Disable  Flash.   Anonymity  is  important.   Yes  means  yes.   Don’t  get  phished.   Black  lives  maEer.   Use  a  password  manager.   Wear  sunscreen.   @jschauma  

×