Presenting is storytelling at Uni Zurich - handouts (2014-03-05)
Upcoming SlideShare
Loading in...5
×
 

Presenting is storytelling at Uni Zurich - handouts (2014-03-05)

on

  • 158 views

These handouts accompanied my lecture at the University of Zurich on the topic of "Presenting is storytelling".

These handouts accompanied my lecture at the University of Zurich on the topic of "Presenting is storytelling".

Statistics

Views

Total Views
158
Views on SlideShare
158
Embed Views
0

Actions

Likes
1
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Presenting is storytelling at Uni Zurich - handouts (2014-03-05) Presenting is storytelling at Uni Zurich - handouts (2014-03-05) Document Transcript

  • www.tudorgirba.com Presenting Tudor Gîrba www.tudorgirba.com Roadmap • • www.tudorgirba.com The following slides are intended to be read either by looking at the laptop screen, or with the back to the audience. Every talk must start with a roadmap So: • Introduction • Slides • • • • • Template • One common wisdom is that there should be a roadmap at the beginning. That is many times a good thing, only we should design the roadmap to be meaningful. Design Audience Story More about slides Conclusion http://www.tudorgirba.com/blog/meaninglessroadmap © Tudor Girba Zürich - April 23, 2013 Roadmap • • 2 www.tudorgirba.com Every talk must start with a roadmap So: • Introduction • Slides • • • • • Template • Design Audience Story More about slides Conclusion © Tudor Girba Zürich - April 23, 2013 3 This is actually true. About this talk • • • www.tudorgirba.com I used to be extremely afraid of speaking in public • In fact, I was so afraid that I could hardly speak But, because I had to speak, I spent a bit of time thinking about it Today, I will share with you some of my reflections on how to do presentations • I am actually quite nervous to talk about it here © Tudor Girba Zürich - April 23, 2013 4
  • Roadmap • • www.tudorgirba.com Every talk must start with a roadmap So: • Introduction • Slides • • • • • Template Audience Story More slides Conclusion © Tudor Girba Zürich - April 23, 2013 Slides • • • • • • 5 www.tudorgirba.com Every decent talk is accompanied by slides Text is difficult to read so, slides should not have more than 6 first level bullets The text should be no smaller than 12 pt A good slide has an engaging design Don’t just use a standard design • Show that you care Let’s see what a good template is made of ... © Tudor Girba Zürich - April 23, 2013 The template in 4 steps 6 www.tudorgirba.com If you take this approach, just make sure to not add the total amount of slides, because you do not want to discourage the audience :) 1. Align title to the left, and add logo to the top right • The logo should not be too large, but it should be visible at all time • Adding it to the right, makes it secondary in the visual hierarchy so that it is not compete with the rest of the text 2. Choose colors and style to match the corporate look 3. Delimit the title zone and readjust the style 4. Add footer • Slide number is important to let the audience know about the progress • Add your name, just in case they forgot it • Add the date and place of the presentation to show that it is customized for the situation © Tudor Girba Zürich - April 23, 2013 7 This is one way to deliver talks. While it can be straightforward, it is completely inneffective. The audience gets bored, and the retention is low. STOP
  • presenting is storytelling www.tudorgirba.com why are we here? In abstract, a lecture is an educational talk. lecture |ˈlek ch ər| noun an educational talk to an audience legere latin verb action of reading, that which is read But, where does the design of a lecture come from? Lecture come from legere which is a latin verb denoting the act of reading. A couple of centuries ago, before the printing press, reading was a technological solution for spreading information.
  • lecture |ˈlek ch ər| noun an educational talk to an audience Lectures should not stick to the original meaning anymore. There is no reason. We are no longer in dire need of information. What should the goal of a lecture be? To frame the problem and to incite the audience to investigate it further. The best tool to animate an audience is through a story. presenting is storytelling www.tudorgirba.com The story does not have to be a fairy tale to capture my imagination. In fact, it should not be a fairy tale. story = fairy tale Good stories are typically not straightforward. They require design and discovery. design your story
  • The first step is to figure out what your audience is? What do they expect? What are their values? who is your audience? let me tell you a story about Paris http://www.flickr.com/photos/pingnews/ 421079337/sizes/l/ Let me tell you a story about how I went to Paris ...
  • and I wanted to see how other people see Paris. I was surprised to see that some don’t even look at Paris. And when they do look, they do it in a strange way. At night, we finally got to Louvre.
  • And we set our minds to go see Mona Lisa. So, the second day, we took the metro. And we got to Louvre. And just near the information sign ...
  • We found Mona Lisa. Actually it was not really Mona Lisa, but just a guide about The Da Vinci Code. We did not want the guide, and we started to search Mona Lisa by ourselves. And we finally got to the room of Mona Lisa. Because we were not allowed to take pictures inside the room, I took a picture from outside of it. But, no one else took the sign seriously. My take is that they did not regard themselves taking pictures, they regarded themselves as just looking at Mona Lisa.
  • Even though some not even looked. Or when they did, they did it in a peculiar way. If you want to tell a story, you have to know your audience. http://www.tudorgirba.com/blog/the-audienceis-your-friend And you have to know how they see the world.
  • And if you think you know your audience and how it sees the world, think again. Your audience will never be the same and it will never seize to surprise you. The first step is to figure out what your audience is? What do they expect? What are their values? who is your audience? message message message message message message message message message messagemessage message message message message message message message message message message message message message message After you think you know your audience, choose your message. Any thing can be “sold” in several ways. Some are more obvious than others. message message message message message message message message message message message message message message message message message message message message message message message messagemessage message message message message message message message message message message message message message message message message message message message message message message message message message message You should choose the message that matches your audience and your contextual goal. The message does not have to be as comprehensive as the material it covers. Its goal is to focus the story.
  • one message Strive to choose one message. Not two, not one and a half. One. A 30 seconds ad has one punch line. A good movie has one single message that summarizes the main point (of course, is the movie is not Pulp Fiction). So should your talk have just one core message. Bring plenty of evidence, but focus on one message. Ads have one message. Most movies have one message. Sometimes the message is directly in the title.
  • Modeling History to Understand Software Evolution Inauguraldissertation der Philosophisch-naturwissenschaftlichen Fakultät der Universität Bern To provide a generic meta-model for expressing software evolution analyses, we need to recognize evolution as an explicit phenomenon and model it as a first class entity. You might say that ads and movies are just for entertaining. But, a PhD dissertation is also about one thesis. 3-5 years of work and all you get to defend is one single statement. vorgelegt von Tudor Gîrba von Rumänien Leiter der Arbeit: Prof. Dr. Stéphane Ducasse Prof. Dr. Oscar Nierstrasz Institut für Informatik und angewandte Mathematik Strive to choose one message. one message Slides used to be called visual aids. The difference between the two terms is that “slides” describes the technology, while “visual aids” describes the goal. slides These days, it is a must for a talk to be accompanied with slides. slides are visual aids Slides used to be called visual aids. The difference between the two terms is that “slides” describes the technology, while “visual aids” describes the goal. We focused so much on getting the technology right, that we forgot about the goal. Always have the goal in mind.
  • These days, it is a must for a talk to be accompanied with slides. slides are visual Slides used to be called visual aids. The difference between the two terms is that “slides” describes the technology, while “visual aids” describes the goal. We focused so much on getting the technology right, that we forgot about the goal. Always have the goal in mind. aids Let’s take an example. Important sign • • • • • www.tudorgirba.com At this sign, stop, look around and proceed if no other car is coming your way. Imagine driving. What would you do if you would see this sign at a crossroad? Important!!!! The cars coming from the other directions will not have to stop. This sign was put here by the authorities in charge. This sign concerns vehicles only. Pedestrians should look at the signs dedicated to them. This sign should not be touched or hindered in any way. Any violation is punishable according to the law. © Tudor Girba Zurich - April 23, 2013 50 STOP What about if you see this one? There is no doubt as to what you have to do. There are three reasons for this: - it is big so that we notice it - it is red so that we pay attention, and - it is so distinct and simple that it leaves no place for confusion. it only conveys the relevant information. The difference between the two signs is that one is detailed but only the other one is actually effective in traffic. STOP Slides should be like traffic signs: - They should stay on the side, - They should come to our attention for a very brief period, and - They should become invisible. How to achieve that?
  • few details The good news is that not all details are important. In fact, only few details are important. are important When it comes to the English language, the Elements of Style is a book that should not be missed. omit needless words we sell fresh fish here fresh fish here
  • fresh fish fresh You can almost not go wrong removing details. fresh
  • for sale: baby shoes, never worn Ernest Hemingway http://en.wikipedia.org/wiki/ For_sale:_baby_shoes,_never_worn Twitter can be a great medium to exercise conciseness. This message is exactly 140 characters long. design is not the abundance of simplicity it is the absence of complexity http://www.amazon.com/Elements-GraphicDesign-Space-Architecture/dp/1581152507
  • emphasizing everything IS emphasizing nothing One particular graphic design resource that is most often forgotten is whitespace. whitespace Whitespace is defined by the objects inside. Whitespace is not necessarily white.
  • What is background and what is foreground? What about now? One small difference solves the conflict. You now perceive two blobs.
  • But, is whitespace a wasted space? No. If you fill it completely, you lose everything. Whitespace can guide your eyes. For example, this arrangement implies no particular reading order. This one, however, will guide your eye line by line. … and this one, column by column.
  • Let’s take a chart y x Simply not filling the whitespace reveals the data. y x Less can be even more. y x http://www.edwardtufte.com/tufte/books_vdqi remove chart junk increase data ink
  • whitespace is a resource a resource whitespace is whitespace is a resource whitespace is a resource whitespace is whitespace whitespace whitespace is a resource whitespace is a resource whitespace is a resourcea resourceis a resource is a resource whitespace is a is a a resource whitespace is a resource whitespacewhitespace is a resource whitespace whitespace resource a resource whitespace is a whitespace is whitespaceresource resourceaisresource is a resourceis is resource is awhitespace whitespace is isresource whitespaceresource awhitespace is a is whitespace a is a resource iswhitespace whitespace resourceresource resource a resource a resource a resource whitespace is a is a resource whitespacewhitespace whitespace is a is a resource whitespace whitespace resource whitespace isisaaresource whitespace is a is a resource whitespace whitespace is a is a resourceresourceis a resource whitespacewhitespace is a resource whitespacea resource resource whitespace is whitespace is a resource whitespace is a resource whitespace whitespace is a resource a resource whitespace is a resource whitespacewhitespace is a resourcewhitespaceaisresource is a resource whitespace iswhitespaceaisresource is a resource whitespace is a resource whitespace is a resource whitespacewhitespace is whitespace is a whitespace is a resource is a resourceis a resource is a resourceis a resource whitespace whitespace whitespace whitespaceresource a resource is a resource whitespace is a resource whitespace is a resource whitespace is a resource whitespace is a resource whitespace is is resource whitespace is a resource whitespace is a resourcea a resource whitespace whitespace a resourcea is whitespace is a resource resource whitespace is a whitespace is a resource whitespace is iswhitespaceresource whitespace whitespace a resource resource whitespace resource a is is whitespaceais aaresource resource whitespaceresource is a is a is whitespace is a whitespace isis whitespace resource is a whitespace aisresource a resource whitespaceais a resourceresource whitespaceresource a resource resource is awhitespace a a resource is is is a resource resourcewhitespace whitespace whitespace whitespace whitespace whitespace is aisresource whitespace isisaaresourcearesourceis a resource is is is awhitespacewhitespace whitespace isresource resource whitespace resource aa resource a is whitespace is resource resource is is whitespace a whitespaceisawhitespaceisresource is resource whitespacea is is a resource whitespace is a resource resource whitespace resource whitespaceresource resourcewhitespace resource whitespace a resourcea resource resourcewhitespace is is whitespace whitespacewhitespace iswhitespace a whitespacewhitespaceresourceresource whitespaceisiswhitespace is iswhitespaceisresource isiswhitespaceaisresource a resource aaresource resource whitespace is a resource whitespaceiswhitespaceisawhitespaceisaaa a resource a a whitespace is aaresource isresource is resource resource whitespaceisiswhitespace aisisaa resourceresourceaisaresource is whitespace iswhitespaceiswhitespace resourceresourcewhitespaceais a resource whitespaceresourceisaresourcewhitespaceis isaaresource resource a resource a is whitespace whitespace iswhitespace whitespaceresourceaaresourceresourceresourceresource a resource whitespace resourcewhitespace a resource whitespaceiswhitespace resourceresource resourcewhitespace resource whitespaceresource aaaaawhitespaceiswhitespaceresourceaa resource is iswhitespaceis aa iswhitespace isaaresource a resource resourcewhitespace is whitespaceiswhitespace aisresource whitespacewhitespaceawhitespaceais a resource is whitespacewhitespace whitespacewhitespacewhitespaceresourceisawhitespaceawhitespace is isisa aresource aaaaresource awhitespacewhitespaceisaisresource whitespacewhitespaceisisaaresourceiswhitespace isisiswhitespaceaisresource resource a resource whitespaceresourceawhitespace iswhitespaceresource a resource whitespaceis is isresourcewhitespacewhitespaceresource is resourceais is whitespace a whitespace whitespaceresourceis aawhitespaceresource a resource whitespacewhitespacearesourceresourcewhitespacewhitespace is a resource is resource whitespace is resource is a whitespace a whitespace is resource resource is isis a whitespaceaaisresourcearesourceaawhitespacewhitespaceresourceresource iswhitespace resourcewhitespace a aaisresource aa resourceisresource whitespace whitespace whitespace whitespaceresource aisresourceis is is resourceis whitespace is resourceaawhitespaceis aaresourceresource whitespaceresource iswhitespaceaisresource isiswhitespace is isaa resource iswhitespacewhitespaceis is a resource resource whitespace is a whitespace isiswhitespace whitespacewhitespaceresourcea resourcea resourceaaresourceresource whitespace resource a a resourceresource whitespace resource whitespaceiswhitespace is a resource resourcewhitespace whitespace is a resource iswhitespace whitespace isisisresource is a resourceresource a resource whitespacewhitespace whitespacea whitespace is a whitespace whitespace isaa awhitespaceresourceis a aresourceis isaaresource whitespace whitespaceresourcewhitespaceisisawhitespaceresource whitespace aaresource isisa isisawhitespace aisaaresource is a is a a whitespace whitespace is is resource whitespace resource is resource resource is a resource resource resource whitespace isresource whitespace whitespace resource resource whitespaceiswhitespace resourceawhitespaceisiswhitespace is a resource whitespace whitespaceresource aaresourceiswhitespaceresource aiswhitespace is a resource resource whitespaceresource a resource whitespaceisisaaresource is a resource whitespace is a whitespace whitespace a whitespace a whitespace resource whitespace is a a whitespace whitespace isisisaresource is whitespace a is whitespace whitespace a resource a iswhitespace whitespace is aisresource resource whitespace whitespace iswhitespaceresource whitespace whitespace is aresource is whitespaceaa is a resourceresourceisisaaresourceisresource resource whitespace resource whitespace is resource resource a a whitespaceresourceis whitespace is whitespacewhitespaceisisa aresource whitespaceis a isresourceresource awhitespaceresource a is a resource is resource a whitespace a whitespace resource resource whitespace is aaresource is resource is resource a isisaa resource whitespaceresourceis is a resource whitespaceaaisisa resource whitespaceisis a whitespace is aaresourcea resourcewhitespace a resource whitespace aisaaresource resource whitespacewhitespaceresourcea resource whitespaceis whitespacewhitespaceisisaaresourcea whitespaceiswhitespaceaisresource whitespace is whitespaceis resource a resource whitespace resource whitespace whitespacearesource resource isis aisresource whitespace whitespace is resource a a resource resource resourceresource is whitespace whitespace isisaaresource resource a resource a is whitespaceresource iswhitespace is a resource aisresource whitespace is a aresource is whitespace whitespace whitespace is whitespace isis whitespaceaisresource whitespace isais resource is ais a resource whitespace resourcewhitespace a is resource a resource resource whitespace isaawhitespace resource a is a whitespacewhitespaceresource is aawhitespacewhitespace whitespacewhitespaceaisresource resource whitespace awhitespacewhitespace whitespace iswhitespaceis a resource isis resource resource a resource whitespacewhitespace iswhitespace whitespacewhitespace resource a resource whitespaceaisis is aiswhitespace iswhitespaceresource resourceresource resource resourcewhitespace whitespace whitespace whitespacewhitespaceaaisresourceisresource whitespacea isa aresourceresource is whitespace aresourcewhitespace is isaaresource a is a whitespace a resourceresource resource resource whitespace iswhitespace resource whitespacea is is whitespace isisawhitespacea awhitespacewhitespace isisaa resource whitespace is resourcea resourceis a resourceisresource is a whitespaceais a whitespacewhitespaceresourcewhitespaceaisresource resource whitespaceresourceawhitespace resourcewhitespace resourceresource whitespacewhitespace whitespace is aaresource whitespaceaiswhitespace is isisa isresourcewhitespace whitespaceaiswhitespaceis a resourceisaa resource whitespaceresource whitespace is resourceresource aresource is a a resource whitespace whitespace aisresourcewhitespaceawhitespaceaiswhitespace is is a resource whitespaceresource is aisresource whitespace aaisresource a whitespacewhitespace resource a resource whitespace resource is resource resourcewhitespace is a a resource whitespace is iswhitespaceresourceisresourcea resourceis a resourcea resource is a whitespace is a resource whitespaceresourcewhitespace is whitespace whitespace is whitespace is is is is aaresource is a a resource a iswhitespace is resource a resource whitespace whitespace is a isa aresource whitespacewhitespaceis aaresource resourceresource whitespace resource whitespace is resource whitespace is a resource whitespaceais aa resource resource whitespace isis a resource a resource a resource whitespace iswhitespace is a whitespace resource is whitespace whitespace is whitespace is a whitespace is a resourceresource whitespace is a resource whitespace is a resource is a resource whitespace is a resource whitespace iswhitespace is a resource a resource a resource whitespace is a resource whitespace whitespaceais is a resource whitespace resource whitespace is a resource whitespaceresource whitespaceresource whitespace is a is whitespace is ais is ais a resource whitespace resource whitespace a resource whitespace whitespace is a resourceresource whitespace is a resource whitespace is whitespace is a resource is a resource whitespace is ais a resource resource whitespace is a resource a whitespace whitespace is a resource whitespace is a resource whitespace is a resource whitespace is a resourceresource is a resource whitespace is aisresource whitespace a whitespace is a resource whitespace resource whitespace is a whitespace is a resource http://www.tudorgirba.com/blog/empty-yourslides http://www.youtube.com/watch?v=aeXAcwriid0 fill it for a reason One thing to remember is that slides are not documents. They do not have the same purpose and they do not have the same capabilities. As such, they should not be treated in the same way. If you feel the need to rely on a template like this, you are probably doing something wrong. Why exactly do we see so many slides that resemble documents? Take a look at what we see when we open the slideware program. The default template wants us to enter a title and some content in form of bullets. It is difficult to not put too many things on a slide, because the default look of PowerPoint urges you to add them. Most templates just go along these lines. Bullet points are not evil. They are just not the answer to everything. And they are especially not the answer to effective slide design.
  • The projector is a different medium than the screen. projector = screen On the one hand, the projector has a much poorer resolution, and as the distances from which it is being watched differ greatly, we can only rely on it to deliver very few details accurately. On the other hand, the projector offers an opportunity: it allows us to focus on just one thing, and we can control the advance. This is an important characteristic that should be used So, next time you open your slideware program ... Start the design of slides from an empty canvas. Do not let the default document metaphor influence your choice. Take control. On the one hand, a slide is a poorer graphical than a printed document. On the other hand, their dynamic nature offer an opportunity: focus. A slide should encapsulate one concept and focus the attention of the audience.
  • When each slide encapsulates a point, the story is in between these points. the tween in be story is http://www.iwm-kmrc.de/workshops/ visualization/sweller.pdf Text and slides • • • • www.tudorgirba.com http://www.smh.com.au/news/technology/ powerpoint-presentations-a-disaster/ 2007/04/03/1175366240499.html The more text there is on a slide, the more I will tend to speak it as it is written on the slide. But, you can read a text much faster than I can speak it. In such situations, my speech becomes noise as you rather prefer to just go ahead and read it by yourself. That is the reason why slides should not have text that competes with my speech, but rather be as visual as possible to complement it. • If I would read this to you, you would likely be reading this line while I would still be somewhere in the middle of the text. © Tudor Girba Zurich - April 23, 2013 90 One assumption is that slides must also carry the message in the absence of the speaker, and hence most of the content must be on the slides. The result is lots of bullet points and lots of text. notes will set you free However, lots of text competes with the spoken words because we can just read faster than we speak. And we want the audience to hear what we have to say. Another option is to put the text in the notes and provide slides with notes for as printouts. http://www.iwm-kmrc.de/workshops/visualization/sweller.pdf Text and slides • • • • • www.tudorgirba.com http://www.smh.com.au/news/technology/powerpoint-presentations-a-disaster/ 2007/04/03/1175366240499.html The more text there is on a slide, the more I will tend to speak it as it is written on the slide. But, you can read a text much faster than I can speak it. In such situations, my speech becomes noise as you rather prefer to just go ahead and read it by yourself. That is the reason why slides should not have text that competes with my speech, but rather be as visual as possible to complement it. If I would read this to you, you would likely be reading this line while I would still be somewhere in the middle of the text. © Tudor Girba Zurich - April 23, 2013 1 One assumption is that slides must also carry the message in the absence of the speaker, and hence most of the content must be on the slides. The result is lots of bullet points and lots of text. However, lots of text competes with the spoken words because we can just read faster than we speak. And we want the audience to hear what we have to say. notes will set you free Another option is to put the text in the notes and provide slides with notes for as printouts. This is how the previous two slides look like when they are printed with notes.
  • When points are encapsulated in a slide, transition is what brings cohesion to the story. trans ition The slides overview is perhaps the most useful tool in your slideware because it is the one that has the potential to reveal the story. One rule of thumb is that if you cannot see what a slide is about in the overview, you probably have too much on it. Use the presenter tools to take notice of the next slide. This is the simplest approach to control the transition between these points. slides are visual aids
  • Beside being visual, slides should be just aids. They should only complement the talk, not replace it. slides are visual aids This is how an empty slide looks like. And this is how it looks on a white. You should be able to deliver your message without slides. The audience is your friend and it wants you to succeed because if you would not succeed they would lose time. And who likes losing time these days? http://www.tudorgirba.com/blog/the-audienceis-your-friend slides are visual aids
  • Recommended resources. m zen.co e.com tation presen art blog.du http://presentationzen.com http://thebackofthenapkin.com http://blog.duarte.com kin.com ap kofthen thebac tudorgirba.com/blog A great place to find examples of amazing talks is www.ted.com. d.com www.te http://www.tudorgirba.com/blog/ted-talks http://www.tudorgirba.com/blog/favorite-tedtalks-posted-until-2008 http://www.tudorgirba.com/blog/favorite-tedtalks-posted-in-2009 http://www.ted.com/talks/lang/en/ ken_robinson_says_schools_kill_creativity.html http://www.tudorgirba.com/blog/to-pause-ornot-to-pause presenting is storytelling www.tudorgirba.com What about talks that pertain technical facts? Does all this fluffy theory apply to them? what about technical talks?
  • Facts alone are boring. And that is a fact. Regardless of how boring a subject appears to be, there always is at least one exciting story hidden in there. any fact has its own story Hans Rosling: http://www.ted.com/talks/ hans_rosling_shows_the_best_stats_you_ve_e ver_seen.html content form Designing and building the form is typically perceived as an effort that comes after the main effort of designing and building the content. That is not an optimal process, because we cannot reason about content in the absence of form. Content and form must co-exist, because neither has value without the other.
  • • The histories of class C and E have almost the same methods were added or removed, therefore the values LENOM 1..5 value, because of the similar amount of of ENOM , EENOM 1..5 and of LENOM 1..5 of this changes in1..5 their recent history. The ENOM 1..5 valclass history are 0. ues differ heavily because class E was changed more • throughout its history than class C. B and of class E, In the histories of class A, of class 7 methods were detected as being added or removed. 3.2 The class histories differ in their LENOM 1..5 and Measuring Yesterday’s Weather EENOM 1..5 values which means that (i) the changes Before defining the YW history of we introduce the noare more recent in the function, class B, (ii) in class E tion of top n of entities out of an original setandof entities the changes occurred in its early history, S (iii) in the with the highestclass A the changes were scattered through history of M measurement value: the history more evenly. ˛ 2 4 (i > 1; t , t 3 1) 6 D yesterdayWeatherHits := 0. 2 2 2 8 > 1, > < > 0, > : 2 T op (S, t1) T op (S, t2) 6= ; T op (S, t1) T opEEN OMi..n (S, t2) = ; 2 previousClassHistoriesSortedByWENM do: [ :each | (each value getWENM ~= x) ifTrue: [ future present past valuesCount := valuesCount + 1. x:= each value getWENM]. version (valuesCount < topPreviousWENM) ifTrue: versions [ versions previousVersionsTopHistories addLast: each] Legend: ]. last2VersionsTopHistories := OrderedCollection new. a candidate history (i.e., in Top f class candie highYesterf these elongs on i at ong the rsion i. unction he two Figure 4. The detection of a Yesterday’s Weather hit. last2VersionsTopHistories := OrderedCollection new. last2Versions := OrderedCollection new. last2Versions addLast: (self allVersionNames at: (i-1)). last2Versions addLast: (self allVersionNames at: i). last2HistoriesSortedByENM := (self classHistories 10 11 System 2 3 4 5 6 7 8 9 selectFromReferenceVersionCollection: last2Versions) sortBy: [:a :b | a value getWENM >= b value getWENM]. Versions x := last2HistoriesSortedByENM first value getENM. valuesCount := 0. last2HistoriesSortedByENM do: [ :each | (each value getENM ~= x) ifTrue: [ valuesCount := valuesCount 6 hits + 1. x:= each value getENM]. (valuesCount < YW = topCurrentENM) ifTrue: [ = 60% last2VersionsTopHistories addLast: each] 10 possible hits ]. previousVersionsTopHistoriesNames := previousVersionsTopHistories collect: [ :each | each value name]. over := false. Figure last2VersionsTopHistories do: [:each | overall Yesterday’s 5. The computation of the ((previousVersionsTopHistoriesNames includes: (each value name)) and: [over not]) ifTrue: [ yesterdayWeatherHits := yesterdayWeatherHits + 1. over := true]. ]. ]. ^yesterdayWeatherHits/(self size - 1) asFloat. (6) =; hits for 5 4 E Figure 4. The detection of a1Yesterday’s Weather hit. 1 2 3 G System 4 2 Versions past versions F 4 3 5 7 4 5 4 3 6 present version 7 6 8 6 9 3 hit 10 11 future versions Legend: 6 in a candidate history (i.e.,hits YW = One way to explain Topis =via formulas. It can be it LENOM60% ) 1..i 10 possible hits daunting. a really-changed history (i.e., in TopEENOM ) i..n Figure 5. The computation of the overall Yesterday’s Figure Weather. 4. The detection of a Yesterday’s Weather hit. Example. In Figure 4 we present an example of how we check System 2 3 4 5 6 7 8 9 10 11 Yesterday’s Weather with respect to a certain version. We display Versions 6 versions of a system with 7 classes (A-G). We want to check Yesterday’s Weather when considering the 4th version to be the present one. Therefore, the versions between 1 to 3 are the past versions, and the 5th and 6th=are the 6 hits ones. 60% future YW = We also consider the dimensions of the candidates and the 10 possible hits really-changed set to be 3, that is, we want to check the assump- Figure 5. The computation of the overall Yesterday’s Weather. (6) 4 ) previousClassHistoriesSortedByWENM do: [ :each | (each value getWENM ~= x) ifTrue: [ valuesCount := valuesCount + 1. x:= each value getWENM]. (valuesCount < topPreviousWENM) ifTrue: [ previousVersionsTopHistories addLast: each] ]. Weather. ) ) last2Versions := OrderedCollection new. LENOM1..i last2Versions addLast: (self allVersionNames at: (i-1)). last2Versions addLast: (self allVersionNames at: i). last2HistoriesSortedByENM := (self classHistories a really-changed history (i.e., in TopEENOM selectFromReferenceVersionCollection: last2Versions) i..n (5) (7) I actually did not use formulas. Once I had the basic Figure 4 we present an example of how we check Example. Inidea, I just implemented it. Yesterday’s Weather with respect the implementation to measure And I could use to a certain version. We display 6 versions of a system with 7 classes (A-G). We want to check my assumption. It turned out to be my Yesterday’s Weather when considering the 4th version that the present one. Therefore, the versions between 1 to 3 are the past assumption was right: versions, and the 5th and 6th are the future ones. On consider systems of the candidates and the We also some the dimensions it makes sense, on others it really-changed not.be 3, that is, we want to check the assumpdoes set to previousVersionsTopHistories := OrderedCollection new. he noentities 4 Y Wi (S, t1 , t2 ) 3 n 26 a candidate history (i.e., in TopLENOM 2 x := previousClassHistoriesSortedByWENM first value getWENM. hit valuesCount := 0. 5 3 4 4 6 3 1 i=2 1..i 1 3 3 4 C http://scg.unibe.ch/archive/papers/ a really-changed history (i.e., in TopEENOM Girb04bYesterdayWeather.pdf) 2 2 2 2 2 2 i..n D (2 to: self allVersionNames size) | Yesterday’s 'this algorithm is do: [: iand complex'. Weather is computed by counting the hits for self smelly: too big all versions and dividing them by5the total number of pos1 4 E previousClassHistoriesSortedByWENM := (self classHistories selectFromReferenceVersionCollection: sible hits. Thus,:bwea obtain the>= currentVersions) sortBy: [:a | value getWENM result as a percentage with b value getWENM]. currentVersions addLast: (self allVersionNames values between 0% and 100%. 3 at: i). 1 2 4 7 6 F G 5 Pn 2 B 7 1 2 yesterdayWeatherProbabilityWithTopPreviousWENM: topPreviousWENM 3 9 9 topCurrentENM 4 | currentVersions previousClassHistoriesSortedByWENM 1..i LEN OM yesterdayWeatherHits last2VersionsTopHistories last2Versions EEN OMi..n last2HistoriesSortedByENM x valuesCount previousVersionsTopHistories 1 12 i 3 4 C previousVersionsTopHistoriesNames over | 3 LEN OM1..i currentVersions := OrderedCollection new. currentVersions addLast: (self allVersionNames at: 1). 2 B andTopCurrentENM: Y W (S, t , t ) = e same ount of .5 vald more 5 2 1 2 4 F Let me tell you a7story about the first paper I hit ever 3wrote. 5It was about predicting changes in 4 4 6 3 G a software system using a Yesterday’s Weather 2 past 4 3 5 6 A future 7 present versions metaphor. 3 version versions Legend: 2 4 9 9 changes in their recent history. The ENOM 1..5 values system version i, we compare the set of more For a differ heavily because class E was changed class throughout its history LENOM histories with the highest than class C.values (the candi1..i dates set) with the set of the class histories with the high3.2 Measuring Yesterday’s Weather est EENOM i..n values (the really-changed set). The Yesterday’s Weather assumption holds if the intersection of these setsBefore empty, that is at least one class history belongs is not defining the YW function, we introduce the notion of sets.nThis means out of an original set S of entities to both top of entities that for the classes in version i at with the of the recently most changed classes is among the least one highest M measurement value: most changed classes in the near˛future relative to version i. ˛ S 0 S, ˛ If the assumption holds for version i0 ✓= n we have a hit. ˛ |S | (0 <formally define the Yesterday’s Weather hit function n < 1) T opM (S, n) = S 0 ˛ (5) We ˛ 8x 2 S 0 , 8y 2 S S 0 ˛ ˛ M (x) > M (y) applied on version i of a system history S and given the two threshold values t1 and t2 as follows: For a system version i, we compare the set of class histories t1 , t2 the highest LENOM 1..i values (the candi(i > 1; with 1) dates set) with the set 8 the class histories (S, t1) highof with the > > 1, T opLEN OM1..i < est EENOM i..n values (the really-changed set). t2) 6=YesterT opWeatheri..n (S, The ; EEN OM applied on We formally define, tthe= Yesterday’s Y Wi (S, (6) day’s Weather t1 2 ) > 0, T opLEN OM1..i (S, t1)of these assumption holds if the intersection > : n versions of a system history S given two threshold values; T opone class history = EEN OMi..n (S, t2) belongs sets is not empty, that is at least t1 and t2 as in Equation 7. to both sets. This means that for the classes in version i at Yesterday’s Weather is computed by counting the hits for least one of the recently most changed classes is among the all (n > 2; t1 ,and dividing them by the total number of posversions t2 1) most changed classes in the near future relative to version i. Pn sible hits. Thus, we obtain the 1result(S, t1 , t2 ) Y W as a percentage with If the assumption tholds = version ii we have a hit. (7) Y W1..n (S, 1 , t2 ) for i=2 values between 0% and 100%. n 2 We formally define the Yesterday’s Weather hit function applied on version i of a system history S and given the two threshold values t1 and t2 as follows: 4 A 1 1) Y W1..n (S, t1 , t2 ) = ˛ S 0 ✓ S, ˛ • < n <histories of(S, n) = S 0 ˛ |SE| = n almost the same The 1) T op class C and 0 have ˛ (0 (5) M 0 0 ˛ LENOM 1..5 value, because 8x 2 S ,similar amount of ˛ of the 8y 2 S S ˛ M (x) > M (y) lass E, moved. .5 and hanges class E ) in the hrough 2 E (n > 2; t1 , t2 yesterday’s weather s D the that no values of this =; t1 andDt2 as in Equation 7. 2 2 2 Example. In Figure 4 we present an example of how we check Yesterday’s Weather with respect to a certain version. We display 6 versions of a system with 7 classes (A-G). We want to check Yesterday’s Weather when considering the 4th version to be the present one. Therefore, the versions between 1 to 3 are the past But, something bothered me. Even if Smalltalk is a beautifully concise language, my code was loong.
  • yesterdayWeatherProbabilityWithTopPreviousWENM: topPreviousWENM andTopCurrentENM: topCurrentENM | currentVersions previousClassHistoriesSortedByWENM yesterdayWeatherHits last2VersionsTopHistories last2Versions last2HistoriesSortedByENM x valuesCount previousVersionsTopHistories previousVersionsTopHistoriesNames over | currentVersions := OrderedCollection new. currentVersions addLast: (self allVersionNames at: 1). yesterdayWeatherHits := 0. (2 to: self allVersionNames size) do: [: i | self smelly: 'this algorithm is too big and complex'. previousClassHistoriesSortedByWENM := (self classHistories selectFromReferenceVersionCollection: currentVersions) sortBy: [:a :b | a value getWENM >= b value getWENM]. currentVersions addLast: (self allVersionNames at: i). previousVersionsTopHistories := OrderedCollection new. x := previousClassHistoriesSortedByWENM first value getWENM. valuesCount := 0. previousClassHistoriesSortedByWENM do: [ :each | (each value getWENM ~= x) ifTrue: [ valuesCount := valuesCount + 1. x:= each value getWENM]. (valuesCount < topPreviousWENM) ifTrue: [ previousVersionsTopHistories addLast: each] ]. last2VersionsTopHistories := OrderedCollection new. last2Versions := OrderedCollection new. last2Versions addLast: (self allVersionNames at: (i-1)). last2Versions addLast: (self allVersionNames at: i). last2HistoriesSortedByENM := (self classHistories selectFromReferenceVersionCollection: last2Versions) And I knew it was ugly and that I should do something about it. I just did not know what. yesterdayWeatherProbabilityWithTopPreviousWENM: topPreviousWENM andTopCurrentENM: topCurrentENM | currentVersions previousClassHistoriesSortedByWENM yesterdayWeatherHits last2VersionsTopHistories last2Versions last2HistoriesSortedByENM x valuesCount previousVersionsTopHistories previousVersionsTopHistoriesNames over | currentVersions := OrderedCollection new. currentVersions addLast: (self allVersionNames at: 1). And the worse thing of all was that nobody could really understand what I was doing. Of course, the paper got rejected, too. yesterdayWeatherHits := 0. (2 to: self allVersionNames size) do: [: i | self smelly: 'this algorithm is too big and complex'. previousClassHistoriesSortedByWENM := (self classHistories selectFromReferenceVersionCollection: currentVersions) sortBy: [:a :b | a value getWENM >= b value getWENM]. currentVersions addLast: (self allVersionNames at: i). previousVersionsTopHistories := OrderedCollection new. x := previousClassHistoriesSortedByWENM first value getWENM. valuesCount := 0. previousClassHistoriesSortedByWENM do: [ :each | (each value getWENM ~= x) ifTrue: [ valuesCount := valuesCount + 1. x:= each value getWENM]. (valuesCount < topPreviousWENM) ifTrue: [ previousVersionsTopHistories addLast: each] ]. last2VersionsTopHistories := OrderedCollection new. last2Versions := OrderedCollection new. last2Versions addLast: (self allVersionNames at: (i-1)). last2Versions addLast: (self allVersionNames at: i). last2HistoriesSortedByENM := (self classHistories selectFromReferenceVersionCollection: last2Versions) 30% 90% I stepped back. What exactly was I doing? I thought of a metaphor. In Switzerland, using yesterday’s weather as a predictor for today’s weather is a poor prediction model. However, in Sahara, it is a great way to predict weather, given that most days look like the previous one. This prediction model is contextual to the place, or system, in which it is to be applied. So, past YesterdayWeatherHit(present): past:=all.topChanged(beginning, present) future:=all.topChanged(present, end) past.intersect(future).notEmpty() future I eventually created a small picture and based on that I rethought the model. It turned out that the algorithm to check the assumption for each day was three lines long.
  • Figure 4. The detection of a Yesterday’s Weather hit. For a system version i, we compare the set of class histories with During the displayed history (5 versions) of class D the the highest LENOM 1..i values (the candi• We formally define the Yesterday’s Weather applied on dates set) with the set of the class histories with the highn versions of a system history S given two threshold values est EENOM i..nnumber of methods remained 2. We consider that no values (the really-changed set). The YesterSystem 2 3 4 5 6 7 8 9 10 11 t1 and t2 as in Equation 7. day’s Weather methods wereifadded or removed, therefore the values assumption holds the intersection of these Versions sets is not empty, ENOM least, one class history and of LENOM of that is at 1..5 EENOM 1..5 belongs of this 1..5 to both sets. This means that for the classes in version i at (n > 2; t1 , t2 1) least one of theclass history are 0.classes is among the recently most changed 6 hits Pn 1 most changed classes in the near future relative to version i. past future YW = 10 possible hits = 60% W (S, t , t ) = i=2 Y Wi (S, t1 , t2 ) Y 1..n (7) • In the for version we have a hit. 1 2 If the assumption holds histories iof class A, of class B and of class E, n 2 We formally define the Yesterday’s Weather hit function added or removed. 7 methods were detected as being applied on version i of a system history S and given the two Figure 5. and The class histories differ in their LENOM 1..5 The computation of the overall Yesterday’s threshold values t1 and t2 as follows: Weather. The pseudocode matches the math formula, too. EENOM 1..5 values which means that (i) the changes 2 4 3 A 1) are more recent in the history of class B, (ii) in class E 8 > 1, T opLEN OM (S, t1) > the changes occurred in(S, t2) 6= ; history, Example. Inin the4 we present an example of how we check its early and (iii) Figure < T opEEN OM 2 3 B Y Wi (S, t1 , t2 ) = (6) Yesterday’s through history>of classLEN OM changes were scattered Weather with respect to a certain version. We display > 0, T op A the (S, t1) : T opEEN OM (S, t2) = ; 6 versions of a system with 7 classes (A-G). We want to check the history more evenly. Yesterday’s Weather when considering the 4th version to be the 6 7 4 9 9 3 3 4 2 2 2 1 5 4 1..i i..n 1..i i..n 1 C Yesterday’s Weather is computed by counting the hits for present one. Therefore, the versions between 1 to 3 are the past all versions• The histories of classnumber ofE have almost and thesame 6th are the future ones. and dividing them by the total C and posversions, the 5th and sible hits. Thus, we obtain the result as a percentage with We amount the the 2 2 LENOM 1..5 value, because of the similar also considerof dimensions of D candidates and the 2 values between 0% and 100%. really-changed set to be 3, that is, we want to check the assump- changes in their recent history. The ENOM 1..5 values differ heavily because class E was changed more 4 throughout its history than class C. 3.2 E F (0 < n < 1) of class E, r removed. M 1..5 and he changes ) in class E (iii) in the ed through t the same amount of M 1..5 valnged more class D the der that no the values 1..5 the this ce of noof entities of class E, r removed. M 1..5 and (5) he S 0 changes ) in class E (iii) in the et of class ed through the candih the highThe Yestert the same on of these amount of ry 1..5 valM belongs version i at nged more among the o version i. it. it function ven the two ce noof entities (5) (6) et of class the hits for the candiber of posh the high- ˛ ˛ ˛ ˛ 0˛ T opM (S, n) = S ˛ ˛ ˛ S 0 ✓YW = 3 / 8 = 37% S, |S 0 | = n 8x 2 S 0 , 8y 2 S S 0 M (x) > M (y) Yesterday’s Weather applied 2 2 (i > 1; t1 , t2 2 2 2 7 3 6 3 4 5 4 6 3 hit 1..i a really-changed history (i.e., in TopEENOM (5) ) i..n ) Figure 4. The detection of a Yesterday’s Weather hit. System 2 3 4 5 6 7 8 9 10 11 Versions YW = 6 hits = 60% 10 possible hits Math formulas became more understandable. Figure 5. The computation of the overall Yesterday’s Weather. 2 1) 8 > 1, 1T opLEN OM1..i (S, t1) 5 4 > < T opEEN OMi..n (S, t2) 6= ; Y Wi (S, t1 , t2 ) = (6) 0, T opLEN OM1..i (S, t1) > : 1 2 4> 7T op 3 6 (S, t2) = ; F We formally define the Yesterday’s Weather applied on EEN OMi..n Example. In Figure 4 we present an example of how we check Yesterday’s Weather with respect to a certain version. We display 6 versions of a system with 7 classes (A-G). We want to check Yesterday’s Weather when considering the 4th version to be the present one. Therefore, the versions between 1 to 3 are the past versions, and the 5th and 6th are the future ones. We also consider the dimensions of the candidates and the really-changed set to be 3, that is, we want to check the assump- n versions of a system history S given two threshold values hit 3 4 5 4 6 3 Yesterday’s Weather is t1 andG 2 as in Equation 7. computed by counting the hits for t all versions and dividing them by the future number of postotal present past versions sible hits.>Thus,t2 obtain version the result versions as a percentage with (n 2; t1 , we 1) Legend: values between 0% and 100%.Pn 1 Y Wi (S, t1 , t2 ) i=2 Y W1..n (S, t1 , t2 ) = a candidate history (i.e., in TopLENOM n 2 1..i a really-changed history (i.e., in TopEENOM 2 4 a candidate history (i.e., in TopLENOM E A 2 Obtaining the overall value was just an future present past versions version versions average. Legend: Wehit formally define the hit hit hit hit hit hit on n versions of a system history S given two threshold values For a system version i, we compare= the 8set87% class YW 7 / = of t1 and t2 as in Equation 7. histories with the highest LENOM 1..i values (the candidates set)> 2; t ,the set of the class histories with the highwith t (n 1) 1 2 est EENOM i..n values (the really-changed set). The YesterPn 1 Y Wi (S, t1 , t2 ) day’s Weather assumption )holds i=2the intersection of these if Y W1..n (S, t1 , t2 = (7) n 2 sets is not empty, that is at least one class history belongs to both sets. This means that for the classes in version i at least one of the recently most changed classes is among the 2 4 3 5 6 7 most A changed classes in the near future relative to version i. If the assumption holds for version i we have a hit. 2 3 4 9 9 B We formally define the Yesterday’s Weather hit function applied on version i of a system history S and given the two 1 3 3 4 C threshold values t1 and t2 as follows: D 1 G Measuring Yesterday’s Weather Before defining the YW function, we introduce the notion of top n of entities out of an original set S of entities with hit highest M measurement value: hit the hit class D the der that no the values 1..5 of this 1) t2) 6= ; S 1)0 t2) = ; 5 (i > 1; t1 , t2 4 3 5 6 (7) ) i..n ) 4 7 Figure 4. The detection of a Yesterday’s Weather hit. 2 C 3 4 9 9 1 B 3 3 4 yWFor: yesterdayCheck for: tomorrowCheck ^ ( 3 to: self versions size ) collect: [ :i | | System2 22 32 4 5 2 6 7 28 92 10 11 D yesterday tomorrow | yesterday := self Versions selectByExpression: yesterdayCheck appliedFromVersionIndex: 1 1 5 4 E toVersionIndexAndPresentInIt: i - 1. tomorrow := self selectByExpression: tomorrowCheck 1 2appliedFromVersionIndexAndPresentInIt: i - 1 4 76 hits 3 = 60% 6 F YW = toVersionIndex: self versions size. yesterday intersectWith: 10 possible]hits tomorrow hit 3 4 Figure 5. past G 5 4 present 6 3 future The computation of yWFor: yesterdayCheck for: tomorrowCheckthe overall Yesterday’s versions version versions | hits | Weather. Legend: hits := (self detailedYWFor: yesterdayCheck for: tomorrowCheck) sum: [ :each | each isEmpty a candidate history (i.e., in TopLENOM ) ifTrue: [0] 1..i ifFalse: [1]]. ^ hits / (self versions size - 2) Example. InaFigure 4 we present an example of how we check really-changed history (i.e., in TopEENOM ) i..n Yesterday’s Weather with respect to a certain version. We display 6 versions of a system with 7 classes (A-G). We want to check Yesterday’s Weather when considering the 4th Weather to be the Figure 4. The detection of a Yesterday’s version hit. present one. Therefore, the versions between 1 to 3 are the past versions, and the 5th and 6th are the future ones. And, in the end, even the actual implementation became similarly simple (and even more generic). All in all, it was because I could not present the idea, that I had to rethink the approach altogether. Of course, I could have just accepted that the problem is just too complex and cannot be made simpler, but that is never a good enough point.
  • Content and form must co-exist, because neither has value without the other. content form If you think design is for designers, please change your mind. Design is not a job. Not anymore. Today it is a responsibility. are you a designer? Specifically related to talks, it is in everyone’s best interest to have interesting talks. No audience wants to be bored or be left uninterested. When you take the stand, the responsibility falls on you. presenting is storytelling www.tudorgirba.com moosetechnology.org humane-assessment.com www.tudorgirba.com demo-driven.com pharo.org
  • Tudor Gîrba www.tudorgirba.com http://creativecommons.org/licenses/by-nc-sa/3.0/