The signal oil program the whistler whistle is your signal for the signal oil program the whistler I am the whistler and I know many things for I walk by night I know many strange tales hidden in the hearts of men and women who have stepped into the shadows Yes, I know the nameless terrors of which they dare not speak Yes friends, it's time for the signal oil program the whistler rated by independent research the most popular West Coast program in radio history and Signal gasoline is tops to tops in quality. It takes extra quality, you know to give you extra mileage and Signal is the famous go farther gasoline So look for the signal circle sign in yellow and black that identifies friendly dealer owned signal service stations from Canada to Mexico And now the whistler strange story The girl next door It was in a small but very special way a moment of triumph for Alma Germain On the surface of course the matter was pretty small and unimportant Nothing to compare with ten years ago when she was a national celebrity When her every move was recorded faithfully the next morning in syndicated columns to be read and appreciated by 30 million movie fans But the satisfaction the rising warm feeling inside was there an Alma smiled across the black ebony desk at the puzzled face of Oscar doll the producer Lean back in the Chinese red leather sofa and flicked an ash into an onyx tray at her elbow Alma, honey Maybe I'm subnormal this morning, but I swear I heard you I simply don't want the part Oscar Is there anything so puzzling about that you don't want the part I don't want the part period mind if I ask why Should be very simple Oscar six months ago You gave me a dozen good reasons why I should never act again. Oh for heaven's sake. Hmm. I retired at the top seven years ago While I was the girl next door node in love from Maine to California Yes, I know but I told you this part has nothing to do with a girl next door. This is a mature role You're not an angel no any longer my dear your somebody's mother And don't tell me you sat in a dark corner for six months and came to a reasonable conclusion because I know better Nobody get it. Nobody in this crazy town had more genuine reverence for a fast dollar than Alma Jermaine There's only one reason you turned down 2,500 a week. Oh Somebody's made a better offer and I think I know who who Neil Roberts You're guessing dear you deny it. Well, not exactly What makes you think it's Neil observation my dear Watson? I've seen you out with a guy He's as dull as they come but he's got money and runs a newspaper When I add that to the fact that your stone broke I smell orange blossoms and hear the wedding march in the distance. What makes you think I'm broke I got that from the detective Detective surprise honey. What do you mean detective a private eye Neil's sister? Hired a month ago was around asking questions about your background. She's got her nerve Oh, she's got more than that angel. Well, do you know her or not? She owns that newspaper her brother operates watches him like a hawk gives him the go-ahead before he ever makes a move She has nothing to say about whom he married. Oh, you just don't know Louise Roberts. You ask me honey I don't think she'd like you for a sister-in-law now if you act sensibly and take this job I'm offering you for a solid 2,500 a week for the run of the picture Well after all there are other actresses in town then by all means find yourself one Oscar I told you I'm through with pictures.  Of course not. Okay Too bad though this part was made for you and I hate to say it honey But I think you'll find the role of Mrs. Neil Roberts a little bit tougher to play Alma do you mean it? Of course I do Neil now. Let's dance. Shall we wait a minute? Well, I I can't believe it, but I'll say it again. I love you very much darling And I intend to marry you but the last time I proposed you said I didn't have a prayer I changed my mind darling. You wore me down You know, you know, I feel like standing on top of this table and shouting Tell them the girl next door is going to be Mrs. Neil Roberts Strange isn't it to me at least you are the girl next to him You know, I think I fell in love with you the first time I stood at my window and saw you over in your garden You took your time telling me. Well, I don't know. I I had no idea you'd take me seriously You were so famous and pretty Well, I made a career of it darling, but you were more than that Elma I'm aware of it, you know the real helmets remain charities the things you've done for other people You're sweet Neil Now let's dance shall we dance? Oh, but I've got to tell people I want Louise to know Does she have to know Neil tonight? Well, why not? She'll about to talk to you tomorrow, of course Yes, of course Uh, Neil, why don't you call Louise? Tell her I'd be delighted to have her over tomorrow afternoon round three fine I know we'll have a lot to talk about Are nice to see you Louise do sit down I'll ring for tea or would you prefer something nothing? Thank you, and I'd rather stand Elma Neil tells me you're engaged. Yes last night Robbers sudden isn't it? Oh, do you think so? It's been proposing for over a year And you turned them down until you found yourself up against it financially, right?  I'm turning full control of the paper over to Neil That's quite a responsibility and you'll need a wife who can help him shoulder it Thankfully Elmer you're not exactly what I had in mind. Oh, what did you have in mind? Certainly not a woman six years older than he is Who's marrying him for his money? You've never liked me. Have you Louise? My personal dislikes don't enter into it I love my brother. Well, he loves me. He's in love with a shadow With that wholesome charitable little character you used to play on the screen the girl next door and you resent that I resent hypocrisy Charities indeed money donated in your name by your gentleman friends. Listen to me Louise You might just as well understand this right now I will not give Neil up under any circumstances. I may have something to say about that I'll find a way to prevent this This incredible marriage if it's the last thing I do With the prologue of the girl next door the signal oil company is bringing you another strange story by the whistler But now a message especially for you drivers who have new cars or expect to be getting one Just any motor oil won't do you know for today's high efficiency motors. No, sir They need special protection against corrosion wear and carbon if they're to give you the long trouble-free service you have a right to expect That's why signal has brought out a new and finer motor oil Especially created to give modern motors this extra protection Of course signal premium has 100 pure paraffin base But in addition a total of five scientific new compounds have been added to signal premium motor oil Which by actual test keeps motors six times cleaner and reduces cylinder wear one third Get that motors actually stay six times cleaner and cylinder wear is reduced one third with signal premium motor oil So if you want to keep the performance of your car young Make your next oil change a change for the better Switch to the new type signal oil. That's your guarantee of a sweeter running motor Signal premium motor oil And now back to the whistler Well, the lines are drawn aren't they alman Louise roberts knows you're marrying neil for his money and she's going to move heaven and earth to prevent it You feel sure that all the detectives her wealth can hire Won't be able to discredit you won't discover a thing about your carefully concealed past Your life before you became a movie star You decide to let things lie quietly for a few days And then a week later you drop over to the roberts home next door Smile pleasantly at mrs. Ridley the housekeeper as she admits you Good afternoon, mr. Ridley. Oh, mr. Maine come in won't you? Mr. Neal's working up this study. Oh, I hear miss roberts has gone away. Yes till monday Maybe that'll give me a little time with neal. I've hardly seen him the last few days Oh, I know and I think it's just awful. She's gone out of her way to keep them busy If you ask me she's jealous. Oh, why oh, she's too fond of him to say anything But the way she looks when he mentioned you Like she wanted to Well, if it was me, I'd marry him right now while she's gone. Oh, I think I can cope with it Well, just the same. I wish for your sake. She'd stay in indiana Indiana Yes That way she went Why thought you knew Mrs. Ridley, you're sure that well, I saw the plane ticket. Why would she go there? What business? I suppose she Oh, are you all right, mr. Maine? Oh, yes I'm all right. Hello. Is that you? Yes, darling. Well, you know how it is dear the tyrant sister of mine keeps my nose to the ground Doesn't she though? Ah, but she's an angel come lost without him Yeah, how about some tea or something mrs. Ridley? Yes, sir. Mr. Maine should use a cup Mm-hmm Now then deling kneel I want to be married right away. Well, but we plan next month. Please Let's get married now Now tomorrow. Oh, but louise won't be back till the day after It only takes two of us dear. Oh, well, I couldn't do that to my sister Why dear? She's taking our marriage so hard. Why prolong it? It could be all over by the time she gets back. You think it's better. It's kind of kind of Well, that's so like you, Alma. We can have dinner with with ruse and jerry, perhaps Then it won't seem pretty tomorrow night. We can fly to yuma. Well All right, if you say so Neal near dying You're such an angel neal You'll never know what you've done for me Neal doesn't know what he's done for you Doesn't realize that there might be some hidden meaning in louise's sudden trip to indiana But you know the meaning of that trip. Don't you alma? You know exactly what louise might discover And exactly how your own position will be threatened If the scandal concerning you and the late james chote comes to light And that's why you've made up your mind alma about your marriage to neal louise loves her brother She'd never spoil his happiness by exposing you You're counting on that as you rush the plans for the wedding and Phone your friend ruth forb and begin plans for an informal barbecue out by your swimming pool And then the following afternoon Mr. Finish my swim That's a five o'clock just about miss. Oh, I had no idea. It draws me that tower. Will you door? Here you are miss. Oh, thanks. Probably shouldn't have gone for a swim Oh, so heavenly Oh, yes, the table looks lovely. Oh, thank you miss. I brought down the fire lighter. Shall I start the charcoal? No, never mind. I'll do that. Is there anything else at all miss? You know, I'm going to the movies tonight with mrs. Ridley. Oh, that's right No, dora. I think that's everything if the forbes come before you leave send them down here. All right, miss Adora, where's that lighter you brought? Oh, never mind. All right. See you alma Louise, I didn't know that you no one does I just arrived we we didn't expect you until late tomorrow. Yes, I know But it didn't take me long to find what I was looking for In indiana. I don't follow you. No, I followed you Right from the time you made a mistake in a magazine interview You mentioned a town in indiana So of course you flew right down there the busy little bee. I was busy. All right reading old newspaper files That's how I learned about james chote. Well, what if you did so it was found dead in the burning shack that doesn't prove anything Oh, did I miss something? That isn't what I read at all But what no I read about chote being found in a hospital in a very critical condition They were trying to contact his wife a pretty 17 year old named alma You're lying He died in that fire. I saw him the fume from your agitation that you set the fire. What are you saying? Jim's dead You can't prove anything louise. You're trying to keep me from new, but you can't do it.  I can't forgive you for that You don't want to scandal you know you don't touch even if it makes now after you've done to me I'm going to show you up elma tomorrow on page one. No, you can't do that. I won't let you no one lets me alma I do as I please. No, do you hear this is one time? You won't stop it. What do you alma? You stand there alma Watching at the edge of the pool The club-ended firelighter clutched in your hand as louise stunned by the blow struggles feebly in the deep water I hope you do. I want you to drown Louise.  They've arrived They'll be coming down here You're panicky now And you're only thought is to conceal what you've done to get louise's body out of sight You look around wildly behind you as the open door of the bathing cavagna For the last shattering effort you dragged a wet sprawling shape from the pool Over to the cabanian thrusted inside.  He's bringing the drinks down. Well darling, what's wrong? You look exhaust Well, I didn't realize the time I was swimming isn't when I heard you coming Sorry, I wouldn't mind to swim myself. How about you? Oh, love it. Have we time darling? Well I suppose so only Silly, I mean, but I locked the key inside the caban. You're all the suits are in there Oh, I have a key. You are remember you gave me one so we could use the pool when you're away I think it's here in my turn. Look really, there isn't time. The charcoal's ready. Well, you know how it is. We'll stay Yes, well, here we are everybody I told her maybe you could persuade Alma to allow us to swim kneel. No, she being selfish I think you must have a man locked in the cabana Oh, don't pay any attention to him darling. Just a joke.  Oh, thanks And Alma, don't worry about that man in there.  Secretly you cursed that first wave of panic that blinded you to the easy way out To the simple fact that it could have looked like an unfortunate accident But now you can't use that explanation, can you? They'll know the time of death Alma. The police can determine that So your removal of the body will point to one thing only The guilty knowledge of murder Your desperate purpose now is to get your guests away from here. Make some excuse to send them home so you can think Finally you'll manage it and as they're leaving it's Ruth who unknowingly suggests to wait out So long Alma. Good night. Oh, it's been delightful darling. Even if we are kicked out at 8 13 But I thought you were going to tell them our big news. I'm sorry kneel. I've an awful headache Oh, you've certainly been edgy and what about the big news news? Yes. What's Neil talking about? What are some of the time? Oh, you've been completely frustrating this evening darling Next time I want to swim. I'll use kneel pool kneel pool Yes The good idea. Oh, she's just being cruel honey. Hey kneel. You're driving us. We'll be right with you. All right. Bye Dearest, what is it? Why didn't you tell him about us kneel? I I was wrong. We can't get married without telling louis But you said yes, I know I know but we really should wait I've thought about it dear Now run along. I'll see you tomorrow. Well You think it's best. I know it is I want to do the right thing. Of course you do elbow That's why I love you Yes, Alma Ruth gave you an idea when she mentioned kneel swimming pool kneel in louise's pool right next door The diving accident story you overlooked before will work now if louise's body is found there Just another swimmer dead in the water with a bruise on her head It's a terrible ordeal, isn't it, Alma? But somehow in the darkness you manage it get louise over to her yard Change her into one of her own swimming suits And ease her into the water A short time later you answer the insistent ringing of your front doorbell Why mrs. Ridley? Oh, mr. May please come quickly Something terrible happened. The police are at our place. The police? Yes, it's miss robert Say it wasn't an accident. I didn't say for certain that it wasn't an accident. Miss germane. Yeah, I'm hard to satisfy The miss robert's was um She a careless sort of woman and dressing so forth Certainly not She was well groomed and quite correct in everything yet. There's very correct lady went swimming in a sun suit sun suit That's right Seems like a little thing maybe only it's a masculine kind of mistake You're You're not suggesting that neil. I know they were a devoted brother and sister no apparent motive at all still robert's wasn't very definite about where he was around five yesterday He was calling for mr. Mrs. Ford's. He brought them over to a party at my home But he could have killed his sister before he went after them. We couldn't have I I know he couldn't You love him very much. Don't you miss germane? But isn't just that I I know because Because I saw louise alive. Sorry. Yes She was in her pool swimming just before neil and the others came where she waved over to me Oh, and you didn't tell her brother. She was home Why didn't occur to me? I thought he knew Well in that case miss germane. I won't attain any longer. It must have been an accident lieutenant does look like it Anyway, I'll check with the gardener gardener. Yes, robert says he was working around the grounds all afternoon If the gardener's story checks with yours, well, that'll be it Good night, miss germane It was a bad mistake wasn't it alma in your murderous haste you dressed louise in a sun suit Instead of the bathing suit. She'd naturally wear But it will all be all right alma everything If only he doesn't know for certain that louise wasn't swimming in her pool It seems forever doesn't it before the lieutenant is back again Well, miss germane. I couldn't reach the gardener, but I talked to the housekeeper over there mrs. Ridley she says the gardener can't be of much help to her Oh seems that he was driving mrs. Ridley and your make dora to the movies at five o'clock He couldn't have seen miss robert's in the pool when you did I see Then does that mean that I'll have to take your word for it? Yes, it does as far as I can make out it was an accident like you said Sorry to bother you at this late hour miss germane, but I thought you'd want to know Of course, it's no bother I'm so relieved For neil's sake Whistler will return in just a moment with a strange ending to tonight's story Meantime a word to you folks who have not yet taken your vacation about an item that will have a lot to do with your driving pleasure gasoline No matter where you travel throughout the pacific coast states from canada to mexico You'll find signal a famous go farther gasoline Almost 2 000 friendly dealer owned signal stations stand ready to serve you and to honor your signal credit card And remember when you power your car with signal the famous go farther gasoline You not only enjoy signals good mileage, but also the thing which makes that mileage possible Extra engine efficiency, which naturally means more thrilling performance for your car So on your vacation trip and always to be sure of the tops in gasoline quality Just remember these two points One in gasoline it takes extra quality to go farther And two signal is the famous go farther gasoline And now back to the whistler Our expensive little world is safe again Neil's in the clear now Free to marry you without any interference from his sister Yeah Louise roberts is safely dead and your whole murderous past with her It was a desperate few hours But the absence of motive and your one efficient lie convinced the lieutenant that it was a tragic accident nothing more That's why you're surprised the next afternoon to find the lieutenant back at the door again walking in Sitting down in the luxurious house.  I thought we were rid of you. I know I'm funny The boys at the department rib me about it even when I'm sure I always have to check And what are you checking now the gardener? I finally caught up with him today I thought mrs. Ridley said that part's okay He wasn't there to pull around five yesterday and he didn't notice the body at ten when he came back Then what's so important very important because after talking to him I changed my mind about mrs. Robert's death It wasn't an accident at all It was murder. What are you saying? Why'd you lie to me yesterday, mr. Mayne? Why'd you tell me you saw louise roberts in swimming? I did see that robert You're all finished mr.  This is outrageous. I don't know what you're talking about Why'd you lie to me?  Mayne At the time you claim you saw louise roberts in swimming There wasn't a drop of water in the pool Let that whistle be your signal for the signal oil program the whistler each wednesday at this same time Brought to you by the signal oil company Marketers of signal gasoline and motor oil and fine quality automotive accessories Signal has asked me to remind you to get the most driving pleasure Drive at sensible speeds be courteous and obey traffic regulations It may save a life Possibly your own featured in tonight's story where betty lou gerson and tom collings The whistler was produced by george w allen with stowley by william engvich Music by wilbur hatch and was transmitted to our troops overseas by the arm forces radio service This is marvin miller speaking. This is cbs the columbia broadcasting system


What is Stackless Python? If you've heard of Stackless Python, you usually think of it associated with lightweight threads and usually very big online games, i.e. Eve. But in reality, the reality is Stackless Python is a super set of standard Python and we'll refer to standard, in this talk we're often going to refer to standard Python as C-Python and I'll explain that a little later. The language crew is created by Christian Tizmer and again, if you've heard of Stackless Python, you also, you know people tend to associate it with being able to recurse infinitely. That's a bit of an abyssinomer, but there's far more to Stackless Python than that. What's the motivation for my talk? The motivation for my talk was listening to other talks. More specifically, watching the Joe Gagario lack of design patterns in Python. There's what, it's a nice talk. There's one part in the talk where Gagario is, he shows a Python based prime number C of using a package called PyCSP. CSP stands for communicating sequential processes. That was created by Tony Hoare. Anyhow, what Gagario is trying to illustrate is a use of a high level concurrency construct, in this case, a channel. A part of this argument is threads are way too low level. The problem is, when you, when he runs the example and also I ran the example, after about a relatively small number, 2,609, the program conks out and you notice here, thread 381, can't start new thread. Well, there may be a number of reasons why that's happening, but it's creating a lot of threads. Reason, the SIV algorithm creates, basically creates a thread for each prime and CSP is using OS threads. So it runs out of threads. And Gagario, you know, he suggests that greenlets could be used. And also, in all honesty, when he's saying he's playing around with PyCSI, he's trying to look for something that could be used with C Python. Anyhow, the bigger picture of his talk is if you have to implement a design pattern, consider adding features to the language. And also he says that concurrency problems or patterns are a rich area. You know, I'm listening to all this. I'm saying, yeah, yeah, you know, I can buy that. I can live with that. Now, I guess, and I'm saying, you know, again, you know, this is a good talk, but, you know, it would have been nicer if you use Stackless Python as an example. After all, Stackless Python has all those language feature goodies, such as coroutines and channels. And Stackless Python implements much of a concurrency design pattern called Active Object. If you've heard of Active Object, it's also AKA Actor. And its intent is to decouple method invocation from method execution. Okay, I'm going to explain this. Basically, what Active Object tries to do is in the same object, it tries to encapsulate the data and the thread that uses it. And what you do is you have message passing through these actors. And what that basically does is it's simple, okay, it decouples the system. And also it makes things like synchronization simpler because it's basically one thread accesses the data. You don't have, so you don't really have things like locks. And the prominent features, and the prominent features of this design pattern is you have a scheduler, you have queues, and you have message passing. There's more features to it. But maybe I should have drawn a diagram for Active Object. But anyhow, the last draw was I'm listening to the talk. The talk is over, and there's this audience member that comes up, and he says, have you played with Stackless Python in its approach to channels and sub-threads? Gaguro? No. Audience member, well, you know, he's stunned. He says, okay, if you're interested, it has a very similar approach. And my reaction to that was, argh! There's other things I'd like to say, but I think this is sort of like a family show. And anyhow, so and one other thing, I hope I'm pronouncing a poor man's name, right, Gaguro, or is it Gagario? Pardon me? Gagario? Gagario, okay. Maybe we should just call them Joe. Hey, aren't all us Pythonistas on a first-name basis? But anyway, just a little note. Gaguro, what he does is he takes he himself, with CSP, he's copying the example that Robert Pike has in his advanced concurrency talk, except he does it in news squeak. What I did was I take the Pike program, and I basically translate it into Stackless Python, and it basically looks like this. Don't worry if you don't understand it right now, but you're going to see, I'm going to explain these little features of the language. It's very short, and there was one other really neat thing that I wasn't aware of. This is a channel, but that's a channel, but she knows that it's being used as an iterator. Very nice. And again, Pike in his talk about the sieve is saying, well, the new squeak version is really, really nice. It's hard to get it smaller. This is slightly smaller. And I have a feeling maybe a generator with a list comprehension could be a bit tighter, but you know, hey. So some comments. As I said, the Stackless ver examples is almost as terse as Pike's example, and you can look for his example. This application has no problem. Okay, this problem has no problem finding 9,973. When Gregorio was trying to run his, he's trying to get up to 10,000. I left this thing on at night, and I decided to stop it after I got to that number. And it didn't even hit 90% CPU doing it. I should have taken more measurements. But anyway, given all this, this is my, this is my basically my case. My case is Stackless Python strength is not only its ability to create lightweight threads. It's also that it has a rather high concurrency model. The fact that it gives you stuff like activity object, it's built in the schedulers built in the, the communications mechanisms are all built in. It means that you're focusing more on algorithms. You're not focusing on nitty gritty. And isn't that what Pythonic is about? And I'll, I'll throw in one other thing. I was watching the David Bezley talk on a curious course on coroutines. It's a great, never great talk. And at the end of the talk, he's basically showing how to use generators as coroutines. And a lot of his talk is just showing techniques like trampolining, building up schedulers. And that towards the end, he says, well, my jury's hung on this. I don't really know if it's worthwhile building an operating system. And if you take a look at his talk, a large part of the machinery is spent building up the scheduler. Stackless gives it to you for free. So anyway, let's shift some gear, let's shift gears here. Getting Stackless Python. Basically a few ways of getting it. Check it out via subversion.  There's some binary installers for Windows and a Mac. And yeah, let's thank CCP Game for, you know, being timely and updating Stackless Python. Also, if you want more information, you can go to the Stackless wiki. And also I would recommend you go to the mailing list. There you can see me just pestering folks with questions. Anyway, we start up, we start up Python. I'm using 2.6.2. I haven't quite gone up the three yet. And you see we import the Stackless module. And if we do a DIR, we can see most of the components of Stackless. Very few of these are used by an application programmer. If you're building some tools, there's a few more that you may use. Again, and if you do help, you will see the list of, and sometimes this is very useful because of the lack of documentation. Okay, Stackless and Stackless, what makes Stackless Python Stackless? Well, I'm not an expert in the internals of Stackless Python, but basically it's that, you know, Python, Python frame, it's simply Python frames are stored on the heap rather than on the C stack. So things like when you hear people talk about infinite recursion, well, Stack overflows just manifest themselves as memory errors. The fact that they've moved, they've moved the frames on the heap, enable a few things. Enables the creation, easy creation of coroutines, and pickling of execution state. So basically what you could, by pickling of execution state, basically what you could do with a Stackless Python program is, you can halt it in its tracks, serialize it to say a disk, bring it to another machine, and reactivate it, and it'll pick up from where it left off. It's a very neat feature. So anyway, let's get on to Stackless Python's model. There's very, there's not very much to it. There's basically tasklets for concurrency, the scheduler, and channels. That's it. So let's, I'll explain the scheduler. I'm going to, by, I guess most of you've heard, like, in Unix talk or user space and kernel space. I'll assume you've heard that. The scheduler lives in user space, or the Stackless scheduler lives in user space. It's what performs context switches on behalf of the programmer. I'll sort of explain this towards the end of the talk. And tasklets basically have three states. It's either the tasklet that's currently running, it could be run, or it's blocked. And here's the scheduling algorithm. It uses a round-robin algorithm. Tasklets that can run are stored on a runnable list. Runnable is a doubly, you know, if you're interested, it's a doubly-linked list. Nothing unique about that is basically, anyway. And blocked tasklets are stored on a list associated with a tasklet's channel. If you call Schedule Get Current, it indicates the currently running tasklet ahead. Normally, I get someone to draw my diagrams. Also, I don't know what somebody got lost in translation. I'm very sorry about that. I'll try to fix this up. But anyway, this is essentially the runnable list. And what you see is a tasklet will have channels associated with it. And what this means is tasklet D and E in this thing, they're part of the blocked tasklets. And when we get to channel priorities, this will make a bit more sense. Essentially, this is a way stack... This is the high-level model of the stackless scheduler. Again, in a few days, I'll just fix all this up. So anyway, let's go on to stack... To talking... Yes, thanks. To multi... A stackless basically has two multitasking modes. One of them is pre-emptive multitasking, which is more or less the way most OS schedulers work. However, here, the tasklets are giving a CPU quota based on instruction ticks. The second mode is cooperative multitasking, where the tasklets explicitly yield control to the scheduler. We're going to focus on cooperative. It's a far simpler model than when used preemptive. You have to do far more. And also, you have to start doing things like using critical... Something called atomic, which sort of sets up a critical section. And that starts to get a bit messy. But so we stick to the cooperative scheduling. It's a far simpler model. It's ideal for IO bound applications. And after all, I guess the main problem we're dealing with is handling multiple current events, as opposed to, let's say, doing heavy computations. Yes? Okay, because let's say with IO bound, you naturally know where the tasklet is going to yield, where you want to suspend it, and when you want to resume it. That's why I would say that for IO bound, it's much more applicable, as opposed to something that's compute bound. Because then you have to arbitrarily put in yields. Okay, tasklets. The tasklet class represents a threat of execution. This is where the work gets done. Each tasklet has its own stack frame. And these tasklets live in user space. They don't belong to the operating system. The underlying operating system is ignorant of tasklets. Anyway, tasklets have very low overhead. I've heard a quote that it's roughly 400 bytes per tasklet. And again, the context switching is very fast. Soft switching is about 100 times faster than an OS thread. Hard switching is 10 times faster. And basically, again, this is a bit esoteric even for me. The difference between soft scheduling and hard scheduling has to do with C extension. Sometimes you're dealing with a C extension and you have stuff on the C stack and they have to handle it differently. Beyond that, I'm not quite sure of all the nitty-gritty details. Okay, let's start looking at a stackless Python program, although we already looked at one. Very simple. This is the function. We bind it to a tasklet. We're not passing it any parameters.  Not too exciting. A more complex example is with two tasks. With two, we create two tasklets. And basically what we're doing is we're going through a loop and we're calling schedule. And when we call schedule, what we're doing is we're yielding control to the scheduler and it will run the next stack, the next tasklet that can run. So basically you're getting these numbers interwoven. Again, not very exciting. We get to channels. Channels are really the heart of stackless Python's concurrency model. Channels sort of incorporate both communications and synchronization. They do them both. Basically, channels come from NewSqueak and Limbo. Both of these are associated with Plan 9 from Bell Labs. I think it's a part of Plan 9 and Inferno. So a part of that is NewSqueak and Limbo. These guys are really, if you look at that work, it's a really important source of idioms. You get ideas of how to program stackless Python from looking at the way they use channels. A lot of the tricks are almost directly applicable. So again, channels don't exist. Actually, this is a bit of a misnomer. I'm going to say they're associated with a tasklet, but maybe we should just strike that out. It's a bit of a misnomer, they're bi-directional. You could either send on a channel and receive on a channel. They're unbuffered. And references, including channels and exceptions, can be passed in a channel. This last part's very important. At the heart of channels is synchronous communications. Channels are synchronous. If there's no receiver, the sender will block. If there's no sender, the receiver will block. So basically, it's rendezvous semantics. Also, another neat little thing about channels is they can masquerade as iterators. We saw that in the prime sieve. And basically, in stackless Python, when you're using channels, you often use channels to build up more complex constructs. For instance, you may want something like a synchronizer, a semaphore, and you tend to build these things from channels if you find a need for having them. Here's another simple example using a channel. What I do in this is I can force an ordering. I can always make the first, there's two tasklets, first and second. Based on the channel, I can actually force, even though first doesn't run first, I can force it to run first, simply by using the way I use the channels. Basically, even if second runs first, it has to wait until first sends a message. So you get an output. You can do more complex logical orderings this way. However, as simple as channels are, the synchronous nature of the channels and the cooperative scheduling allow deadlock conditions to occur. This is something you see newbie programmers, if you go through the stackless mailing list, you'll see quite a few people are saying, well, I have all these tasklets and they're all sharing channels and they're in this nice network and nothing happens. Problem is it's often silent. What stackless does, it's a quirk of the scheduler. When there are no more tasklets that are runnable, it makes the assumption that there is deadlock and it simply terminates. And sometimes it doesn't even say this, it just terminates and it's up to you to know. And here's an example that will create deadlock. All the four fundamental conditions of deadlock occur. No preemption, no mutual exclusion, you have hold-in-weight and you have circular weight. They all occur in this little example. And although I'm not going to really dive into this, but often a little trick you can do is, this is normally used for pickling. You can use the reduce function. So what I've done is, pretend the rest of the program is up there, I do a stackless run, it just drops out. And I'm wondering, hey, what the hey? So I'm basically printing out the state of the two channels. And what I've done is I've just made the names nice. Really it's like tasklet reference at blah, blah, blah. And what you see is you can see A waiting on that little list. You remember that picture I have of the list connected to the channel? Well, that's it. So that's a trick for debugging. Okay, now we're going to get into a very common idiom that you find in stackless Python programs, is often you have sort of like two objects in ascend-receive, sort of like ascend-receive protocol. And what you do is you hide the request channel with a proxy or some interface. And what you do is the client tasklet will create its own channel and send it as a part of the request. The server will munch on it and use and write back a result. This is a very, very common idiom. And we're going to revisit it in a much bigger way. And that's the example of it. Sorry for using a global. And if we did this, all you basically see is the request handler just answering that, yeah, I got the reply. Very simple, but this technique is used a lot. And we're going to move to the last part before we have enough stackless Python to do complicated things. Channel preferences. Stackless Python has a very, very simple scheduler. However, there is a limited form of schedule prioritization. It's called a channel preference. A channel preference is a property of a channel. If you set it to minus one, it's receiver preference. If you set it to one, it's sender preference. If you set it to zero, it's neutral. The main distinction between the preferences is this. If you are a preferred object, what the scheduler will try to do is it will try to put you at the head of the runnable list right away because the idea is there's data waiting for you. If you're a receiver, there's data waiting for you. If there's a sender, there's someone out there who can get information from you. And it's got some interesting consequences. One of them is it allows channels to simulate queues. Here's a very simple example. Again, yeah, I shove the global there. I didn't feel like writing get off, but I'll do that when I write a better example. So basically we have a whole heap of consumers and one producer. And when the channel preference, then I'll show you what the differences are when you have receiver preference. In that case, the receiver preference is on the producer. So basically what it's doing is it's going through all the... it's grabbing data from all the consumers until there are no more and then it writes them out. So basically this is the producer just operating on all its data and then all the other guys get to run when he's sending information back. But with sender preference, it changes. It interleaves. Maybe the main... outside of being a source of confusion for people from the few tests of run, the only real significance I find of this is if the numbers are sufficient... if the numbers are sufficiently large, it starts to have an impact on the execution and the response times. You can sort of see this. On the first receiver, look how long it takes me until I get a message back. However here, I start to get responses back almost immediately. Again, this is something you see in an operating systems book. It's covered quite early. And finally again, when the numbers are large, again you can see that I'm only making one context switch here and I've got about ten context switches there. But context switches are very, very fast. So until you get very big numbers, it really doesn't matter in most cases. So that's all for part two. Let's move into limitations. So far, you know, I've been showing you the upside of Stackless Python, but you know, so you must be wondering, well, why don't we all use it? Yeah, why don't we all use it? Well, it's got some problems. One of the limitations of Stackless Python is it uses a global interpreter lock. But then again, same as C-Python, the second problem is Stackless Python tasks with certain user space. Again, basically the basic answer when people say, yeah, but you know, Stackless Python for all these, you know, threads it can create, you know, it's using a GIL and most people say, well, look, you know, Stackless Python in many ways is based on C-Python and PyPy, and when they solve that problem, Stackless Python will follow. It's sort of flipped, but that's the reality. Let's get on to the real problem. User space threads. As I said before, Stackless Python tasklets and the tasklets and the scheduler run in the operating system's user space. When a tasklet makes a system call that blocks the operating system, what happens is if these tasklets are running, the tasklets are running in OS threads and are running in an application. So when a tasklet makes a blocking system call, it blocks its associated OS thread. And sometimes that's just tantamount to blocking the entire program. So it doesn't matter if you have 10,000 tasklets running. If one blocks, everything blocks. Usually, the reason people care about this is they're using Stackless Python for some form of network programming. That's what most people do. And the solution is you use tasklets in conjunction with an asynchronous IO package, and you've probably seen Async Core, LibEvent, or Twisted. So now we're going to get into the integration techniques. One thing before I get into it is, again, there's another interesting design pattern called the half Async. Again, it comes out of Doug Schmidt. He's the guy that really works on network concurrency patterns. And a major, and Schmidt says that this originally came out of BSD, BSD Unix. But there's a very interesting consequence of using this design pattern is you get a good compromise between the programming ease of a synchronous model combined with the performance of an asynchronous model. I don't want to get too much into that. But again, if you read the Twisted mailing list, you read the Stackless mailing list, you read literature on concurrency. You see this classic debate against event-based models versus thread-based models. There's papers like, oh, who's the guy who invented TCL, TCL John Uderhout? Osterhout. He's got, why threads are a bad idea? And then there's guys who write papers. No, excuse me, why threads? He writes, why are threads a bad idea?  Why events are bad ideas? And it just goes on and on. Anyway, we're going to shift gears once more and talk about the solution. How many of you have heard of reactors? OK. Most asynchronous IO packages are based on something called the reactor pattern. Most operating systems have support for this pattern, i.e., the select function, E-Pole, or, I guess, wait for multiple events in IO ports in Windows NT, or I should say the Windows operating system. Reactors are typically associated with event-driven programming. Reactors provide a limited form of non-preemptive multi-tasking without threads. Again, this is a very important point that Schmidt makes the original paper, that reactors really are schedulers themselves and they promote a non-preemptive form of multi-tasking. So the general strategy is the client, that is, the program, in our case, it's a tasklet but it could be a function. It registers a callback function associated with an event. Maybe it's a receive with the reactor. And then the function, that function ends. When the event occurs, the reactor calls the callback, passing it a result. Since I use twisted, that's a very, very simple twisted example. This is us basically saying what the function we want. We add the callbacks. And when we do reactor run, this whole thing occurs. And these are the callbacks. It's, unfortunately, I didn't, I, okay, when I gave the talk at PyCon 2008 called Adventures in Stackless Python Twisted Integration, I know that's a bit of a mouthful. I had diagrams that showed how twisted control flow works. Just showing you step by step. It's interesting what, basically in Twisted you have two phases. The first phase is the code makes the call. Under the hood, it's writing to a list of, there's about three, there's three lists. There's a reader set, a writer set. And I think there's an exception set. But you have these sets. And then in the second phase, the event, the twisted event loop reads these sets and carries out the operations. So there's like these two strokes in Twisted. So anyway. So the basic integration technique is you associate a callback with a channel. Here's a technique used by one of the twisted, one of the twisted guys who also happens to play with Stackless Python. Do you notice that it looks a heck of a lot like the idiom I showed earlier? It's almost the same. Except he uses an inner, he, in his case, uses an inner class. Basically, think of it this way. The, the, pretend there's a tasklet here. It, it wants to do a get page. So get page returns a deferred. It's creating a channel. It sets up the callbacks, registers them. And then it does a channel receive.  Oh, I made a little mistake here. I, bad, bad, bad. I forgot to do this. You do a channel send. It's not a return. That's silly, silly, silly. And you send back that tuple. So let me, let me fix this. And what happens is this tasklet will wake up and it will return the result. Okay, that's a mistake. Pardon me? Oh yes, that, yeah, I should put some data there. I'm, yes, like a URL. Yeah. Yes, I'll fix that. Okay, the second, the second part of the technique is you run the reactor in its own tasklet. Now, as far as twisted, as far as stackless is concerned, the reactor is just another tasklet. It looks like just another, in that example where I had the single producer and many consumers, it's just another tasklet which gets requests and it pumps out results on the channel. And from the reactor's point of view, it doesn't even know about, about tasklets. It's just dealing with callbacks. The last part is you have to make the reactor tasklet yield. Again, intrinsically stack, okay, intrinsically packages like twisted don't know about stackless. They don't. You have the same problem if you're dealing with something like let's say WX-Python or any GUI application. They basically, they're a part of what they do is they, they are schedulers and they think they own the machine. And you don't want to alter, you don't want to alter twisted to put stackless-isms in it. So anyway, where I'm going with this is it doesn't know, it intrinsically doesn't know about stackless. So what happens is it's running and if it doesn't yield, tasklets that can run will not get a chance. So you have to have a technique for making them yield. Fortunately, in a case of twisted, you can do something very nice. You can use a task looping call. Normally I would just put the stackless schedule here, but for some reason I'm getting a weird error and I haven't hunted it down yet. But anyway, the general idea is what a looping call does is every so often what will happen is under the hood when the reactor's coming out of e-pole or select. What it will do is it will call, it will call the looping call. Usually this is used to schedule regular events. So all we do is we tell it yield. So other guys get to run. And I don't have an entire example, but this is what a fragment would sort of look like. Now there's one very interesting thing if you code in twisted. You notice that everything now looks synchronous. The call really, you don't see callback code anymore. And yeah, I think I got it right here. Again, the guys in twisted are trying to do something like this with something called have you ever used an inline generator? That's what inline generators are trying to do. So so far we've shown, I've shown you it from the viewpoint of being a client. I'm a client and I'm making calls out. But what happens if I'm a server? It's basically the same thing, but in reverse. And you have one of two choices. You can either create a tasklet. And it's sort of rendezvous. It's sort of like you create a tasklet and it has some mechanism for telling the underlying listener, hey, I'm listening to, let's say, this URL. And when there's a request on that, it wakes it up. Or what you can do is it could, when there's a new request, I simply create a tasklet and handle it. I'll post code for this, because most of the work I'm doing, I was doing with WS Beeple comes out of this. Again, again, I'm sorry that this is, it's twisted oriented. But basically, actually, again, I need to draw, that's what I was sort of talking about. It's sort of, you can think of time going this way. Think of some request, basically, in the beginning, you have a tasklet. It says, I'm interested in a particular event. Let's say, you know, a request comes in. You have some mechanism, you're passing it a channel and you're saying, I'm waiting for this URL. And it goes to sleep. Then some, then later on, a request comes in from the internet. The request handler simply talks to this guy. There's a match and it wakes him up and gives him information like a return channel. The guy does this stuff and says, okay, I've done, I've finished, I've finished processing and this is the response I want to give. And you give it back to the request handler and it gets sent out. And again, that's what that little piece of code basically does. I guess, I guess the reason I care so much about this, and again, it's from, from adventures, is I ran into a really severe case of deadlock.  However, what I had this guy doing, I had this guy also calling out to the internet. Yes, two other databases. In WS Beephole, this is called architect, what's the term? Architectural composability. It's sort of like, think of it as the unit principle where you have a whole bunch of pipes and filters and you're connecting them to create steadily larger applications. Well, in the world of web services, architectural composability is a huge part of service oriented architectures. You have these guys and they're calling out to other guys and all together they're creating, you're basically creating bigger apps. The last word, so far I've showed you a lot of the machinery. The interesting thing about the machinery I've shown you, and I sort of hinted at it already, you don't only use it for networking. This also applies to windowing. If you were playing with something like Pygame, you'd use similar techniques. For most of these things, like windowing systems, you're usually like an idle and you would hook in a schedule and not a idle function. But anyway, the final word is stackless socket. Basically, for most programmers, you really don't have to do this. It's nice to know what's under the hood, but you can get away with not knowing it. There is a module called stackless socket. It's a plug-in replacement for sockets. It was developed, I believe, by Andrew Dalkey and Richard, too. The idea is you create a proxy class that implements the socket interface. But under the hood, it's using a channel and an asynchronous package. So you just drop it in and it just automagically works for a lot of third-party libraries. Anyhow, the future, the last part. Basically, you can argue that there's two tracks to the future of stackless. One of them is C-based stackless Python. Develops in step with C-Python. Basically, each new release, some wonderful guys typically from CCP Games. They sit down and they do the necessary changes. I believe you have to alter around 5% of the code to get stackless Python to port the changes to stackless Python and away you go. However, there's this other track called PyPy. There's a lot of overlap between PyPy, stackless Python, and Cyco in terms of the implementers. Christian Tismur's probably... Yeah, Christian works on PyPy. Basically, what PyPy is, it's a Python-based framework for developing interpreters. One of its original main ideas was to prototype future Python features in Python. Also, they want to eliminate the need to write C extensions. Okay, what's happened with PyPy is this. They've basically implemented stackless... The stackless Python, they've done two interesting things. They've done two interesting things with stackless Python. First of all, they've busted apart stackless PyPy's model. Let's say it's gotten much more richer. You have coroutines and you have greenlets. Also, what they've done to stackless Python itself, and the main distinction between coroutines, greenlets, and tasklets is tasklets are rather high level. Tasklets sort of presuppose a scheduler. Coroutines don't. So basically, if you wanted coroutines, the programmer is more in charge of when to do the context switches. The other neat thing that's happened is this. The stackless Python module itself is now written in Python. So if you go there and take a look at the stackless.py, you can see all these algorithms are described for how stackless Python works under the hood. You can look at them and they're in Python. And also, if you want to create, if you want to make, let's say, you want to add new mechanisms to stackless Python. A good way to prototype is, I guess you just branch stackless Python, the stackless Python module, and put your changes and try them out. And maybe if they work, then, and you're a brave soul, then maybe you want to put them into the C implementation. And I guess eventually, when Python, when stack, I mean when PyPy gets sufficiently good performing, that won't even be necessary. So anyway, I guess this is the end of my talk. Thank you for your time.


Hopefully everyone can see that, I'm going to take that as a yes, it's been one of the lines of the last year or so of doing online presentation, online teaching, assuming the tech is working. Anyway, thank you Richard for that introduction. I'm speaking on behalf of a collective environmental archaeologists, I don't know what the collective noun is for a group of environmental archaeologists, anyone has any suggestions please put it in the chat. So it's myself, I'm standing on behalf of Dr Kevin Carney, we can hear at UCC, Wendy Carruthers, David Smith, University of Birmingham and Matt Law Bath Spa. I'll be honest, this is going to be kind of a broad overview of the results of our work to date. It's by no means exhaustive and it's by no means final and in many ways, I think where we are and this probably comes through with Martin's excellence or previous, I hope it's kind of given a really good introduction to the landscape we're investigating. In many ways, I think we've come up with probably more questions and answers, which I think is a good thing but certainly some of the key questions I'll return to in this I think are relevant in terms of how we understand dogland as a landscape on different scales. So that's something that hopefully I'm going to touch on. So the the cores I'm going to talk about are only four of the cores and as I say these analyses are by no means complete. So we've got core 34 that's been mentioned already, we have core 51 which is down here and we have core seven and 20 which is over here. So again, Martin gave you a reasonable idea of the scale of the landscape. I think it's very easy when you're working on submerged landscapes to kind of lose the idea of scale that we're so used to when we're working on terrestrial areas. I really like Martin's image of the Thames Valley, that gives you an idea of the kind of issues, I suppose around scale and interpretation. Anyway, so I'm going to begin with L34. This is sorry about this, this is the saddle core that Martin mentioned earlier, it's a small wetland, fresh water wetland perched on what Martin refers to the saddle and every time he says saddle that's what I think apologies. I'm really going to look at the bottom part of this core so really a 50 centimeter section at the bottom. So it's a series of organic clays and silts into a peat. Tom Hill is going to return to say a bit more about the silts and clays in particular that's really important in terms of the formation of this small fresh water wetland. So just bear that one in mind for the subsequent presentation. I should also at this stage lodge the following trigger warning. I'm really sorry there are going to be pollen diagrams in this talk. I can only apologize for that. Again, I think there's a few paleocologists in the group I looked through earlier. I think I saw Michael Grant now, I'm sure there's some others. This is a bit of a bussman's holiday. I'd hope to come up with some kind of user friendly way of talking about the pollen data but we've not had a chance to do that so I'm sorry. I'll try and make it as painless as I possibly can. Okay so here we go lovely pollen diagram. This is L34 so again you can see this at the bottom which I'm just going to pull up a pen here just to help us out a bit here. So most of the diagrams have the chronology plotted down this side here. Again these are provisional chronologies, most of them. In this case we have the results of some of Dr. Eric Hampton's Bayesian modelling of that sequence and straight away I'm sure you can see that this is basically we're going back into the interstadial here, into Windermere and we do have more of the record above here for various reasons I'm not going to talk about that. We're still working on aspects of it but the release is just to kind of give you a run through of I suppose the general pattern of what we know about vegetation history of doglands from this data. So again what you can see here is really the pattern of vegetation change is both very typical of the interstadial. We have an open landscape at the bottom here and again you can just read across the chronology here or here. An open landscape dominated by grasses, sedges, very few trees or shrubs. Willow is certainly present, usually represented in Juniper. You can see the Juniper peak here that's very typical of this part of the interstadial, so the expansion of juniper scrub and then subsequent decline. You can also see there's some other trees and shrubs in here, not least betula which will also draw your attention to the fact that these are these are selected tax randomly pollen diagrams. What is notable for almost all these records is the generally very very low presence of herbs in the most part not a huge diversity in generally very low values, kind of often the same for aquatics but you can see here we do have aquatic plants down here at the bottom such as myriothalam, that's water mill foil and things like reed mace and pondweed as well. So here's our record going through and we can bring in some of Wendy's macrofossil data at this point that kind of fills out the picture. So as we're moving into the interstadial and as the peach starts to form we definitely have a wetland suburge willow fenncar. We have evidence in the macrofossil record for both tree and shrub birch at that point and again another kind of range of wetland aquatic plants and tacks that won't be surprising I suppose in this kind of freshwater context. So we've got many anthes, we have them fair, sedges, lemdots, duckweed and we also have and I think I apologize to David who I think is listening in I think I only have one reference to his beetle dates he's still working on that and hopefully that this will start to fill out the picture and here excuse me he reports he has a single elytrum that's a winged case of tannisphorus lemni which is associated with you can probably guess with with the duckweed there and that's actually from slightly further at the sequence. So this is our earliest part of the record again you can think of this in terms of I suppose if you think in terms of human activity across dogland I guess in the terrestrial context this might be the source of location that in a very environmentally deterministic way a papallelithic or mesolithic one together is maybe drawn towards and again that's something we can talk about and certainly not saying that is definitely the case but again I suppose in terms of predictive thinking and modelling that's that's important. Okay so moving on sorry another poem diagram so he's moving on slightly in time so again we're here we have our chronology so we're moving into into the start of the holocene and again you can see that quite clearly here we have the expansion of birch then we have pine and then slightly later on as we get into the holocene proper you know typical range of deciduous trees such as oak and quite high values for them actually comparatively for dogland. I wonder whether that's something to do with the calcareous deposits perhaps that Martin referred to earlier and a very pronounced corollus rise there and again these chronologies are provisional but that's happening about 11,200 cow BP so we're going from again a very open landscape possible evidence for reworking in here that's fernsport often the indicator of reworked sediment I should say however the pollen preservation is generally pretty good also willow is again very important very significant for most of this part of the record very underrepresented analogically so certainly present on the wetland soils locally and macrofossils preservation is poor again the macrofossil preservation seems to vary quite significantly between the cores for a variety of reasons I think I think we need to discuss and pick apart and certainly we'll see with the beetle data in particular on that front the work we did on the Humber REC David Smith's data I seem to recall he had quite small formulas but some quite interesting ones you might want to talk to that afterwards and some of those quite interesting in terms of evidence for woodland and trees if I'm right there David again poorly preserved there are various other wetland taxa in the macrofossil record again stuff that I suppose I'm surprising Potomac-Eaton pondweed again typhoon reed mace rushes myriothelum that's water mill foil so again all these plants that typical of largely freshwater environments and what's interesting is really how rarely we see this in turning up in some of the pollen records we often have this discrepancy between the pollen and the macrofossil records as well okay how am I doing that good okay so moving on a bit to ELF 20 and I'm just looking at this section of ELF 20 so this is the bottom moving upwards so we're going from kind of the tail sterile tail deposits into kind of sandy organically silts and eventually into this peak unit here so again it's a relatively a relatively short sequence and again this is what it looks like again there's our calibrated ranges so you can see we're going back into the end of the into the localomans the stadial and then into the Holocene above and again it's very clearly reflected in the stratigraphic changes you see where we go essentially from organic sands into kind of more organic peats and silts and so forth and so we get this really kind of black peat here and again the pollen doesn't hold a huge number of surprises we see in course a birch coming in here scott's pine and again as we see later oak and less elm here and again really important willow that shows very much a local presence nearly kind of 50% of total lump pollen so what we also see is a kind of evidence for open ground they're going to come back to this in a minute and I think we're quite unclear in terms of what we can and can't say about the structure of the vegetation of dogland that is a terrestrial landscape if you like and again as I said earlier if we look at the aquatic records we have some of these species turning up and the reason there's very few herbs plotted is again this is selected taxa and kevin just pulled out the ones that are better reflected so we have things like apiaceae that's the carrot family's tall herbs and the chinapodia aci that includes that's the hen family that includes plants that are saline or typical of salt marshes so we do get curve coming in here and that is significant because as we'll see with tom's talk this is an important core in terms of understanding this transition from fresh to brackish into saline and tom's going to talk more to that later but again what is interesting the preservation of macros is poor again the specular remains in there showing a plexus that's a soft reed rush which I think is largely fresh water but can be a can be a bit marine we also have in here some more kind of marine to brackish taxa we have nyus marina and rupymaritima that's hollywood nyus that's nyus rupymaritima is the wonderfully named widgen grass or widgen weed I think it's sometimes called ditch ditch weed and that's that one's typical of brackish environments but generally we don't see a huge evidence of perhaps what you may or may not expect at the transition from I suppose fresh water to brackish and saline environments and that's important in terms of what martin talked about some of the other points that came up earlier particularly in terms of how we understand process and pattern of change and again other things we might note here these quite high values for toroxida that's fern scores and there is certainly summary working but again the preservation is fairly decent and what else might we say here again there's other ferns in here there's poly podium common poly poly it's a little fern probably epithetic on oak trees so I suppose we're starting to get a broad impression of the general I suppose pre-submergent vegetation of doggalund and it seems to be broadly a deciduous woodland corollous hazel and if you ever count causal samples from doggalund from submerged landscape you will see a lot of hazel I think kevin is probably sick this stage of counting samples of hazel and so a bit more about that in a minute I think there's a certain amount of taffanomic control going on with that representation now we're doing for time okay that's about so I promise this I think this is the last problem diagram just bear with me so yeah elf seven and again very similar sequence we have these basal peats and again the basal peats there is some variation in the date ranges this is something I think we need to work on more um I think Derek might say a bit more about this later on but the the age range for these at these freshwater peats and you know pre kind of rising water table and channel agredation in a lot of these contexts and again what we see here there's no chronology so so again a bit later into the Holocene a very typical as we've seen in reddy higher birch sorry higher oak baggy problem again elm is quite high we have pine in there what you might also notice and probably I imagine the paleoacrologist some stratigraphy amongst you and noticing this is our pollen donations which are here often track or identical with stratigraphic changes in these units so you can see that this is I think taffanomic so again we're seeing shifts as the depositional changes in terms of the representation and reflection of different woodland taxa in particular okay and this is interest this is notable sorry of less willow in here again this is our grass curve you might ask well what does this show us about the uh degree of openness of the landscape um that's a moot point I think certainly some of this curve is coming from wetland grasses we can't separate out wetland grasses such as Fragmites common reed from dryland grasses so some of this is certainly in channel some of it is probably almost coming from certainly from the wider landscape but again what do we see in the herbs these are selected taxa very little sedges in here this is plantago lancelar so which is much below it of paleoacologists because it's what we call an anthropogenic indicator as in it's a plant that grows in open conditions and is typically associated with the opening of woodland mainly in the neolithic at least in most northwest europe earlier in elsewhere but very very low values these are trace values sorry waste your cross that's a trace value so we are getting traces what does that show does that show human activity now I don't think it does I actually don't think we have any compelling evidence for direct human impact in palurgical nature at least you might also ask about charcoal records generally very low values of charcoal turning up throughout these cores even at the base where quite often you can see increased levels of charcoal and some of these basal peats from the subliminal sea and again aquatic as you can see there there are some not huge numbers macrophosals if we look at the basal woody peat because i'm at about nine thousand two hundred nine thousand four hundred feet it's dominated by birch remains again so this is a woody peat with birch certainly growing locally and I think we can refer oak is in there as well somewhere as well and our general range of aquatics typhoon lemmon and car wrecks and incidentally that's lemmon that's duckweed and I was just doing a bit of research before the talk apparently duckweed this is actually nothing to do with dogland ladies and gentlemen I think apparently duckweed is going to be the next miracle crop apparently I've just learned that so I'll pass that information on to you and so yeah we do have duckweed Wendy was talking today Wendy Crowther's about possible climatic significance of lemmon and that's something we need to look into in terms of perhaps the earlier part of the record where we have the presence of duckweed anyway so it's a kind of pull a little bit of this together what what can we say I think in terms of a broad picture we're starting to certainly fill that out so we can say certainly that the if you like the early dryland vegetation of dogland is dominated by trees as they expand at the end of the at the end of the luster stadium so we have pine in there we've seen already we have oak we have we have hazel again we see hazel in very high percentages in the record and I suspect this doesn't really reflect its its actual dominance in vegetation think we have an over representation of hazel in there and again I'm going to come back to hazel in a minute because I think the representation of tree pollen in some of these deposits particularly as we shift from peat to silt prior to the complete inundation of dogland we do not see that inundation in the pollen and I think that is also taffanomic so to come back to an earlier point and a question that was asked at the end of Martin's talk what is the structure of this woodland I must I'm I'm unclear on that I think as a group was slightly unclear there are perhaps other ways into thinking about that that's not something we've really done yet from the pollen record you say that we would say the woodland is probably quite closed in the area where at least it's drier for some of these uh deciduous trees to grow we obviously have substantial open wetland areas as we've seen not just the rivers but other locations such as l 34 where we have um we have the saddle uh wetland fresh water fen car certainly at least in the earlier period this is plan tego lancia lata I mentioned earlier and as we've seen as I've said we have very very few records of it generally single grains and I think it can sell it with some confidence even for the cause that I've not shown you we hardly ever see that one turning up at all and burning I've mentioned again burning charcoal in in in deposits associated with the with the mesolithic in particular uh often reflecting human activity I'm sure this is something uh professor mill and I talk to tomorrow in terms of star car where burning of reed beds is almost certainly happening um again in in in these cores that we've looked at um I think it's fair to say with very low levels of charcoal what does that show well most these areas of wetland quite wet wetland as we've seen so really the possibility of burning um is I think very low whether that's natural or anthropogenic again that contrasts quite interesting with other cores from the southern North Sea certainly some of the cores we have from the Humber rec projects and the offshore cores contained um high quantities of charcoal and there are other cores from this area against colleagues in the audience might want to say something about this in the chat or afterwards and but certainly we don't have very high levels of charcoal at all in these um in these cores in terms of the wetland part of the landscape as we've seen already on the wetter soils so l 34 and a few of these other wetland deposits and certainly the channels as they start to activate and as the peaks shift from uh semi-terrestrial if you like to open water deposition of silts clays and organic material as we've seen already we shift really from dominance of taxes such as willow and birch through to um to reed and again at sometimes some of these uh slightly more brackish salt tolerant taxa but again that's not something we see enormously clearly in the in the pollen record and again there's a number of reasons for that so what else can we say I mean underlying all of this I mean this is great to talk about uh ecology and vegetation history and records and that that is really important at the end of the day you know what we want to try and do is get at what some of this data means for human activity where human activity might be happening the nature of that human activity so forth um there are a number of reasons why this is is technically difficult um particularly in terms of moving if you like from a core or a series of cores to if you want to think of it in terms of the reconstruction of a transgressive surface I think there's something we'll hear a bit more about later on in terms of the modeling of that and also this brings in obviously other data such as tom's um tom's uh sea level data that he's going to talk a bit about and obviously martin's data so we need to kind of bring this all together but we also have these insensitive problems sediment compression is likely to be significant I mean these peaks in particular are squashed to um squashed to hell would be the polite word you know really squashed down so we've got great levels of compression what that means for chronology is another matter that's something we've kind of been talking about with them with with tim and derrick um of that swerve as well so ways maybe around thinking about compression and allowing for that um in terms of inferences about vegetation change relative sea level change and spatial and chronological patterns of inundation yeah that that is a problem we need to unpick and obviously on the line all this is is uh what a couple of years ago I coined the phrase I'm sure that people have used this you know disaster or no big deal scenarios that concern the flooding or the end of doggaland and so these rapidity of change and you know how punctuated these access are this data comes into this somewhere but quite how we integrate that not just in a methodological sense but in a more theoretical sense as well is another problem that continues to play because hopefully that's something we kind of move to can move to address in one way or another so yeah underlying this again is this is a particularly an issue as I've said already as these sequences and as this river valley shifts from if you like being I suppose the initial aggregation of the peaks through to the channel aggregation as the channel activates at sea level rises and this is a this is an estuary not too far from from here in lovely sunny cork and you can see the issue here so so as you know here's the drylands here are our channel deposits this is obviously a tidal estuary so we have all these sorts of issues in terms of how we interpret the the pollen record and particularly what we see in many of the pollen records from this project and also from the wreck is very high levels of deciduous tree pollen in particular um hazel right up until you pretty much get inundation why is that does that mean that hazel is growing on mudflats no it doesn't where is the dryland can we think in terms of obviously we don't have deeply sized valleys like this where we might have as in San Francisco England might have trees growing in close proximity tidal inlet I don't think we have that I think we have a taffonomic issue with very high representation of tree and shrub pollen up these river systems further towards the dryland okay how am I doing Richard has appeared so that can only mean my time is nearly up so I'm going to leave you with this summary so so really we have an excellent dataset here and we're starting to address some of these questions we need to do a lot more integration of the datasets we certainly have um my favorite word uh taffonomic issues in here in particular what we call the RSAP the relative source area pollen for these deposits that are tidal or intertidal are very large we're resolving vegetation on a large scale macrosal and beetle work is ongoing that's starting to help us understand some of these difference between local extra local and regional representation and hopefully that's going to move us towards reconstructing patterns of flooding changes in dryland vegetation across what we might call the transgressive surface so please uh watch this space thank you for listening thank you very much Ben um so we've got a few minutes left for questions here um we've had some comment first uh about the Netherlands and the Angsy harbour and that there's evidence of repeated burning in full marshy environments and that kind of follows on with a question um about the charcoal and whether you can determine the species of charcoal and if this has been done speak I that's with Wendy as far as I can gather from my discussions with Wendy I think the charcoal fragments are very small so I don't think they're identifiable that's a very good point there and certainly one uh one we can look into about generally the levels of charcoal are pretty you know pretty small yeah and that certainly seems to come up from your from from what you've presented there um there's a question here um Sasha Krueer has has asked about um explain the very high percentage of uh Sykes 45 percent in elf 20 given that it is insect pollinated yes exactly yeah I mean that shows an extremely localised presence of of willow yeah again the paleocologists in the audience will recognize 20 percent is of total ump on is very high and that shows a very local presence of willow so again you know we we have this kind of again it's a tough and on control willow is growing on the on these wetlands in these wetland deposits I think the dna people might say something about that as well um again so so yeah that that shows so it's very much that local presence it's a good point um great thanks uh so a question from Patricia sure uh what do you think the cause is um the discrepancy between pollen and macro signatures that's that's several lectures all on its own I guess this is an often issue for multiproxy investigations um there are there are a variety of reasons for that um including possibly redeposition reworking pollen productivity um again the difference between where vegetation is growing in the landscape and I suppose the point to be made there is this is always the joy of multiproxy and I think there's always sometimes an assumption that we carry out more analyses and everything will converge and it's often the way that we carry out more analyses and some things converge and some things go in different directions so uh it was probably easier back in the day when you just did pollen and it was fine you know um yeah um so there is a question here Lauren Brown has put towards uh uh the thoughts on hazelnut willow cops in um or conservation as a practice I presume uh sorry as in the sense of um in the kind of mesolithic I suppose is that is that the sense that's sorry yeah well I think I think we're probably too early to see that I mean certainly high levels of hazel are very typical you know of the early holocene there's a lot of discussion about the rapidity of the apparent rapidity of the hazel the hazel rise at the start of the holocene and this is something that's been quite a lot written on talentiles work in particularly suggesting that willow is probably growing locally right up to start you know before the holocene but it's not producing which pollen and then you get this very steep increase as the climate improves drastically and that's increases the pollination so I think this is that's that's probably what we're seeing there but again we need to look into a bit more as well. I think you know time for one last question um from Steen Hildebrandt um if there has ever been any study of the recent pollen in the uppermost sediment layers of different river valleys for comparison? Yeah that's that's a really really good question um the answer to that is yes there has been and we certainly know that some of these these estuarine systems that yeah you're recruiting pollen from from all over from all over the place you know the bigger the bigger the system the bigger your pollen source area so so yeah I think that that is certainly something that is is at work as we shift into these these estuarine or mudflat deposits and yeah we're just seeing we're seeing a certain amount of of reflection of that the size of that source area so it's very frustrating you know because we see these you can kind of sometimes with the cores you can kind of go well there's the end of dogland you know there's the it's conformable we shift from the sands to the marine gravels and then your pollen records just saying yeah there's definitely hazel right and so you know gaysmen in general can there's obviously not the hazel that's growing somewhere else I think so that is a problem. Well thank you Ben we're just about on time there and so um we'll leave your presentation


Kriating space and opportunities for advanced thinking is somewhat of a challenge sometimes for us because we're used to breaking things down as teachers and part of the expert of teacher is to how to simplify ideas so people can understand them and so you're having to turn it around and think of a way of asking questions that can engage kids with ideas that doesn't do that. So it does take some practice and again having a few examples to build on is really effective but what I've noticed is so for the physics investigation which was our first attempt at this I did some of that early thinking and about making decisions but our second attempt which is through the carbon cycle is very much led by Geraint and the ideas that the students, the things that students are working on now, he's come up with himself and so it shows quite quickly actually once you get into it it becomes almost second nature to go oh yeah this is what we need to do. So a standard way of asking about the carbon cycle would be explain to me how the process of photosynthesis works or it might be list all the different processes that are involved in the carbon cycle. Now Geraint had a couple of sort of straightforward questions like that but then the real key was his third question which was he put four different processes of the carbon cycle and he said in your peers you need to discuss which one of these you think is the most important and why. Now there is no right answer to that question but the discussion itself when we were watching around the classroom and listening the debate that was going on about the difference of oh no this is more important because and so they're having to really think and engage with the ideas and the knowing what it means they pick up along the way. The response of the students has been really positive. There's been a lot of healthy debate and just a lot of really positive discussion and also the feedback. Many of them have provided really positive and constructive criticism and feedback to each other. I think the results from the programme just seeing some of the changes in some of the students I think providing a setting where they're able to discuss with each other has actually given I guess the quieter shy students a voice to actually be able to explain their ideas and I think I've been able to see growth especially with their ability to actually explain what they're writing and just give more ideas. I reckon it gives us a different perspective of how we learn because it's always the teacher teaching us and giving us the layer and the teacher normally decides but the authority is giving to the student I guess helps us learn more to feel what it is to decide and make choices. High expectations teaching once the students have been exposed to it increases their confidence. It certainly seems to increase their engagement because they're not passive learners, they're much more active and the results are starting to sort of show that definitely they're achieving at higher levels and they would have done previously but I think the self-belief is starting to come through which is pretty exciting. Applying this to me going forward I think the key thing is consistency. I think setting aside time. I think in terms of planning just setting aside time for each lesson, a lot more discussion and also I think one of the big things is probably less is more so the less I think the more the students think. I think you kind of get caught up sometimes in trying to fill them with knowledge but the knowledge for a lot of them is actually within them so it's just a matter of getting that out.