 So it's a real honor to have Neil Ford over here. He has nothing to do with Ford Motors, I believe That's correct Let's do that works Neil is one of the most infinite influential person when it comes to You know programmers developers Doing a lot of interesting work on you know some of his books are really influential So it's been a real honor reading his books and having him over here in person this time. Thanks, Neil Can we get the slides flipped over, please? There we go All right. Good morning My name is Neil Ford and my keynote this morning is called when geek leaks Which is going to require some explanation of course and I will start with defining the word geek And there are several definitions of geek out in the world One is a carnival former who does things like bites the the heads off of live chickens That is not the kind of geek. I'm talking about Another geek that you might think I'm talking about is a computer expert or enthusiast And I actually take offense by this definition which I got from Webster's that says considered offensive and used by outsiders I don't think computer experts being called geek should be offensive to outsiders That's kind of offensive to me as a self-professed geek, but this is not the kind of geek. I'm talking about either This is the other definition that I have some complaints with a particularly Dislikable person proceed to be overly intellectual. I think that's also not a good definition of geek But I'm going to use this definition as a verb now generally I don't like using nouns as verbs I don't like the word antiquing as a verb for example But I think this verb works really nicely to spend inordinate amount of time utterly immersed in an activity that seems not that Interesting to your spouse and your family and all the other people you're around This is the kind of geek that I'm talking about and in fact the topic of my keynote this morning It's called when geek leaks what I'm talking about here is when some really serious devotion some really serious Geekery from one problem domain leaks all over another problem domain And creates really interesting synergies when that happens and what I'm going to do during this talk is give you a bunch of examples of Geek leaking from one domain to the other both in the technology world and some surprising Non-technological places where that happens And let me give you an example a real world example of this The kind of thing that drives my wife crazy Let's say that you go to a McDonald's There's one in the mall next door here And you look up on the big board and you see a big Mac and you think that looks pretty good I think I'll have a big Mac. I'll choose number one, please But then when you take it back to your table what actually shows up is this And so I was remarking on this phenomenon to my wife and I said well This is really a very simple problem You see the thing on the lighted board is the class and what we got is an instantiation of that class And apparently some sort of horrible exception happened during that instantiation to end us up what we have now This is exactly the kind of statement that makes her wife my wife look at me and roll her eyes when I say stuff like this And so I generally only say stuff like this in front of friendly crowds like this not so much to my wife But there's another really great personal exemplar of This idea of geek leaks and I'm going to interspersed little anecdotes and stories about him throughout this keynote And that person is a scientist named Richard Feynman He was a scientist who was born in the US in the early part of the 1900s And he was very famous as a physicist. He worked at Los Alamos He was said to have had this characteristic of synesthesia where when he looked at equations He could actually see them in a different way than other people Synesthesia is this ability for some people to see sounds or to hear colors He would look at equations and say it doesn't look right and not be able to tell you why but in fact It's not right in some vague undefined way He was extraordinarily good at that and part of that training came as a high school student He used to do a lot of math bowls where high school students would get together and compete with one another on really difficult math Problem, so he got a huge breadth of understanding of mathematics when he was a young man He also worked on the atom bomb project at Los Alamos He was a he also won the Nobel Prize And in fact the very first books that came out about Richard Feynman were not really Biographies at all but stories about his life particularly as a child It turns out there were lots and lots of really fascinating anecdotes about Richard Feynman He loved to tell these stories. In fact, he would tell these stories of the drop of a hat Here's one of the classic Feynman stories when he was a little kid Radios were very popular. This is before television And he learned how the mechanics of radios work and would work because it wasn't that complex He loved to tinker with things and so he would go around to neighbors who had acting up radios and offered to fix them For free just so he'd get a chance to tinker with it And there was one particular case where radio would Come on and make a really bad sound and then it would clear up about a minute later And he thought about it for while and said oh, I know it's a tube That's bad you just need to replace that because it when it warms up it works And he got this reputation as the kid who fixes radios by thinking Because he just thought about the problem and he said oh, I think I know what the answer is And so that was a famous story he told the rest of his life He also won the Nobel Prize relatively early in his career Which is a very beneficial thing for him because he was very very eccentric and it turns out if you act really strange You're just a kook, but if you're a Nobel Prize winner, and you act strange. You're just eccentric And that was good for him because he was eccentric for his whole life And I'll give you some examples of his eccentricities and other things as we go along he actually one of things he won the Nobel Prize for it was really serious Innovations and discoveries in quantum mechanics. In fact, this is a Feynman diagram, which is a well-known technique in quantum mechanics He also did interesting work in computers and other places And he was also really famous for solving other people's problems And this is really where part of geek leaks comes into Richard Feynman's life because he would take problems from any domain He ended up solving problems in biology and computation and chemistry Other scientists from other fields would come to him with problems and he would look at it He couldn't always come up with solutions But very often he could because he had this really wide-ranging mind He never really tied himself to one form of geekery. He let his geek leak everywhere And in fact he was part of the biggest geek leak experiment that has happened to mankind so far Which is taking a mathematical formula and turning it into the most destructive force ever seen on the planet That is geek leaks a mathematical formula becoming a military weapon He turned into innocuous formula and the most powerful destructive force in the planet But let's talk about some other examples of geek leaks An article that was published very recently in Forbes Says that every company is now a software company It's this realization that software is becoming a really important competency for companies now If you own a major airline and you don't have a first-class website and a first-class mobile presence You're going to lose the marketplace That means that every company now in some way or another has become a software company because Software is so strategically important to the business's business part of companies Another really odd place that geek leaks Happens in my latest book This is the book that I just released last October called presentation patterns What I did in this book was apply gang of four design patterns to doing technical presentations like this So in some ways this book is really design patterns plus presentations in time Slightology trying to take the concept of patterns and anti patterns and apply them to things like presentations We thought about making it a recipe's book, but we didn't because we look at a recipe a Recipe is a discrete set of steps Which is a very specific thing to build a dish Now we can't build a book to tell you how to do a particular keynote or particular business presentation But we can tell you some lower level details about things like these the instructions that you assume for recipes That's the level of our patterns So you can actually use our patterns to create recipes for particular kinds of talks The other reason that we really wanted to take this patterns concept Was it because we really wanted to drag along anti patterns because the tools that are out there like keynote and PowerPoint and Open office no one ever gives you real training on how to use those tools You went to school for years to learn mathematics and language so that you can write and do mathematics But nobody ever told you how to effectively use a tool like keynote and PowerPoint And in fact the tools lead you into a bunch of really bad places And I realized this back in 2007 This is one of my slides from 2007 And I was really proud of this Because at the time I had a nice custom background I had the 3d bullets with gold and silver shading on them And I did a talk at a conference and I got any evaluation back that said really nice content But old-fashioned slides I said old-fashioned slides. Did you see the 3d bullets that I had on the slide and you still called it old fashioned And so that forced me to start reevaluating What is an effective way to do presentations and start ignoring the things that tools were doing for me or to me And I have since come to view this as an anti pattern that we call the bullet riddled corpse In fact, this was the first anti pattern that I came up with I was looking at someone's slide and I said That's just death because it's so boring. It's like a corpse with bullets in it. It's a bullet riddled corpse Here's another example of an anti pattern that a lot of conferences try to impose on people This is for one of my talks from 2002 And what we call flood marks That people want to decorate your slide with they're like water marks, but there's so many of them They're flood marks so much so that I got defensive and started adding my own crap It's like if they're gonna add a bunch of crap I'm gonna add some of my own crap too so I can be in the game of course This is not making your presentation any better We also get things like this this actually implements a bunch of different anti patterns It's the bullet riddle corpse that has flood marks on it and that silly swoopy thing up at the top I hate the silly swoopy thing up at the top This is thought works on it and the little border at the bottom because if I need to put a picture on this slide Now I have a horrible decision to make Do I make it small enough to avoid the swoopy thing in the upper right hand corner and leave that there? Which is supposed to be on every slide or do I make it big enough to see and overlay the swoopy thing up in the corner? I say ditch the swoopy thing in the corner because it's not buying me anything except noise that I don't need But let me do some patterns and give you an idea of what a presentation pattern looks like one of our patterns is One called context keeper And here's an example of how that works Some of you saw my builder on technology radar talk that I did a couple of days ago This is actually a set of slides from that talk What I did in that talk is talk about litmus test that you can use to decide should you choose a technology or not? And I have these litmus strips on here. That is the context keeper So what I'm going to do is talk about several of these techniques And I leave that litmus paper in place for each one of these so as you look at these words You can see oh this is still part of the litmus test because that litmus paper shows up in every one of these slides That keeps the context in people's minds that oh we're still talking about litmus test without having to put a lot of very other Obvious kind of markers on their agenda slides and stuff like that And so that's the example of a context keeper A visual element that repeats slide after slide that carries the context along with it But you'll notice we actually saw almost exactly this slide about five slides ago This is actually another pattern Called backtracking It's very easy when it within a presentation to introduce a subject and then digress on it a little bit and then come right back to that Slide that gives you a nice sense of progress within the talk and reestablish is where we are with the agenda And is a really nice a way to keep a context alive You'll also notice Periodically My slides go black if you talk to people that Talk about Doing public presentations like speak right in places like that Toastmasters that will tell you shouldn't use slides Because it distracts from use the speaker and I say that's wrong You should use slides, but when you want the attention to focus back to you Make them blank That's just a blank slide But by doing that it creates a pause in the visuals that allows the focus to come back to me if I need to say Something really important. This is what we call the invisibility pattern and we also like to get rid of stale content I'd much rather it go to a black slide and talk over that and have something up there that is no longer applicable Here's another example of geek leaks This is a really terrific book Called what the doormouth said how the 60s counterculture shaped the personal computer industry Virtually none of you are alive in the 1960s And don't really realize that the personal computer was not a foregone conclusion at all because in the 40s and 50s or 50s and 60s Computers were big giant corporate things Watson of IBM very famously said they're only the need for four or five computers in the entire world But this idea of freeing computing power for individuals was kind of a radical idea and the hippie counterculture that existed in California really made that come to pass So we may recognize this guy. This is a very famous computer scientist named John McCarthy the creator or discoverer Whichever version you lack of lisp. He also founded this the Stanford Artificial intelligence laboratory sale the Stanford AI lab and Those guys did a lot of really interesting innovation. This is a picture of these guys at a reunion a few years ago But these guys were also very much hippies. They were living in a hippie culture So these guys were very involved in the anti-war movement in the United States at the time They were very involved in the kind of hippie culture with Grateful Dead and drug culture, etc These are the guys who created the internet. In fact, they're pretty sure that the very first E-commerce transaction over the internet was for marijuana Between two of these guys now whether it's an e-commerce transaction or not I think they actually bartered something so whether it was actually e-commerce or not or just bartering. We're not sure We're pretty sure that was the first real transaction to happen over the internet But they're thinking informed a lot of the things that we have implications for today Now I've spent a little bit of a misspent youth. I don't know how popular this activity was in India But when I was 12 years old one of the things that me and my friends used to like to do is to make prank phone calls Oh, what fun to pick up the phone and ask someone if they have Prince Albert in a can or if their refrigerator is running or something like that But you notice you don't get many prank phone calls anymore. That's an art form that has died out It's an art form that has died out because when I was a kid telephones look like this But now they look like this and they all have caller ID And it really sucks making prank phone calls when people can just call you right back and say stop doing that It takes all the fun out of it in fact, there's a telephone now in fact Seeing this phone reminds me my friend Andy Hunt said that he had a babysitter come to his house one time and say mr Hunt, why is your phone connected to the wall? Are you afraid someone's going to steal it? But this is exactly why We have spam email Because the guys in the 60s who designed email never bothered putting caller ID in Because they didn't need to they knew every single person who is using email when they created it So they didn't bother bother putting things like caller ID in it and that made spam possible because it's trivial to spoof Where it comes from if email had caller ID Spam wouldn't exist because you could email them back and say stop sending me this Let's go back to Richard Feynman and another geek leak story for mr. Feynman One of the things that Richard Feynman did was work at Los Alamos on the atomic bomb project a Manhattan project And he did some physics there, but he also did a lot of kind of utility stuff around Los Alamos as well He has a lot of famous stories from Los Alamos, of course One of his famous stories from Los Alamos is of course security was very tight at Los Alamos And they had a perimeter fence and one day he saw there was a hole in the fence out back And he reported it the next day the hole is still there he reported again The next day the hole is still there so he said I know how to solve this problem And so he crawled out the hole in the fence and walked back around and came in the front gate said hello to the two guards Crawled out the hole in the fence came in through the front gate said hi to the guards the third time through they said okay stop How are you doing that you're leaving you're coming in without leaving you got to stop that and that of course got The hole in the fence fixed because he showed them the hole in the fence and it was fixed The other fascinating thing he did at Los Alamos Was to create the world's first parallel computer Which is remarkable considering the computers weren't invented yet If you look up the word computer in the dictionary in 1940 it says person who uses a Computational device like an adding machine we had computers before 1940 We just didn't have electronic computers and they had serious number crunching to do at Los Alamos for lots of things And so they had big huge rooms full of mostly women because all the men were at war with adding machines and slide rules And what they would do is give each of these women a problem and they would work through it But what Feynman relies is that some of them are really good at logarithms And some were better at addition and using the calculators And so he created a parallel computer where each person just did one thing and he would start a problem And it would work through the parallel computer and if the mistake was made he figured out a technique So he could stall the pipeline find out where the mistake was made and reinsert the card there without having to start it All the way back up at the front and in fact some of the ideas He came up with creating a human computer at Los Alamos. He later patented for electronic parallel computing in the 1980s It's a great example of geek leaks with Richard Feynman figuring out how to basically create something that nobody had ever created before To solve a particular problem. Here's another example of geek leaks Sociology bleeding over into software development and the power of habit This is a book that just recently came out and it cites a really fascinating study with mice it turns out that if you wire up a mouse and Send them to a maze and look at their brain activity That's what these scientists were doing and what they did was create the exact same shape maze It was a t-shape and there was always chocolate to the left And so they'd left the mouse in the maze and they would go and find the chocolate always on the left hand branch And they measured their brain activity while they were doing that So here's the mouse's brain activity from the time the gate opened going through the first section the second section and discovering the chocolate But they found a fascinating thing That if the chocolate is always on the left that very soon the rats cognitive Expenditure falls significantly because it becomes a habit It turns out there's a part of our brain wired to do complex series of things as habits The more you do them the more that part of your brain takes over Freeing up the rest of your brain to think about other problems And when you think about it from evolutionary standpoint, this makes perfect sense we get in a habit of doing things like searching for food and walking and Talking and walking at the same time and we can subsend that to this lower part of our brain and free up our cognitive abilities to think about other things This is really important on things like projects Where habits of things like checking in really often and testing become Literally less taxing on your brain the more you do them if you get in a good habit of doing those things even very Complex things like always checking in after you finish something those become habits And you can use less mental energy freeing it up to solve actual business problems and other things So habits and software are very very important another interesting place where geek leaks Comes from the continuous delivery world Because in a lot of ways this is the software world leaking all over your business now before I go too far into this I need to Clear up some confusing terminology I think the agile world officially has too many things with continuous in their name now and it's getting kind of confusing So let's talk about the continuous things we have in the software world and the first one of course is continuous integration and I've done a workshop with Martin Fowler a couple of times and he tells a really interesting story about Continuous integration that I'll relate on his behalf here. It's about the very first software project He ever saw he grew up in Birmingham in the UK and his father had a friend who was running a software project And he gave Martin a tour to let him see what a software project was like And he said he came to this big huge room and There's a bunch of guys on mainframe terminals and the guy who's giving the tour said that all the developers there were currently Integrating all the code that finished coding about six months ago They were currently integrating and it had already taken longer than they thought and they weren't sure when they were going to be done And Martin said he didn't know what integrating was but he'd left with the impression of wow That must be a really important part of the software process of all these professional developers It's taken longer than they thought and they're not even sure when they're going to get done That must be this really critical nuanced part of software development Of course we look back at that now in horror At the way you people used to write software where they would go off in isolation Literally for weeks and months at a time and then try to integrate it all together at the end And it's not like they thought this is the cleverest way to do it most likely it was you know what? That's really hard. Let's just do the easy stuff and we'll deal with that stuff when we get there But it turns out their whole categories of things in software that the longer you put them off the worst they get And integration is one of those things and that was the idea behind continuous integration when the XP guy started talking about this It's the idea of integrate early and often the original mantra was Everybody has to integrate all their code at least once a day And people who are in traditional software projects couldn't believe that you do something something so crazy as that They said have you seen how painful integration is and you want to do that every day your life is going to be horrible if you do that It turns out when you do it all the time It's not painful at all because you have little tiny things to fix rather than big huge things to fix And of course this has become like Kleenex and Xerox We don't even think of continuous integration as this practice anymore because they have all this machinery to do this We have continuous integration servers and all these practices around this and this is grown into a first-class engineering discipline And in fact nobody would voluntarily go back to the manual integration stuff of the past What's happened over time is that people have used that machinery and built more and more Sophistication into continuous integration. We started out by saying okay Here's a canonical unified build and we'll run some tests. We can run some more tests Let's do some user acceptance tests You know we can automate some stress tests and other things and you build up such a Sophistication in your continuous integration pipeline that you can't think of any other way to torture your code to verify it before It's released and so you say let's just deploy it as the final stage and that's continuous deployment Deploy is the final stage of continuous integration And a lot of companies are doing this especially startups places like that and this is why this sounds crazily risky It's actually much less risky than it sounds, but this is probably still too much for most people But there's a seed of a really fantastic idea here, which is this idea of continuous delivery That software is always in a deployable state Take the idea of continuous deployment. Just don't automatically pull the trigger at the end Your completion for a task is not you got some tests to pass It is you have an installable bundle of software at the far end of this automated process that has verified it in as many Ways as we can possibly think of for a long time Agilists were mostly concerned with this part of projects getting Analysis and design right and do iterative development and doing testing and showcasing and all these tight feedback loops But then for a lot of places software went to a really unadulterate place They went to a centralized QA was integrated with all the other agile and sometimes non-algebra projects and And a lot of time manual processes here and then it goes to IT and operations Where they're required to release this thing and keep it alive and operating for a long time This is what we've known as the last mile and agile kind of ignored that for a long time as somebody else's problem But it turns out it's not somebody else's problem if your goal is to have stable software You have to take all those things into account. That's exactly what continuous delivery is trying to do And this is a great example of the software process leaking all over your boardroom Because to make this work all of a sudden you have to start breaking down these silos that have been creating a lot of Organizations and letting the software geekery leak through places that has traditionally not leaked through In the continuous delivery world we have something like the commit stage But this is only the first step and a pipeline of things that need to happen The next stage that comes along and all the subsequent stages We start taking control of things like configuring the environment Meaning we're going to programmatically build up machinery as part of this process as part of this Automate more and more and more of the downstream behavior even manual stages the first part of that Starts with read the configuration out of version control so that we can build Programmatically build up that infrastructure so that entire categories of problems that used to manifest only when it got to Operations now start manifesting much earlier and therefore much cheaper to fix a lot of companies end up With siloed structures Sometimes these are soft silos. Sometimes they're very hard silos But this is a really good example of what I call a human resources optimized organization This makes it really easy on the HR department to hire people because DBAs have a certain salary range They have a certain job description They have a certain job board that you go post things to you go look for DBAs a certain place You know how to interview DBAs and so it makes it really easy on your HR department to organize your company like this and For most departments this doesn't matter because your accounting department your marketing department share very little work project Processes intimately with one another But everyone who's working on a software project has to have really tight feedback loops That's the other thing that continuous delivery is trying to do is melt all these things away and create feedback loops Here instead. This is basically the software process leaking all over your HR department You have to convince your HR department that we have to stop optimizing around how we hire and rather how we do work the other mantra of course Continuous delivery is this idea of continuous improvement and everyone here I'm sure I've seen the dimming cycle at some point this plan do check and act plan something do it Evaluate it and then use that to feed back into the next thing that you want to do But you know this is really nothing more Than the scientific method That's all the dimming process really is it's hypothesized Do experiment gather results and take those findings and feed it back into a new hypothesis That's one of the reasons that agile work so well. This is so closely modeled after the scientific process Speaking of the scientific process One of the things that Feynman did When he was Los Alamos was convinced everyone there that he had taught himself to become a professional safecracker And he did in fact teach himself to be a professional safecracker Well, what he discovered was that professional safecrackers don't actually do the things you see in movies with stethoscopes And you know feeling tumblers and all that stuff. It's all social engineering And so he told everyone that he'd he'd sanded his fingertips down to the point where he could feel tumblers But what he really did was discover that most combinations are someone's birthday And so he did an analysis and figured out all the possible birthday combinations on the dial He'd go in someone's office and try all the possible date combinations until he found it for that office He'd make a note of it and then in the future He'd walk in when the person was there and kind of casually walk over to their safe and spin it a few times and open it and say Oh look, I'm a safecracker He never actually did know how to crack a safe But he knew how to tell a really good story and convince people that he could crack a safe So he was a little bit of a criminal geek leaking across the scientist as well Which brings me to one of the places the sources of how you can find things That you can geek leak. I Think I stole this idea from Rich Hickey Listening to him to hawk, but I've kind of formalized it into this thing that I'm calling the jeweler's hammer Here's the idea behind the jeweler's hammer if you take a diamond Well-known gym cutters can strike the diamond at a particular place and get it to split so that you create Potentially more valuable pieces out of it because it has better shape and you get the true essence of the diamond In fact, you may get several pieces that are worth more than the original piece And that's exactly what I'm going to do is take something that looks like a single idea But find just the place to hit it so that it cracks open and you can understand the separate pieces more effectively I'll give you three examples of this in fact One comes from the presentation patterns book one is about architecture and design and the other is about a really interesting thing in the closure world So first I'll talk about presentation patterns, which I talked about before the jeweler's hammer was actually one of our core Design principles of the presentation patterns book because we realized fairly early on What is the difference between? presentations versus pros What's the difference in creating keynote or PowerPoint for something versus using word to create something? The difference is time I'm doing a presentation. I control I control how fast or how slow you see things whereas if you're flipping through a PowerPoint deck or reading through a word document you control the pace at which you see things and that was the first jeweler's hammer strike that we made is this distinction between an info deck versus a presentation an Info deck is a document created in keynote or PowerPoint Designed to be flipped through never designed to be presented But just designed to be flipped through whereas the presentation Manipulates time in the way that you manipulate time and presentations are with animations and transitions Animation is movement and revelation within a slide so that you just saw an animation and a transition is moving between slides And I'm about to show you a transition as I move off this slide But by splitting these two things together you can actually create a new kind of information medium and Martin Fowler is taking huge advantage of this he has created Started creating a series of info decks which are web based which are designed to be flipped through They're very graphical in nature, so they're not written as traditional pros But they are designed to be flipped through and you control the exposition speed on them This is a really great example of taking a tool or concept like slides and turning it into a different kind of medium and the jeweler's hammer split between Time allows you to do that We also use this jeweler's hammer split to split between demonstrations versus presentations in Technical conferences like this and we further subdivide this into live demos versus dead demos Dead demos are ones that someone is live coding something takes a really long time or they're making a lot of mistakes or Something like this. They're using a tool that takes an enormous amount of time to start up and do other stuff We have a pattern for that that we call lip-sync So what I've done instead of interacting with this tool myself What I've done is taken a video of it and placed it on the slide and now as the presenter I don't have to concentrate on getting all this stuff to work. I can actually talk about it while it's going on I don't have to worry if the internet connection works because internet connections never work when you're trying to do a Presentation on stage like this this worked great in my hotel room when I snapped this and put it in my presentation And now I have the freedom and the concentration to give you my full attention as I'm talking about it The other nice thing about this is you can cut out meaningless stuff One of my co-authors on presentation patterns had a demo that lasted 19 minutes and 30 seconds That he was doing is one of his technical talks And he realized that a lot of that was starting up databases and starting up Application servers and going to browsers and browsing to local hosts and all that stuff and by using this lip-sync pattern He reduced 19 minutes and 30 seconds of his presentation Down to a minute and 30 seconds of his presentation Leaving him 18 minutes of brand new place to put material Allowing him to make that talk much deeper and much richer because he's wasting a lot less of people's time These give you the ability to have much higher information density Last one of the anti-patterns I'll talk about is one we call going meta Which is talking about your presentation doing your presentation. I'm getting dangerously close to doing that So I'll stop Next I want to talk about It's interesting thing in closure There's a really terrific keynote that rich he key did at strange loop two years ago called simple made easy And in it he explains some of the design philosophy behind closure And he exposed something that I had kind of wondered about for a really long time and he finally Explained in a way that made perfect sense He explained in this keynote What makes threading so incredibly difficult in java? And it turns out It's variables When they created variables in java They created them before they had created the concept of threads in java And they made a bunch of a bunch of assumptions about how variables work in java That when you try to apply threading to it breaks everything And so what they had to do rather than change the concept of variable when they introduced threading They had to add this concept of a synchronized block And now anybody who's done multi-threaded programming in java knows how incredibly difficult it is to get that right The problem is The variables have too many responsibilities in java because they were responsible for both the identity of the thing And its value and its state So you basically have three things piled on top of what variables do in java And so what closure did was use the jeweler's hammer to split variables apart In closure you have an identity which never changes Once you have a reference to that identity and that identity points to a particular value in time And you can change it to point to another value in time And closure has an explicit semantic to do that In fact closure always does this mutation within a transaction Closure has software transactional memory. So it will do a transaction here for you And the side effect of this is that closure does for multi-threading what java did for garbage collection Meaning you can write perfectly safe multi-threaded applications in closure and never once think about it Because the runtime is handling this using software transactional memory to ensure that this always works correctly And you never have to worry about synchronized blocks and all those other silly things And in fact it gives you some other benefits as well Because one of the things you cannot do with variables in java is say I have two variables Make sure they both get set or neither of them get set Variables are completely independent entities in java and there's no way to tie them together But with stm and closure you can tie them together and say make sure all these values get mutated or none of them get mutated Of course, this is all underneath stuff. You never actually see this in fact the way that you consume. This is extremely simple This is closure code to update a reference called message to add another message on to it So this says this is a function that says add message it takes a message as a parameter Says alter messages, which is a list of messages can join the new message on to the end of it But do it inside a transaction This is how you crank up software transactions in closure do it within do sync And in fact all the threading problems will be taken care of for you In fact, if you try to do this mutation without doing it inside a transaction, it won't let you It will give you an exception because all mutation must happen within a transaction But because of that closure now handles threading for you So if you write pure closure programs, you can write multi threaded applications and never worry about it And a great example of this power comes from a talk that rich is doing this year called reducers What he has done is figured out a way to change the fundamental map operation and closure Which is traditionally needed order He's figured out a way to remove the the requirement for an ordered collection And so now in closure 1.5, which just came out yesterday, by the way When you do any kind of map operation it automatically uses all the processes on your machine You don't have to do anything to make that happen. That's all part of the runtime It's all guaranteed to be thread safe because the runtime handles those details So what rich did was take the jeweler's hammer and split variables and end up creating two things That are much more valuable than the variable itself The last of these I'll talk about is a distinction I made in my architecture When my emergent design talk yesterday Is this distinction between architecture and design? I refer to an article that martin wrote back in 2006, I think called who needs an architect Who was describing the role of architects and agile projects And he gave several different definitions of architecture within this paper Including my favorite one, which is the architectural elements or the things that are hard to change later Also with the caveat that there should be as few of those things as possible This leads to this concept that both rebecca and I talked about this distinction Between evolutionary architecture and emergent design It turns out this is a jeweler's hammer definition Because if you split architecture and design like this you can start thinking about those things independently Very often we think about those things as the same thing now But if you can split them with a jeweler's hammer, you can actually do different techniques on design than you can do architecture In fact, rebecca yesterday did a talk on evolutionary architecture and I did a talk on emergent design So having that split means that you can now think about those things separately And come up with interesting ideas around them Another great example of this is the architectural level And in fact a way that you can apply jeweler's hammer is look at the things in your application that are ridiculously complicated And think to yourself is there a way you can split those and make them less complicated One of the things that's horrifically complicated right now is crud It shouldn't be but it is it's terrible in a lot of cases doing crud and high performance systems But there's a jeweler's hammer solution of this called cqrs the command query responsibility segregation Where you really have two pieces one that reads stuff and one that writes stuff and they're separate from one another It turns out that scalability and other things are much easier in cqrs systems than they are traditional crud systems Because you split responsibilities away from one another you've jeweler's hammer those that one big thing crud into separate pieces So let's go back to mr. Fine members just a second. He of course as I said earlier won the Nobel prize Here he is on a stamp in the u.s And he was generally a very happy guy in fact He was also well known for playing bongos. He did he had a lot of very odd hobbies One of them was bongos. He used to play bongo drums a lot. He would get in drum circles and play bongos He was universally known as kind of a happy go lucky guy never really, you know bad mood or sour or anything like that Except for just a few times in his life Now mostly i've been talking about geek leaks as a positive phenomenon But there are cases where it turns bad We'll just talk about a few of those One of them Is coming up with overly clever solutions There's a great story that i just ran across again recently Told by john bitley about donnell canuth. He's a very famous computer scientist John bitley posed this challenge I've got this set of words. It was actually a shakespeare in play. I think I want you to write me an A code that will go through and give me the number of word occurrences for each word in this big body of work So donnell canuth said okay, I'll take that challenge and he wrote a 10 page pascal program and literate program And ended up inventing a new algorithm along the way to do that And john bitley solved it with a six line bash script And it turns out the six line bash script was much more efficient and much faster and took way less memory and resources Than the custom handwritten algorithm that donnell canuth wrote And canuth after the fact acknowledged that yeah, bitley's was a way better solution this problem He'd basically let his desire to create something grandiose and complex Cloud his idea of what is the really simple solution to this problem And this is a trap as developers we have to constantly be aware of Here's another bad way that geek leaks The secret formula that destroyed wall street This is an article in wired magazine This is actually the formula That all these financial guys were using to take really really terrible debt and make it look like really nice debt By taking one of these factors and basically saying, you know, there's a lot of doubt there Let's just assume that there's no doubt there and then we can build a lot of stuff on top of it And of course you saw the results of that There's an interesting side effect of this though because right about the time this started coming out in 2008 and 2009 There was a corresponding kind of bump in software development particularly in mobile development Which probably had to do a lot with the rising mobile market But also may have had one of my colleagues believes that a lot of this is because The the really smart people who used to be trying to destroy the world and wall street Decided to stop doing that and moved into the software business It started writing applications for iPads and iPhones and stuff like that And doing something useful with their lives rather than trying to enrich people and destroy economies at the same time So we've used a good thing moving from financial engineering to real engineering putting their talents to a better use sometimes cute things Turn kind of ugly the very first time I did this keynote I did it at devox in belgium And the guys right before me showed a little demonstration Of robots. So you saw robots down here and that's the big screen that shows them This is me trying to film it on my iphone camera and try to get them all in line, but you can see there There are robots Dancing from java code they'd written java code that got these robots to basically dance like a boy band I Thought that was pretty cool And so it made me interested I started looking around what other kind of stuff for people doing robotics now And then I became terrified Because you cannot believe the kind of robots they're building now This is a robot that is designed to follow a soldier in the field and carry packs and weapons and other things This thing is completely autonomous They now have a robot that can run an obstacle course faster than human can They have a robot that can climb walls and cling to walls and do other interesting stuff The advancements here not just in us all over the world samsung has some really wicked military robots And here's the problem Concurrently you can also see that we have now basically built artificial intelligence to the point where it's as smart as a cockroach And so you're telling me that before long we're going to have cockroach level robots running around with guns That worries me Because I worry about what sort of real bugs might be in that code or not real bugs But software bugs might be in that code, but of course we have a solution to this problem Famous science fiction author and sideburns enthusiast Isaac Asimov gave us the solution to this problem in his book iRobot He said that when we start building robots, we should codify these laws into them to make sure we don't get in trouble with them And he defies these laws that say a robot can't injure a human being through an action allowed them to come to home Harm and a robot must obey orders, etc. These are the the robotic laws But interestingly enough all of his robotics books were basically clever ways that people figured out how to subvert these laws But this seems like kind of a good idea Here's the problem You guys familiar with Roomba Roomba the little robot vacuum cleaner that runs around your floor and just kind of does your whole house This is a Roomba So you by here know how to code those Asimov laws into a Roomba I don't Seems a robot. It's running around your house right now. And I don't know how to code those laws into it In fact my fear is that any robot army is smart enough to understand the three laws would be smart enough to say no At least for right now it looks like dogs have our backs Dogs are out there on the front lines and I'll work against robots right now But we really have to worry when the robots and the cats get together. It's going to be really bad for everybody But this brings up an interesting point and it brings me back to mr. Feynman Because Richard Feynman was there When they blew up the first atomic bomb the test in the desert And all the scientists there were mortified And they became almost instantly mortified and years later Richard Feynman had this quote Technology advances I said with any project like that you continue to work trying to get success having decided to do it But what I did it morally I would say was to not remember the reason I said I was doing it so that when the reason changed Not the slightest thought came into my mind that meant now I have to reconsider why I'm continuing to do this When they started working on the atomic bomb project, there was a clear mandate There was a world war going and it looked really desperate But by the time they finished the war in europe was over and what Feynman was saying was They should have as soon as the original reason for this horrific thing stopped They should have re-evaluated and said should I still be doing this? But they didn't because they got really caught up in the problem They were all geeks and you know how geeks get immersed in problems They got really immersed in trying to solve this problem and the solution of the problem was this horrible horrible thing Many of the scientists after los alamos were very very upset after that And this applies to us too We have gotten off easy up until now as computer scientists Because the things that we create generally can't be used for really really horrific things at least not intentionally But that time is changing You're never completely abstracted away from the things that you build and as people build military robots and continue to build More and more automated things Somebody has to write software for those things and people who write software for them should know what they're writing software for So the last chapter in Feynman's life was another great example of geek leaks The space shuttle challenger Exploded upon uh upon takeoff And they try they put together a panel of people to try to figure out why And the only real scientists they had on panel was Richard Feynman This is the shuttle challenger And Richard Feynman was on this panel. So it was Neil Armstrong and several congressmen and people like that They were not expecting someone like Feynman to come along and actually ask real questions about things and the real question came down to So the problem was when the challenger took off it was about freezing It was almost zero degrees in in florida at that time and they had these rings that held seals in the rocket And there was all these questions about did the rubber seal get hard and cause leakage And they were having all these engineers come up and give all these reasons why the the seals were fine and all this other stuff But Feynman being the classic geek Said i want to try this for myself And so he got a little piece of the o-ring material and he bought a clamp He clamped it together and dropped it in a glass of ice water sitting in front of it And when he came time for him to talk he pulled it out of the ice water and took the clamp off And it didn't spring back He proved with a simple experiment that all these facts that these engineers were saying weren't incorrect Because he exposed it to freezing temperature and proved that that was the problem And in fact, I'll let him say it in his own words Well, I took this stuff that I got out of your seal And I put it in ice water And I discovered that when you put some pressure on it for a while and then undo it It doesn't stretch back. It stays the same dimension in other words For a few seconds at least and more seconds than that There's no resilience in this particular material when it's at a temperature of 32 degrees I believe that has some significance To my problem He's being modest. It has some significance on the problem in that I've now shown you what the problem was Where goggles of all these guys are trying to convince you this is the actual problem And weirdly With that shuttle disaster is the connection to the other shuttle disaster Three presentation patterns, which is a weird version of geek leak all by itself Because there's a pretty good argument to me made that the other space shuttle that came down Was caused by power point The space shuttle columbia took off And they realized when it took off that some of the insulating material broke off and hit the heat tiles And so they convened an emergency meeting with the engineers And asked them this question. Is it safe to bring the space shuttle back? And they're deliverable for that was a power point slide deck And edward tufty in this famous very short book Calls out that power point slide deck as the reason the space shuttle was destroyed And it all comes down to this slide Because if you look at the title of this slide, this is a bullet ridder corpse by the way If you look at the title of this slide review of test data indicates conservatism for tile penetration I mean we don't think it broke for tiles But if you go all the way down here Oops, sorry went one too far don't go all the way there. Let's go one back If you go all the way down here to the fourth bullet in Minor variations in total energy above penetration level can cause significant tile damage The fourth bullet in says we don't know Because the Tolerances are so small that we don't know But the big giant font says it's okay. The little tiny font says we're not sure And the big font run them over and they tried to bring it back into the atmosphere and it blew up Don't think that communication is not important. It's usually not quite this important, but it is really important So I would say embrace the scientific method like Richard Feynman And in fact just like him let geek leak all over the place One of the most fascinating things when I was in university Were the weird synergies between the classes I was taking I always love that taking a history class in an autonomous class At the same time and see how those things are related Take your hobbies and your other passions And see if you can let those leak over your software development because you'll find some really interesting things Try to wield the jeweler's hammer when you have big complex problems Can you break that down into smaller pieces and maybe solve those smaller problems in more elegant ways? As much as we'd like faults are not always nice and neatly organized and sometimes you should embrace that You should embrace the messiness of thought and let some things leak over other things Because sometimes leakage from other from other disciplines can find orthogonal innovation Innovation that you would have never figured out if you just stayed within a particular area But broaden from that area and let other things intersect And you'll find new solutions to problems Allow geek to leak across disciplines to find orthogonal innovation And my last piece of advice is enjoy the rest of the conference Thank you very much. Hope you enjoyed it Do you have announcements? Any ones ready for questions? I just wanted to make a comment This is the first time I'm hearing anybody referring to Feynman in a talk And second is high in some of the one of the books he had some complementary things About software engineering where he said that in challenger program Only the software design group made a good estimate of what the Reliability of this Product is which is a 1 in 200 whereas all the other engineering disciplines say that one in a million and Things like that and he said the software was much closer to what really is Feynman wasn't a fascinating guy, but I I recommend you reading any of those books about Feynman's life He was a really really interesting guy Feynman also said that computer science is not a science Well, you know, it's interesting. Did you bring that up? You notice every science that feels compelled to put science as part of their name is really just kind of a poser Like computer science and social science that we don't call it physics science or chemistry science So he's got probably a point there. I don't know if we're quite to the level of science yet or not, but we're trying One last question anyone All right, you killed it man. That's right All right, thanks very much Neil that was awesome