OK, roi'n fawr i'ch bod ni'n bwysig o'r cyffredin iawn. Why functional program matters? Yn y fath ar ôl, rydw i'w wneud yn cyd-dweithio ar y titul yn rhan o'r cyffredin iawn. Rydw i'n rhoi'n 30 ymlaen o'r eitul, ond rydw i'n gwneud yn cael eu bod yn ddweud, a'r ddweud i'n meddwl am 5 ymlaen. Rydw i'n meddwl i'n meddwl. Rydw i'n meddwl i'n meddwl o'r cyffredin iawn, a dyna'r cwysig yw'r cyfan yma, ond yw'n gweithio i'n ddweud y 25-yrdd yma. Felly, rydyn ni'n meddwl, mae Mary, rydyn ni'n meddwl i'r hynny'n gweithio, yn gweithio yma yn ei ddweud, mae'r ddweud o'r ddweud, maen nhw'n gwneud i'r ddaf i'r hystryg ymdweud o'r ffnwysgol ffnwysgol, yn ymdweud o'r ddweud o'r ddweud o'r ddweud, o'r ddweud, and also some of the papers that have inspired us in particularly. I'm going to take you on that journey with me. Although I'm the one giving the talk, so why functional programming matters as a very well known paper, is it's very popular for many people coming into the field. It's the first paper that they read. Of course it's not when functional programming started. Functional programming started much earlier than that. ynghyd, y byddwn yn edrych gweithio ffêmol yn ffwrdd yn 1940. Ond ydy'r awr, y ffêmol yn fwyaf ar y gweithio'r ffêmol yn 1940 ond mae'r ffêmol ydwi'n meddwl gwahodd. Felly, y bwliant. Rwy'n ymwyaf! Cymru rwy'n bwliant. Ych meddwl cyflym o'r bwliant, mae memes drydych gyda'r brwyddoedd, ac mae'n fyddwch yn cofio'r gallu byddwch yn fwyaf y bwliant. Llywodraeth dyn ni'n bwliant lle mae'n gweld trwy yn gweld trwy a fwyaf If they're going to make choices, they've got to have at least two things to choose between, so let's give them two arguments, we'll call them X and Y. And now, true, we'll just make the first choice, and false, we'll make the second. So, back in the 40s, people thought let's represent booleans this way. And well, do these really work as booleans? If so, we should be able to define if then else. And yes, we can, it's easy. We define if then else to take a boolean, the then branch and the else branch, and it just calls the boolean to make the choice between the then and else branches. So that's great. We've got functions that behave like booleans, we don't need booleans. Well, if we don't need booleans, what about numbers? Who needs them? Here, let's talk about positive integers here. What's a positive integer for? Well, counting loop iterations. Let's see if we can count loop iterations without numbers. So, what I want to do now is I want to define two to be a function that takes a loop body at a starting value and just runs the loop twice. So we apply the function twice to the starting value. So that's going to be my representation of two, and one is going to apply the loop body once, and zero is going to apply it zero times, and so on. So, you can see that for every positive integer, I can construct a function that I claim corresponds to it, but is this actually a good way of representing integers? Can I recover a normal integer given one of these functions? Well, sure I can. All I have to do is call the function and give it a loop body, this is Haskell notation, a loop body that just increments a value starting from the value zero. So, now if I sit in a Haskell interpreter and I call my two function and I give it the increment function and zero's arguments, what do I get? Two, I've converted back to a normal integer. So, there we are. So, I can represent natural numbers this way. Can I do anything with them? Well, look, I can add them together. I can do that like this. How do I add m and n? Well, I'm going to want to construct a loop that iterates f m plus n times and I can do that just by itering f n times and then m times. Okay, that's addition. Cool. Oh, what about multiplication? Well, if sequencing loops gives me addition, nesting loops give me multiplication. Right, so here I'm using, I'm going to iterate m times, that's the outer loop, an inner loop that iterates f n times.  Okay, does this really work? Well, let's try it out. So, I can sit in a Haskell interpreter again, say let's add one to multiply two by two, that should be five and then five times I'll iterate the increment function on zero. Sure enough, we get five. Cool, so I can represent integers and I can do arithmetic on them. Well now, there was a time when every talk on functional programming had to include the factorial function. Here it is. Here is the factorial function, aline 1940. Okay, so factorial n is, here's my if then else. So that's my using functions to model booleans and if n is zero then I'm going to return that function I called one. Otherwise, I'm using my arithmetic implemented by functions to multiply n by recursive call of factorial with decrement n. Does it work? Sure, in the Haskell interpreter I can take factorial of one plus two times two, that's factorial of five and that many times I'll iterate incrementing zero and what do I get? 120, that's right and it's not even terribly slow. So there we are, there's factorial, is it? A couple of auxiliary functions that I haven't shown you there is zero is one of them, that's really easy. How do I tell if one of these functions represents zero? I iterate a loop body that returns false n times starting from true. So if n is zero I'll get true, if it's anything else I'll get false. And the other one I didn't show you was decrementing and the less said about that the better. But you can do it, it works, I promise you. So there we are. We see that booleans, integers and actually any algebraic data type, any data structure can be entirely replaced by functions. That's cool. Why? Well the guy who came up with this was Alonso Church. These are the church encodings of values and what Church wanted to do was to show that functional programming could be a foundation for mathematics. So you didn't need anything else to start off with. You could just start off with functions and then construct everything else that you might want from them. Which is interesting theoretically but this is not just of theoretical interest. It turns out that early versions of the Glasgow Haskell compiler actually implemented data structures this way. Not numbers and booleans of course but other data structures were implemented by functions in this way. Because it turned out that for a while there in the early days this was actually the fastest way of doing it, believe it or not. I remember the guy who discovered that had a different functional language compiler which he built from scratch and to save time he had implemented data structures using the church encodings and then one day he decided to do it properly. And so he built in data structures as we know and love them and the code went slower. That was an uncle John Fairbann. So I should warn you, I've shown you the Haskell shell evaluating these things. If you try it at home you're going to get an error message. GHCI says that the occurs check failed we can't construct an infinite type blah. Okay that sounds kind of serious. It's a little hard to tell just from that message what the problem is though. But don't worry GHCI is very helpful. It tells you it was expecting this type but it got this one. This is the first time I've had a chance to use a three point font on the slide. Okay so now you can see what the problem was I suppose. No don't worry there's more. These are the types of the relevant bindings. So what's going on here is that the tricks I've shown you they work very well in an untyped language and you can do them in Haskell too but they go a little bit beyond what the Haskell type checker can figure out for itself.  You have to add these two lexines in red in order to tell the compiler what the correct type of the factorial function is. And if you do that then all the examples I showed you just go through perfectly. So that's great so in the 40s we could write functional programs. But we couldn't run them. That was kind of a shame wasn't it. So then round about 1960 John McCarthy built the first Lisp implementation and suddenly it was possible to run functional programs for the first time. Here is the factorial function in Lisp. It's pretty similar to the 1940s version. So Lisp wasn't a purely functional language but nevertheless you could do a lot that we think of as functional programming today. Right from the start it had the map function which was called map list in Lisp. So you could map the factorial function down a list of five numbers and sure enough you would get the list of factorials. So higher order functions were in there from the start. And now in the early 60s there was a lot of work going on in the research community to do with functional programming. But I want to skip to a paper from 1965 which is a real classic. The next 700 programming languages by Peter Landon. So Peter Landon was working for Univac at the time and he was aware of no less than 1700 different special programming languages already by 1965. Why were there 1700 languages? Well they were used in over 700 application areas. And Peter Landon thought that even 700 programming languages would be far too many. All that was needed was one. His programming language which he called iSwim for if you see what I mean plus 700 different libraries. That was his idea. So at this time every application area would have its own programming language and that was unnecessary as Landon saw. So he presented iSwim which was a very nice idealised language. Here is the factorial function in iSwim we haven't forgotten that. And it was hugely influential as an early functional language. But I'm not going to focus on iSwim so very much as on another point that Peter Landon made very strongly. Peter Landon said it's not only important that we should be able to express programs it's important that we should be able to reason about them. And he was very interested in equivalences, laws that relate different programs like this one that says that if you map F over the reverse of a list that's the same as reversing the result of mapping F over the list. Now this law is nearly true in Lisp. It's not actually true because if F has side effects then we're going to be performing the calls in a different order and so we may end up with different results. But Landon was very opposed to laws that are nearly true. He thought a law should hold always without question and he even discusses in his paper whether or not that's a good thing. So you could imagine somebody coming along and saying well what's the point of having this law? What's the point of having two programs that do exactly the same thing? Wouldn't it be better if they did different things because then you'd have a choice Landon Thunders? No expressive power should be by design rather than by accident. Yes Mr Landon. So this is really the first paper that emphasised law so much and I think it's a tremendously important idea. So let's skip on a bit further again so there was lots more research going on and then in 1977 John Backers won the Turing Award. Now John Backers is somebody that everybody who studies computer science has heard of because of Backers' normal form for grammars but he won the Turing Award because he was the man who led the development of the first Fortran compiler. Now even by 1977 it was quite popular among computer scientists to be a bit rude about Fortran but that doesn't mean that one should forget what an enormous achievement that first compiler was. It was the first compiler that could generate better machine code than a person could write and in those days when computers were the expensive part all people cared about was efficiency. So Fortran made high level language programming possible and that was a huge step forward. So it was a very well deserved Turing Award and John Backers when you win the Turing Award you get to give a lecture and write a paper about it. So of course John Backers could have written the paper about how they developed the Fortran compiler. I'm sure that's what people expected. I'm sure it would have been a great paper. He wrote one like that later. His Turing Award lecture he didn't talk about Fortran at all. He presented this talk, Can programming be liberated from the von Leumann style which was a manifesto for functional programming and a description of his idealised functional programming language. And this paper is a wonderful read. The opening paragraphs are just fantastic. I've got some of his text on my slides. He starts off, conventional programming languages are growing ever more enormous but not stronger. I think you had Ada in mind in particular at that time. Inherent defects at the most basic level caused them to be both fat and weak. It's terrible, isn't it? What are these defects? Their primitive word at a time style of programming inherited from their common ancestor, the von Leumann computer. So he was very negative about word at a time programming. And he said, because the processor operates on one word at a time our programming languages operate on one word at a time. And that creates this bottleneck between what we want to do and our data. And by this bottleneck he was thinking of the bus basically that connects the processor to memory. And he said, I call this the von Leumann bottleneck. This paper is where that term comes from which has since become so very well known. So next time you're going to buy a computer don't ask how fast the bus is. Ask how fast the von Leumann bottleneck is. What else was wrong with them? Their inability to effectively use powerful combining forms for building new programs from existing ones. What combining forms was he thinking of? Well, I'm going to illustrate a couple of his combining forms with diagrams. So in these diagrams boxes are going to represent functions mapping inputs to outputs and the inputs are coming from the right. Might surprise you a little bit at first. So one of Bax's combining forms he called apply to wall which he wrote as alpha f and the idea here is that if you've got a function f you can apply alpha to it and get a function that takes a list of inputs and just applies f to each one. It's map. So that was one of the forms that he thought was important. Another one he called construction. So here the idea is that you have a number of different functions f1 to f4 at these coloured boxes but you give them all the same input. By making a construction of these functions you get something that when given an input passes it through each of the functions and makes a list of the results. What else was wrong with conventional languages? Their lack of useful mathematical properties for reasoning about programs. So Bax was also very concerned about laws. Here's one of his laws. This represents a composition of a construction with another function g and if you look at the diagram it's pretty obvious this will do the same thing as this. Provided g has no side effects. It doesn't matter whether we apply g once and then duplicate the result or whether we duplicate the input and then apply g to it and that tells us that those two terms at the top and the bottom in Bax's programming language fp must always be equal. And what about the vulnerable bottleneck, the word at a time programming? Well Bax has proposed replacing programs like this. This computes the scalar product of two vectors a and b and it's written in Algor 60. So rather than write this program which manipulates the vectors one word at a time Bax has proposed writing a scalar product function which first of all takes a pair of vectors, transposes them into a vector of pairs, applies multiplication to all those pairs and then folds addition to add all the results together and that gives you the scalar product. Actually he wouldn't have written it like this, he would have written it like this, a little bit of APL envy there perhaps. But the point is that this example demonstrates very powerful ways to compose simple components into complex programs. So this really was a landmark paper. The fact that John Bacchus, the father of Fortran, devoted his Turing Award lecture to a manifesto for functional programming inspired a generation of researchers myself among them. If you haven't read this paper, google John Bacchus Turing Award today and read it, you will not regret doing so. I should say maybe that the first half of the paper is really the part that has stood the test of time and been tremendously influential. The second half of the paper was Bacchus' ideas for doing IO in functional languages which have not had the same impact. It's the first half of the paper really that I absolutely strongly recommend. Everybody should read that. So this paper prompted a huge amount of research by people who were inspired. Among them, Mary's PhD supervisor, Peter Henderson. So let me tell you about some of the work that he was doing when we first met him. Peter had two loves, functional programming and the drawings of Escher. And he decided that he would like to combine the two. And if you look at this Escher print, which is, it's called Square Limit, you can see that it has some kind of a recursive structure. And recursion is the bread and butter of functional programming. So Peter thought wouldn't it be great to construct this picture by functional programming. So in those days, then you did computer graphics by sending drawing commands to a plotter, which moved a pen on a piece of paper. Yes, really, it was that long ago. So graphics programs would be very much word at a time, one drawing command at a time. But Peter said, let's not do that. Let's let a picture be a value. So here's a value, fish. And as soon as a picture is a value, then you can define functions that combine pictures. For example, you can make this one by overlaying the original fish with rotate, rotate fish. So here rotate is a 90 degree rotation. And if you do it twice, then we rotate the fish around. And then they fit together. The fact that they fit is Escher's genius. So that's cool. Here's something else we can do. So here we've got the original fish and two smaller copies. This one is the original fish. This one is fish two. And fish two is a 45 degree rotation of the original fish. And it's also shrunk a little bit in order to fit in the same box. So it's actually been rotated 45 degrees and then flipped around the y axis. And then this is fish three, which is the further rotation of fish two. And now we've got a fish and some smaller fish. That reminds us of the original print, doesn't it? Let's keep going. What else can we do? Well, here we've taken that smaller fish, fish two, and just put it together four times in four different rotations.  So Peter went on to define more and more operations for combining pictures like quartet that would take four pictures and draw them in the four quarters of a square or cycle that would take one picture and draw that in the four quarters of a square. But with a rotation applied to make them kind of swim around. And if you have an implementation of these things, it's great fun to play with. You can just stretch whatever you like. Here we've taken the T image with a fish and two little ones and just cycled it around. Here I've made a quartet of this thing. So Esher has ever drew this. But it doesn't matter. We can make our own pictures, whatever we feel like. So in order to construct the final picture, then Peter wanted to make an edge. So here we've made a quartet of two empty pictures. That's what nil is supposed to be. You can see the gaps up there and that T picture in one of its rotations. And you can see that here we've got larger fish on the inside and smaller fish on the outside. But really we'd like to have even smaller fish up here, wouldn't we? So let's take this picture. Let's call it side one. And then let's make this picture where we replace the empty pictures by smaller copies of side one. So that code does that. And you can see that by continuing in this way, we're going to be able to get smaller and smaller fish approaching the side of the picture. Need a corner as well. Let's use this picture as the corner. So once again, I've got a corner with three empty squares around it. And now if I call this corner one, and put copies of that in the empty squares, we'll get corner two, where the fish are getting a bit smaller, and by repeating this process once again, I can make smaller and smaller and smaller fish approaching the corner. So Peter constructed square limit at the end. From the picture U, this side and this corner, in a non-et, I haven't shown you the definition, that's a square divided into nine little squares. So we've got a corner in each corner, and we've got the side on each of the sides, and then the U thing in the middle. And what does that give you? Square limit. Do you remember the original picture? Not bad, eh? That's pretty close. So this was a delightful fun exercise. But Peter didn't stop there, because he still had to implement pictures somehow. Let's see, how can we represent pictures in a way that we don't know? Hmm, well, we need some kind of complex data structure, do we? No, let's let pictures be functions. So Peter's idea here was to say, well, when we draw a picture, we have to end up at the end of the day with a list of drawing commands. But let's let a picture be a function that constructs that list. And we might want to draw a picture in a variety of places and in a variety of sizes. So a picture just be a function that takes three vectors, A, B and C, that specify a box on the plane. Okay, so vector A specifies where the bottom left hand corner is, and then B and C specify the edges of the box. And then a picture will return drawing commands that draw itself within that box. So the really nice thing about representing pictures as functions is that it made picture combinators really easy to define. So here's how you might overlay two pictures. You just draw them both in the same box and take the union of the drawing commands. Here's how you put picture P beside picture Q. So just to make this easier to understand, take the box A, B, C, we divide it into two boxes and you figure out what the vectors there need to be, and then we draw P in the left box and Q in the right box and take the union. You can even rotate a picture by fiddling with the vectors. Okay, so if we take this square and rotate it, we can see that its bottom left hand corner is going to end up here and we have to swap the axes B and C and negate the B one. That gives us a 90-degree anticlockwise rotating. So Peter was able to define his picture combinators really easily, and thanks to those simple definitions, he could also easily prove laws about them, like this one, that if you put P above Q and rotate it, you get the same result as if you rotate P and rotate Q and put them beside each other. And that's a little bit of simple algebra because the implementations of these functions are so simple. And Peter studied those laws very much and he says this in the paper. It seems there's a positive correlation between the simplicity of the rules, the laws, and the quality of the algebra as a description tool. In other words, by making sure that the functions he defined had these nice properties, he got a language for describing pictures that was more expressive and nicer to use. So I think this is a really great example of functional programming at its best. And we've seen a number of examples of ideas coming back again and again. The idea of programming with the whole value, the whole picture, the whole vector, the whole array, not word by word. Of defining combining forms like map and construction and overlay. And of using the algebra, the laws, as a litmus test to guide the design of these combined forms. And another idea, dating back to church, of using functions and representations, which is tremendously important. So I want to very quickly now hop ahead to a paper from 1994, which is a bit less well known, which I really like and meant a great deal to me. It's called the somewhat clumsy name, Haskell versus Ada versus C++ versus Ork versus dot dot dot. So this paper originates from a big DARPA project in software prototyping. Software prototyping was very trendy at that time. So DARPA wanted to support work on it. And you couldn't get DARPA funding to write Haskell programmes for real use in those days, but Paul got some DARPA money for using Haskell to build software prototypes. And many other people got money from the same project. So then at some point, the DARPA wanted to evaluate how well people were doing. So they gave everybody the same problems, a prototype, and they were to record how much code they had to write and how long it took. The problem was a geometric one. So it involved defining regions in the plane with complex shapes, and at DARPA being DARPA, these regions had names like weapon doctrine and slave doctrine. And there are points in here called hostile aircraft and so on. So the prototype was supposed to input a description of this stuff and then analyse it and output things that would say, you know, the commercial aircraft was in the Engageability Zone and so on. Mark Jones got the job of implementing this prototype in Haskell. You can see that the key thing here is you have to work with regions with complex shapes. You've got to represent regions somehow, and there are lots of different shapes of them. It could be a very complex data structure. How do you think Mark Jones represented a region? A function from point to ball. And that made the combinators on regions extremely easy to define. I mean, the outside of a region, it's just, you know, not of what the region would return. The intersection of the union, they're really easy to define. And as a result, Mark's prototype was very, very tiny. I don't know if you can read this, but this is Mark's code. He wrote 85 lines of code. The ADA solution was over 760 lines. C++, 1100 lines. And there are some others that approach 85 lines. Many of them didn't work, though. Mark's did. In fact, when Mark's solution was submitted, the evaluators at first thought he hadn't solved the problem. He's just written down a specification. Where's the code? But it was actually executable. What I think is a real shame is that Mark had written 29 lines of type signatures and type synonyms that the type checker would have inferred by itself. So his solution could have been 29 lines smaller. So anyway, when these results came into the evaluators, they thought there's something funny going on. They're cheating. You might see that Haskell appears in this list twice. So what's the second one? The evaluators gave the same problem to a graduate student somewhere else without telling Paul. And they just said, okay, you've got eight days to learn Haskell. Then see if you can solve the problem. And the student did. The second smallest solution. How about that? It's almost twice as large as Mark's. Well, he only had eight days to learn Haskell. But it was the second best solution. So you would have thought at this point, Darfur would say, wow, Haskell is clearly the best prototyping language. But they didn't. They said it's too cute for its own good. Higher order functions are just a trick, probably not useful in other contexts. Oh, well, so much for that. Let me go back in time a little bit. I want to talk about another pair of classic papers that really inspired me. And these were the two papers, both came out in 1976, that introduced and publicized lazy evaluation. There were, lazy evaluation had been discovered before this, but these were the two papers that put it on the map. And one of the guys was Peter Henderson, Mary's supervisor. So I was really inspired by the idea of lazy evaluation because it meant that the whole value that we've been talking about could be infinite. So a programme commit may play a whole value that would be the infinite list of natural numbers, or the list of iterations of a function. So here's f applied zero times, one time, two times. How many iterations? All of them. Now, of course, this doesn't mean that any single programme would compute all of them, but the choice of how many to compute is left to the consumer. This definition can compute any number of iterations of f, as many as you want. It's up to the consumer how many you get. And I was very excited about the possibility of separating the decision of how many things to compute from the code that told you how to compute them. Here's an example of a consumer for numerical methods. I had studied numerical analysis without very much success a few years earlier, but one of the things I had learned is that numerical methods often take the limit of a sequence of approximations. So let's just make that a consumer. Limit gets an infinite list of approximations and returns the first one it finds where the distance between approximations is less than epsilon. So now we've got a part of many numerical algorithms but expressed as a reusable, separate function. Here's the Newton-Raphson square root algorithm. That starts from some value, let's say 1.0, and computes successive approximations. Here's the next function that does that. So I can compute Newton-Raphson square roots just by iterating the next function until I reach the limit. And so I'm able to separate the computation of the approximations from taking the limit. Here's code for computing a numerical derivative. So the derivative is the limit of the slope of the graph as points get closer and closer together. So let's compute a series of h's by starting from 1 and making them smaller and smaller. And then let's map a slope calculation over that and take the limit. And the convergence check can be the same code even though the algorithm for computing the approximations is different. So I thought this was great. Actually there's something even cooler you can do. So differentiation is done by taking the limit of a slope as h gets smaller and smaller. Integration is done by taking the limit of a sum of areas as h gets smaller and smaller. Okay this is the trapezium rule for integration, we've all seen that. So in both cases we've got something an h that is getting smaller and smaller. Okay think back to your numerical analysis courses. When you do something like this the result that you get can be expressed as a plus b times some power of h where a is the right answer and b times h to the n is the error term. So suppose we take two successive approximations. Now we've got two values, we know what age is in each case. We've got two simultaneous equations for a and b. We can just solve them right? And if we solve them what do we get? Well we get b which we don't really care about but we get a which is the right answer. So we can take a sequence of approximations and just take the first two and compute the right answer from them who needs the rest of them. Okay well it's not quite as brilliant as this because this form is only an approximation. What happens is that we get a much more accurate answer than either of these two but it's not completely right. But never mind we could take the next two and do it again. So we can make a new sequence of approximations which converges faster. It's a better numerical method and we can write a function that does that. So here's a really fast function for computing derivatives. We make the initial approximations in the same way as before. We improve it a couple of times and improving the first order error term and the second order error term. Now it converges really quickly. We'll take the limit. Isn't that sweet? Everything is programmed separately. Everything is reusable here thanks to whole value programming. If you do this with integration which is a much more expensive operation you get a really good numerical integration algorithm very, very easily. So this is some of the stuff that appears in my paper Why Functional Programming Matters. And the basic idea that the paper uses again and again is that of connecting a consumer and a producer with lazy evaluation. So the consumer demands values and then the producer generates them. So I've shown you how we can do that with numerical approximations. In the paper I also show that you can represent a search space in the same lazy manner. And then the consumer becomes the search strategy that decides which parts of the search space we need to compute and explore. And in the paper I use that to implement the alpha beta algorithm for knots and crosses. My implementation was extremely slow so this was about the most complex game I could solve this time. But I was able to program the alpha beta heuristic as a separate function whereas all the presentations I've seen beforehand had to mix the alpha beta part with the construction of a game tree. And there's one more paper. I've used this idea again and again during my career. There's one more paper that I want to show you that uses the same idea. It's the quick check paper. So for those of you who haven't seen quick check the idea is that you test your program by writing general properties like this one. So here's the property of reverse that just says for any x's that is a list of integers if we take x's and reverse it twice then we get back the original list. And if you give that quick check it'll generate 100 random values by default. Run the tests for each of them and in this case all the tests pass. So that's great. What's more interesting is what happens if the property is not true. So here's a wrong property that says that if you reverse a list you get itself. Of course that's not true for all lists. And in that case quick check quickly finds a random list for which it's not true such as this one. But you can see that that could be hard to debug. So then it goes on to simplify the failing test and finally ends up reporting a minimal case that fails. In this case just a list zero one. This is the smallest list that falsifies this property. Why is it smallest? Well if we removed either the zero or the one we get a one element list that is its own reversal. Why is it zero and one? Well if we replace the one by zero so we had zero zero we've got another list that is its own reversal. So this is the simplest case that fails. And these are the cases that quick check presents to the user for further debugging. So how does it work? Well the property defines a space of all possible tests. And then the quick check search strategy is a consumer that traverses that space running the tests first of all at random and then systematically define the smallest possible case. Okay so I think in the interest of time I will skip over some hardware stuff except to tell you let's talk about hardware for a little while. So something else that we'll all remember from around this time is the Intel Pentium bug. Here's a calculation you could draw on any processor. We take some number 419 something divided by another one 314 then multiply it by the 314 one again. So this should give us back the original number and we subtract it from itself and of course we can get zero which you do on modern processors and you should have on Intel's processors as well but on the faulty Pentiums you got 256. So this wasn't good of course and for a while Intel tried to pass it off saying it was very unlikely to happen and it's nearly right but in the end they had to replace enormous numbers of Pentiums. It cost them $475 million which is a lot of money even for Intel and of course then they had all these flawed Pentiums. What did they do with them? Simple they put them into key rings and every member of staff got one of these key rings at the time. I've seen one of these on the back they say bad companies are destroyed by crises good companies survive them great companies are improved by them. So what was the improvement? The improvement was they recruited this man Carl Seeger who went to Intel to build his own lazy functional language, FL which was specially designed for doing proofs about hardware that had some functional facilities and using that he built his forte system that has thousands of users inside Intel this is what they use to verify Intel microprocessors and make sure that Pentium bug will never happen again. So FL it's used as a design language specification language for scripting for all the formal verification tools and so on and it's also the language that the tools prove things about. So functional programming is really at the heart of Intel's approach to formally verifying circuits. So why hasn't there been another Pentium bug? At least in part it's thanks to functional programming that's good to know. On the subject of hardware I also want to just mention a language called BlueSpec which is Haskell for hardware basically and this is the the brainchild of Arvind at MIT which combines Haskell for the large scale structure of hardware description and some atomic transition rules from which the compiler can infer parallelism to generate verilog that goes into industry standard tools for synthesis after that. So BlueSpec lets you write your hardware in Haskell basically and the code you get is often faster than handwritten code as functional programming always does by simplifying the task of just making things work it gives designers more time to use better algorithms and it's made architectural change of designs and so on very easy to do there's a very nice paper about this by Nikhil who is the CTO of the BlueSpec company and there's a reference there and of course BlueSpec is essentially a kind of Haskell so it has QuickCheck this has worked by Matthew Naylor and more in Cambridge and you can take that the BlueSpec QuickCheck and generate and shrink tests on the chip and this blows away hardware designers I mean hardware designers are used to maybe having some support for testing on a chip but having the whole process where the chip just outputs by the way I don't work for this input that that's just like magic so I think that's really cool so we've made a very long journey starting from church numerals and coming all the way to Haskell and QuickCheck running on a on a chip but throughout this whole journey then there are a number of ideas that have come back again and again and again programming with the whole values not word at a time powerful combining forms that satisfies simple laws and using functions as representations and I think these four ideas pervade good functional programming and they've delivered a whole lot of value over the years so I think we would have made backers proud thank you certainly the table of numbers yeah I can hear you testing two three five seven okay uh I'm curious why the number of lines of code is used as the criteria for judging goodness rather than development time development time according to development time Haskell still does quite well but LISC that's true so LISC blew Haskell away completely the difference if you read the paper is that the Haskell one worked okay thank you but if LISC worked no well if they had kept going until it worked then provided took zero time to do that it could have won but my understanding is that it wasn't anything resembling a complete solution but you might ask as well you know what what about lines of documentation if only mark had written less documentation perhaps it could have been much quicker it's it's not really a very scientific study but it's a nice a nice story that paper by the way is on the web at the Yale functional programming groups website still so one can download it and read it any other questions oh yes yes so one in one area where a great deal of research effort is being spent at the moment is on enriching the type system so a lot of people are very excited about dependent types and they're going into Haskell so I guess we're going to find out how useful they really are I'm I know a lot of people are enthusiastic about that I'm not as enthusiastic as many others because I see that there is perhaps a point where you get diminishing returns there are costs as well as benefits for a more powerful type system but that's clearly something where a lot of work is being done and whatever comes out of it it's going to be interesting the other things that I wonder about are first of all there's more and more interest in constructing software to meet specifications and our work with QuickCheck is a part of that right we have the specification and then we test programs against it we're not doing proofs but nevertheless we're identifying inconsistency between the code and specification and the problem that we face is getting the specification from somewhere and I think this is a general problem that many people who develop software don't really know what it's supposed to do not precisely not precisely enough to formulate a specification and even test that the code meets it so if we can't develop specifications then the whole process of trying to develop software that meets specifications is facing a roadblock so I think finding ways to develop specifications is one very important problem for functional programming and all kinds of programming really and the other thing that I think about is when I got started in functional programming then we were in the early days of the software crisis that was named in 1968 and everybody was worried that software was growing inside so rapidly and our capacity to develop it was not so when I started out in functional programming I remember going to a summer school in 1981 and people like David Turner presented functional programming it was beautiful and David said there's no point fiddling with software development with programming languages we've got to make a radical revolution that's what functional programming does and it will give an order of magnitude improvement and productivity that's what we need no factors of two were any of that nonsense an order of magnitude and I think the order of magnitude has been delivered if you look at today's Haskell software and compare it to software in Pascal or C from that time I think it's easily an order of magnitude shorter, easier to develop, quicker to develop and so on but the software crisis is still with us where is the next order of magnitude coming from how could something be an order of magnitude more expressive than Haskell I don't have a good answer to that I'm excited about the whole area of program synthesis because that seems to me to be one of the few ideas that offers any hope of another order of magnitude but if I had a plausible idea of how to get that order of magnitude that's what I would be working on Joe Armstrong has been quoted as saying that Erlang never got a stratified system because they didn't know how to do it and recently added that to offer some ideas but they broke down because they couldn't really agree on how to enforce a type system on sending messages so what do you see as the future of type system for synthesis is that both is about another problem is what is going on? Well there are strongly typed concurrent programming systems like concurrency for example so we have typed channels you have to do your concurrency a little bit differently from Erlang but you can certainly type concurrency so the fact that you're passing messages doesn't necessarily mean that static typing will work the other thing that Erlang was designed to cope with was hot code upgrade and that is a lot more challenging because for the first time you know when you start running a program you don't know what types might even be defined in code that will be hot loaded later so coming up with a type system that can deal with that is a much more challenging problem and any such type system is bound to be a lot more complex so I don't think that Erlang designers made a mistake in excluding types they had good reasons for excluding them but it doesn't mean that types wouldn't be valuable in that context too one of the things I would like to do when I have time is to build a front end for the beam with Haskell-like syntax and the Haskell-like type checker but I think you couldn't do everything that you wanted to do on the beam in such a language but you could do maybe 98% of it and then fall down into Erlang for those things that you can't type so I think that could be really useful again that's when I have time okay maybe we're ready for our I guess we're not ready for coffee ready for the next talk


Press star one to listen Star two to leave a voicemail to be read into the record or star three to be placed into a queue to speak live when prompted Please wait until your case is called to hit star three If participating by phone while also streaming the meeting on a computer Please mute the audio on your computer and only use the phone audio so as to avoid audio issues When being patched into the meeting to speak Roll call Mr. Dinkins here mr. Gregory Mr. Gignard Apologize about that. I'm a little behind too But all right applicants with requests before the board of zoning appeals are a lot at a presentation time of 10 minutes This time should include but it's not limited to an overview of the project case history in any pertinent meetings held regarding the requests This time also includes all persons presenting information on behalf of the applicant such as attorneys engineers and architects This time limit does not include any questions asked by the board of zoning appeals or staff regarding the request Any member of the general public may address the board in intervals of three minutes or Five minutes if by a spokesperson for an established body or for a group of three or more The applicant will then have five minutes for rebuttal The board reserves the right to amend these procedures on a case-by-case basis All right, those of you who plan to speak must be sworn If you are here as an applicant or here to speak in any case, please stand at this time and raise your right hand Do you affirm or attest that the testimony you will give today? It's the truth and nothing but the truth All right, thank you very much The board uses the consent agenda to approve non-controversial or routine matters by a single motion and vote If a member of the board or the general public wishes to discuss an item on the consent agenda That item is removed and placed on the regular agenda The board then approves the remaining consent agenda items first item one the consent agenda is case Is twenty twenty two zero zero one one One ninety seven Greg Parkway a variance to the maximum fence height requirement in the rear yard the next case is the twenty twenty-two dash zero zero one two dash s e 902 Dervais Street sweet D Special exception to permit a type two eating and drinking establishment Next is twenty twenty two dash zero zero one three dash s e forty four six 64 Divine Street a special exception to permit a liquor store Next is twenty twenty two dash zero zero one four dash s e forty three oh one Fort Jackson Boulevard Special exception to permit an accessory drive-through use for a restaurant is twenty twenty two dash zero zero one seven dash v forty three oh one Fort Jackson Boulevard variance to the form and design Standards for a restaurant use next is twenty twenty two dash zero zero one eight V To a one more Hopkins Lane a variance to the max Minimum parking requirements for a multi-family development Does anyone wish to speak on a case removing that case from the consent agenda? So there's an unusual amount of cases on the consent agenda in relation to how many are on the normal agenda So anyone in the audience, please understand that we are about the vote on just about every case except for the last one of the regular agenda so one point that out now is your time if Any objection? Do not have any callers or emails Any members of the board like to remove a case from the consent agenda? All right very good like to ask for a motion for the consent agenda, please All right, we have a motion a second all those in favor, please say aye All right any opposed All right very good motion passes. Thank you We'll move to the regular agenda We will use the following outline for the regular agenda items staff will introduce the case Applicant will have ten minutes to make their presentation Board may ask questions The public will be allowed to participate in person or phone comment and by email or voicemail Applicant will then have five minutes for rebuttal first case on the regular agenda is twenty twenty two dash zero one five Seven thirty seven Gadsden Street a special exception to exceed the maximum density of bedrooms per acre for private dormitory use Applicant is here Good afternoon. Can you guys hear me okay? Yes, right? Thank you I'm Jeff Shouse with holder properties where the developer and acting as an agent for the foundation USC foundation Hunter Lambert Their quest today is for seven thirty seven Gaston Street So it's caddy corner to the colonial life arena and adjacent to the green street bridge That's about to open and our our request is to increase the the bed density from 150 beds per acre to 260 per acre Which will give us a max of 975 total beds So again, it's in partnership with the foundation and we're in the concept planning stage So our request is to allow us to move forward with the design and the foundation So you can see a rendering here and just to be clear It's green and Gaston corner that you're looking at right there So as you come off the bridge The corner of green and Gaston is what you're looking at there and it's nine total levels Which would allow for plus or minus nine hundred seventy five beds any questions or concerns? You know, we've seen a lot of these in the past. It's a pretty significant Increase sure you're aware of that edging we are, you know compared to some other Projects in the city of Columbia. Yeah, I know there's been one that's gotten 700 beds per acre We feel like this was a reasonable request go from 150 to 260 plus You know, we feel like the the surrounding environment with student housing the basketball arena and really being located adjacent to campus It's appropriate request. So have you done these projects in other other areas? We've done a 650 Lincoln with the same partnership foundation in Columbia. We also did 719 beds in Auburn, Alabama Actually Kevin and Andy and do you remember Andy was a part of it?  He's gonna speak. We can't take any testimony from the floor and state state your name for the Rector, please or any barfield with older properties 883 beds on 650 Lincoln and what does that break down? approximately over six acres That's split between the two blocks Yeah, the math is It would be greater than 650 but less than some other projects located in the city of Columbia substantially less And 650 So double right you're talking about doubling the density. Excuse me. Can you ask a question one more time? The the current Development nearby that you've already completed Had how many beds sure? 883 I believe over five and a half acres Works out to be probably just under 200 beds per acre Okay, and what is the proposed number of beds per acre? 260 is what we're proposing for 3.75 acres Which we thought was well shy of some of the others that have gone through approval here in the city as of lately Correct correct night stories correct. I think Lincoln is seven stories 650 Lincoln is seven stories. That's correct. It also sits down elevation wise It's actually 650 Lincoln finish floor is actually up another 15 to 20 feet relative to the site So it looks like the operation and management plan is well thought out. That's a part of these variants requests Is this modeled after some other site that you have or actually 650 Lincoln, okay? Yes, very similar that partnership is exactly the same. We partnered with them five years ago on 650 Lincoln and so They own the property the foundation owns property and asked us to come back in and looks pretty strong to me I'm a little concerned about the I mean I didn't review I was not on the board for the last Approvals so I don't know but I know that when I read the thing and it was like Students won't share the Carolina card and students won't prop the doors open and I'm sorry. That's I live in University Hill. I know what students do. They don't listen to that. What is how are you going to make them do it? Great? great question actually University security the police department is actually the one that monitors the security for 650 Lincoln and we holder properties manage 650 Lincoln So between honors and athletics there. Yes, it's a challenge It's a challenge anywhere in student housing But we do feel because of the partnership with the foundation as well as with the police department We have a better control of that than most in our business I mean are you going to have an alarm will sound? Oh, of course and Exactly 650 Lincoln has over 125 cameras So that's how we make sure that that the card readers and everything is being respected And again, you could look at 650's record. We feel very strong about the way that we've managed that for the past five years now Catherine I was on the board for a lot of these Different cases and this is as strong as a management plan. I've seen okay Are there and I appreciate that is there going to be preference given to certain students like you mentioned athletics and Actually, they have not formulated that yet This is this land has actually been owned by the foundation for I think going on two decades now And so right now it's a gravel parking lot and so they obviously there's something bigger and better So working with the foundation and the university We're trying to figure out exactly how that would be structured But we know that from a from a bed perspective There's a need and this seems like a great spot considering it's Honestly a lot of asphalt around it and so there's there's some real true density there And I think you know their desire to create retail walkability is is also part of this plan So you'll see that as well as the the variants on the setback because we want to create some active Sidewalks down in that in that community. I was just curious given the history of the site Yeah, it was it was a yeah intermule field and now it's a gravel parking lot So I guess The other one that gave me pause because I live I go through the Blossom Street down Blossom Street by the Bull Street parking garage and And life is very different since the Bull Street parking garage opened Sure, and you're taking a small gravel lot Correct explain to me how this parking and how this is not going to be adverse I mean, I don't like parking gravel parking lot. So that's fine, but I mean, we're all the same house Not going to adversely, you know impact. Yeah, good question So how many spaces and you're putting in how many spaces in the garage and how are people going to be coming and going? Right, right. So so the zoning code requires 0.5 her bed We're around 0.7 right now Depending on the relationship and how that works with the university that could contract a little bit more, but we agree I mean, we want to create I mean, there's gonna be a bus stop So we feel that honestly the students and residents can get around Without putting more cars on the on the roads Also, the foundation owns a discovery deck, which you know is about two blocks closer to campus And they think that there's actually some opportunity there Maybe to take some of the parking that you would need for this and actually put it over there We would still meet zoning code, but we're still working out the exact ratio Can I see the map of the location on the map geographically where this is? How long is that 160 Lincoln been open? The first phase first phase was open in the summer of 2015 the second phase was 2016 So I feel like that's been successful in improving everything down there And I think this would just be a continuation of that for the most part. Yeah, we appreciate that We're continually trying to get good retail in that space and that's the partnership with the foundation We think that we can do the exact same thing just one block down and create Some real walkability between those two sites for sure the numbers that you gave us that were closer to 160 beds per Correct, so it's a pretty big jump What's the reason from you know 160 was successful or 160 Lincoln was successful at 160 That's an acre and now you want to do 260. What's the dry demand? It is the University needs beds and you know, that's again We felt like it was a modest ass relative to kind of what we've seen in the market lately That's can be up to public opinion, but we do feel that the demand is is imperative There's not enough beds for freshmen right now. So they they want to accommodate both under and upperclassmen Okay Well, I'm sure we'll have some board discussion, but do we have any specific questions be careful not to get into board discussion But there's specific questions for the applicant. I just want to confirm the Two bedroom four bedroom counts. I mean that's all y'all are doing here two and four bedrooms. Yeah That was the desire they feel that they can peer that Especially work on the University and into some capacity that they compare that and so the two and four one It makes sense not only from roommate matching, but also from a stack ability So creating some some consistency up on each floor. All right, very good. Thank you very much. Sure. Thank you No, I think that's it unless you guys have questions on the first one. Yeah So go ahead and we're gonna move into public input. So if you have a seat in the one great Yeah, thank you. Okay. Well, thank you applicants for your presentation I think your application was thorough and Does a good job of describing your case so that makes it easier for us But at this time we'd like to ask are there any members of the public either here or On the phones or text messages that would like to speak regarding this matter I do have a few callers. I don't know if they're here for this case or not I'm sorry Apologize a few callers. I don't know if they're here for this case or not. So I'll wait to see if they raise their hands Yeah, now's their chance How many are there Well, one of them just hung up, so okay Okay, nobody. All right, very good All right So at this point then we've had the applicants presentation and we don't have any feedback for the community So I'd like to open it up to board discussion. What do you all think? You know I can you know, I mean I can say the the density at first to me was a little bit shocking To go from 150 to 260 Especially understand the 160 Lincoln was only 160. So it was a 10 bed increase per acre But in general the area isn't heavily laden with you know Houses and residential and people that it'll be impacting and I think they did the 160 since it's been around for seven or eight years It's been successful I feel like this likely would follow suit This is moving to 60 remember Right. Yeah, it's a it's a lot more But it's I feel like it's the area that can support it. I don't know I Am I think I'm I'm to the one thing that gives me pause Is the fact that they were like well you have precedent from a previous project that allowed lots of other beds? Well, okay at some point we're just gonna keep having you know escalating precedent and that that really concerns me that said I Sure do I mean I've always said that I'd prefer to see students in real USC dorms But I understand that the limitations I've been around for a long time on this I understand limitations on actually having straight-up USC dorms because of their bonding and bonding capacity and so on And so this seems like the second best option It seems to me that they're going to have much less impact on the community there Then just about anywhere else you could put them But I am concerned about the precedent and I guess if the zoning people could explain that Are we bound by some kind of notion that well because you know, they approve this number of beds or something It's specifically laid out that we are not like just because somebody else Pardon me. There's a lot of density cases Or private dormitories. I don't recall. I've been on the boy one less year than Eugene But I don't recall a density case There's been some some of these two Dorms aren't allowed in many places, right, right, but there is I mean, I know there was the station at five points as a private dorm And that's because they have the buffer and that But I mean that said I think that this is probably the Best way to stow the maximum number of students the best location to stow them because They're not as likely to be driving everywhere They won't be as likely to be clogging up Blossom Street going over to the fraternity houses the Greek village walk across the street They could walk across well, we would hope they could walk across the street Yeah, I think that's really my only concern with the project is because it's so close to that bridge construction That's being built there. I'm concerned about how they're controlling the speed of traffic right there That's gonna be a very popular location once the Once that it's completed because that is gonna be a direct route to the stadium, which is right there But what I do like about this project is I like the proximity to the stadium as well as it kind of creates a closed loop for What's happening at nine hundred and sixteen or one particularly if you're thinking about Visitors visiting the colonial colonial like Marina you're thinking about students being in that area thinking about the walkability of that area It's kind of it kind of ends right there system on one With that I think it's sixteen one for one grill there or something like that So it doesn't really create an atmosphere of what you would expect that other stadiums Well, you have a place kind of walk around and eat prior to that and I think this provides an opportunity for that So I like that a lot But I'm concerned about it being because it's so close to that bridge and there's gonna be incredible traffic there doing games I'm wondering what what the talks are with transportation about how they can Speed So close to that building Well, they're engineers here if you'd like to ask them looking for you What are those conversations like can I ask absolutely what are the conversations with transportation concerning traffic? No, hang on a second. We need to have an approach podium approach the bench Could the applicants engineer, please come up Kevin you banks with SSO East evens works. Thank you right shard. Go ahead state the question. How you doing? I'm what's the conversations with? Transportation Department of Transportation regarding the traffic flow here for walkability because I see the sidewalk is right here right next to where That bridge is gonna be Those roads are controlled by City Columbia We are we're getting a preliminary site plan together and we're gonna go sit down with the city traffic engineer Okay, and make sure we incorporate anything any concerns he has Consider me and we're putting a bus stop for students and we're also Pull off in the front on Gadsden There's any concerns that he has a role So the city is working with you on the transportation. Yes part of this. Okay, okay Yeah, I mean I think Any idea so this is very early still so you guys don't have an idea yet of? Retail what's gonna happen in the bottom of that? Yeah, right now. There's they're still doing some research with a couple companies on about they're trying to get you know certain commercial companies down in there, but right now it's anywhere from 20 to 30,000 square feet I Think this is something they could be a cool project. I'm just concerned about student safety. All right. Thank you Okay, well, you know think board think that was some good questions and good discussion and good thoughts I mean kind of like always a rundown the criteria for the special exception So we've got 13 criteria here and Some of these cases there's some gray areas and we can stray a little bit on some of them It's not always one size fits all But for me at least the way I've always looked at it I look at the criteria and I try to figure out whether or not they can fit the criteria and In my mind as I run through the 13 criteria. I don't see any that they don't fit So I'll simply leave it at that. I think you'll have some good questions But unless anyone has any further comments, I'd like to ask for a motion Motion to approve pending staff comments We have a motion just to prove in the first one. Yes, we have a motion a second all of the favor. Please say aye. Bye. Any opposed? All right, very good motion passes Thank you. All right. Well the applicant like to approach and describe please what you're planning to do Thank you So 737 Gaston in addition to the special exception As we've discussed the Green Street Bridge the Gaston they connect when that bridge opens We're requesting a 15-foot setback along Gaston Street right now the code calls for a 10-foot from your property line In order to sufficiently fit the bus stop for students that we want to fit in and also the retail We're requesting 15 additional feet along Gaston and also to give the buffer from the bridge We're asking an additional five feet on that side to give some distance between our project and that bridge So the two variances for the sidewalk basically additional depth on those two sides and Again, it's it's really for the pedestrian experience and also to allow for students to go to and from class at that bus stop and queue there So I believe one of the criteria that we look at when we're looking at variances is is this the minimum necessary? In our opinion it is due to the bus stop We really feel like we need a queuing area and for the pedestrians not getting on the bus We want spit sufficient space for them to come and go as students are waiting at that bus stop Well, again, I think that Thank the presentation was very well done, and I think your request is clearly laid out So I personally do not have any questions We have any questions I thought it was going to be asking for less That is different you're not adhering to any, you know urban like context keeping you're not Urban context is it's a whole block, you know, and there's not a whole lot of context otherwise Yeah, I just got one question just Obviously going from gravel parking lot to creating all this impervious Structure, I like the water sidewalk What are y'all thinking about what building material y'all thinking about using for that sidewalk? Just curious it will be a concrete It'll be a heavy-duty concrete or it won't be asphalt. It'll be a nice-looking concrete sidewalk Any consideration of something that's a little bit more pervious Yeah, you know, we're gonna have landscape planners, you know, we can definitely Potentially look at some type of pervious paver again. It's conceptual right now. Yeah, we do have to comply with stormwater Yeah, so we're gonna have to find find ways to do that But again, it's not impossible to do that. Okay, you know, that's a good question John Let's get engineer up here to tell us about the stormwater. That's a good question DDRC But uh, what are you gonna do with your stormwater? so Again, it's all conceptual right now But the plan is to basically have some form of underground attention on the back service road in the back because Basin elevation falls off Going down to Vine Street towards the rubber tracks So we're looking at doing the underground attention along that back service road Okay, well if you made your building five feet close to the road you still have to deal with stormwater anyway, right? Absolutely, because it'd be getting caught on the roof instead of the sidewalk Okay, I don't want to flood out the Amtrak. That's a good answer because it's not shown here on the site plan So that makes sense and that was yeah, I like that Thank you. Thank you. I'm good Questions specific questions not board discussion for the applicants Anybody all right very good. Is anyone here from the public or on the phones that would like to speak regarding this matter Okay, thank you. All right. Well, let's move into board discussion. Who wants to start? I mean, I'm good My that's not really only concern. I have no problem They're doing underground attention You like the fact that it's moved back 15 feet as opposed to 10 feet off People on the block Yeah, I can imagine they're backing up to get on the buses the shuttle bus because it is a bit of a hike To the main to the main classroom areas so I can see that they're going to be wanting to queue up And so I think having this extra space is probably a very good idea How about for retail? Isn't it nice to have a little bit extra room for retail for people to Sit around on a bench or you know, I was thinking about that coming down main street looking around and going You know, it's nice that they have some space on main street Put stuff up not going to get hit by a car and can sit out there in text or whatever You know really nice Okay, well, I think it's a very well thought-out and planned project Certainly I don't have any Disagreement at all. I like seeing the surface parking going away. Yeah, and it's a great spot I mean, you know right by the basketball Coliseum and Right in the middle of campus really there's not a centralized USC campus, but this is about a Yeah, it's a really it's a good thing. It's a great location. So you're not a butting any Yeah, railroad is the neighbor Well, I mean the other resident the other residents are yeah All right. Well, unless anyone wants to add anything like that for a motion I move that we approve subject to staff comments Second, okay, we have motion a second all those in favor, please say aye. Aye. Any opposed? Very good. Good luck with the project great project What else? Okay, do we have a motion to adjourn? Motion to adjourn. We have a second second all the favor, please say aye. Any opposed? Very good. All right


Greetings to my esteemed audience. I am checking in from the Forest of Enlightenment. I'm checking in with some more insights since I already humbled myself, admitted my grave mistakes, I thought to admit to some more mistakes, and yeah, with the hope that you will learn something from my many mishaps over all of these years. Now first and foremost, I would like to say again a massive thank you from the bottom of my heart the outpour of support, seeing the latest video. Yeah, truly means the world to me. So thank you. Thank you so much. Now I am no longer as much on the back foot. I am already gaining some height so that I don't fall into the sea like Icarus. So yeah, it feels absolutely great and I will definitely honor the trust you have placed in me to continue the good holy work. So yeah, it feels good. It felt of course both good and bad to humble myself and admit to these mistakes as I talked about in the latest video, but yeah, I think it's for the for the best to admit when you've made some mistakes so that others can learn and so that you can be, you know, have a great reset in yourself and, you know, feel a sense of urgency. It's always good, a sense of urgency. That's a good lesson. Now secondly, I said in the latest video that it was a plebeian trait to wear muted colors. Now I said that in a joking way. Now, of course, some of my favorite garments are actually in gray, such as the aforementioned cardigan. I add some color with this sensitive poets marina wool scarf as well, so you can do that. But yeah, when I train also, I prefer gray actually. So yeah, it was it was not meant to roast anyone since I would roast myself then as well. And yeah, it was said with a smile and, you know, plebeian. It's not necessarily something bad. So yeah, anyway, I like all colors including gray and black and white and everything like that. So anyway, moving on to the to the main topic at hand, I will say also the following that I do have a very good and intelligent astute fan base, the core audience that is. I'm not saying this to flatter myself because flatter is insincere and praise is sincere. So I'm praising myself. I'm praising my own audience.  Then perhaps you can't get away with some things. So what I'm talking about now is when I mention certain things, I can only suppose that the guys in my audience, they know what I'm talking about and I can count on the my core audience to listen to my entire video or read my entire book review or whatever it might be. So I can count on that and that is a luxury, but you shouldn't suppose that everyone is like that. So I have that luxury. But even so, I still have to be careful with being very precise in what I'm in. And also coming to this the topic of using clickbaits. So to use an example a few years ago, this was back in 2015 when the migration, mass migration, it really kicked off and everyone was okay. This is the future is looking quite chaotic. What to do? What to do? Everyone was a bit you know, anxious of the future, which is normal. It's good. It would be strange if you weren't anxious of the future. That means only that you're not thinking too much about the future. Now, of course, you should live in the now focus on the next day, but it's also normal to be a bit a bit worried about the future. I made a different video about it. You can check it out. Now, anyway, I made a video titled steroid advice for the coming time. The content of my message, the message itself in the video, it was to not take steroids because it will not be good for your long-term hormonal health. So that was the main message of the video.  I assure you, so never lie. Anyway, some liars, they misrepresented my work saying that the golden one encouraged people to take steroids. He gave advice on how to take steroids, but that is absolutely not true. That is not what I did. What I did was to encourage people to not take steroids. I did it in a click-bait fashion. Now, in retrospect, I'm happy I did because maybe I saved a few young guys, a few sensitive young men from, you know, disrupting their own hormonal violence. But anyway, the point is that sometimes you have guys, maybe more impulsive guys, less intelligent guys, they will only read the title and then they will pass judgment upon the title. So keep that in mind. In whatever media you might, you know, do. So video title, blog post title, if anyone writes blogs anymore, I don't know. We can hope for a return of the blog. But anyway, the many guys, they don't actually take the time to read a full article or listen to a full video or whatever, so they will make their, so they will make their judgment even before. So keep that in mind that you are if you do a click-bait video, make sure to at least not be completely misleading. Now I wasn't misleading because the the title actually matched the message in my video. So steroid advice, the advice is to not take steroids. So anyway, that was one example that you can keep, keep in mind that some people, they don't watch your entire take, they will just, they will just take something and then spread it on. So something else that I have talked about in at least one video before is my the reception of my book reviews. Now again, I have an astute audience, but even so I've seen every once in a while that the the response, it comes directly. So when you delve into matters of magic and metaphysics, spirituality, sooner or later you will stumble upon the name of Alistair Crowley. Now I've reviewed one book by him, wasn't particularly good. I've read one book about him by Tobias Chirton. You can read both book reviews on my page, thegoldenone.se. Now the the reaction, the immediate reaction from some people was okay Alistair Crowley is bad. Yes, I never said he was good. He's the opposite of my own teachings because he was a an enthusiast of drugs and of course I am very much against recreational drugs. So that should have been obvious, but some of these individuals, they viewed it as an endorsement that I endorse Alistair Crowley because I read a book by him or about him. So that is something, you know, same theme really here that people only look at a split second and then they will make up their mind. So the golden one endorses Alistair Crowley because he has a picture of a book by him. Now, of course, I post a picture of the book so people know the book I'm referring to, which I'm reviewing. Now anyway, something to keep in mind as well that you have in certain cases many guys they don't take the time to actually read their view. Maybe they will find that I disavowed the entire work or maybe they don't, but they'll just see that you shouldn't read Alistair Crowley because you will be corrupted by his thought. You should have more confidence in me. I assure you, I will not be a man enthusiast of drugs just because I read the read some stories about a spiritual seeker who took a lot of drugs. So anyway, the teaching there is to be be mindful. Now you shouldn't, you know, reduce your own work to accommodate for the guys who are more impulsive and who can't keep attention for more than a few seconds. But I'm just saying that if you, you can be careful with that, with what you put out so that there is no confusion as to your views. Now moving on to another thing you can keep in mind and that is to be very, very precise with everything you say. So a common mistake I've made myself guilty of this mistake as well is that you suppose that everyone knows what you're talking about. So for example, I went into the great crusade in the Immaterium. I went in from the perspective of a fitness guy. The YouTube channel, it started as a fitness channel. So I knew from the start that everyone who is here, they do understand that a lot of things what we're talking about, it's about getting to perfecting our physics, to get a bit stronger in the gym, to look a bit better, to be a bit healthier. Everything like that. I went in with that attitude. But then when I started talking about politics, I was met with many individuals who they asked, okay, but do you need to flex and pose a minute in the introduction of each video? Now, of course, in retrospect, perhaps I did it too much. I don't know and perhaps it was a bit autistic of me to do it in completely political videos. Some guys asked, okay, why are you posing like this? But for me, again, maybe it was a mistake on my part. I should have been more serious. I don't know. But I did it because that was completely in tune with what you're supposed to do if you're talking about fitness, to show your own hard work. Okay, you can listen to me because I'm jacked. But anyway, the teaching here is that you shouldn't always suppose that everyone knows what you know. Same thing if we're talking in, even in later times, you have, if we're talking about metapolitics now, you have boomers. They have lived in, they grew up in, for example, in a homogenous Sweden. They have worked in, they take, they live in a Swedish area. They take their car to their work with Swedish colleagues. Then they don't really see what's going on. So they don't know what is going on in schools that, you know, native Swedes are being harassed by non-sweds, etc. They have no idea because they haven't seen it. Now, of course, when I make this video in 2024, there is really no excuse. But if we turn back time, 10 years, they were a lot of boomers who they simply didn't know what was going on because no one had perhaps told them they hadn't seen with their own eyes. So there is the the risk when you reach out to a new audience that they simply don't know what you're talking about. And even now, even as I make this video in the year of glory, 2024, there might be individuals who they don't know that there is a great replacement going on of European people in our own nations. It might be fully possible. So it's good to sometimes just give a few seconds, a minute of background. So when I talk about Swedish politics next time in a video, I will say that I will just give one minute background. Okay, Sweden used to look like this. Now it doesn't and this is because of this and that. And here is the solution, repatriation and everything like that. So it's good to give a bit of a bit of background and to not suppose that everyone knows what you know. So this can be in to use another example, as I mentioned in the latest video as well, talking about polyester underwear. Now, I wouldn't wear polyester underwear for anything because I know it's not good to have that much plastic down there. Now I use polyester in in some instances. So when I train MMA, for example, I can have a polyester rash guard because it's, you know, only only one, two hours of training and then I take it off. It protects me against, you know, various skin ailments, etc. But you shouldn't wear polyester underwear. Now four years ago, I actually had a pair of polyester underwear. I had them on. They were really comfortable. Now, of course, I know better than I didn't know. So even someone as enlightened as myself, if I may be so bold, only a few years ago, I made such a blunder. So I'm saying to you now that, okay, don't wear polyester. And again, of course, check out the LegioGlory underwear if you want to have some organic cotton ones. But the pointer is that it's good to be humble. It's good to... Yeah, as I said, it's not supposed that everyone knows what you do. So it can be good with some repetition as well. And since we are on this particular topic, it can also be good to say why. So always include a why. Why isn't it good to have polyester underwear? Yes, because it can alter your hormonal balance in your body. It's not good with too much exposure to plastics. It can lower your testosterone. So that's the reason for it. Why isn't it good with mass immigration from the third world into Sweden? Yes, because this society deteriorates to a big Gotham city. So it's always good also to give a why to everything. Again, I've been guilty of this. I only supposed that everyone understood that it was good to train. It was bad with mass immigration. It was bad with pornography, all of this. But if you want to communicate effectively, if you want to reach new people and, you know, make a compelling argument, a good argument, that will actually get them to think, do include a why in it.  So I'm including a why. It took me a few seconds to mention that why. So keep that in mind as well, that people don't know what you know. And sometimes it can be good to explain why they should do something because that also helps with the memory. Now, moving on to a related note, it's good to be very precise with your message. So if I say the Sweden Democrats are good, they are an anti-immigration party.  It means replacement level mass migration from the third world. That is what I'm against. I'm not against immigration. So if you are a Dutchman, you move to Scotland for whatever reason. Technically, you're an immigrant. Does anyone have an issue with it? No, no one has an issue with it. We understand this, of course. So if we say that mass immigration is an issue, but what we mean is simply that replacement level mass immigration from bioculturally distant places. That's a recipe for catastrophe. We understand this, but we should also be mindful that there might be individuals who don't understand this. They don't understand because maybe they have been doing something else their entire lives and then they come into politics, metapolitics, and they want to know why, why we are concerned about the demographic replacement. So be very specific in everything you say. So don't say I'm anti-immigration because that's not what you are, probably. You are probably like me, you know, against the replacement level migration, but we're not against immigration. Same thing if someone says these individuals, they don't like brown people. Now, this is also very misleading. I'm saying that I don't want to be replaced in my own population. That does not mean I have anything against a brown man in Indonesia going about his life. So this is important because I might want to visit Indonesia one day to look at ancient architecture because I'm interested in history. Same thing as enthusiasts of The Greatest Podcast will know. I want to go to summer camp to look at mosques. So if someone says this guy is anti-Islam, anti-Muslim, that is not true. I am simply against a mass immigration from third world countries into Sweden. Some of these countries, they happen to be Muslim. But the point is that I want to be very, very specific to avoid any misconceptions. So be specific in everything you do so you don't get into an argument, even with a smug liberal who says, oh, but are you against immigration? How come this is OK? So they have tried to trap you. They tried to be clever. They tried to score points. You, of course, know exactly what you're doing. So to use an example, which I've actually stumbled upon actual people saying this in my own life. So back in the day, back in the nineties in Sweden, there was a Swedish guy who said, I want to move to Iceland because they have no immigrants there.  But everyone knew what he meant. He didn't want to be harassed by non whites anymore. That's why he wanted to go to Iceland.  So that's a good reason to be very, very specific with your argument. And that also, you know, helps you not get into other issues. So I have, again, no desire to have any sort of disharmony discord with a solid family father in Indonesia going about his business. I don't want him to think that I dislike him just because I'm against mass immigration into into Europe or to the to Australia or wherever. So it's good to be very, very specific when you're talking so to not get your enemies and a chance to score a point on you or whatever it might be. So be specific and you will avoid a lot of misconceptions. And also if you want to attract people to your view of thinking, you have to be specific. You have to say, I'm against this and this is what I want to do. I want to repatriate all criminals and everyone who's been on social service for over two years or something like that. That is what most people can also agree on. It's nothing controversial. So when you actually put it like that, then most people will agree.  So you need to be very precise with your own messaging. Now, on a related note, also when it comes to these labels, I'm quite hesitant to label myself. I always say I'm a European gentleman. That's it. So therefore I conduct myself in hopefully I hope I conduct myself in a gentlemanly fashion. I do try at least. And then I say that I'm Europeans. Therefore I stand for European well-being. I work on behalf of European civilization. It's quite simple stuff indeed. Now, when you talk about which I have done by the way, so I'm guilty. I am admitting my mistakes here. When you talk about left wing, right wing, there are individuals still who might think in terms of left wing being for the people, you know, good welfare, good hospitals, everything like that. And they view right wing as a sort of crony capitalist bad individuals.  And you view left wing as anti-white hatred. So when I say leftist, I mean someone who is against the family, against European civilization, against order for criminality, for degeneracy, everything like that. So when I say left wing, it's more of a philosophical position. But there might be especially older guys who have been, you know, a working class guy their entire life, they're a bit older now.  So it can be good to be precise there as well that when I say I'm against leftist because I'm against the communists in the Spanish Civil War, raping nuns and burning churches. That's what I'm against. I'm against leftist now working for open borders because it spells disaster for my own people. So it's really important to be always very specific, very precise with your message. Now something to keep in mind as well is that sometimes you have to, you can't cater to everyone at the same time. Sometimes it's good to have a message for an intended audience, a specific audience, and many of my videos are this way by the way. So I know that there are many guys who, you know, they're brains on liberalism, so they don't understand the appeal of, you know, a mental image of a questing knight going through a thick forest in search of the holy grail. They will not be attracted to that image at all. They can't use it in their own quest for self overcoming. And then I have guys who know exactly what I mean. They're immediately drawn to that image because it's something deeper within us. So this goes into biology and the biospirit as well, the race of spirit, the race of soul, as Ulyseavala talks about. So sometimes you just have to acknowledge the fact that you can't appeal to everyone with a certain message. And many of the videos I've made, specifically to an audience where the guys are like myself, they are attracted to certain ideals, certain imagery, and then you just have to, yeah, deal with the fact that you have some liberal, some smart liberals who don't understand and you can never convert them to your way of thinking because they don't have the biology for it. And this is by the way something I like with having my, the greatest podcast is that I know everyone who is there, they already have a base understanding of my goals, our goals, our worldview. So I don't need to be, I don't need to spend so much time talking about fundamental stuff. So you're already on a certain path. So this is also when we're talking about spiritual matters, esoteric matters that you have the esoteric guys who have a certain appreciation for something deeper and higher. And then you can speak exoterically to the individuals who perhaps don't have that sense of the divine. So anyway, that's a different topic, but the point is that it's good to be precise and to explain things, but sometimes it's also necessary to just accept the fact that some people will not understand what you're talking about. So my training videos, for example, I know full well that many guys they come in to look at my training videos and say, oh, this narcissist is posting in the forest again and it's self-aggrandizement and what have you. I understand this, it might seem strange for someone who doesn't train himself, but I know they're appreciated by individuals who train, so they understand, so the videos they are meant to be seen by the guys who are also training. So I hope that was somewhat insightful and informative. And yeah, good stuff, good stuff. Thanks again so much for all your support. Do check out all the links in the description box below if you haven't already. I can warmly recommend all the links, of course, because it's my own stuff and I'm my own most loyal customer. And yeah, good times. I will talk to you in the next video. XOXO, boom.