So if you want to just take a look at them, they're in the bottom right corner as well. So like I was introduced, my name is Liz. Most importantly, I came from Brooklyn, so if I seem kind of tired and out of it, that's because I am very badly jet lagged. I am a queer, trans, polyamorous woman. I live with my family and my very cute dog. If you follow me on Twitter, you won't get anything about Go, but if you want pictures of dogs, I can absolutely provide that. My current employer is VMware, a recent acquirer of a company called Heptio, and let's just get this out of the way. I don't like Go that much, but it seems like y'all don't really like See Go that much, so I think we're going to get along just great. I work on Kubernetes. I work with Sig Cluster Lifecycle and a bunch of projects that won't mean anything very inside Kubernetes baseball, but I do go a lot all day, every day. And this is the most important part of this talk. Why not See Go? I'm going to channel my co-worker Dave Cheney. He has a very good talk. See Go is not Go. Just go ahead and Google it. But to summarize, it's make compilation more complicated, less portable, no cross compilation, more seg faults, no back traces, less tooling. It's a mess. It's going to be very difficult to debug when it goes wrong and it's going to. So why should you use See Go? Because you have to, basically. And it's really the only way to get what you want. I'm going to start off with calling See From Go, which is a little bit easier. Show of hands, how many people actually write See from time to time? All right. Well, not all of you, so the rest of you can tune out for the next couple of slides. This is a very basic See function. On the left is a header file. See separates the declaration of a function from the actual implementation. Think of it sort of like an interface, but a lot clunkier. So I define a function on the left and then I actually implement it on the right, making sure to include those headers. If you don't understand the types, unsigned integer, 32-bit, underscore type. In See, back then they had to use as few characters as possible, so everything is as confusing as you can imagine it being. This is what makes you know you're dealing with See Go. If you see import See somewhere in your stack, you're dealing with See Go. And it uses comments. So that's not ideal, perhaps.  I could ignore it. You have to pay very close attention to it, and if you get the spaces wrong, it's probably not going to work, and it has to be exactly before import See, otherwise it won't work. But this is basically how it works. You'll notice that add one does not start with a capital letter. See is not a real module, so it can break rules like that. See is just a sort of pseudo module that says, hey, I want to call out from here. This is what the code itself looks like. I'm sorry it's very small, but the actual code is on the bottom of the slides. Important thing to note here, the import See always gets its own line, no matter how many other imports you have, because it's not actually an import. It's being used by the parser. So basically it's just a huge mess. Now if I run this, I'm going to get an error message. Everybody is always really disappointed when I don't do live demos because they don't get to see me screw up, so I've simulated demo syndrome for you. So you're going to need to do a cast here. That's that type I mentioned before. Even though they're both integer types, there is no coercion. You're going to have to coerce everything yourself. So here we go. 10 plus 1 is 11. It's a very, very difficult function. There's no way we could have implemented this in native Go. We had to use SeeGo. It was the only way. And now we're going to go back into calling Go from See. This is probably less likely to come up for Go programmers unless you're doing something kind of weird. I do some things that are kind of weird, so I have to deal with this. And I'm just going to start out with the export function at the top. Export means I want this to be callable externally. By default, nothing from Go code will be callable by an externality library. It is not a well-behaved citizen in that sense. So I'm going to export this. Side note, if you have an export statement, you can't have certain kinds of comments elsewhere in your file because it's compiled into a header and there will be a bunch of weird error messages and you won't understand. So keep your files separate. Here this is not the standard string that you might expect. This is a C string. And yes, there is a difference. So this is a string in C. It's a series of bytes terminated by a null byte, which is not the character zero. It is actually just zero, zero as bytes. And this is similar to how it works in Go, but not quite. Go stores a length and C just says, go until you find the end of it. If you've ever had a weird C program that just went off the rails, it's because you forgot to include the null byte and it just kept going forever. There are advantages to both. The main advantage to the C approach is that it is smaller and that matters sometimes. The main advantage to the Go approach is that it doesn't break all of the time. So this function takes that character and it turns it into a string that Go knows how to manipulate. And then we can put all of this back together again. If you want to export functions, you have to call the package main, even if it's not actually main. You have to have that little main stanza at the bottom, even though it doesn't actually do something. I'm sorry. It wasn't my fault. Now, here's what it's going to look like when we actually use it. You remember those header files I told you about with C? Well, we're going to define our own header files. Now let's take a look at it. Oh, there's some... Yeah, let's... Don't worry about it. It's technically text, but treated as a binary file. Don't look at it. I'm going to give you a brief introduction to make files because you're not going to be able to avoid it. I'm sorry. So this is sort of a typical make file. We've got outputs on the left, inputs on the right. That has to be a tab character, which is harder to explain to Python people. I think you go people already know that you should be using tabs. And there's a bunch of weird symbols there which are entirely un-Googleable. You're just going to have to trust me that dollars at means the at sign, which is the target that I'm pointing at, which is output in this case. And the other one means all of the input files. I just remember those two and I swapped them around until my program compiles. So this is what make is going to turn it into. Now, we've got a couple of different steps that we need. We're going to first create those header files because we need those header files so that we can actually call this function from C. We use the go tool to export header. There's a bunch of really good documentation on this, but this is sort of what to vaguely Google when you're trying to remember how you do this. We build a C archive, which is basically goes way of saying, this is code that looks kind of like C, so C files can use it. When you compile everything together, you just sort of like throw all of the things on the command line until it compiles all together. And here is how it actually works. So we have a binary called go from C. We take in main.C, which I showed you earlier, the complicated header file, and that archive of C code, of go code that we created. We throw it all together, and we add p thread on the end because you need the p thread library, and it's not included in cgo expert for some reason. Just it's there. You need to do it. Otherwise your code won't compile. It's how programming is sometimes. If I do make, it's going to compile all of these things together. You can see it's expanded all of those weird symbols that I used. Everything looks nice, perfect. Hey, that's you. Say hello to my fake code. All right, now we get into something very exciting, which is pointers and memory. Now, go looks a lot like C, but it has a lot of very big differences, but the biggest difference is that it's garbage collected. So when you create a new value in go, you can assume that it will be available until you don't need it anymore. With C, you basically have to assume the opposite. You have to assume it's already not available unless you want it to not be available, in which case you have to assume it's already available, and keep very careful track of this all in your head, and there's a reason we don't write C anymore. Well, some of us do, but there's a reason we prefer not to. So this is what allocating something in go looks like. You all know how to do this. This is what allocating it in C looks like. Somebody once told me that malloc was the Swiss army knife of C commands, and that's always how I remember that function. I don't think that's true. And here's how you free it. At the end, we use point, and it goes out of scope, and go is just like, ah, we don't need that anymore. We will get rid of it. Here, we use the point, and then we call free with it. If that free points to something that isn't a valid pointer, who knows what will happen. It's undefined. If you have already called free on it, maybe nothing will happen. Maybe it'll segfault. If somebody called free before they passed it to you, the code up there might actually segfault. When you actually, when you try to get the things. Sorry. Sorry. Bad cameras. What happens if you forget to call free? Nothing. It looks fine. But then you have to run this horrible program called Valgrind, which is going to tell you whether or not you've accidentally made a mistake somewhere, and it's going to have all this output, and it's going to say, oh, you failed to free something up, and it's pretty easy to track down in your tiny little program, but once things get a little bit bigger, it's going to get more complicated. That's why you used to have to restart your computer every couple of days, because it, like, leaked memory so badly. Right. Very different approaches to pointers. Very different approaches to memory management. What happens when you need to pass things between those two? Some things are okay. If you pass a go pointer to C and only use it while you are in the C code, that is fine. Same if you pass a C pointer to go. If you only use it briefly, that's fine. If you store a go pointer in C memory, you can do that, but only until you return, and there's a bunch of weird special cases in the documents for Java and Darwin, and invalid is basically everything else. Just be careful and read the C go documentation very carefully. I read it 10 or 20 times before I gave up, summarized it as best I can, and issued this stern warning to all of you. Now, this has all been counter-trivial. How about something a little bit more interesting? How about a little magic? Who likes using image magic? It's everybody's favorite library to use, right? This is an example very simple C image magic program. It takes in that wizard friend, which is defined as logo colon, and it outputs it to logo.jpeg, and that's all it does, and just doing that takes, like, 15 lines of C. So, how do we do this here? Well, it's actually not too bad to translate this. You put C dot in front of all of the functions before. You can actually use, oh, what's this? Package config. Another wonderful thing that people very much miss about having to deal with C. What is package config? Well, you need a lot of arguments to the C compiler to get image magic to work. You need all of these, otherwise it's going to yell at you, and rather than having to copy them in specifically, you can if you want to. This isn't all of them. I left out some of the defines, and the compiler will work, but it will yell at you, or you could just use the package config. It's much easier assuming it works. If it doesn't, I don't know what to do. Probably somebody in here does. And here's this little handy defer function. You can use some of these nifty year ago features when you're doing C. So rather than having to use go-to's or jumps or something to make sure your code gets cleaned up, just throw it in a defer. We're making things better already. And the full demo is on the GitHub page, which I keep throwing to. Now we're going to talk about something even more fun, dynamic libraries. Who has heard somebody say, go binaries are static? Who knows what that means? This is a specific crowd, I think. So dynamic libraries are, they have different extensions on different operating systems, but basically they're a bunch of code that is available for other programs to use, and there are specific ways that you can use them, and you have to assume that they'll be available at runtime. Some people think they are a mistake. So here is a pretty simple C program. I'm not doing anything dynamic yet. When I compile this, it's going to turn into a bunch of objects in memory that look something like this. So main gets stored at a specific address, local function gets stored at a specific address, and then they can call each other just fine. Now, what if I'm using some other library? I've included lib1 and lib2.h, and now I'm calling them both from local function. What is this going to look like? Well, the two functions that I know about are going to be defined properly, but the two shared functions are going to be undefined until I go to run the binary when the linker, the dynamic linker, is going to find them, search them out, and link them into the program properly so it can run. We're going to use a cool program called LDD. When a program has that few letters in it, we know it's going to be doing something obscure and frustrating. So this is the LDD output for Ginko, which is a common go testing utility. There's a lot of stuff we don't care about most of it. Get rid of all of those numbers. They don't mean anything to me. These are the common dependencies you will see in most go binaries. You need C, you need LD, which is the library that allows you to use dynamic link libraries, which is fun. You need threads. Remember how I added threads in up there? This is why you need it, probably. And whatever VDSO is, I don't know. So we're going to add this library in that we defined using dash L ad lib. It's not lad lib, even though that might be fun. It's dash L ad lib, and there's no space because, remember, this is C. Characters are very precious. So we're going to install this. This is not actually the command you use. The command you use is something like this, because you have to get the files right, and the libraries you're looking for probably aren't on the right path. This is the important part. Dash I adds a path to look for header files. Dash L adds a path to look for actual compiled library files. And then, only then can you install this library. You can see here one of these isn't found. This is how you can tell without running a program whether or not it's going to actually run properly. That not found means this program is not going to run properly. But I can pass in a specific path so that it will run properly. Just pass in this long variable on the command line. Side note, you can do some really fun stuff with this because you can insert your own libraries for things like libc and pthread and do all sorts of nasty things to executables that aren't suspecting it. That is another talk for another time. I have about five minutes left and now I am happy to take any questions that anybody has. Questions, comments, thinly veiled insults, anyone? Sorry, what was that? Can you make a static binary using a dynamic library? Yes. Can you make a static binary using a dynamically linked library? Yes, you can. In fact, that is what Go is going to try to do by default. But sometimes you will need to use these things in different places depending on your specific needs. This is something that I ran into and I found very frustrating, so this was how I figured it out. Anyone else? Oh, over there. The motivating example for... Oh, yes. What are some examples of situations where you basically have to use C and there aren't any other options available? The motivating example for me to learn Cgo was writing Postgres extensions. Postgres is written in C and C++. You can write extensions in C or C++ and if you do that, then you can mostly write the extension in Go and have a little bit of wrapper code and for what I was doing, which was Kubernetes-related, that was much easier for me. Some other examples are anything to do with GUIs. It might require a binary thing. Some really nasty library like ImageMagic or something like that. I think the TensorFlow library that was mentioned last time probably had to do some Cgo stuff behind the scenes. A good library will wrap all of this so you don't have to worry about it, but behind the scenes something like this is probably happening. Anyone else? Oh, over there. Yes, you can't... Yes. Can you use all of the Go features when you are writing in Go and Cgo? Kind of. It's difficult to use things like using channels inside of C code is sometimes possible, sometimes not, but if you're calling C code from Go, that Go code can use any language features you want. It's just when you pass some of the more complicated Go constructs across the C barrier, that's when things get a little bit complicated. And more information in that is the Cgo docs have a really great list of what you can and can't pass across that barrier. Yes, in the back. Yes, have I noticed any differences where the C is better than the Go? Mostly the difference is that it's better at being able to do the thing that I need it to do because it can and Go can't. I don't really like writing C on purpose because it seg faults a whole bunch and it's really frustrating. So I can't think of a reason why you would use Cgo unless you absolutely had to. I don't think I noticed it being particularly faster or anything like that, but again, you saw my examples, they were all very trivial. So there are probably some Go veterans out there who can answer your question better than I can. I think I had one over here. Any advice on testing a Cgo project? Do it. You can test C, you can test Go. No specific advice. All of the projects that I tested, I tested by running the code a whole bunch and hoping it didn't fail when I was on stage. Any performance issues? Any performance issues in terms of FFI overhead? Probably. Sorry, I know enough about this to give this talk, but I am not an expert in profiling Go or any of that sort of stuff. So there's probably somebody in here who is. That's the Go dev room. Just go up to random people in this room and bother them until you find somebody who knows the right questions. Make some new friends. I've used Rust interacting with C. It's a little bit easier because Rust, just like it's much more similar to C. There aren't problems quite as much with the pointers and that sort of thing. I've also used the Python FFI, and that is worse because you have to manage all of the explicit reference counting yourself. Basically like manually incrementing and decrementing reference counts as you do that. There is Scython, which is different from what I used. I've heard that's a lot nicer. So I would put Go somewhere in the middle of the FFIs that I've used. And I am out of time, so if anybody wants to ask me more questions, there's not a lot of people here with pink hair I should be easy to find.


What's going on guys welcome welcome back to the channel critical overlord here We're gonna be talking about the Halloween franchise in this video here today Specifically the Halloween TV show that we know was announced late last year. So we got some plot details Today from Mark Haleweg who is head of Miramax and this is from Deadline It says Miramax television in October signed a deal with Trankis to develop and co-produce a Halloween TV series Which is envisioned to potentially launch a cinematic universe spanning film and television Says Miramax and Blumhouse collaborated with Trankis on the successful recent Halloween movie trilogy now This is what Haleweg said to Deadline. He said we're on a fast track. It's a pretty big priority for us We've had a lots of exciting conversations in recent months with a number of really talented people And I think we'll have a pretty good idea of what we're going to be doing very soon Adding we're hopeful or we're hoping to lock down the creative team very soon And then it goes on to say while the search for a writer is still ongoing the idea for the TV series has already been identified It's a big world The most recent trilogy culminating with Halloween ends provided a fitting conclusion to that story So I don't think that I don't think that this is an opportunity to go off of the back of that So the recent trilogy won't have anything to do with the TV shows when I'm taking away So the series though is going to be back on to the Halloween franchise origins Or going back to the Halloween franchise origins He said that the foundation of this series will be the original film the John Carpenter movie Just like the approach that we've been seeing with the last Blumhouse trilogy So the foundation of it will be the original film the characters of that film and perhaps a group of characters that we haven't really Focused on that much in recent film versions or even in a number of them It's a creative reset completely and going back to the original film as opposed to spinning out any of the more recent film adaptations um My takeaway here is that we could be seeing a TV show obviously going off of the first film that explores In-depth Lee characters like Lindsay Wallace Tommy Doyle Marion Chambers in a more profound Compelling way than what we just saw them treat it like in Halloween kills and Halloween ends Tommy Died not that Tommy didn't have some sort of significance prior to his death But the legacy characters and the way they were used in the recent Blumhouse trilogy I think is far inferior When you want to compare let's say how the legacy characters from Scream were being used under the recent spyglass relaunch Especially Lindsay Lindsay was in Halloween ends for really no reason other than to just show that she had some sort of bond with those two characters There was nothing significant going on with her then in Halloween kills She had one of the more memorable moments with that chase scene, but then nothing really happened with Lindsay There was nothing going on. We found out that they got together They drank every year to commemorate their trauma and then chaos ensued and Tommy joined the mob They had this rushed Reunion with their babysitter at least Tommy did and Yeah, that was it Marion died Tommy died It was just very uneventful and Anti-climatic for those characters to be back in the thick of things again, especially Lindsay because she showed up twice out of this trilogy She showed up in kills and then she just showed up in ends very briefly So I hope it's related to exploring those characters considering There's a lot of scrapped screenplays with those characters involved anyway They could be exploring Some other characters that I'm not thinking of like Lonnie and his group of buddies that we met Back in the original film when they were teasing and bullying of Tommy There's a lot of different characters that I'm not thinking of that But the most prominent characters I can think of that they could be referring to and that this series could be focusing on is Tommy and Lindsay I would love to see a series set around them how you go about it I don't know. I just thought that was a very interesting update to get from him today Considering that there hasn't been much of an update on what direction creatively it would be taking Since the announcement came last year that the TV series was happening and that Miramax won the TV rights But now we know that the foundation of it is going to be that original film as he pointed the foundation of it Is the original film the John Carpenter movie the characters of that film and perhaps a group of characters that we haven't really focused on that much in Recent film versions or even a number of them is a creative reset completely and going back to the original film as opposed to spinning out Any of the more recent film adaptations? so my other assumption is that this TV series will function as a Follow-up to what happened in the 78 film and then the seasons after it if it's successful is just going to be a TV series adaptation of a sequel to that original film. That's what I that's what it sounds like It sounds like it's taking some sort of Buffy the vampire slayer like approach where you have a Buffy movie and then you have an entire show that really serves as a sequel to the movie That sounds like the approach you're gonna take with the TV show and then the cinematic universe They're talking about could simply just be from at some point if the show is successful Some narrative will leap its way onto the big screen and that'll serve as our next Michael Myers movie I don't know I just thought that was an interesting update and I hope the characters that they're talking about are Tommy and Lindsay because I think they were very underutilized in the recent Blumhouse trilogy But what do you guys think about this? Do you see us focusing on a different character that I'm not considering like again Lonnie or Yeah, I don't think they're gonna bring back Jamie. I don't think Laurie Stroh will be involved I hope not anyway. I think her character has been written off completely well enough and We will just see what they have to cook up because it sounds like they're gonna create a whole new timeline Which is what the Halloween franchise has been known to keep been doing since its inception You could argue with how things got very messy after Halloween 6 So they did Halloween h2o then Halloween h2o led to Nothing happening after resurrections. So then we got those remakes with rob zombie Then you got the 2018 timeline and now it's like a choose your own adventure type of thing And they're just continuing that with the TV show. I would love to know who these characters are I'm sure we'll find out sooner rather than later But again, my biggest hope is that it's Lindsay and Tommy since there are a plethora of screenplays that I've talked about on my channel recently With characters like Lindsay and Tommy being present in them and to see these characters explored in the form of a TV show I wouldn't mind and I think they've also had brief appearances in Later sequels like apparently Lindsay is the one driving Rachel and Jamie in Halloween 4 apparently that's supposed to be Lindsay Wallace But we'll see what do you guys think about this? Let me know down in the comments section below What are your hopes for the Halloween TV show? Are you happy it's going off of the original film? Are you not happy about that? Let me know all of that down below if you haven't already, of course, make sure you subscribe Turn on post notifications so you never miss a video in the description. I will have links to all of my social media accounts I am on facebook twitter and instagram You can message me there of course to let me know if there are any movies news or reviews You'll like me to cover in the future and with all that in mind guys. I will see you in the next video


What's going on guys welcome back to the channel critical overload here So this will be the recap for Chucky season 3 episode 2 Episode 2 starts with Lexi Devin and Jake trying to figure out how to get inside of the White House Mrs. Fairchild tells them about Chucky at the White House and she tells them that they can't go after him because it's too dangerous The kids say Say they can't keep hurting or saying that Chucky can't keep hurting people and they want revenge Mrs. Fairchild says they aren't going alone and then and that she's coming too Grant wakes up to find that Henry and Joseph are in his bed He comforts Henry gives Joseph a hug and they all go to bed The Collins are shown having breakfast the next day and they recommend pancakes for Joseph Who again we know is Chucky? Henry tells them that Joseph doesn't like fucking pancakes President Collins tells Henry he should take Joseph to school today But he's convinced to let Joseph stay again to have another tour of the Oval Office We end up meeting a CIA character named Warren having a meeting with Charlotte vice president Spence and president Collins Warren says treat him like a ghost around here Warren seems to be here to help take out the garbage surrounding Teddy because his death isn't without suspicion Devin tells Lexi Grant is more than a fuckboy as she initially suspected and Lexi plans to reach out to Grant and goes live to initiate this She also discloses her address, which I thought was pretty stupid, but I guess it was a fake address Warren investigates Teddy's room and finds good guy sneaker prints in the closet, but he just brushes it off Grant is shown going live on his phone at school Lexi's video reaches Grant and he immediately starts smiling because he seems to like her already seems to have a bit of an attraction to her Lexi Devin and Jake arranged to meet Grant at a coffee shop President Collins collects documents from Sam and says he lost Joseph Sam decides to go to Collins office and start looking for Joseph for some unknown reasons She just started going in there, but he's on the floor when she walks in So I don't know how President Collins actually lost the damn doll She picks Joseph up he does a trick with a knife and kills her by slitting her throat Joseph who we can just call Chucky at this point says two down four to go Charlotte and President Collins are shown Talking about protecting the American people Teddy's family and then Warren text Charlotte to come alone without her husband Warren and Charlotte talk about Sam's dead body and assume a killer is in the White House Collins is the first independent president according to Warren V.P. Spencer goes to the Oval Office But Charlotte stops him from entering and rushes him away because they were forced trying to figure out what they're gonna Do with Sam's body they end up having Sam's remains disposed of Charlotte and Warren that being the next day President Collins is concerned about Sam Since it's not like her to be late. Of course. We know she's dead Lexi Devon and Mrs. Fairchild as well as Jake seem to have traveled to DC overnight They meet with Grant at a coffee shop and she Lexi that ends up being flirting with Grant Grant says he'll do what he can to help find her sister obviously He feels for her since he lost his brother Joseph Lexi says she liked to see him again and he invites her to the White House Charlotte is shown with President Collins and she reveals that Sam checked herself into rehab, but that's obviously a lie President Collins says he feels like he's he feels like he's or he feels like he doesn't even know The people he's working with Charlotte begins to dance with Collins, but he goes back to the office to work Devon and Jake are shown making out at their hotel Mrs. Fairchild and Lexi walking on them making out Charlotte tells Grant he can't see Lexi Devon and Jake And they can't come to the White House She eventually says she'll reach out to Miss Fairchild to arrange something Miss Fairchild is shown talking to Devon and Jake about safe sex and it's quite hilarious to be honest She even mentions she mentions topping and bottoming The kids think of how to sneak into the Halloween event to target Chucky Miss Fairchild meets with Charlotte at the White House to talk about the kids Charlotte is informed by Warren that Teddy didn't kill himself and that the killer is someone very clever Miss Fairchild is brutally strangled to death by Chucky with the American flag and he says he couldn't resist making those kids orphans again Chucky calls Charlotte and tells her he left a gift for her since she likes cleaning up after him They find Mrs. Fairchild dead Warren hands Charlotte an envelope revealing photos of an affair that Collins had So he's blackmailing them to not get the police involved Lexi Devon and Jake are worried about Mrs. Fairchild, but she calls them from her phone But of course, it's just Chucky. He tells the Mrs. Fairchild had to go spend quality time with their dead parents inhale He says this will be their bloodiest Halloween yet and the episode concludes That is the recap for Chucky season three episode two Let me know what you think about this down in the comment section below if you haven't already Of course, make sure you subscribe turn on post notifications so that you never miss a video in the description I'll have links on my social media accounts. I'm on facebook, twitter and instagram You can message me there of course, let me know if there's any movies news or reviews you'd like me to cover In the future and with all that in mind guys, I will see you in the next video


Pronounce the following words, cab, seed, and dog. Do they sound like mine? Or can they falsely be understood as cap, seat, or dock? Well, if this is the case, you need help, because a particular phonological rule of German influences your pronunciation of English. This rule is referred to as Auslaut Verhärtung. It simply says that several consonantal phonemes that are normally voiced word initially and share the feature non-sonorant become voiceless in final position. Here is an example. We have des bundes with the voiced alveolar plosive d in syllable initial position, but der Bundt with a syllable final alveolar plosive that is voiceless, which in turn means that there is no difference between Bundt, Union, and Bundt colourful. Consequently, Germans find it difficult to produce word-final voiced consonants in English and often say cap when they mean cab, seat when they mean seed, or dock instead of dog. What can you do if this is your problem? One solution adds a short, almost inaudible schwa to the end of these words and thus automatically voices the final consonant. So we get cab, seed, and dog. If this sounds too Italian, you know, in Italian you mostly have a vowel in final position, then here is an even simpler advice. Make the vowel in the voiced variant slightly longer. So even if we don't use a fully voiced final consonant, we get cab, seed, and dog. And thus a significant audible difference between cab and cap, seed and seat, and dog and dock. Notice that the same principles apply to pairs such as prove and proof or lose and loose. I hope my advice helps and you will no longer find it difficult to produce present-day English words with voiced consonants in final position.


All right, Sadie, personal question. Jonathan, how did you know you were in love? How did you know you were in love? How did you know you were in love? Well, if I'm candid about this question, in my marriage, I don't think I was in love. I think I was following programming. Don't get me wrong, I cared for my wife and in the beginning I believed it was love but really what was happening, I was following the programming I was raised with. I was raised with, after high school, go to college. After college, get a job. After getting a job, meet a girl. After meeting a girl, get married. After getting married, buy a house and then start a family. That was my programming, that was my blueprint. So I was more focused on getting a wife than actually being in love. And while we had some good aspects in our relationship, I don't think we were ever fully in love with us. My wife openly admitted that she wasn't really all that attracted to me after we went through a divorce. So going back to the never married question that came earlier, I'm gonna say that, I'm not to say that I married the wrong person because I'm grateful for the two children I had from our marriage and certainly we treat each other as family to one another now. I don't think I was really in love with her. I'm not saying I didn't care for her deeply. And then my most significant relationship after my marriage, I'm gonna tell you, I chose a partner from a place of neediness from an anxious attachment style and somebody that was reminiscent of my mother in some ways, not physically looking by the way because my ex-girlfriend's dropped it gorgeous. But I was really, I don't think I was in love there either. I don't know if I've ever experienced healthy love. I've experienced unhealthy attachment and I've experienced the Amago, which is choosing people like one of our parents, but I don't think I've ever really truly been in love. You know, one of my favorite lines in the TV show, Sex and the City is when Mr. Big is asked, have you ever been in love?  And yet maybe I haven't really been in love. And so I am holding out for something epic. I mean, I listened to me.  And I'm looking for a hell yes kind of relationship. I'm not looking for someone to be, just to have a companion in my life. I'm looking for something much deeper. And this is why I actually have actually learned, you know what, I have been in love. I just realized it. I am learning to love myself. I am learning to love myself. I am finally in love with Jonathan. So, Sadie, thank you so much because I did realize I have been in love. And it's finally unloving myself. Can anyone relate to that? If you can, give me a thumbs up. If you can, say an amen. All right, we're gonna take one or two more questions. Thank you so much again, Sadie.


We have to be faster. We have to be much more innovative. We have to be quicker or we can and we will lose. You don't usually hear a second half speak about the Navy losing, but he did just that to drive home the idea that the Navy needs to embrace innovation. Starting today and for several months the Department of the Navy is going to be highlighting this culture of innovation with something specific that goes out to the fleet every day. There'll be new guidance. There'll be profiles of the people and ideas that are already changing the way we operate. There'll be best practices on how to be better, more efficient. And we're going to be coming up with ways to reward innovation no matter where it occurs and when we do we'll announce them. Visit secnav.navy.mil slash innovation to learn more.


MGN. We don't play games with your YouTube gaming career. What is up everyone? Today on the show we're interviewing another one of our MGN partners where I want you to introduce yourself. Hey, Annette. My name is James, also known as TCS. I'm a gaming YouTuber and have been making videos for nearly four years now. Boy, does Dime Fly when you're having fun. TCS? What does that stand for? TCS stands for the computing solution. I got the name from a YouTube suggestion. I put the word computer in and YouTube spat out, so I thought, hey, the computing solution sounds kind of cool. As the name suggests, I originally wanted to make tutorials, but I found it far too dull. The computing solution where all your computer powders have been dissolved. Science jokes. So James, where are you from and where are you located now? Born and raised in the best city of them all, London, England. Holy smokes, you limey blokes are common folks to see here. Jokes. Well, how long have you been with MGN, James? Under a month, but I already feel extremely welcomed by you and the rest of the MGM staff. I've been here just under a bridge. It's not too bad. Just got to ignore the trolls. What do you do on your channel? My most popular videos are Minecraft parody videos, and they are world famous for being the most amazing parody song videos in the world. And I think everyone should probably check those out. Hashtag just saying. Parody songs? I look forward to hearing your greatest hits. What's in the future of your channel? My main plan for the future is basically to continue to grow and entertain people and doing what I enjoy, which is YouTube. A fine goal we can all share. So tell us, James, what's your favorite game? At the moment, it's Battlefield Hardline, which I actually reviewed on the MGM channel, but overall I have to say it's got to be GTA Vice City. I have a lot of memories of playing that as a kid, and I will always cherish those. Oh yeah, we all have fun childhood memories of running over the elderly with fire trucks and beating hookers with baseball bats. The good ol' days. Well thanks James for talking with us and make sure to check out the computing solution over here. That's it for this week. This is Nate signing out.


The question is that motion 7,727, in the name of John Swinney, on budget Scotland number 2 bill, be agreed, and members should cast their votes now. Before I close the vote, I call George Adam to cast a proxy vote on behalf of Jamie Hepburn. I call Annie Wells for a point of order. I call Annie Wells for a point of order. Thank you, Presiding Officer. I would have voted no my system crashed. Thank you, Ms Wells. I will ensure that it's recorded. The result of the vote on motion 77727 in the name of John Swinney is yes, 68, no, 56. There were no abstentions. The motion is therefore agreed. That concludes decision time. We'll now move on to members' business. I would ask members leaving the chamber to please do so quietly.


Hi, it's George Cow. Today, I want to talk with you about authentic marketing. There are many reasons why people don't like marketing and one of those reasons the way I like to articulate it is that marketing, a lot of marketing tends to hold people's desires ransom unless they pay for the product or service. Then your desires will be met. Then you're going to be okay. Then you will be happy again. And this is one of the things I don't like about traditional marketing is that it is actually taught to traditional marketers to increase demand. In other words, to stoke the fires of desire from your potential customer or client so that you end up being the only way they can fulfill those desires. Okay, and I don't think that's authentic. I don't think that's ethical or spiritual because we human beings have so many desires already. Desires turn into burdens. And so when traditional marketers hold our desires ransom, they increase our desire and then hold it ransom using the product or service. You must buy this in order to be fine in order to not feel the fear of missing out, F-O-M-O, fear of missing out, to not be in pain anymore, to not feel the fear of being in future pain. Okay, you must buy the service or product. And I am the only my product or service is the only solution, right? You've seen that. This is the only way, the only solution that you must get in order to be okay, essentially, is what they're saying. To be emotionally equanimous again, to have equanimity and to have inner peace again, is you must buy the service or product, right? I mean, they don't say it in that way, but they're basically suggesting that. And I'm not okay with that. I used to use such tactics when I was learning from the traditional marketers and the internet marketers, but I no longer I see the the fallacy of that way and I no longer do that. And I'm now speaking out against it so that we can all become more aware of that as conscious consumers, but also as authentic marketers and ethical marketers that we can stop using that. So what is a better alternative? Let me share that with you. A better alternative, I think, is for us business owners to serve generously in a way that's sustainable for us. So this is up to you as a business owner to learn how to be generous while being personally sustainable and just take some designing of your offerings so that you are sharing for free what is infinitely scalable without your effort.  So for example, when I make this video, I take a few minutes to make this video, but it doesn't matter how many people watch it. It could be a dozen people who watch it. It could be a million people who watch it. I put it on Facebook and YouTube. It doesn't cost me any more time the more people watch it, right? That just took me a few minutes to make it and upload it. So find ways to generously serve in a way that's sustainable to you. And here's the key then, is to let your audience buy out of gratitude, out of gratitude and thankfulness and buying something that is the right fit for them. And that's also your job as a business owner is to create product and services that are the right fit for the right people that your ideal audience. Okay, don't expect that just because you've given so generously that anything you offer they should pony up their dollars and buy. No, no, no, you need to understand your audience well enough and to understand what truly you can offer. That is not just something you can give for free, but that does take your time. Like for me, it's one to one coaching. I cannot give this to infinite numbers of people. I can only give it to a limited number. So therefore it makes sense to charge for it. And also I charge for a small group mastermind calls because I can't do that with infinite numbers. So find a way to generously serve that is personally sustainable and then get to know your audience so that you can design the services that are truly what they need and what they want. Okay, and do not use FOMO marketing, fear of missing out marketing. Okay, invite them, invite the right people to buy the right things and generously serve everyone. I hope this is encouraging for you. I'm always open to your comments, your ideas for how we can do marketing more authentically, ethically, in a way that truly makes our heart full. And also I'm always open to your questions. Until the next video, be well. And I'll just show you my little dog buddy again. And he's rolling with something he probably shouldn't. Okay, I'll see you later.


The social credit system historically is a continuation and a really sophisticated continuation of what was called the work file in the kind of older communist styles and your work file determined who you were, what you could do, even to the point of where you could marry, what house you lived in, where you'd work.  This has taken it to another level if you do bad things in terms of what the party deems to be bad, which obviously the worst case would be disloyalty to the party. You'll be locked out essentially of the system. You're locked out.  Xi Jinping has laid down a challenge to Western liberal democracies. He's saying that basically we've lost the way, that they are faltering and putting up the communist model as the way forward for half the world and this social credit system is very much at the heart of what this new model is about and it sort of reveals what people don't really comprehend and the story did in some detailed fashion is that the lengths they go to to control, to make consensus, to basically have censorship, to control people's thoughts, to control people's behaviour towards total and utter loyalty to the one party system. This is a great example of actually making an investment and having a team inside China. You just couldn't get this story no other way. So it's critical in that early warning system that you're alerting not only our government but the world in terms of what actually is going on inside China because China obviously controls all the information that comes out of that place. It is a very tight censorship system. Some of the stories that I covered last year include the Tai cave rescue, the elections in Cambodia, the plight of the Rohingya who have fled Myanmar, the Congo, we did several stories there, the aftermath of the Kasai war and also sex slaves in the Kasai region. Also the plight of Syrian refugees, myself and Michael Bachelard went to Jordan, Lebanon, Iraq and Turkey and talked to Syrian refugees about their experiences and how they're being cared for and then the fall of the caliphate. Myself and David Rowe went to Syria where we covered the aftermath of the fall of this caliphate. I think the importance of photojournalism is that we capture things that words can't. We can capture the emotion of a situation, we can bring to life a situation or an event that is so different from ours at home and we can bring empathy or evoke emotion sometimes that words just don't have a place for. They're very long days but they're full of fascinating and intriguing and sometimes heart wrenching and heartbreaking situations. You're meeting people a lot of the time on the worst day of their life and so it can be very emotional, it can be very hard sometimes but at the same time it's incredibly rewarding and I think it's very important. Foreign interference in a country's political affairs is clearly extremely serious. We've seen the ramifications of that in the United States and respect of Russia. In Australia, foreign interference, the debates really involve the Chinese government. You can't think of a more serious attack on our democratic process where a foreign power whose interests may be contrary to ours is covertly clandestinely behind the scenes seeking to infiltrate and possibly change the outcome of democracy or policy processes in Australia. We showed for the first time real evidence of the Chinese embassy interfering in a local council here in Sydney by trying to ban a Chinese media outlet which sometimes runs stories which are critical of the Chinese Communist Party. They tried to have them banned from being involved in a New Year festival and that was pressure exerted by the Chinese consulate in Sydney on our local council here so there's no doubt that we've managed to expose interference by the Chinese Communist Party in domestic life here. Our core role is to ensure that where there are attacks on our political processes or attempts to infiltrate or influence our political processes that we throw those attempts into the sunlight so the community, the public and ultimately our politicians can see what's going on and react accordingly. For some of the people who spoke on the program they face real risks for future intimidation of themselves or their families back in China. I think the bravest person in the program was the wife of detained Australian citizen Yang Hengjun who remains in detention in China. She spoke out publicly for the first time and did that interview with us from China at great risk to herself and her personal safety. Well the story came from a tip-off actually. Johnny Shapiro got a tip-off that ultimately we couldn't prove to be true. It didn't check out but what it did do was focus the minds of the team on this very sizable contract and the company that really was little known had a company registered to a beach shack in Kangaroo Island and a post office box in Singapore and they'd won this contract that was worth in the end more than half a billion dollars from the Australian government. Look I think it's really important to know about this story because here in Australia there is bipartisan support to have a border protection regime which involves offshore processing on Manus Island and in Nauru. To have that program, to have integrity you need to make sure that these contracts are administered correctly and that services are delivered. Now what we found out from our reporting is that the services were largely non-existent. There was terrible maintenance. The food was often not delivered. Bus services didn't run on time so the actual humanitarian needs of the refugees were often not taken care of despite this contract being worth more than five hundred and thirty million dollars. A very encouraging aspect of working on this story is that you can see how investigations and in-depth reporting can actually have an impact. Since we started reporting in January this contract and the company that has been awarded it is the subject of an investigation by the Auditor-General. The Home Affairs Department also ordered their own review which has since been released and from that we see significant concerns about the way the contract was awarded. You need investigative reporting to dig some of this stuff out and it's been quite encouraging to see that it's actually had an impact.


So the first thing that we're going to talk about now is, I guess, the easiest step of anything that interfaces with an external language. We use Weave quite a bit for prototyping. It's also used in production environments as well, but it's a really nice tool for just trying, you find some hotspot in your application that's really slow. I want to try a different algorithm in there. It also has some tools where you don't actually have to write any C or C++ to get some of the speed benefits. So we'll go over those. The notion here just to discuss, I mean, the general notion is that we're going to have some kind of C code or Fortran code that we want to execute. And what you have to do to interface that into Python is you really have to write a wrapper function around this. And that wrapper function is going to take a Python, a Python integer is actually a structure. It's not like your int and C. I mean, it has a structure that has information about the type of the variable and what its ad operations are and all kinds of things like that.  So, if we take one of these data structures, we have to unpack it and actually pull the integer value that we want out of that object and make it an int so that we can call our C code. Well, and then we call our C code, we get an integer value, maybe return from the function. We have to pack that value back up as a Python variable before we pass it back to Python. So, there's this unpacking and packing process that always happens around your function call if you're interfacing with Python. Well, we kind of handles this all, this packing unpacking process for you. That's why it's the easiest example to kind of go over. And there are really three different sets of tools. We'll mainly cover the first two and I think I'll probably dance over the last one. But Blitz is a tool that allows you to, Blitz is a C++ library that does fast vector algebra or vector math. And you remember the slicing operations we talked about all day yesterday and all of that, well, you can do that in C++ with Blitz. And so, numeric numpy expressions look very much like Blitz expressions. Just ones in Python, ones in C. So we will do the translation of your numpy expression to a Blitz expression. Do the wrapping and unwrapping of the variables for you. Compile that, or create the wrapper. Compile the wrapper and load it on the fly so that you don't see that process. There's also, or don't have to deal with that process. So that's one approach. There's also a thing that allows you to inline C code directly in your application. And then extension tools is something that allows you to build a standalone extension. So we'll go through some examples here. This will actually work from, if you try this example from IPython, it won't quite work right. It will work right from, because IPython does something with standard out. It's not the standard output that C uses when it writes out. And what this example does is, it's a quick example that we set a variable a equal one. We've got inline standard out, we're writing the standard out here, the variable a. And then we're writing an end of line character. This is basically a printf or a print statement for C++. Just prints out a. And then what we tell it is, this variable a needs to cross from Python into C. And what happens is, it's gonna print out, under the covers, this goes off, takes that little line, puts it in some boilerplate C++ code that does the wrapping and unwrapping of a from an integer into a C integer, calls your function. And then in this case, all it does is prints out one, right? That's not very interesting, but it is kind of nice to know that it's done everything for you in the background, you haven't had to do anything. Well, what comes, if you call it a second time, that function is already there, so it doesn't recompile it, right? So you don't have that compile step. Well, what happens if you say a is equal to a string? C, C++ is not a dynamic language like Python is. When you have variable a, you say it's an int, it has to be an int. So what happens here, it calls the function, but it finds out oops, that was a string, I expected an int. And so it's smart enough to go in and say, okay, I'm gonna recompile this. And it recompiles it, and now it keeps track of two versions of the same function, one for integers, one for strings. And you can call it with quality here. And if you call it again, obviously it doesn't recompile it. But if you go ahead and do change a back to a one and recall it, it's immediate because it keeps track of that. If you kill the application and restart, there'll be a slight pause when you run one of these things because it has to go find the external module and load it, but there is no recompile step. So I'll just do a quick example here, a slightly different one. But we'll make a equal to one. And there's some magic variables that occur and one of them is called return val. So return val, if I assign a variable to return val, then that's gonna be returned from the function. So if we do this, I'll run that. We go off, it does some compiling, and then the output was one. Now if we run this again, the output again is one. A is equal to QWERTY, it goes off and compiles. It's still there, A is equal to one, still there. So you haven't had to do a whole lot of work here to be able to actually interface with C, C++, and write an algorithm that's fairly small, or write short algorithms and try it out. So you can create a support code, right? We've created an extra string up here. We've called that support code and that's just a C++ function or a C function. And what we do is we say, okay, I wanna call this function called Bob and return the value from it. Stick it in return val and that's gonna return from the application. But Bob's not defined in here, right? So we just pass in the thing that defined Bob as some support code. That's just gonna be pasted before this function at the top. Then we're gonna pass in the variable A, and this runs beautifully. We get our one back. However, we come in and we pass in a string. What's gonna happen when you call Bob with the signature int val with a string, no luck, right?  And so this error message is it's not, we don't, there's some pretty raw stuff that comes out of Weave sometimes, especially when you're developing. You still have to be able to interpret and understand C++ error messages that are gonna occur. The other thing that you're gonna wanna learn is where these files, this file is actually a real file written out someplace, right? So when you're debugging things, you go look at that file and see what the heck's gone wrong. But here, you know, it's saying Bob can't convert parameter one from a pi string into an int, cuz I need to have that as an int. And so you don't get away completely from having to know C, C++ when you're trying to debug these things. The first thing we have to do is we have to allocate the arrays, right? We have to allocate this temporary array, so we call them alloc. And then the next thing we do is we go through a loop and we just add these values together and assign those out to temp. Very straightforward. But then we come along and we have to allocate a new array to do the second part, and we do a loop, call another loop and we go through it. Instead, you do a little something a little something a little more like this, and this fuses those loops. It combines those loops into one loop. And notice, you really don't have to keep up with any temporary variables. I mean, there aren't any, you just need the output value. We're just assigning in to C, we can do that there. And so this might be the more likely way that somebody would write this algorithm. And you haven't done any, you haven't had to do any memory allocation and you've used the loops. This is going to be much faster than this algorithm over here. You have a whole lot less memory thrashing from the cache. You have a lot more, you have a fused loop, so you're doing more operations, so you're allowing the compiler to do the best pipelining it can for operations. You're doing more operations on objects that are in the, when they're in the registers. It's just a faster, much faster approach. Well, so we go from this to something that looks like this. Well, this is what's called an FDTD update equation. And it just has kind of a position dependent constant. So it depends upon where you are in the grid. Every grid element's going to have a different constant. We have a constant here that we multiply by an E value. Then you're calculating a curl over here. So you have another constant and another constant. It's just, and you're doing derivatives. You remember the offsets we were doing yesterday to calculate a derivative? This is exactly the same sort of thing. We're doing a derivative in the y direction and then one in the z direction. So this is a fairly complex actually finite difference equation. Express fairly succinctly in Python. But there are a lot of operations. There are like seven math operations here that have to be done. So you can write this in Python. It works pretty well. But you can take this and you can just put quotes around it, make it a string, and then hand it into Blitz. And Blitz actually takes this expression. It creates the abstract syntax tree for it. It walks that tree and reconstructs a C++ expression that's exactly the same, or does the same operation. And then it compiles it under the covers and it runs it. And so all of a sudden you take in this thing where we create all these temporary variables and that goes away. Because when it makes it in the C, it fuses those loops together and makes a single loop. So does this make a difference? Well, you can see how old these are. I really need to update the timings on this slide. I mean, we're talking numeric 17. The last version of numeric was 24 before we went to NumPy. But this gives you an idea of what the performance is. So if we look at this, if we use numeric on this simple equation and then do it using the Blitz compiler, then we have a speed up of 1.13. It's almost negligible. But if you look at this expression, you kind of would expect that. For a large array, 512 by 512, most of the operations are really the math. And A equal B plus C. Well, numeric ought to be able to do that very fast because it's not really doing anything strange. It has to allocate the temp. It's going to add those while all those have to happen here. When you do A equal B plus C plus D, it's a little larger and you're actually seeing a speed up with the Blitz of a factor of two. Then when you get to that FDTD, it's actually about three. It's not so bad. Now, if you look at double precision in the past, double precision was performance and numeric was not very good. I think numpy does better than this. But we were seeing a factor of speed up of around nine. And all you had to do to get that factor of speed up of nine was take this expression that you wrote down here, convert it to a string. So it's exactly the same and call this. So it's a small amount of work to get quite a bit of benefits. The easiest way to get a speed up. The thing to be careful about with Blitz is it doesn't work with every, it doesn't handle broadcasting. So if you have a numeric expression that has broadcasting, Blitz isn't going to solve that problem for you. But it handle, and we found one other condition it didn't handle a few days ago, but most conditions it should handle most of your general equations as long as you don't have broadcasting in them. Here's your five point stencil, right? So if you take that, you get a factor of, so you could take, one of the things you could do today is just take that stencil that you created, put quotes around it, call we've got Blitz on it and compare the speed between the two. Also compare that the results are the same, what you hope will happen. All right, so here's a slightly different view, look at Blitz that kind of compares Blitz and inline. Here's Laplace's equation. And this is an update where we're doing, we're running Laplace's equation on this grid and we have a voltage set at the top, a ground on all the bottom edges. And so the voltage, if you iterate the Laplace's equation, it will iterate until you have the voltage across the whole grid at all of these internal points. So you have the pure Python version. You can use numeric on the same problem set. And this is one of the interesting problems. Notice at the bottom what we're doing is we're trying to calculate an error. We're watching the error go down on this problem. This is a place where vectorization actually doesn't do very well, and here's why. In this case, when we're calculating the error value, when we change a pixel we need to compare the old value to the new value, right? Well, that's really, you only have to do that. I mean, if you're doing that in a for loop in C or C++, you can just calculate what is the error of that single value. And then if you're just accumulating the error across the whole grid, you can just sum up as you're going through the loop and keep track of the error. And that's what we're doing right here. We're just calculating the difference between this temporary. We save out the old value, calculate the new one, calculate the difference, and add that to the error. Well, if you're doing this, you can do all of this with slicing, but look what you have to do. We have to, if we're gonna compare an error to the last values we had, we have to have the last values around. But I'm writing my new values over here directly into my old values, right? So I'm just writing them over. Well, that means I have to copy the old array out. So this is a place where vector calculations cause you to double your memory usage, basically for the problem, just to calculate the error. But you can write this in numeric. It's much faster than the old version. We see the error value here. We can put all of this into blitz. We get a factor of speed of about three. If we put that update equation in blitz, we still use the old approach to calculate our error. And then the third way is to actually write this as an inline. You can write this as C code, right? So this is a little more lork. You have to write your for loops and that sort of thing. Here we have the for loop for i and for j and we're looping across the arrays. We're using some, when we come in, these look a little nicer than usually. When you're usual, when you write in C, usually you have to do the pointer offset yourself and that sort of thing. Blitz actually allows you to do indexing. So we're converting these to blitz arrays when we come in. And so these are actually you as a blitz array here. And we can do the same operation, but notice that we can just calculate the error here without having to allocate our new array or allocate the old array. We're just comparing to the temporary old value. So we haven't doubled our memory and we're down to 4.3 seconds. You can actually write a faster version of this that blitz the arrays they have have a little bit of overhead compared to doing the pointer offset calculations yourself. So if you make this uglier, you can actually cut it down a little more. And that comes in at 2.9 seconds. So if you look at all these, you're looking at a runtime of around 2000 seconds for pure Python. Really, numeric is our benchmark here. But if you use blitz, you get a speed up of about 2.84. Inline, you're to 6. Weave, you're to 10. And using f to pi to just wrap something in 4-trend, you're on the order of 10. And if you write a pure C program, it's slightly faster than the weave.inline version, and I actually don't know why that would be. I can't see why it would be actually any faster. It'd be interesting to rerun this on something slightly more modern than a pinion 3, 450, as well as to see if we can see where that difference comes in. But this is a nice study to give you an idea of what you can expect to see. And this is not unusual. I mean, if you take an algorithm we saw earlier that vector quantization went, had a factor of speed up of 25 that we showed yesterday. Here we're seeing a speed up of around 10. So you can expect if you take numeric code from Python to C, you can still expect getting a speed up between 5 and 25, rewriting the algorithm. It's not always true, but it's true in a lot of places.


QuickBooks Online 2022 Download Bank Feed Transactions from the Bank Get ready because it's go time with QuickBooks Online 2022 Here we are in the Bank Feed practice file we set up with a 30-day free trial holding down control, scrolling up a bit to get to the 1-2-5% currently in the home page, otherwise no one is to get things done page to the business view as compared to the accounting view if you want to change to the accounting view it's something you can do by going to the cog up top, switch to the accounting view down below. We will be toggling back and forth between the two views either here or by jumping to the sample company file currently in the accounting view. Back to the bank feed practice file last time we looked at setting up the bank feeds couple ways we can get the data from the bank into the system if we go into the bookkeeping area over here we can go to the transactions up top and we can go into the banking item for example and enter the information either through a connection directly to the bank or you can see the two options here if we go to the upload transactions which you have the manual upload on the left hand side and on the right hand side you've got the direct connection either method once done will get you to the same point after the process has taken place with the transactions from the financial institution in what I would call Bank Feed Limbo in your QuickBooks system but not being used to create the financial statements if you were to do that in the accounting view you would be over here on the accounting side of things on the left hand side and then I'm sorry you would be in the banking side of things up top on the accounting view and the bank feeds have already been basically set up in this presentation in the sample company so we've already got the data in what I would call the Bank Feed Limbo component. Now we're going to take a look at the idea of going directly to the financial institution itself downloading the transactions or the feeds from the financial institution which we can then take and upload into the QuickBooks system. This could be a good tool for example if you're just starting out the bank feeds and you want to go further back then maybe possible by the direct connection to the bank feed so in other words if you wanted a whole year or multiple years of data coming from the bank you might want to double check check with your financial institution see how far back a direct connection with the bank feeds can go and if they don't go far enough back that you want then possibly you go into your financial institution itself look to be able to download that information in a format that is applicable that can be uploaded into QuickBooks and then you could pull in the data in that way again either method once the data is in the QuickBooks system will be in that bank feed limbo and will be at the same point at that time so this is just one financial institution wells far go you can go to any of the financial institutions you might be working with and they will generally have a similar kind of process somewhere that includes financial institutions for your banking for your checking accounts so for example and those for your credit card type of accounts so here it's under the accounts and then you can find something that will will say like download account activity and then you'll typically have a few options to download it in we're working with QuickBooks QuickBooks is owned by into it into it is a very big company and because they've been working so long and they're such a big company in this kind of direct transfer situation many other softwares actually use the default kind of QuickBooks file to download so many banks therefore because it's becoming more and more standardized to have have this QuickBooks icon or this QuickBooks download capability so that you can download your transactions in the format that is most likely most easy to then upload into QuickBooks and not have any kind of glitches or problems with it however if you are in a financial institution that doesn't have the QuickBooks component you often will have the financial institution will be able to download in kind of a stripped down type of Excel or electronic spreadsheet format which they might call spreadsheet here or they might call an a CSV file a dot CSV file that in essence is a Excel spreadsheet type of file a spreadsheet type of file electronic spreadsheet that is stripped of all the kind of things that something like Excel would have for formatting and whatnot so that it's just raw data which is a little bit easier to then upload directly into something like a database program like a QuickBooks software and not encounter any problems due to the formatting and then you might have they also have the IFF file quick end do not get in confused or mistake quick end with QuickBooks quick end is geared towards individual investors and possibly more towards like investment related activities on the individual side of things and it used to be owned by QuickBooks as well but I don't believe it's owned or not by QuickBooks it used to be owned by into it into it owning QuickBooks but I don't believe into it owns quick end quick end at this time anymore either so if you're using QuickBooks as we are don't get confused with quick end because it's a different kind of software you would download this data file once done I've now downloaded both of those data files this is the QBO file and QBO and when you hear that term QBO you might say okay that stands for QuickBooks online this of course is a QBO file so it's not the QuickBooks online like data itself it's the banking data which is QuickBooks online related file in a QuickBooks online format that can then be imported into the banking system and then if you if you download the CSV file and you have an Excel program then typically if you open it it'll open in Excel but it's not exactly an Excel worksheet you can see it looks a little bit different even though it opens up with Excel it's got that a and a comma in it because it's a CSV file and the thing you got to be careful with those is that if you were to open it up just to get an idea or the feel of the kind of data that's going to be imported into the accounting system if you did any changes to this file then it might not save the changes if they're formatting changes like I widen the cells here so I can see things and what not that then might not be something if I was to close it and open back up would be saved because that's me manipulating using Excel's formatting and the point of the CSV file is that it's going to be stripped of all that kind of stuff so in other words if I right click on this and I was to say I want to save this file let's do that again right click and save as and browse to where we want to put it notice it's a CSV file right here as opposed to if I was to make it an Excel workbook file which you could change it to an Excel file but the CSV file is a little different and you want to be aware of that we're going to go back on over this is the kind of data then that we're going to be uploading note what is included this is the same if you're using a QBO file or a or an Excel type CSV file in that you only have limited data that the bank has what does the bank have they've got the date they've got the amount and they've got whether or not it increases or decreases to your account and depending on the type of transaction you had electronic transactions being a little bit easier for the bank to get more detail they might have some kind of memo or description or whatever you want to call it on the right hand side now note that the memo or the description or whatever you want to call it could include things like Amazon here the SoCal gas company and so on which could be indicating the customer and the vendor but when I put this into QuickBooks QuickBooks cannot automatically determine that that's the customer or the vendor because it's included with all this other garbage that's included in there as well so typically if they are electronic transfers you will be able to extract the fact that you have the customer or vendor and create the customer or vendor from the detailed description or memo but it won't be done automatically you can then create rules to take that description or whatnot and try to memorize the transaction and that will make things more automatic in the future months as well notice also that even if we were able to assign out the customer and the vendor which are usually the things that help us to determine which income or expense account we're going to go to in other words the SoCal gas company might go to the utilities expense but the system of QuickBooks cannot determine that in and of itself even if they knew it was the gas company maybe it could get sophisticated enough to determine that that should go into utilities expense but not we're not there yet and there could be many different vendors where they're not going to recognize that it knows the expense account so the two things we have to add at minimum customer vendor and the account whether it be expense or type of income account that we're going to be applying to so and that's where people usually get mixed up they import all this stuff into the bank feed limbo and think it's just going to make their financial statements automatically but you got to go through there and determine where these things should be assigned to taking them out of bank feed limbo adding the customer the vendor and the account also note it's possible to add this stuff without the customer and the vendor and just the account but you lose a substantial level of data by doing that you don't have as much sub reports or information so it's nice you want to if you can add the customer and the vendor typically now if you had checks that went through for example then you wouldn't have the electronic transfers over here and that would be that would be a little less information on that side but you would have then the check number which could help you to look at the canceled check and you can get more detail there but it's going to give less detail just in the transfer and if you actually physically deposit money into the bank so you get cash for example and then go to the bank and deposit it where you have some intermediary that is taking the money and then deposit it like a credit card company or some kind of intermediate software that's collecting the money and depositing it in a lump sum then all you're going to know is that lump sum deposit that got put into the system as well so those are some some more kind of limitations so that means that once we get this into the system we're going to get we're going to put it into the system next time and then we're going to have we're going to still have to do some work to allow QuickBooks the information to take this information and build what we want to be built the end result the financial statements the balance sheet and the income statement and the subsidiary reports


This is HP Discover. We are in Las Vegas for day two of three days of live coverage here at HP Discover 2013. Place where all their top customers, partners, tech gurus are all here. And it's great and great environment. I'm John Furrier, the founder of SiliconANGLE, and I'm joined by co-hosts. Hi everybody, I'm Dave Vellante, wikibon.org. Roger Levy is here. He's the general manager of HP's cloud services. Roger, welcome to theCUBE. Well, thank you. Great to be back again. Yeah, so we're talking off camera, a lot of action. Obviously, you guys hit the heart of it with OpenStack, we're really excited about that. I mean, we had theCUBE at OpenStack. I was watching all the videos, I was salivating, I wish I could have been out there with you guys. So Dave, we had him on theCUBE, but he also was a cloud service provider. He's been in the cloud business for years, so he knows a little bit about cloud. So we had a good chat. So what's your takeaway with the OpenStack here? So I was just on Twitter yesterday, Roger, commenting that it is being talked about a lot here at HP Discover, more than I would have expected, I would have expected, given that it's such a big show for HP across their enterprise customers. But cloud is super hot here at OpenStack. They're both super hot. I mean, the real issue, I mean, for us is cloud is one of our major strategic pillars for the corporation. We have, I think, a tremendous opportunity at this show to talk with our partners, talk with our customers, and really let them see what we're doing in the cloud. And that's really across all aspects of cloud, public, private, and managed in our full hybrid solution. And OpenStack's a huge piece of it. As we talked about up in OpenStack in Portland, I mean, we, as HP, looked at this promising but unproven technology two plus years ago before a lot of people were signing on board, made a major commitment to it, a major investment to it, not only in the financial sense, but certainly also in the strategic sense and in the area of committing people, committing code, and really working to make OpenStack a very successful community. So talk about, I want you to comment, if you can, and candidly around HP's personnel. You know, David and I love to use sports analogies. The team on the field, the cloud team. You've got Tom Joyce now as a GM. You're out here. The team is pretty well stacked. It's just to put some color around it. What's it like internally? You've got some people who know what they're talking about. How's it shaping out with the team here at HP? We've got, I mean, we've got a dream team. I mean, we have a set of folks who have been in this business in one way or another for quite a bit of time. We've all had experience in both large companies and startup companies. I've been in startups, you know, came out of the telecom space, spent time in the enterprise space, spent time in the past space. SARS got an amazing background in networking, now, you know, coupled with the work that he did in Cisco, in 3Com, then into HP. I mean, we have built power.  It's great debate. And at the end of the day, we are making tremendous progress. So I'm just thrilled to be part of this team. So tell about what's going on in your world right now. So the teams, I agree with you, by the way, I'm really impressed. And holistically, I think what's happening is that you have a holistic management structure where you have someone looking over the mining the stores, I, who's always the same, someone's mining the store, both at the top with SARS, and then underneath, we just had Bethany Mayeron. She's mining the store from the networking fabric side. So you've got the fabric covered. Absolutely. You've got the top line air show covered, the ground game covered. So you get everything in the now in the middle. That's cool. And by the way, great, great thanks to Bethany. I mean, one of the things we just announced today at the show is the virtual private networking capability on the public cloud based on SDN. That was done completely in conjunction with Bethany's team in HP networking and with HP Labs. You know, just a great teamwork effort. SDN is complex. It's really hard stuff. Don't forget the data stuff too, Dave. We just talked about tiering and data management. It's huge. Absolutely. Well, you know, we love sports analogies, Roger and theCUBE. All right. So it's like the horses are coming around the track on the far turn. And all of a sudden, you know, in the horse racing process, they say the red seat parted. And all of a sudden it's like, here comes OpenStack. And it was like, it's an amazing time in our industry because you know, let's talk frankly, when VMware messed up its pricing two years ago, customer base said, whoa, uh-oh, lock in. And all these alarms went off. And then of course you got Amazon doing its thing. It's like a wake up call to CIOs. Hey, coming into the enterprise. You guys are very comfortable not having to own the operating system and the platform you've proven that you can make money there for years. So OpenStack was sort of a natural tendency for you. And so it's like, like I said, that red seat parted and all of a sudden here comes OpenStack as a really viable contender with all the development, developer momentum behind it, some proof points, some real action. And you guys are sitting in a good spot right now. I think absolutely. One of the key observations I'd make on OpenStack is early on it was a vendor driven activity. You know, the vendors really got together. They were, you know, some of the primary people in moving it forward. The thing that really I think is interesting and certainly very pleasing is we're seeing more and more of the enterprise customer and the large enterprise and small enterprise actually now getting much more actively engaged and driving OpenStack. And to me, that's a major point of inflection in an open source project like this. Yeah, it's serious cloud service providers and the developers are voting with their hands in their collects. People are tired of closed proprietary solutions. They see what happens. There's limited choice. They are pressed on the economics of things. They don't get the portability that they require. They don't get the mobility they require. And they do see OpenStack and other projects like it as the way to go. And I think because of that, OpenStack is now the fastest growing open source project in history. Well, we were just debating about the cloud stack and OpenStack and to me, ecosystems always win. At the end of the day, ecosystems are what make it. Markets, obviously, I have a market. I think the cloud market is pretty wide open at this point. But the ecosystem is pretty strong. But I want to get your comments here. Here at HP Discover, you said, great place to meet customers and parties all in one place. What's your days like here, Tim? Walk us through what you're doing here. I mean, not- My days have been long. Let's put it that way. Are you announcing new stuff? What kind of customer conversations are you having? Just share some of the inside baseball of your world. No, it's a fantastic question. So we've really been doing many things all together here today. We had a series of announcements this morning. We had the press briefing and press announcement across all of Converge Cloud. And for the public cloud, we announced a series of additional enterprise grade enhancements, things like what I call, we've supersized our compute instances. 120 gig, 16 CPUs. You bring us the nastiest, most data-intense, analytics workload, we got an instance for you. We introduced VPN on the cloud. We introduced our bulk import service. Customers have been coming to us saying, we want to bring terabytes and petabytes to the public cloud. But the bandwidth we have from our premise to you, kind of limited, going to take us a while. So now they have the option of actually shipping us physical media. We take secure control of it, and we get it very quickly onto a high-speed link into our object store. How about that? Chevy Truck is faster than the network. You got it. For this, it absolutely is. So good part of the day has been with press, with analysts around our recent announcements, and then big piece around customers. We had a good customer lunch. And what I really loved is we asked the question of about 30 people sitting in the room. How many people have or are working on a cloud strategy for the business? I think every hand but one went up. And I think the one hand was sort of an HP person who was there. And then so much of it has also just been meeting with all of our great partners. We have a large number of our key partners here. Folks like Panzura, folks like Clicker, and others. And just getting the opportunity to understand what they're seeing, what they're hearing, how we can work better together, both technically as well as on go-to-market. What's been the most exciting feedback you've gotten from either press analysts or customers to the news you were launching? I think the most exciting thing, and it just resonates with my own belief system, so it's exciting, is we are the enterprise cloud. People are getting the message. They understand what we mean. They understand what we mean technically, and now they're beginning to understand what we mean by business practice, that we're going to be open, we're going to be transparent, we're going to be flexible, and we are going to make a public cloud experience similar to what they can do within their own data centers and give them that flexibility, not take it away. What is the preferred expectation of the clients for enterprise cloud? Because obviously Amazon's kind of lumpy, they have SLA issues, and it could be fast one day, slow the other, but it's different, smaller markets, developers, and they're going, they're trying to go the enterprise cloud. You guys are in the enterprise cloud. You're in touch with that. What is the preferred expectation and service level agreements for the customers? So the service level agreements are important. I mean, we have some of the highest level with 99.95, but what we're actually finding is that's not the key things. The key things is ease of use. It's clearly what we're doing around security, and a lot of it comes back to business practice. Are we really willing to treat them like enterprise customers? I'll give you one example. One of these other big providers, typically when you buy reserve instances, you're locked in, you're locked into the availability zone, you're locked into the region, you're locked into the instance size for one or many years. Well, if you were in your own enterprise data center and you wanted to change something, you go change it. If we want to bring the enterprise experience to the public cloud, well, we have to allow our customers that flexibility. So we allow, if you do a advanced purchase reserve instance model with us, and you say, look, you know, I bought size X and I need double X or five X, our new instance size. No problem. No problem. We will work that, because that's what you can do with your Roman data center. And so translating the experience means that. So it transcends just the technology, it transcends things. So the customer benefits with clouds, obviously the economics around OPEX versus CatVex, and economics around new applications. Is there anything else that I missed there? Well, that's, I mean, from a financial point of it, that's a piece of it.  But, you know, what's really been interesting in the last three, four months, we've seen a shift in the conversation. When we launched public cloud about a year ago, customer conversations were around purely economics. That's changed. Economics, still an issue, but it's number two or three or four on the list. Number one is, how can you make me more agile? How can I use the public cloud to improve my time to market for new services, to allow my internal users to be able to get workloads faster, to be able to replicate workloads faster, to be able to have better, you know, high availability, disaster recovery, business continuity. And always, the cost and the economics, always going to be a factor. But it's no longer the starting point of the conversation. Yeah, and you know, I totally agree with that, Roger. I mean, in fact, the customers I talked to, I mean, they sort of beginning to understand that rental is often a lot more expensive than owning. You know, from an outlay standpoint, but from a business cost and an agility perspective and how fast you can actually do something, it's driving revenue, so it's not even a discussion. It's all about business outcome. If you can help achieve a better business outcome, faster with more flexibility and still provide the appropriate economics, it's a win. And that's really what we're doing within the public cloud. So when I was at the analyst meeting, I think it was in March in Boston. Oh, snowy Boston. Yeah, you were there, you were up on stage, and I, you know, I'm an analyst, I'm asking, I have an obnoxious question. And when I asked, I said, you know, see, I always talk to you there, and you're looking at Amazon as another arrow in the quiver, and where does Amazon fit? And then I loved your response, and I said, well, that's true, Amazon is an arrow in the quiver, in the CIO, we're trying to be like, I think you said like the nuclear weapon in the arsenal. And so what did you mean by that? And how do you make that reality? It really comes back to this nature of enterprise grade. I mean, our large customers, our enterprise customers really need something that mirrors what their expectations are inside of what they can do in their own data centers. And, you know, there are going to be people who are able to provide large, high-scale mass market solutions, and that's great, the industry and the market needs that. But what CIOs need is they need that better weapon. And in my mind, that better weapon is the combined power of our hybrid solution. It's having private cloud, it's having public cloud, it's having managed cloud. And today we announced probably the most significant thing, which is the overall introduction of cloud OS and the fact that cloud OS will be running in all three of those solutions. To us, that's the missile, that's the weapon that the CIO will be able to benefit from across our hybrid solution. I think the cloud OS message is really fantastic, and I think you guys got to amp that up because the data points that we're hearing is the data center is an operating system, and the cloud is essentially the data center. It has to run like an operating system. So if it's going to be software-led infrastructure, it has to function with all of feature functions within the operating system. So I think that message resonates. You guys find the same thing with customers? Absolutely, I mean, I think the two key things that have been really resonating, one is the cloud OS discussion, and the other has been the moonshot discussion. And when we look at how we really improve the economics of public cloud, moonshot is right up front. So these are the things that are going to continue to provide us that next weapons grade level solution. Yeah, so you can pick off the workloads that are really appropriate for moonshot, drive your costs down and pass that on to your customers, and that's a unique advantage that you have that a lot of people are poo-pooing about you. We talked to all your competitors, but yeah, moonshot, we don't really get it, but you guys get it. We get it, I mean. Savvis gets it. It was great when Meg during your keynote said, look, the thing draws the same power about six household light bulbs. It really just explains the advantages. And yes, we can partition off certain level workloads that will be very appropriately served within moonshot, save the footprint, save the power, save the cooling, and pass that improvement on to our customers as we scale out the public cloud. So tell us what's on your roadmap. Obviously, we're talking with Margaret and your marketing team. Your objectives, tactically, you said, Hong Kong, you got an event. What's the battle plan? Take this to market. So really what we're doing is, this is a great piece of getting our message out. A large piece of it is really just continuing to get the story out on what an enterprise cloud really is and how we fulfill that. And then working through our partner ecosystem, as you mentioned before, ecosystems are critical in open source communities. Ecosystems are obviously critical to us. We have a fantastic partner community, a fantastic partner and channel resale, and it's really working with them to reach out very, very broadly. Okay, Roger Levy here, inside theCUBE, CUBE alumni, and again, we'll go down in history. He was on theCUBE at OpenStack when we were there for the inflection point, as I'm calling it, this past OpenStack summit was really, to me, the change over the crossing the threshold where OpenStack's community really stood tall and crossed over to what I see as a clear path to a rallying cry in the cloud, open cloud market, open source, people working together, build the code, why build your own scoreboard when people are bringing their own scoreboard to the game as the owner of the giant said, and Open Source is a great way you guys have been very successful, and you got a good team, and you know what, sometimes the stars line up, we follow in you guys, so we follow in the HP's cloud. This is theCUBE, we'll be right back after this short break with our next guest. Stay tuned.