This is the SF Productions podcast network This is a 10 30s at 3 at Darren Pamela Fertin the bird's spirit of show Fighting episode of vast wasteland the video journal of popular culture. I'm Mark Schmidbauer. I'm Wilbert Neal Today, we're here to pick up again on our well the second part of our discussion of DC comics That's right But before we get into it want to tell you that's we're on Tuesdays at 6 Wednesdays at 10 and Thursdays at 3 p.m. Here on ACTV Kable 21 and also if you want to write into vast wasteland our box number is 15 14 11 Columbus, Ohio four three two one five. That's right So get in there and Right in and tell us to stop doing this sing song you think or whatever and often that's right So the second part of the the big history DC comics when we left off several weeks ago We we would we were just finishing up the golden age of DC comics Which basically ran into about the mid 50s it? Most people are kind of saying right after the war a lot of people say they basically ended off basically what happened was kids for some reason I think mostly because of TV just weren't buying the comics and so sales were dropping like mad and Of course there was the TV influence and the Whartham influence Well this guy The Whartham influence was dr. Frederick Whartham Whartham I don't know pronounce as he wrote this book called seduction of the innocence and was a book about how comic books were destroying America's kids and America took it incredibly seriously. I mean he was a he was you know He wasn't like a joke book or anything, but I mean He was saying that look at these panels and there and there were a lot of really rude things going on at the time I E.C. Comics. Oh educational was Crypto fear and That kind of stuff and so there was a lot of you know Lot of injury to the eye panels and stuff like that and actually today a lot of the a lot of the ones that are mentioned in seduction of the innocent and There's another one POP. I'm trying to remember Well, anyways actually today that those particular comics are now worth more because they were mentioned in this book Because of that those two influences Things basically went to hell in the comic book industry and certainly to DC The whole industry had to get together to fight off the Whartham crusade to ban comic books because the Senate was just about This is like 1954 For something like that somewhere right they were they were about to basically say here are the rules for comic books And the Senate was gonna put rules down and the comic book company said this is gonna ruin us So we'll put together the comics code authority The little sticker you'd still see on most of the comic books, although it is enormously decreased in size I mean the beginning was like a fourth of the page was Approved by the comics code authority and now if you look really closely you might be able to find it Oh, I doubt you're gonna find it on a Lobo comic But most of them still have that darn approved by the comics code authority Lobo is pretty much a reader. Yeah, pretty but at the Today pretty much you only see the major comic book companies use that the independence Considered a joke and they never use it and I think in the next couple years you're gonna see it disappear completely cuz it's cuz it's you know, they're all doing mature comics now, but in any case This was really the only way they could get published then they had to have something they had to have something to say Hey, we're you know, we're not all that evil We're we're doing good things and and the comics code authority at the beginning was so damn restrictive That you really couldn't have anything that interesting Yeah You know It was you could never see any anything that might even even suggest Gore or not even gore, but I mean any I mean anything that might be objectionable to parents Which which was pretty much everything and so the comic books got boring and the superheroes We're fighting aliens and stuff because you couldn't have them beating up on on regular Hoods because they might injure them and that would be objectionable So they were so they were fighting aliens and they and they got into a lot of of civic-minded type stuff And it was really boring So after a while the only thing you saw at DC Basically you've got your I don't know if we can see this or not, but basically what we're talking about our romance romance comics which these were you know kind of kind of Dippy things you still see them today, although really the the romance comics have really gone by the wayside by the 70s comics We're just like take whoever happens to be a comedian. They were like Bob Hope comics I think DC actually put out Bob Hope comics and there was a Jerry Lewis comic like like the one here There was a Lauren Hardy comic that romance comic again. Yeah, I'll just put my hand all over it Yeah, so you can't see any of it And finally listen finally the science fiction comics like mystery into space because you know, you could have alien races and Just draw lots of weird stuff without actually getting into significant issues or anything And people are walking around and and blowing up aliens because it was calling blowing up aliens was cool Then you know, it wasn't like you know, no one was gonna object if you blew up a few aliens Right and you didn't use guns right they were not guns that shot bullets They were ray guns and who knows what a ray gun can do to you, you know, they just In any case so by the time the 50s were over with The only superheros at DC that were still at a comic book were Superman Batman and Wonder Woman Everybody else had disappeared Actually, they've now they've now written into the continuity To try to explain inside the DC actual universe's continuity What happened to the old heroes and they said that there was during the the McCarthy hearings In the DC universe that they called up the superheroes and said well, you know We really should know who you really are so we want to know your secret identities And they went no and we're leaving and they all disappeared That's how they explained it Well, so The golden age ended and for Depending on who you talk to a number of years going to about 58 all the way to maybe 62 actually 55 to 62 Things were just really bad in the comic book industry. No one was making any money Most of the a lot of the big companies just disappeared By the end Marvel and DC were about the only ones left I mean Dell was out there and and Disney was doing stuff, but as far as anybody who might do a superhero comic There was pretty much all over with and then DC started a comic book called showcase Showcase's idea was we're gonna bring New characters and new and possibly Current characters that we're thinking of maybe having a comic book for and we'll do three issues Of them and then we'll move on to somebody else and if we get a lot of good response and we saw a lot of comics We'll maybe make this guy. We'll decide whether we're gonna have a comic book for this guy or not So showcase started I don't happen to remember who did showcase one through three. I think it might have been enemy ace I'm not sure But the important one was not there was not issues one through three the important one was issue four The flash was um was issue for survival. Okay, right and that was the first Considered the first Silver Age character.  He was around before the other heroes, but really I Consider I consider the golden the the Silver Age flash be the first Silver Age character Because he really started the whole thing. I mean Martian Manhunter was out there but he kind of retroactively got thrown into the Silver Age I think so The flash came out and of course based on the Golden Age flash a New costume a lot faster a little a lot more scientific about how things happen And there was always all these these things at the bottom of the screen Gardner Fox who had done the original flash comics was doing a lot of the new flash and There would be a lot of Explaining a little little bars saying how he would be able to throw a straw. Well, what is it? They they we always you always throw things that you wouldn't think would go through other things They did and they explained in the same way that a hurricane could throw a straw It's such a velocity that would go through like like a timber or something, you know And they were always doing this scientific thing of well He doesn't burn up because there's a productive war around his body and all this So he just creates one as yeah, yeah, so and he was the first real real and there it is There's there's the the the first Is that that be the first one, but it's actually it isn't yeah, they're right It's actually one of the one of the later ones, but it is flash appearing in showcase comics there and and an interesting concept here was this was the first comic book that that at least I know of that Acknowledged the Golden Age of comics because they said that this guy who got who this Barry Allen guy who was hit by Lightning while he was standing in front of this rack of chemicals and it's through all these chemicals around his over his body And he gained a super speed and he decided based on his his comic book collection that he was going to Base it on the Golden Age flash. He's gonna name himself the flash Kind of interesting thing there. Well showcase went on to basically repopulate the entire DC universe again with Resurrections of the Green Lantern and of course the Green Lantern really the first The first hero with this truly cosmic origin I mean other ones were really kind of vague as far as there were other heroes that had Weird cosmic type origins, but Green Lantern was the first one to just really Because they explained that while he wasn't the only Green Lantern He was the Green Lantern of Sector 28-14 because way in the center of the universe the Owens on the planet are the guardians of the universe on the planet Decided that well, we should probably have like a galactic police force And we'll give them these rings and they can do base of the things that the old Green Lantern did like make punching big giant punching fists punching fists, and you know you could you could through your willpower and Create anything you wanted it would be out of this green light Yeah, there's the there's the but see what happened was Unlike the original Green Lantern and and in my opinion just as silly a weakness as wood is Yellow yellow anything yellow. He has no power you to a necessary impurity in the ring But they which I can't I can't remember how many thousands of times that was you saw that line due to a necessary impurity in the ring So it's not all-powerful right so if you wore a lot of yellow he couldn't do a lot to you Amazing that more of his more of his super villain Fos didn't just wear yellow. I mean they thought it was cheating. I You know there was a spareness because Comic code right it could be unfair. That's right Well, let's see who else we have from them from a showcase showcase. Let's see Challengers of the unknown right there was a big one They were probably the I think they were the first ones whoo, okay to actually get their own title from the showcase thing Even though I mean it did bring back the flash right green Lantern and Challenges Right people like that lowest lane even appeared in there Adam strange. Oh, yeah, and the metal man The challengers the unwound were the first ones to get their own title and they were basically just Daredevil type people mostly and one of them was a scientist and they'd go and and and do impossibly Dangerous things, you know, I mean and you know, they they'd fight villains and stuff And they'd always be able to figure out a way out of it. They'd be thrown in horrible traps and And see who else have we got here? Black Hawk people like that. Well, you guys talk about the metal men Certainly, I mean again. I don't know this see DC in the 50s and 60s was nothing if not scientific Everything was scientific and so you had this this scientific group of heroes. They weren't actually people they were robots They were robots and they were formed out of each was formed out of a specific element element.  They never really explained when put in this robot It could allow the robot to I was to assume any shape. Yes, and there was and the leader of the team was gold and The woman when the group was platinum and there was tin lead iron mercury, I Think that's it. Yeah And they all had like the the characteristics the what you would I don't know if you if you gave emotions to metals You know gold was really really, you know The leader of the group and he was really really smart and all this and mercury was was really Was really mad all the time and and tin was always kind of shy And lead was the strong man, but he was kind of And then they made the tin guy had a little tin woman named Tina. Yeah Well, no Tina was the platinum one Tina was flat. Yeah, she was flat. Who was the tin woman? I don't know He got me Well now by golly, I guess I'm See, I'm sure that Tina was the little the tin woman that they know was platinum. Okay. I know Tina was platinum. Oh, why could she just be plattie? So anyways so showcase Virtually repopulated the DC universe of heroes and because until then most of the heroes were gone And this started certainly the Silver Age. Yes culminating in what is considered the greatest comic of the Silver Age Flash number I think it's 110 flash of two worlds in which both flashes Appeared in the same comic at the same time and was the first comic which brought up the concept of the multiverse Not just the universe a multiverse that everybody said well, you know if there's all these new heroes What happened all the old heroes they just retired and they disappeared in fact now they're saying that these other heroes didn't ever even exist So what happened to them? Well now wait a minute now. I thought they had been into it another um in another Dimension well, that's that's what they explained Well, there's earth one where most of the stuff happens and then there's earth two Which is where all the Golden Age heroes hung out Okay, and they were of course earth two and earth one were in the same spot But they were separated by a different no They're separated by a different dimensional frequency or something so so Certain heroes like the flash you could vibrate through concrete and stuff could basically vibrate into the other Continuity and that's what he did. He accidentally did that one time and he found out the Golden Age universe existed Starting the beginning of the JLA JSA team-ups The Justice League of America that was formed out of all these heroes the new heroes and the Justice Society of America They the old heroes from the 40s And they were all living on earth, too. Well, they were yeah Well hanging out on earth, too And then you get into these fun things with there's like an older Superman who's got graying Temple right yeah, and not nearly as strong because they said for a while that you could still only leap an eighth of a Mile although later they kind of rescinded that and said well, he's pretty much as powerful because he's older now He's more experienced He's working all out apparently and and also in earth, too And I believe in the 70s Batman retired and on earth, too and married Selena Kyle no didn't he marry Selena? No cuz cuz they weren't they weren't friends there I don't think they did I may be wrong about that. I think he married Kathy Kathy Kane or the that woman that woman from the old from from earth, too So so the earth to universe the heroes were older, but they still could go out there and fight pretty well Yeah, you've got your you got your what black canary Our man, right dr. Fay. Yeah And every year in Justice League of America, which again was the the Silver Age equivalent They'd have them come on over and they just happened to be together and there'd be a menace that neither of them could fight Alone but together Even though it was just like one guy, you know He was just one year. Well the one year. This is this is the one. I really loved was the Was the villains from earth 3?  It's kind of like tag team match That was always the thing that impressed me about it's like they're that whole tag team mentality They could never work well together when they were in small groups. They always get beat up every time or and they went on their Alone. Yeah, they always got beat up But when they get together the teamwork would kick in and they'd and they'd kick the other guys, but basically It's just funny Play them simple. It's just funny. Anyways, meanwhile during all this By this point for for the most part the same people who had been doing say Superman since we're almost done Gadzooks Already goodness. Yeah, well. Oh, anyways, the people who've been doing Superman since the beginning of time. We're still there and They were run out of ideas. So it began the imaginary stories Which there's virtually no continuity in the 1960s because virtually every story was imaginary after a while after a while Because they ran of ideas. They went what if we killed Superman and or what if Superman married Lois or What what if Batman got Superman super power? Yeah, what if Jimmy Olsen just happened? Become a bad guy or What if this weird explosion occurred which created two Superman that was the weirdest one Oh, the blue superman Who were a thousand times smarter than the original Superman so they figured out all the problems on earth and retired Amazing Simply amazing. Well, anyways, Yikes, we have really have not even got to the 70s. We may have to take this into a third part Oh, no We have to move it as a third part because it's about time for in the attic with Marty Wiley Take it away Marty Today's topic is the lava lamp Let's just be right here. I First saw a lava lamp probably back in the early 60s. I don't know when they really Originated or where or anything? But I remember they had a display of them at the dime store There was a big glass counter and they had them kind of lined up in the bottom of the counter and I remember right near the front door you'd first come in I get stuck there looking at the lava lamps they had like this blue green color and I remember there were red ones too that just looked like hell or something and I can remember just being real fascinated by those things When I graduated from high school, I was pleasantly surprised to receive my own lava lamp for my Aunt Mary and Uncle Bill as a graduation gift Probably about the most favorite graduation gift I got besides the money that you get when you graduate and And I became the first and only person I ever knew that actually had one of these things in their home. I Don't know how they work. I don't know what's inside them. I don't know anybody who's ever busted one open to find out But the lava lamp definitely probably the 8th wonder of the world in the 20th century today See ya Yeah, well, thanks a lot Marty. Thanks a lot for that nostalgic look. Thanks a lot Well Next time on vast wasteland We're gonna be talking Marty and Robert are gonna be talking about the second part of our toys Going in going into more of the toys cuz darn it. There's just so many toys out there You can't get through all of them. I mean look what we do with the comics. Yeah, gotta come back another time Simply amazing. We just rattle on forever. Basically. That's what it is. Well, you see that's the thing about comics You've got all this stuff written down. Yeah, there's just so many What can you do that's right talk about So let's see we have next time is the is the second part of toys and then we'll have a TV Theme show again, and then we'll be back again. We'll be back We may never end this this is incredible Hard to believe truly that's right. So we'll hopefully finish this DC thing up next time I would certainly hope so So for all of us air draft wasteland will see you next time Y'all remember to vote now here


A now contrary to what it says on the programme, Euron is speaking to us, but Blans Chyfbryd is not here. It's Anjia Lorenz who is going to be presenting with Euron. Conference is open to all, mainstream, open education through unconferences and bar camps. Thank you. Thank you. Was there a second microphone? It's not hard to guess that this is Anya and Liam Euron. A Blanche Fabrie does all the work, and we're presenting it. Say hello to Blanche on the next team. She's already a location scouting for the next OER camps. This is what we'll talk about and we'll begin with reading out texts from slides. Since OER activities are mostly driven bottom up, there has been a need for sharing questions, experiences and materials between players who have been isolated in their own institutions. Dyna yma yng Ngheirfiol o'r OER Cyflawni Llywodraeth. Mae'n gêmio bod nhw'n bwysig iawn i'r cyfrifio ar gyfer cyfrifio'r野fau o'r cyfrifio yma, a oes i bob cyfrifio ymgrifio ar gyfer cyfrifio, byddai'n gyfrifio'r cyfrifio ar y cyfrifio y Llywodraeth. Yn ymdannod Jan Neumann yn y Rhywunesgwyr o'r OER Cyflawni Llywodraeth. and this was in 2017 and this is when we doing the OER comes first realised that this is a very German thing and we did not realise that this is something special but we learned about this in the last month and we would like to present this approach to building a community of practitioners and learning community in OER. We have 3 impressions, Meddwl yw'n edrych yn wledd, credu y byddwch y barcamf yma, y byddwn yn ddim yn gyffredinol y mae'r Basil am y chyfo i'r SNF 2012. Roeddwn i osbryd y baircamf. Maen nhw'n argynnu ei fod yn barcam? Dwi'n erbyn mae'n argynnu ar barcamf yma, rydych chi yw'r rhaid yn eu agfawr. Ond oes! Roeddwch yn cyflau gynhyrchu, ac mae angen yw 5 mins. Dwy'r ymdwyllr yn ôl. Mae'n cyfrif o ran gael llawerddoch. How does it work? This is what Anja will explain, and we can show you some numbers and figures about what we know about our participants. So, how does it look like? An unconference does somewhat look like a conference, but somewhat not. So, this is what people are doing when they are learning. It does not look like Germany, but it's a German conference when you are in Hamburg. You have the microphone and I stick to this one. Is this okay for technical reasons? Anything? Is it okay? The first OER camp took place in Bremen 2012, and there were around 80 participants coming together for three days at the University of Bremen. This is maybe half of them finding together for planning their own sessions, so this is what we will learn from now. How does it work? You're building your own schedule for the whole conference. Here we have someone from England who helped to build the OER movement. I don't know if anyone here finds him in the picture and can identify him. Yeah, it's Elsa Clark who we invited to present to the German growing OER movement what has already been done in the UK then, and it was really, really helpful. This is also what OER camps look like. This is a session with three persons discussing one topic. It can be a huge session with eight participants or even more, so there are no fixed numbers and there are no typical settings for what a session in an OER camp is. But what you find is that there are less presentation and less panel formats and more discussions and conversations happening on OER camps. And sometimes also it's about doing and making and trying out and working together and collaborating on specific questions. But we also have presentations. So this is a last slide on how they look like because they are very, very, how to say it, open when it comes to how to design a session. So we always have a plan with certain rooms and where each session will be and there always has to be a column for somewhere else because someone wants to do something somewhere else which, for example, can be in front of the building. Anya will continue with the 101 on how does a bar camp in an OER camp work. I agree to support you and for the talk because I also organize bar camps and I also have been on four OER camps I guess. So this is the difference between bar camps and normal conferences. In conferences you have participants and speakers. So there is distinct roles for both. And in conferences you have all our active contributors. In Germany we have the word Teilgeber. It's like the normal point participants called Teilnehmer take part in a conversation and Teilgeber is giving something. Yes, it's a little bit word game. And also in normal conferences you have the schedule in advance of the conference and you can look where you want to go to. But in unconferences you have an empty schedule when you come in and the schedule is made up in the first hour or half an hour. Also in a conference there are presentations and panels as you are in said and in unconferences there are more discussions, questions, workshops. And the discussion could also start with the question. So I have no idea on this topic but I want to ask people helping me to get a better understanding or to find a solution. And also conference are more formal. Not here but in some conferences they are very skews and say Mr Dr Professor and this is not the case in Germany. We know in Germany we have two kinds of saying you to a person, do and see. It's more formal and in biochems we always say do. So in biochems you make the difference. You are responsible for interesting topics and if you leave and say this was not that good it's your fault. You don't need to prepare a presentation so making all the slides is not possible. You can also stand in front and ask something, you can hold something up, you can Google something in between so it's not demanded for a schedule plan. And there can be as many sessions as there are rooms if someone is suggesting a session and sometimes even more if the weather is nice and you can go outside. There are further rules that there is a minimum of two attendances so the speaker and some people else so otherwise the people can talk with themselves. And you can also provide several sessions, not at the same time but after each other. And you should give your session now and not tomorrow. So the biochems are mostly on two days and you should not wait because maybe there's a question open at the end of the session and you can offer the next session at the next date. And the most important rule for me is if you can't contribute the session anymore or it's not the topic that you thought it is about, you can go out of a session and it's no sign of disrespect. And yes, then there's this, so many rules by way of 7 after the 10th. You do not have a fixed timetable but you have fixed time slots. So if your session is over it's sort of respect for the people who are coming afterwards to leave the room and afterwards discussions outside every session ends after 45 minutes. There should be a documentary so most time we have etherpads or Google Docs that way we can document a session so people who decided for another session can look after it. Okay, that's what it looked like the session making at the URI camp in Berlin last year. So the schedule is empty. Everyone who wants to offer a session comes into a line. And then they promote their sessions and they all rose their hand up who is interested in their road into the session plan. So the session plan is empty at the first date at the beginning and there's a link to a future documentation and it is full at the end of the session planning which is most half or an hour after the start of the session planning. And Yuren will talk about the feedback and evaluation of the OER camps. We did one OER camp a year from 2012 to 2016 and in 2017 things changed because we got funding and we had the aim of mainstreaming OER. So we could do four OER camps in 2017 and we asked the participants a lot of questions in advance and afterwards for the feedbacks and there were some numbers and figures. We have more on the slides that you can read afterwards if you'd like to. We just want to point out some things. This is the number of participants of sessions and of workshops over the years and I've seen them first aggregated in the preparation of this talk. So I just learned that we had 1,784 participants over the years and we will have the opportunity for four more OER camps in 2018. Just to give you some impressions, we have pretty equalised participation rates when it comes to gender. We ask about form of address so we have about 5% that shows that's not my way of categorising the world. And we have nearly 50% who prefer vegetarian food. So this is probably a sign that the people coming to OER camps are not representative of German population. What I really like about OER camps which really is helpful for forming a learning community is that they come from very diverse backgrounds and with a very diverse level of knowledge. So we asked them about their own knowledge and 59% said they are beginners and 27% said they have basic knowledge. And you see that 27% also said they have advanced knowledge and some of them even describe themselves as experts. But that's not normally what we see when we do a conference. Normally the beginners and the experts have different places to go to. This is also describing the diverse field when it comes to participants from OER camps. We ask them when did you consciously notice the term open educational resources for the first time. And you see that many participants have come to the debate within the last years 2015 to 2017. But there were also some early adopters that noticed the term in 2010 which was really early in Germany. They also come from different educational sectors. So this is also interesting because we don't have conferences or meetings from certain sectors but they all meet at the OER camps. This is what people answered when we asked them about their primary area of activity. So most of them said they are into teaching but there are also many people into producing, distributing materials. This was somewhat surprising but maybe people thought they should answer that they have a pedagogy background when they ask about their interests in OER. So this is by far the most given answer. Primarily interest is pedagogy and didactics. Less is about technology and infrastructure but somewhat it is. What may be surprising is that the jurisdiction law questions are really in the background. In Germany it would be surprising. This is a sign that we are not so inclusive. We asked participants what would you suggest to be the standard OER license. You see that nearly all of them exclude licenses which exclude non-commercial usage. This probably is because the OER community in Germany is not very inclusive when it comes to not inclusive licensing. So there probably are many advocates for NC licensing but they are very much in the background and not as loud at the conferences and meetings of the OER community. So one last slide because we have in Germany at least, hello to the stream, a discussion if there are always the same folks running around at OER camps. I know this feeling because I know I've seen him or her four times in the last year on OER camps but numbers don't show this. So we asked them have you attended an OER camp in the last years and 300 out of the participants in this question said no not before 2017.  This should have been the last slide. This is good for reading afterwards. Okay, thank you. Thanks, that was a really interesting conversation. I've never been to a bar camp and it's good to see that even somebody as old as me could fit in so that was good. Have we any questions please? Yes? Thank you. There's a lot to be said for structure, top-down structure. So if you let the people there do it in a bottom-up way, don't you run the risk that the more should we say proactive, vociferous people are going to actually put a structure that is not generally interesting to the people. How do you control that? I think the answer is not at all. So there are people, I have the feeling also, not only in the OER camps, also in other bar camps that are presenting every time with their topic and we think it's valid. Mostly we have enough space to recognise everyone. Sometimes there are slots open where you can introduce other topics and maybe we have a little trick. There are bar camp rules and the bar camp rules says if you have never been to a bar camp before you have to do a session.  Of course no one is checking it but I think so many people are thinking oh maybe I have to give a session. I don't know. I think one second answer could be that there are not only bar camps on OER so we also have conferences on OER. In 2017 we introduced to the bar camps pre-planned workshops that are especially addressed to newbies at the scene. We learnt that it's not only important that there are newbies sessions but they don't see anything in advance. It's only the format they don't know too much about open education resources. They don't trust this conference format. We learnt that they trust the format if there are even only one or two hours of workshops planned and announced in advance. My question would be has anyone been to a bar camp? Which one? It was actually more of an unconference. It was an open knowledge in Berlin. It's obviously a German thing. I enjoyed some of it but I also found it really frustrating. I came away thinking God I want a power point. Just someone to tell me something. At one session we were all sitting around in a circle and people started let's start rapping. I'm British. I'm not going to start rapping at any stage. Perhaps that's good. Perhaps it kind of pushes you out of your comfort zone. From my own experience it's also easier to follow a normal conference where you have slides and you can sit down in a cinema as to take part in a bar camp. At the end of a bar camp day I'm always tired because I have to rethink all the very mixed stuff for myself and implications for my own work. Maybe this is one interesting thing from the feedback we got. It's bar camp sessions are lucky bags. Topic descriptions need to be more precise. This is always one thing that people argue that they did not get what they were expecting. But my impression is that it's not always the cases in conferences too. Is there any issue because sometimes in order for people to attend conferences they need to get the funding to attend a conference from a university. They need to say they're presenting a paper. Do you come across any issues that people can't go to a bar camp so not presenting a formal publication and paper? For the OER conferences camps in the last year we had the luck that there is a funding program not only for the OER camps but also for our projects. And for this is what's no problem to say hey I go to the OER bar camp and from my own institution I am always safe if I say hey I offer a session. But your institution is very progressive. Yes maybe. I think people have this problem. And for a second idea in Germany we have most federal countries the option to have an educational holiday. Bildungsurlaub where you can type five days in addition to your normal holiday if you are doing some further education stuff. So I am hoping that the 2018 bar camps are listed in this options for educational holidays. Hello to branch was hopefully organizing this at the moment. And so I can go to three bar camps OER camps except of one. And I think mostly it's also in further education option for teachers so they have it in their list. Any other questions? Right well I had a sort of question and a sort of comment. One was I really liked the way you presented it because and what you've said in answer to the questions because it really shows the tensions between structure and agency. And you know nobody's going to get that right for everybody anyway but if you're sufficiently reflective then you're going to continue to flex and make it as sort of available to as many people as possible. The second was a question was I was trying to compare it with things that happen in my locality and they tend to be outside of university. So there's something called madlab in Manchester which is a digital lab that has lots of activities loosely associated with universities but it's run independently. And I wondered if there was a certain local feel to it that all people had to do was get on the train to attend it so the costs were not huge for those people. I don't know if you have people coming from a far distance. I think this is changing now when we have four OER camps in a year in 2017-2018 because we could place them in the north south west east of Germany. But we're always in all of bar camps I know of trying to make it more inclusive by not having any participant fee. So it's always only sponsored and the engagement of people who care this. And we had for some bar camps not only the OER camps a budget for if you cannot afford taking part in it. So at the edw camp we had this and we have the edw camps which is like the mother of all educational bar camps in Germany. It has now taken place 22 times and we are trying to combine this to be very family friendly. So in one place where we have this every second time we have also accommodation there. And now we made it to have I think 25% of the participants are younger than 18 years old. And they provide their own sessions which is really fascinating. Thanks very much for an excellent talk. If we could share our appreciation we might still get ahead in the lunch queue.


All right, good afternoon, I guess. Yeah afternoon. So Hopefully everyone is done with at least setting up lab one so Okay, come on. We're starting little countdowns already done so Hopefully you've already Set up lab one if you haven't set up lab one yet. I suggest that you do that the record for the Practical session to get someone running on an old version of Windows 10 was like 10 Windows reboots So especially if you're in on a older version of Windows 10 You should if you haven't done so already try and set up the lab environment and make sure it works otherwise if you're struggling set up the lab environment and it's due on a Monday and it's a weekend and The rest of the teaching staff tries to have like a little bit of a life then you might be screwed So don't do that So today we're going to talk about more practice or process practice get used to it We'll do some more fun examples today. Some of you might have noted There's only a few slides today So most of it's code examples and we'll go ahead run some stuff Make sure we really do this at the end. We'll do some like sample exam questions that they even had last year and Hopefully we'll understand it a bit better So yeah first note of advice on I'm good try and move the midterm to Tuesday the day before on February 28th So there seems to only be one major conflict with that otherwise most of you have already have an exam on March 1st, but The schedule I got says you guys are free on that week. So I guess that's not true So I'll try and do that try and move it to a better room That doesn't have the crappy side table thing because those are awful. So we'll see where I get at with that So if that presents a bigger problem, let me know so far it seems that might be better And I'll probably just move my office hours to Tuesday too to get the advance for that So the last thing I didn't mention in the last lecture when we were talking about signals and then being user interrupts Well, I should talk quickly about like hardware interrupts like on your actual CPU that we won't encounter but you should know about so On a risk 5 CPU, this is the model for most other CPUs or there's something similar to that There's actually three different terms for interrupts and different types So there is an interrupt which is something that's triggered by external hardware that might be generated by like your keyboard Or a network device or something like that and that's like some external source generates that and then you have to handle and We know that the kernel is the thing that interacts with the hardware So the kernel would have to interact with that and the nice thing about interrupts as opposed to polling is you know If we need to respond quickly we respond as quickly as possible if we use interrupts Then there's something that kind of behaves like interrupts called exceptions and they're not like C++ exceptions They're hardware exceptions. So they're generally kind of like interrupts, but they're triggered by an instruction So if you try and do like a division instruction one of the exceptions you might have might generate is if you try and divide by zero or something like that if you try and Access some illegal memory corresponding to that instruction and the default handler is going to be the kernel where Whatever process made that instruction gets suspended the kernel would get the exception and then choose what to do with it and one thing it can do is optionally Kind of translate it into signal and let the user process handle that So you might get an illegal memory access It would generate an exception on the CPU the kernel would get that and then maybe it sends a sig fault to your process and you can actually handle a sig fault if you want and Actually try and recover from it or do whatever that's one of the options you have Or you could do like we saw in the last lecture where you just kind of ignore sig faults But likely that's not going to get you anywhere because it would just try the instruction again, and it would probably fail again So those are the two reasons so an interrupt So that's something from hardware or an exception which corresponds to an instruction and then there is a trap So a trap is essentially the interrupt handler So a trap is just when you transfer control because of either a exception or an interrupt and it's the code that runs or the handler so a trap would Either those could generate a trap where the kernel run some code to handle that so In this case a system call would be it's an instruction So it would generate an exception and then that handler would be in the kernel and you're kind of requesting it So it could be considered something called a requested trap. So I want the kernel to run some code for me So that's a little bit terminology for the actual hardware So today it's going to We'll introduce a new API. So this will complicate our life with processes and make sure you really understand them So the new API is called pipe and it is just a simple system call That takes it might look a little bit weird But it just takes an integer array of size two so it just wants an array of two integers and then Returns an int and that it is basically either zero where it created two file descriptors or Negative one where it didn't create file descriptors and then it's gonna set error. No like we know in love so What pipe does is it will write values to that integer array for two file descriptors And it essentially forms a one-way communication channel using two file descriptors so You get two file descriptors out of it. So pipe fd The array at index zero would be the read end of the pipe so you're allowed to do system calls read system calls to that end of the pipe and There is these one index and that is the right end of the pipe and the way the pipe works is Whatever you write to the right end of the pipe will be read from the red end of the pipe Which seems kind of useless if it's one process but this is one way to do inter process communication and You can think of the pipe as like a kernel managed buffer that the kernel manages So two processes are able to talk to each other It handles, you know, setting aside memory for that where it lives all that stuff under the hood Where you don't have to worry about it and your interface is you write to one end of it And then you can read from the other end of it and you'll get the data sequentially out of that out of the other end so oh Yeah, first I'll do a quick aside So we kind of saw that you know, we can fork and create a new process and just let it run So you can actually use your shell to create a new process and not wait on it So have it return immediately and that's using that ampersand sign So if you use ampersand at the end of the command on your shell your shell starts that process and just returns instantly and kind of Let's it run in the background and it will tell you when it's done. So if you do like sleep One with an ampersand. So let's go and do that quick So if I do sleep one with an ampersand it returns immediately and tells me that process ID that just created and then Let's me type on the terminal again, and then eventually when it's done. It's going to say hey, it's done and You know, it's done. I mean that's pretty much it so What you can do with that is we can Kind of create a fork so that pipe character will create a pipe between two processes where the standard out of one It goes to the standard in of the other So one writes to the right end of the pipe Which would be whatever is on the left hand side and then the other process reads from the read end and it gets it replaces standard in so Remember we talked about a fork bomb before where you just kind of exponentially create more and more processes well in bash you can Create a command that will fool your you know, maybe your friend Maybe you're not friend into essentially fork bombing themselves and that's what this does So this looks just a bit weird and it's meant to be something you like kind of copy and paste That's why there's this warning do not run it so what this actually does is Defines a function called just colon that takes no arguments and what colon does is Create a another version of itself and then pipe it to another version of itself So every call to colon creates two more processes that just communicate to each other But they don't have to and then this ampersand sign throws them off in the background and then Semi colon just means I want to do another command again and then this semi colon just calls the function once So this would call the function once which creates two processes and then it would recursively call itself over and over again so that process would create two more processes and each of those would create two and That's a way to fork bomb your friends without doing just like the explicit while true fork in a C program So that's I feel like that needs to be like in every operating system course to understand that but you know Do not run that command so Let's get into Kind of the main example for today, so we're going to look at the pipes.c. It's in the examples repository So let's go ahead and see that So in pipes, let's look at that We're just going to write a little helper function here because we're going to make a bunch of other system calls That basically just checks it's the return. So we'll just always give this the return value of Whatever our system call wrapper is so it will check if it's not negative one that means there's no error So we're all good. So it'll just return Otherwise it will capture that error. No Print whatever the error is make sure that p error doesn't overwrite error No, and then just exit with the status, you know equal to that error code So just in case anything goes wrong So here's our main function. Do I need to make that bigger? Probably? Okay, so here's our main function So it creates an array of two integers and then calls pipe. Whoa, that's huge then calls pipe with that array and Make sure that it doesn't have an error. So if I get to this point, it means I have two valid file descriptors So I have fd zero which is oops the read end of the pipe and then I have fd's one which is the right end of the pipe So I'm gonna have that I'm gonna have two file descriptors if by default I already know what numbers these are I could probably guess my standard file descriptors as we all should know zero one two So the rule is it would use the next lowest available number So this is probably file descriptor three and this is probably file descriptor oops for So Whenever we fork again review, it's Exact copy two processes exactly the same the only difference is going to be the return value of fork So at the point of the fork There are now two extra file descriptors open So both processes will have all those file descriptors So the parent and the child will have filed descriptor three and four which are the read end and the right end of the pipe and The only difference is going to be the return value of fork here The PID will be greater than zero if it's the parent and you'll have the process ID of your child and the child It will be zero. So hopefully that is clear and I don't see questions about that Then we're going to check make sure that fork actually worked properly and then if it did We'll do something kind of tricky. So in the parent. We'll just create a string called. Hello. Howdy child I don't know why we're like Texan today, but apparently we are and then Just compute its length. So we'll get its length and then we're going to write some bytes So we'll write some bytes to the right end of the pipe So we'll write to FDs one and then the buffer will be Pointing to that string, which is just a bunch of ASCII characters And then we're going to tell it to write however many bytes are in that string and that's it And then we'll just go ahead and check that our right system call actually work correctly And if it didn't, you know, the process would exit, but hopefully it works and Then in the child the child will do something completely different So the parent all it does is write a string to the right end of the pipe and that's it So I'll scroll down quick to show that at the end of this If else all it does is close the file descriptors representing the pipe and then return zero So we'll just exit zero So all the parent does is right Now all the child is going to do it's going to create a buffer And that's, you know, only in the child and it would do a read system call A read, okay, stop that Okay, it'll do a read system call to the read end of the pipe and give it the buffer and However many bytes are in the buffer. It's that magic 4096 which we'll see why that is later and then What it will do is check if there's any error and then if not It will print F and this looks like a bit of a weird string format. You might be used to just ampersand S So this I didn't send a C string. I didn't send an all byte or anything Although I guess I could have but if you don't send an all byte what this will do is say hey The period is just a I want a width and then the star means I will give the width as an argument So I won't use a C string at all. So I'll tell it. I want you to you know Output a string of bytes red length. So read that many bytes and my string is just going to be the buffer So doesn't end in an all character because I don't know. I just didn't feel like it And then that's it. So Anyone want to tell me what I see when I actually run this program or easier first question How many processes get made one so I start executing main and it forks once and creates One more process. So while it's running, there's two processes the original one and the newly created one So what should I see as output here? Does the parent output anything? So does the parent output anything No, it shouldn't because it's just writing to the right end of the pipe Which isn't our terminal so we shouldn't see anything and then will the child print anything It should print out child read and then what should it read? Yeah, it should read Howdy child if this pipe works how it probably should work and that's actually a form of inter process communication Yep, so the parent wrote to the buffer right here Whoops, so it did a right call to FDs one and FDs one was The right end of the pipe Yeah, so in the else so the parent won't go into the else right so From the fork The parent will get a process ID greater than zero and the child will get a process ID less than zero So say we create, you know Say we create. I don't know process 101 Then the parent would get 101 as the value of that PID and the child would get PID equal to zero because it's the child and then we have two things executing at that point So the parents only going to go into this if branch and execute this code And it wouldn't go into the else because it went into the if So we're just writing that string So that string is pointing to a bunch of bytes because it's C So we're just telling it to write that string to the right end of the pipe So we're writing that string out and then we don't know what we're reading So we just create a buffer of some bytes that the kernel can go ahead and fill that information in with data So you can kind of think the curl is doing the opposite thing So for a write system call the kernel has to read the bytes we have there and then for a Read system call the kernel has to write the bytes to that buffer So what happens to the buffer is actually the opposite name of the system call Okay, so let's go ahead and so if we do that yeah Hey, it actually works So the child all it does is read and it gets information from the parent, right? It doesn't Read some string that string only exists in the parent because it's in that it's in that if branch and The buffer only exists in the child So I'm using a pipe and the fact that fork copies everything including all the file descriptors To be able to essentially share a file descriptor So I create a pipe I forked and I said hey parent you write to it Child you read from it and then since those are two different processes. They get some communication. Yeah So there's a so the question is how do we know the rights going to happen before the read? That Okay, so for that So yeah, so we do have to argue about both but Read is going to block so what could happen after we fork We don't know what's going to run first if the child runs first It would create the buffer and then do a read system call before we write anything and that's okay because read is blocking So read will sit there and the kernel won't return until there's actually something to read So it'll sit there if it happens to go first. It's fine. It doesn't matter because Read is yeah, what we call a blocking system call where it's not going to return until it actually gets some data Back out of it or that file descriptor gets closed or whatever Was that the other question too? Yeah, that aren't what sorry Yeah, so the question is can you use a pipe to communicate between? Things that aren't related essentially and the answer to that is no so I'm only be you're only able to share this file Descriptor because of fork copying everything otherwise you can't just create a file descriptor that just point There's no way to get a pipe back unless you have a name for it or something like that So there are other forms of IPC that essentially take a name that you can other processes don't have to be related But pipes they have to be related because they only get shared through fork. Yeah Yeah, so if you create the pipe like after the fork Then you can't share because each process would have created its own pipe So this I can only share because I created a pipe before I forked and then they both got copies of it or I guess the newly created one guy copy of it the parent always had it any other questions about that. Yeah So that's playing D which was the recommended thing for the lab setup So if you do the recommended thing you'll get arguments like that. Okay, so let's do something fun that will That will test our knowledge of you know orphans and zombies and all that So this is kind of related to that question of like, how do I know that right happens before the read? Okay, well One thing we might have a question about it was like hey What if the parent? Doesn't write at all What do we think is going to happen if I do something like this? So the parent doesn't write to that buffer and the child just wants to read from it Anyone hazard a guess as to what would happen here? Yeah. Yeah, so So what will happen? So let's argue about the parent so in the parent same thing It's going to set up the pipe then fork. So now it creates a new process and now In the parent it does nothing and then it would go ahead close the ends of the pipe and then Return zero which is the same as exit. So now the original parent process is now kaput. It is Terminated and we have essentially created an orphan. So our child is going to be an orphan It's going to get reparented to something. Is it going to still exist or is it going to die as well? So what what happens to our poor orphan process when it gets reparented? Is it still running or does it die or what happens? so system so the guess is system D or knit will kill it so System D or knit would call weight on it. So would that necessarily kill it? No, so it should System D would inherit it But it wouldn't kill it itself unless it was like blood thirsty for some reason because it's just a program Someone could have written it that way, but by default this kind of waits Okay, well, I guess let's just run it and see whoops So if I do that returns immediately because my shell only cares about the parent So I create an orphan. I don't even know what process ID is created But I can go ahead and run a command that will get me the process ID of everything with a matching name And if you've done lab one you could probably have written this program yourself So it's called PID of and then you give it a name and it will tell you if that program still exists So if I do PID of pipes.  So my child is still actually running. It's not a zombie or anything Well, I actually don't know if it's a zombie. So I can go ahead and check Proc 9 and 2 State Yeah, okay, so I see that it's there and sleeping so what is actually happening is Something strange So it's still alive and it's kind of just waiting. What is probably sleeping doing? Anyone has her to guess as to what it's actually sleeping on? Yeah, yeah, so it's actually just stuck on this read call So we can even verify that to be like hey printf If we do that, let's anyone want to tell me how to violently murdered this process because I don't want running anymore Yeah All right kill dash nine. I don't I'm sick of it All right, so now it's gone so I cleaned it up and then I'll go ahead and run pipes again So I see that I see before read. I don't see after read So it's still in that read call it is reparented to whatever System D in this case and it's sitting there blocking on read so why that is and why Some of you already asked in lab once like why the hell do I have to close my file descriptors? Won't the offering system clean up for me? Well in this case the offering system is not terribly smart So what it will do is for a pipe Read will return zero, which means there's no way to get data into the pipe only if Nothing can write to that pipe Which something can write to that pipe if they have a file descriptor open to it So my process that created the pipe Doesn't have the right end open to it because well one At the end this else statement closes both ends of the pipes and then it exits But it would have got cleaned up anyways when it exited But unfortunately in the child the child also has the right end of the pipe open and the read end of the pipe Open even though it never uses the right end of the pipe So because it has the right end of the pipe the kernel just assumes that maybe it could write data to itself So read I'm not going to return zero because it's possible Although maybe unlikely that it will actually get some data written to it. So We can actually clean up our child if we do something like this so if we close the Right end of the pipe When we're done or when we're done with it and then close the other one After we're done reading from it, and then I will just move this up to the parent so we don't double close ourselves Even though it doesn't really matter So if I go ahead and do this now, I won't create that problem.  That's just kind of still waiting on something and I cleaned it up So if I go ahead and do this now I see hey I Created is on I might have created an orphan in this case I don't know what ran first or whatnot But because I actually closed the right end of the pipe and the kernel now knows it's not possible for no process Has the right end of the pipe open so read will actually return zero and then I print out Hey, I read zero bytes. So child red just shows nothing so this is a One very important reason why it is like really really important to close your file descriptors when you're done because that's how it works So any questions about that Okay, so yep So in this case Yeah, if the child is not possible to get any data into the pipe then read Would just return immediately with zero bytes red indicating that that it's not possible to get any more data So you're done So now we know why there's no like end-of-file character because it could represent different things So read returning zero mean just means it's not possible to get any output Or read anything more so that could be end-of-file That could be that no one can write to the right end of the pipe So I can't read anything so you can see why they made it really abstract because there's multiple reasons Why you can't read anything anymore Yep Yeah, so this is only one way so anything you write will come out the read end So if you want two-way communication, you need two pipes So I could make this that it you know That I create two pipes up here and Then in the child I write to one of the pipes and the parent reads from the other end and Vice versa for the other process. So that's how you get your two-way communication. It's just two pipes Okay, any other questions before we move on? Yep. So in this case So the question is if I didn't close the fd's in the parent would it still run like that and In this case it doesn't matter because when your process ends it will close all the file descriptors So if I just didn't have these lines Well in the parent all it does is just return zero which would call exit Which would close everything because that process is now dead So I actually didn't need to have them there. It's just kind of like good A good habit to get into just close it as soon as you don't need it anymore And then I would that's as soon as I don't need any more So if I did close them before the fork well Fork is a copy at the fork if I close them before the fork then they're closed in both of them So the other one wouldn't ever see it Okay, so Let's go back So yeah, so that's some basic IPC. We'll see more of it as the course goes on But that's like really basic ones and most of the mechanisms will still be the same read and write thing It's just how you get that file descriptor essentially is the only thing that changes So we saw kind of you could redirect some file descriptors for communication as we saw before with like that open stuff And then saw some signals. So this is recapping on last one too So signals were like interrupts for user processes and the kernel has to handle things more complicated There's like three different kinds of interrupts. So just remember, you know exceptions related to instruction interrupt from hardware And a trap is the actual code that runs So let's look at some finals from last semester. So one of the things People like doing is making sure you can understand and follow what processes could be running when So it says for each program below state whether produces the same output each time it is run Or whether produces different outputs each time it is run. So basically if it if it's constrained to be at a set order or if it's not and then explain why the program behaves like this So here's our example I'll leave that up for a little bit and let you think of that and then we'll go ahead and you know argue about it together All right, anyone have any guesses as to what this might do Yeah Yep, okay, so we'll go through it.  Yeah So fork remember it's a copy where both of them after the fork look exactly the same, but they're completely independent So in this case two processes do not affect each other ever Unless you kind of opt into it Yeah Okay, so one possible solution is print four four times Okay, so let's go through and argue about see if it's an order or what So here's kind of what it looks like So initially I'll give processes PIDs. So I'll say the original one just for argument's sake is PID 100 So PID 100 it's going to come it's the only program or it's the only thing executing and it's going to start main and Start executing it's going to create int i equals four and then After that line that would be allocated on the stack or something like that Well, it would be and then it would go into that while loop So the while loop is now while I does not equal zero and here all right in as well in PID 100 I equals four Since that's the main thing I care about so I'm going to go into the loop because I does not equal zero and then I'm going to fork So in the fork, I'm going to have create a new child and I'll write out What the two things are? So in the parent Return value of fork is probably going to be a new parent. I'll just use the next number just for argument's sake and then in PID 101 Well, it's an exact copy at the time of the fork that includes the value of I So in 101 I is currently four because that's what it was at the time of the fork and PID is going to be equal to zero because it is the child and now they are both right there Right after the fork. So We're both good right now. There are two processes right after the fork same. I value same everything At this point, we don't know what's going to run first. So we have to argue about it So if the parent runs first, which is PID 100 What's going to happen is it will check This if statement does not is not true So it would come in the else and then print for and then exit and now it's done. So this would have print For and now it is Kaput But that didn't need to happen because there's nothing preventing the other one from running first So it could print for first and then went kaput or in process 101 We would have come in here decremented I and it's independent. So it would have changed only the value of its I so now in that process I Equals three and it doesn't affect the other one one. Well, there's independent because of the fork They should be independent and two. Well, the other one could have Could have printed for even before that happened So any questions about that part? So just remember they independent so What's going to happen here is in this case? It would have went into the if statement decremented I which we did and then go back up into the while loop I Is not equal to zero then it would fork again So in this time through fork Forks going to essentially overwrite that process ID that process ID, so it would create a new process probably called process ID 102 and Exact copy at the time of the fork. So in that process What was the parents value of I? Three. So what's the child's value of I? Three and then in this case we'd be overriding the the PID So in process ID 101 that fork would have overwritten it So PID is now 102 and in 102 PID would have been equal to zero So any questions about that? So now they're both right here right after the fork and Then yep. Yep Yeah, because that would have been out well in this case it would have Reallocate so PID would have been dead by the time it exits this loop and we've got reallocated when it gets back to that loop So but it would be the same address But if you want to think of it kind of more theoretically Well, I should have I guess erased that PID equal to zero in 101 When I went back in the loop and then create a new PID because it would have allocated at the beginning of the loop So yeah, good point. I kind of skipped it step So in this case, we still know what's going to run first in this case We could process ID 101 Could execute first and then it would go into the else statement Go ahead and then print three and then it's dead So in this case was there anything to prevent Three from happening before four No, because what could have happened is well process ID When they forked and created process ID 101 I could have just executed 101 and let it run it were created 102 and then printed three and exited So there's I there's no ordering between them. They could have happened at any time so In this case, what's going to happen in process ID 102 is it's going to hit this if branch Hit I minus minus so it would decrement I So I is now equal to two and you could see how this could be a real mess If that I wasn't actually independent for each process We wouldn't even get four every single time It would just depend if that was actually shared between all of them. It just depends who gets to it first So you'd have no way of even knowing like that outputs of the processes would all be completely different So Whoops, so process ID 102 Go ahead it decremented and it would go back to the beginning of the while loop So I'll do the right thing and just say when it gets to the end of the loop It would have just removed that PID and then it would allocate a new one So now I have a fork again And I'm going to create a new process called PID I'm going to assume I'm going to call it 103 And what's its value of I? hopefully Anyone value of I? Two so exact copy at the time of the fork right now Process ID 102 called fork. It's I was equal to two So it process ID 103 would have I equals the two and then the only difference is the value of PID So this one would be 103 and 103 since that's the new one its PID is equal to what zero So If 102 decided to execute oops, sorry, I'll move this first So they're both there So now if 102 decided to execute first It would go PID is not equal to negative or not equal to zero So it would go into else and then it would go in this graveyard down here Where it would go ahead? It would have printed To and now it's dead as well So now it's dead as well So now the last process remaining is process 103 so what it would have done is it would have checked when this loop I is equal to one So it would have decremented I then Went back up to the top of the loop remove PID and in this case I is not equal to zero So we go ahead work again Creating process ID 104 Which is the exact copy so I would be equal to one in this case and The new PID in 101 would be 104 and 104 PID would be equal to zero In this case same thing is going to happen Well three would print One and then die and Then in 104 Well, what 104 is going to do? whoops So 104 is going to check the process ID. It's equal to zero. So it would go Or it would yeah process ID is equal to zero. So it would decrement I I is equal to zero now Then it would go back to the top of the while loop check the condition now I is zero So it wouldn't execute so it would just die and not print anything So we would get one two three four printed in no particular order So any questions about that? It's like Fairly complicated lot things are going on but the principle is a copy exact time of the fork. Yep So in this case there's only one kind of hierarchy of processes So my original process 100 So only the child creates a different process because here the parent the original parent immediately prints and exits So 101 would have created a child called Sorry a hundred would have created a child called 101 and then 101 is the one that created 102 And 102 created 103 And then what 103 created 104 So the PID is zero is that's the PID that the child sees the newly created process sees so In this case if I come in and start executing with process 100 if this is the only process running it's going to go ahead Get some space for four and Then call fork and then fork creates a new process so Fork would create process whoops, that's not fork creates process 101 and Then the way fork works the only way to differentiate them is the return value of fork. So in process 101 That variable would be equal to 101 because that's the process ID of the newly created process So that's your child and then in process 101 PID equals zero because it's the child process And that's the only way to tell which one's which Any questions about that? So what you can do or we can follow up on the discord too is you should understand also this one So same question except now there's a wait PID before before the print so Oh can't see okay same Whoops it wrong one again. All right, so it's the same thing except there's like a wait PID instead of the print So we can take it up in discord But just so there's a record of it. This should always print in the same order one two three four so You can take it up or ask questions if that is unclear. So just remember pulling for you we're on this together


Welcome to day six to seven of my live Facebook marketplace dropshipping case study, where I show you guys everything that I'm doing on my Facebook marketplace account, from where I'm getting my products from, what's selling, how much I'm profiting, and all of the dropshipping tips and strategies along the way. In this video, I'm going to show you guys how I added more products, what other products I added to my Facebook marketplace store, and also of course I got more sales, so I'm going to show you what sold, how much I'm profiting there, and also I'm going to show you guys how I added bank information to Facebook so that I can actually withdraw the funds and the profit that I'm making. Quick intro and let's go. Alright so let's get this show on the road, let's see what happened in the last couple of days on my Facebook marketplace account. Right before we jump into it, I want to remind you guys, subscribe to our YouTube channel if you are new, and you will always stay updated on all of the latest and all of the hottest topics that we have coming out in the world of dropshipping. And of course like this video if you appreciate the value, share it with your family and friends so they can also learn about the wild and amazing world of dropshipping. So as you can see, here are the listings that I have on my Facebook marketplace dropshipping account, and as you can see there are more products here than we just saw recently because the more days that pass, the more my virtual assistant is adding more products, and that way I'm actually getting more sales using the strategies that I talked about. Now here are the products on my Autodia store, so as you see I have 69 products now, and these are just the products that I simply added now recently to my Facebook marketplace dropshipping account. Of course I'm doing everything through Autodesk. Here you can see one of the products, I'm just going to go inside the variant so you can understand how much I'm profiting on each of these products. So you can see that I have a 5% fee, which is how much Facebook is charging on my transactions with another 15% in profit. So that's my break-even settings and my profit settings for every product that I'm selling, and if I find a bestseller, I raise the price in order to profit more. Now on my Facebook marketplace account, I'll click on shipping order so you can see the new orders that I got on my account, and as you see I have a variety of products that are selling, but there is one product that's really becoming a bestseller, and that is these crotchet hooks, so let me show you this product. Here I'll go back to Autodesk, and I will search for that product that's selling well for me. Here we go, warm crotchet hooks, Art Aluminum Soft Grip. So it's this product, I clicked on the source link so you can see where I'm getting this product from, and as you can see I'm buying it here from Amazon for $10.48 with a 10% coupon. It's always a great idea to add products with coupons because that way you're simply going to make more profit on every sale. So we know that the product cost $10.48, now let's see how much I'm selling it for. So as you see here on my Facebook orders, I'm selling each unit for $15. Now let's try to see exactly how much profit I'm making on every time these crotchet hooks sell. So as you see my selling price is $15 as we can see in the variant settings, with a 36% profit margin. That's because this product has been starting to sell well for me and as I just mentioned, when you have a product that's starting to sell, you want to increase the product's price. You also have automation settings in AutoDS that will automatically raise your product price every time you sell and lower the price if the product doesn't sell for an X amount of days. So using the automation settings on AutoDS will really help you profit more in products that are selling and increase your chances of selling products that are not selling. So that pretty much covers up which products I'm selling, what happened in the last couple of days on my store. Now I want to talk about adding bank information so that you can actually withdraw the funds from Facebook to your own bank account and enjoy your profits. In order to add your bank information to the Facebook marketplace, the first thing that you want to have ready is your bank information. In this case, I went with Payoneer as my bank account as you can see here. So I'm going to request two more USD receiving accounts so that I will simply have more USD bank accounts to use on other marketplaces that I'm also selling on. So now it says we received your request. Payoneer received my request for two USD bank accounts and here they are. As you can see, I have two new USD accounts. Now what I'm going to do is copy these bank account details onto my Facebook marketplace. So let me show you how it's done.  Here you will see your pending balance. What you want to do is click on view payment info. Now you can start entering your new bank information. So enter all the right information. In this case, I'm copying the details from my Payoneer account as you can see here. I'm simply copying each line, the account number, the routing number, confirm your bank account number and then finish payment setup. That's all the steps that there are. As you can see here, the information that I provided are now on the Facebook marketplace. Facebook is going to go through a quick verification process and then they will approve my bank account. That's all there is to it. That's how easy it is to add your bank account information. There should be no problem with that as long as it's a real bank account and Payoneer of course is a real bank account so you can use them. Of course, you can also use a real physical bank account if you live in the US because Facebook is looking for a US bank account. So in this case, if you're an international seller, you can use Payoneer. But also remember that you have to have a US IP address in order to have shipping options on the Facebook marketplace, which I mentioned before. So if you do not have shipping options, then people will not be able to see your listings in the US and you won't be making much sales on the Facebook marketplace. So keep that in mind, use a US bank account so that you can actually withdraw your funds and enjoy your profits. That sums up days six to seven on the Facebook marketplace case study. I hope that you found it informational. I hope that you can get some inspiration from it to start your own Facebook dropshipping business. It's actually really, really simple if you simply follow the steps that I provided in this case study. Once again, I invite you guys to subscribe to our YouTube channel. If you enjoy the content, we deliver so much content when it comes to Facebook, dropshipping, Shopify, eBay and we've got more marketplaces coming up like Amazon and Wix and so much more surprises. So if you're into the e-commerce field and you like it, then this is the YouTube channel that you want to follow. Thank you for watching and good luck on the Facebook marketplace.


The student in this module, we will look at how people hack using the limitations of JavaScript, how hacking is performed. This course is not about hacking. I will only give you a very small idea about what can happen. Now if the programmers think and they assume that whatever goes into the web server is validated, is sanitized, this is far from the truth, that is not going to happen. People will always find ways of circumventing the validation which is implemented at the client side using JavaScript. So what is the purpose of JavaScript? The purpose of JavaScript at the client side when enabled is pre-validation. That is it, pre-validation. The actual validation has to take place at the server end, otherwise things can happen which are undesirable and which can create a lot of embarrassing situations also to say the least. So what is the module coverage? Here it is. We will look at a simple catalog order system. I will show you how it works very very briefly, show you the JavaScript and show you what will happen when the JavaScript is enabled and when it is disabled and of course very brief analysis and conclusion. This course is not about hacking. So this is the screen of a catalog order system and you can see that the grass is good, green, there are less weeds, there are less weeds and the owner of this lawn is selling the weeds. Since the weeds are very less, so they are highly priced, $100 per blade of the weed and here you enter the number of leaves, this is not a hashtag and then you click over here and place the order. So this is the scenario over here and the JavaScript which is corresponding to this code is over here, catalog order code, it has the JavaScript and it has the validation also to check how many leaves are ordered. Now let's see what happens. So over here, the person, the JavaScript is enabled, the person enters the number of leaves, okay, leaves is equal to three and the price is correctly shown as $300 because it is $100 per leaf, per leaf of the weed, okay, right. Now over here, the JavaScript is still enabled and the number of leaves from three, okay, over here it is changed to four. So I have this error message over here, okay, unit three, okay, this is only allowed. So JavaScript is enabled. Now what happens is that somebody, okay, what we can do is they disable the JavaScript and then they enter a large number of the weeds. So you see leaves over here, there is a big number over here, right and this will go to the database server. This will go to the database server and it will create all sorts of problems. Why this happened because this person over here disabled the JavaScript, disabled the JavaScript, there was no pre-veridation, okay, there was no pre-veridation and it went directly and what is the problem, the problem is that a person who is selling the weed does not have that required number of leaves of the weeds to sell and that creates a very, you have to say embarrassing situation and how that person is going to provide cannot provide, right. So what has happened, so what has happened over here is that something which was unexpected which was naive to assume that people have not disabled their JavaScript and people do worse over here. They actually change the price of the items, so if the item is like a thousand dollars they can make it a hundred dollars and they can use those extensions with passing from the page to the server, like put and get, okay and then they can create all sorts of problems. Why? Because the JavaScript was disabled and it was wrongly assumed that it will not be disabled. Now can't force people to turn on their JavaScript, it's the people's own choice and it is very difficult, very difficult to ensure all the time, hundred percent of the time that the JavaScript is enabled or disabled while a person is placing an order at you, at the client side, enabled or disabled. It cannot be ensured, so what is the solution? The only solution is that validate at the server end, so what is the purpose of JavaScript? The purpose of JavaScript is pre-validation, add the client and that's about it. Don't make wrong assumptions, otherwise you will be in problem, that is all for you in this module. Thank you very much.