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 Octave Tempo Keys @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 @andee_marks
Tool chain metrics .abc .midi abc2midi @andee_marks
Aeolian/Hello World ⇨ public class HelloWorld { X:1 X:1 public static void main(String args[]) { T:HelloWorld.metrics T:HelloWorld.metrics System.out.println("Hello World!"); C:AEOLIAN C:AEOLIAN } M:4/4 M:4/4 } L:1/8 L:1/8 Q:1/4=140 Q:1/4=140 K:C K:C %%MIDI gchord c %%MIDI gchord c | "C"E c b E, E, E, | | "C"E c b E, E, E, | @andee_marks
ABC Notation ⇨ X:1 T:HelloWorld.metrics C:AEOLIAN M:4/4 L:1/8 Q:1/4=140 K:C Tempo %%MIDI gchord c | "C"E c b E, E, E, | Keys Notes Octave @andee_marks
Design Choices @andee_marks
Design Choices #1/Notes ⇨ <module name="LineLength"> (cond (< line-length 10) (note-from-octave octave-1 line-length) (<= 10 line-length 39) Notes (note-from-octave octave-2 line-length) (<= 40 line-length 79) (note-from-octave octave-3 line-length) ... @andee_marks
Design Choices #2/Tempo ⇨ <module name="CyclomaticComplexity"> (+ (* 20 complexity) default-tempo) Tempo @andee_marks
Design Choices #3/Key ⇨ <module name="SimianCheck"> Keys (if (< duplication-percentage 10) (set-major-key) (set-minor-key))) @andee_marks
Design Choices #4/Instruments ⇨ (if (not (= current-author (get-author))) (instrument-for current-author) Instruments @andee_marks
Design Choices #5/Lyrics (if (not (= current-source-file (get-source-file))) (lyrics-for current-source-file) Lyrics @andee_marks
Design Choices #6/Sequencing Sequencing @andee_marks
Design Choices/Unresolved ⇨ Volume Stereo Length /** **/ Editor Note length Comments integration @andee_marks
Conclusion @andee_marks
Visual indicators @andee_marks
Audio indicators if ( is_smelly? (code)) { if ( is_smelly? (code)) { set_build_light(“red”); play “What Does The Fox Say (Ylvis)”; } else { } else { set_build_light(“green”); play “The Blue Danube (Strauss)”; } } @andee_marks
Recommend
More recommend