Also Does Code Sound Smelly Bad? Andy Marks Technical - - PowerPoint PPT Presentation

also does code sound smelly bad
SMART_READER_LITE
LIVE PREVIEW

Also Does Code Sound Smelly Bad? Andy Marks Technical - - PowerPoint PPT Presentation

Also Does Code Sound Smelly Bad? Andy Marks Technical Principal ThoughtWorks @andee_marks Background @andee_marks Agenda Music Theory Redux Aeolian Design Choices (& examples) @andee_marks A Music Theory Primer Notes


slide-1
SLIDE 1

@andee_marks

Does

Andy Marks Technical Principal ThoughtWorks

Smelly Code Sound Also Bad?

slide-2
SLIDE 2

@andee_marks

Background

slide-3
SLIDE 3

@andee_marks

Agenda

  • Music Theory Redux
  • Aeolian
  • Design Choices (& examples)
slide-4
SLIDE 4

@andee_marks

A Music Theory Primer

Notes Tempo Keys Octave

slide-5
SLIDE 5

@andee_marks

github.com/andeemarks/aeolian

“the aeolian tonic chord is the submediant minor triad”

Java One note per line of code Make good quality code pleasant to listen to Make poor quality code unpleasant to listen to

slide-6
SLIDE 6

@andee_marks

Tool chain

metrics .abc .midi

abc2midi

slide-7
SLIDE 7

@andee_marks

Aeolian/Hello World

public class HelloWorld { public static void main(String args[]) { System.out.println("Hello World!"); } } X:1 T:HelloWorld.metrics C:AEOLIAN M:4/4 L:1/8 Q:1/4=140 K:C %%MIDI gchord c | "C"E c b E, E, E, | X:1 T:HelloWorld.metrics C:AEOLIAN M:4/4 L:1/8 Q:1/4=140 K:C %%MIDI gchord c | "C"E c b E, E, E, |

slide-8
SLIDE 8

@andee_marks

ABC Notation

X:1 T:HelloWorld.metrics C:AEOLIAN M:4/4 L:1/8 Q:1/4=140 K:C %%MIDI gchord c | "C"E c b E, E, E, | Notes Tempo Keys

Octave

slide-9
SLIDE 9

@andee_marks

Design Choices

slide-10
SLIDE 10

@andee_marks

Design Choices #1/Notes

Notes

<module name="LineLength"> (cond (< line-length 10) (note-from-octave octave-1 line-length) (<= 10 line-length 39) (note-from-octave octave-2 line-length) (<= 40 line-length 79) (note-from-octave octave-3 line-length)

...

slide-11
SLIDE 11

@andee_marks

Design Choices #2/Tempo

Tempo

(+ (* 20 complexity) default-tempo) <module name="CyclomaticComplexity">

slide-12
SLIDE 12

@andee_marks

Design Choices #3/Key

Keys

<module name="SimianCheck"> (if (< duplication-percentage 10) (set-major-key) (set-minor-key)))

slide-13
SLIDE 13

@andee_marks

Design Choices #4/Instruments

Instruments

(if (not (= current-author (get-author))) (instrument-for current-author)

slide-14
SLIDE 14

@andee_marks

Design Choices #5/Lyrics

Lyrics

(if (not (= current-source-file (get-source-file))) (lyrics-for current-source-file)

slide-15
SLIDE 15

@andee_marks

Design Choices #6/Sequencing

Sequencing

slide-16
SLIDE 16

@andee_marks

Design Choices/Unresolved

Volume

Stereo Length Note length Comments

/** **/

Editor integration

slide-17
SLIDE 17

@andee_marks

Conclusion

slide-18
SLIDE 18

@andee_marks

Visual indicators

slide-19
SLIDE 19

@andee_marks

if (is_smelly?(code)) { set_build_light(“red”); } else { set_build_light(“green”); } if (is_smelly?(code)) { play “What Does The Fox Say (Ylvis)”; } else { play “The Blue Danube (Strauss)”; }

Audio indicators