According to statistics, only a small percentage of you who watch our videos are actually subscribed. If you're not subscribed yet and you enjoy what you see, do consider hitting the subscribe button. This encourages YouTube's algorithm in promoting more of our mental health content to more people out there. Hey, Psych2Goers, have you ever noticed a friend who always cancels plans last minute? Some people may feel that this is rude. However, this might be a sign of social anxiety disorder, not rudeness. Everyone experiences some level of social anxiousness at one time or another, but those with social anxiety disorder experience above average levels of worry, fear, and panic in social situations. Before we begin, this video is for educational purposes only and is not a substitute for professional guidance, advice, treatment, or diagnosis. If you relate to this video, we advise you to consult a mental health professional for help. To raise awareness about social anxiety, let's look at 10 signs it's social anxiety, not rudeness. Often, people with social anxiety disorder describe looking someone in the eyes as anxiety-provoking and uncomfortable. This is likely due to genetic wiring. People diagnosed with social anxiety disorder have a pronounced fear of direct eye contact. If you have social anxiety, the part of your brain that warns you of danger can be triggered by eye contact. Number two, not eating food because they're afraid it may get stuck in their teeth. Do you have a fear of eating in front of others? Some questions that may run through your head include, what if I spill my food or drink? What if I choke or draw attention to myself? The fear of eating in front of others can interfere with your social life and even school or work. Socializing usually includes some form of food or drink. Business meetings sometimes take place over lunch or dinner. School cafeterias can be crowded. Fear of eating and drinking in front of others can be triggered by a wide variety of situations, foods and dining companions. Number three, cancelling plans last minute. Do you or someone you know frequently cancel plans last minute? You may become sucked into a cycle of anxious, overwhelming thoughts and back out at the last minute. For example, what if my friends think I'm boring or awkward? According to a licensed psychotherapist in Hoboken, New Jersey, Whitney Glashow, LCSW, found that these overwhelming anxious thoughts can be challenged using cognitive behavioral therapy. It helps to reframe your worrying thoughts so that you feel more at ease about interacting with other people. Number four, shutting down in a group setting. Do you remain silent in group settings because you're afraid you'll be judged about what you say? When you suffer from social anxiety, you tend to avoid social situations and shut down in a group setting.  People without social anxiety usually brush off in awkward social moments and move on. However, when you make a mistake in a social setting, you spend days or even months replaying the mistake in your head. Number five, having an outburst over something others consider small. Do you sometimes find yourself having an angry outburst towards something only mildly irritating? Those with social anxiety may have difficulty falling asleep or staying asleep and become sleep deprived. Over time, lack of sleep can trigger individuals to become more sensitive to small problems and quick to anger. Yelling at the dog for barking, becoming angry and traffic, getting upset because of a long line at the grocery store or lashing out over an honest mistake are all small triggers that turn into monumental challenges for an individual who is struggling with social anxiety. Being mindful of anger outbursts by keeping a journal and taking time to reflect on why this anger occurred can often help individuals realize their anxiety triggers. Number six, being glued to the phone or social media.  Phones or social media are a distraction that those with social anxiety frequently use to take their mind off of overwhelming thoughts. You may feel like everyone is judging you, so taking out your phone distracts you and helps you escape. Number seven, struggling to open up and have a deeper conversation. Underlying social anxiety disorder is the fear of being scrutinized, judged or embarrassed by others. You may be afraid that people will think badly of you or that you won't measure up in comparison to others. Therefore, you'll struggle to open up and have a deeper conversation. Even though you probably realize that your fears of being judged are somewhat irrational and overblown, you still can't help but feel anxious. Number eight, leaving a party early. Do you always worry that you'll embarrass yourself or people around you might be embarrassed by you? People with social anxiety might be intimidated by the idea of parties because they overthink about how others are scrutinizing and judging them harshly. And because of this, they're easily drained by interactions with other people. Number nine, appearing tense in group settings. Do you often feel awkward or tense in a group? People with social anxiety disorder realize that their level of fear is excessive, which can cause individuals to fear being judged or rejected for appearing anxious, blushing, sweating, or coming across as incompetent or boring. This may lead to avoidance of social situations or injuring them with a sense of distress. Number 10, creating a false time constraint.  Someone with social anxiety may create a false time constraint to avoid social interactions and to ensure that they don't feel trapped in them. Does this sound like you? Do you find yourself doing any of these signs? Social interaction can be stressful and draining, but they'll always be a part of life. You can use various coping methods and slowly come out of your comfort zone, but you don't have to do it alone. If you or your loved ones exhibit any of these signs, please consult a mental health professional for help. Did you find this video valuable? Tell us in the comments below. Please like and share it with friends that might find use in this video too. Make sure to subscribe to Psych2Go and hit the notification bell for more content. All the references used are added in the description box below. Thank you for watching and we'll see you next time.


Hey everyone and welcome to Norris Cove. I'm Yoshida. Today, you guys, we're going to be doing five tips of how to start a budget if you're self-employed. Now, here is my disclaimer. I am not a financial advisor. These are just some tips that I've used in the past to get a budget going for myself and start it. So if that is something that you would be interested in, please do me a favor. Stay tuned and also hit that subscribe button. Let's get into it. Tip number one. Tip number one is to start tracking your spending. Start writing every day what you're spending your money on. If you get a coffee, write it down. If you buy a pen, write it down.  Here's another tip inside of this one tip is to highlight. Use color coding on your spending. That way that you'll have a bird's eye view of what the majority of your money is going, where you're spending it at the most. That is a game changer. I mean really. Highlighting was something that I did start to do in my budgeting of what I was spending and it became a game changer for me. Tip number two. Track your income. As self-employed people sometimes we may get paid on a daily basis, weekly basis. We may receive tips and so on and so forth. But you want to start writing down what you are making. If you're getting paid on a day-to-day basis, you would want to start tracking your income on an everyday basis. If you're getting paid on a weekly basis, you want to start tracking your income on a weekly basis, monthly basis, etc. I highly suggest start to track your income on a weekly basis. Just do this for a couple of weeks or a couple of months and that way you'll have an ideal of what you are bringing in income-wise. So with step number one and tip number one and tip number two, you have been tracking your spending. You have been tracking your income for a couple of weeks, a couple of months, however. And now you should have an average of what you're spending your money on. Also what your income, what's the average of your income. Now also kind of going back to tip number one, once you start to see what you're spending your money on and you're starting to track that, you'll start to make note of what you're spending the most money on. You'll also kind of rear back on spending that money on that because now you really have that bird's eye view and you can see where your money is going. Now, step number three, you're going to start to write out your monthly bills. This way you can use a notebook. It doesn't have to be fancy. You can use a calendar, but you want to start writing down your monthly bills, their due dates, when they're due. If you're a digital planner, you can actually use your Google Calendar, iCal or whatever and put it in there. I do put my bills into my Google Calendar just for alerts. So just in case if I forgot to write it down, my calendar gives me an alert. I do highly suggest putting alerts into your digital calendar. That way you'll get an alert. Put it a week ahead of time. Put it a day or two ahead of time so that you still have these constant reminders of your bills to do. Tip number four, start budgeting. What you're going to do, don't worry about it being on a monthly basis or that it's not the first of the month. You're going to start to budget weekly. I suggest start a budget at the beginning of the week. If your week typically starts on a Monday, I would start my budget on Monday right out from Monday to the next Monday of what you have to pay. Write down what do you owe for that week. Also write down what your projected income is for the week. Again, you're going to write out your projected bills, your projected income. This way you can see when, where and what your money is going to and where your income is coming from and where your income is going. Seeing what you owe for the week will trigger your mind to not overspend, concentrate on paying those bills and your mind will just automatically say, hey, I have these bills to pay this week. I can't overspend. My money needs to be allocated to X, Y and Z bills. Another many tip in this tip number four is to cross your bills out as you pay them. This gives the bank, the brain an accomplishment feeling. You start to feel accomplished that you have paid these bills.  We all want to feel like we've accomplished something. And this is a great way to do that. Now also here in tip number three, after you've paid your bills, if there is money left, and you're going to pay those bills as you cross them out. If you have money left, what you're going to do is you're going to put that into a savings account. We're going to get more into about the savings account and tip number four and five. But you want to put that into a savings account or put it somewhere that you're not going to touch it. I've mentioned this before, give it to a friend, a family member or someone, you know, who's not going to touch it, but we'll get more into the savings account later. But that is definitely going to go to debt.  So let's get into tip number four. Cash envelopes and sinking funds. Here where it gets exciting because now that you've been budgeting for a on a weekly basis and a monthly basis, now you're noticing where your money is coming from, where it's coming in from and where it's going out to. Now with that extra that we talked about in tip number three, that extra now can be allocated to some things that you have long term goals for. So something that you want to save for a long term, you might want to put that in a sinking fund. Now for things that you pay on an every week basis such as your gas, you're going to look back to when you're budgeting on a weekly basis and you notice that you were spending, let's say $160 for gas in the month. Now what you're going to do is put that into cash envelopes and set it aside. Again, so things that are long term that you want to save for, let's say a house that would go into a sinking fund. You can set that up in a bank account or you can do envelopes, cash envelopes for that as well. Now things that you pay for more so on a weekly basis or bi-weekly basis such as groceries, you're going to put that into cash envelopes and you don't have to do cash envelopes. Again, you can do this digitally through your bank, but you want to put those things aside. Now, again, you have a bird's eye view of what you've been spending on groceries. So now you have an idea of what it will cost you on a monthly basis to get groceries. So let's say, for example, you were spending $160 on gas for the month. Now you would take that $160 divided by four and now that shows that you've been paying $40 a week. So now you'll be putting $40 a week into your cash envelopes for your gas. And another example, let's say that you've been spending $225 roughly on groceries just for the month. This is hypothetically and now you want to take that $225 and you want to divide that by four. And once you divide that by four, you'll see that you have been spending $56.25 roughly a week on groceries. So now you would take that $56.25 and you will set that aside out of your budget and you would do it on a weekly basis. Again, you can do it monthly and you could do it either digitally or in a cash envelope setting. Tip number five, calculate your debt. This is the last step that I've used in getting started with the budget. You want to calculate your debt. You want to see how much debt you're in. You want to go through, you can use credit karma, it's free. Or if you get your bills still delivered through mail, you can go through your mail.  You want to go through that and you want to start to write all of these bills down, add it up. It's good to look at it because a lot of times we don't want to look at what we owe. But in order to conquer that debt, we have to look at it. We have to look at how much debt we're in. Then we'll start to solve the problem of how to get out of that debt. Now with your debt, you can also do that same formula that we use for groceries, for cash envelopes and sinking funds. You can add up how much debt you've been paying a month. Let's say you have credit card debt and you're noticing that you're paying roughly $300 in credit cards. This is just a random number. You want to divide that by four again. And then you can do that weekly or when it's due, you can just make sure that you have the money in your account to pay that debt that you owe. And then once extra, again, you will be throwing that at your debt. Or you can make envelopes just for debt and you can throw that at your debt. Now we're going to get a little bit into this. This is still step number five. We're going to get a little bit into debt snowball and avalanche debt and how to pay that. This is just an extra tip and because this is our last step in getting comfortable with starting a budget. Once you look at your debt, you got this big number and you can see what you're using for debt or what you owe in debt. You're going to look at what you owe in debt. You're going to take that number and you're going to take all of the list of things that you've accumulated in debt. Debt snowball. It's a very popular way to pay off your debt. But what you're going to do with the debt snowball is you're going to pay the smallest credit card or smallest debt off first until you get to the biggest one. And you're going to throw everything at that smallest one. Then you're going to go into the next one that's the smallest until they're paid off. Now another way to pay your debt off is the avalanche method. What you're going to do is take the debt with the highest interest rate and you're going to start with that one first and give it everything extra. You're going to throw at that until you get down to your smallest one with the smallest amount of interest rate. So that is just some key points. I wanted to give you guys inside of that number five tip because eventually you're going to have to look at that debt. You're going to have to look at that number. It will be scary at first. But once you start to develop a budget, you'll see that it is feasible that you'll be able to pay that debt off. Once you start to pay your things on time, you'll start to realize that you do have money. You'll have money that you didn't know that you had. So I have some more tips I like to share. I will put that in another video for another time, but I just wanted to give you guys the basics. Again, I am not a financial advisor.  So if you enjoyed today's video and you would love to see more content like this for myself, do me a favor. Hit that subscribe button. Don't forget hit that notification bell and I will see you in my next video. Bye.


Dragon Ball Absalon episode Two, that's right.  I know that your high school high school or teen boys That said It figures like a thousand y'all was making a it'll be chucks. That's like See when you in high school you make the The easiest joke that you can make Beads, oh Two things I can hear y'all saying you show your tits to get them Or those your anal beads, dude Whatever fuckers, let's get it on Dragon Ball Absalon too. Didn't you hear didn't you hear me the first time nigga? I said come on. I'm ill street fire So what do you want from I think it would be pretty cool to have a Dragon Ball Z They're made in my life. I wanted to look like You know, I like your special guest on the Simpsons Yeah, I mean say I saw every special guest on there and the Simpsons version of them actually what's like them. I like a Dragon Ball Z one So territorial if you watch you you make me a character in series I'll lend my voice to and all that Transforms Ridiculous Yes, sir, breeds up beneath me. I'm going to scout the planet for other sayings Paper scissors rock paper scissors rock paper scissors rock paper scissors You should get that it was a good thing Dead accordance become stronger Shame and defeat are both parts of battle The experience is running in soldier Unseemly being a soldier makes you any match for me at least seen of what I can do So watch your movements old man In your presumption Someone else will Monkeys do freeze always call them monkeys But they are a mix between ape and monkey For some reason because they look kind of like apes but they got the tail That's that's what though y'all they built like apes I'm not gonna have this discussion no more Um, I'm just talking out loud. So anyway, post your comments down down below. Let me know what you think Art in the credits is pretty hot man So I guess it says we haven't seen Goku as soon people arrived at the very end Like he always does single series To save the day There's a lot of different things I got to react to with this channel If you enjoyed my reaction hit the like button subscribe and share If you didn't a million subscribers


Okay, hi, so my name is Daniel Vratil. I'm a Okay, okay, so I have to wait for another six seconds. So hello, my name is Daniel Vratil I'm a long-time KD developer and cute user and Today I want to talk to you about cute or even more about QML the cute modeling language The talk is not really about teaching QML. Although it's a developer conference. So I do have a few slides with code The main purpose of this talk is to actually show you what QML can do for you How you can use it and how what what really cool features it has So hopefully after this talk, you you will well, maybe at this consider QML for your next project or maybe even for your current project and We will know what cute or and QML can offer you so I One QML first appeared I was very skeptical about language because I thought like well Why would anyone want to use this weird new scripting language instead of using the glorious C++ API for widgets, right? and So I stick to you to you know classic API C++ eventually though I got the project which was using QML and And so I opened the QML file and immediately saw the code I saw where the problem is and I could fix it in like five minutes before without even seeing the code ever before and at a point I realized I was so so wrong about QML QML is really simple and it's so powerful that anyone basically can use it and Yeah, since then I'm using QML a lot So let's begin with actually look a bit into Qt I suppose most of you or all of you here at least heard about Qt in the past Qt is a cross-platform open-source application framework I will just briefly go through like a history and something about licensee of Qt So this is a very brief history of Qt. It started in 1995 developed by a couple guys in Norway In the important milestone was KDE, which is not actually which is using Qt, right? It was already in 1998. I will talk about it on the next slide a bit The couple more releases in 2008 Qt was Trotec the company behind Qt was acquired by Nokia So Nokia actually back then had a plan to use Qt and QML or only Qt back then it was Qt on their Symbian systems and on the smartphones and In 2010 with Qt 4.7. They introduced QML. So QML was actually developed by Nokia They wanted to have something that is way easier than C++ to create user interfaces mostly for mobiles But it also works very well on desktop In 2012 Nokia realized that's not the way they want to go. They sold Qt to a company called DJI nowadays Qt is owned by DJI subsidiary called the Qt company surprisingly and Yeah, in 2012 the same year Qt 5.0 was released and nobody's we have Qt 5.5 with 5.6 being released I think in March this year One thing that people usually know about Qt is that there was a sort of a license controversy about it because the first Releases of Qt were not really free as in Free speech or they will not really GPL compatible, right? The first two releases were available on the free Qt and Qt PL. So the custom licenses not really compatible with GPL Which was even one of the reasons why GNOME was started right as a project to actually have a desktop environment based on really open Toolkit, which was GTK There is actually there is a foundation called KDE free Qt foundation Which actually assures that whatever happens to Qt or the company that owns Qt whether they are Acquired or they go bankrupt or whatever happens that Qt will always be available under a proper free license So nobody's Qt is available under a GPL v2 GPL v3 and LGPL in the next release Sorry, that's supposed to be Qt 5.7 release at 5.6. There will be also a GPL v3 Available so yeah, it will be Qt is now properly open source project with open governance and everything Now Qt I said is a cross-platform toolkit and cross-platform doesn't really mean Linux Windows and Mac Qt can run re-array anywhere Obviously the Linux Windows and Mac are supported But you can also get Qt on Android Qt on iOS Qt for Windows Windows phone QNX that's BlackBerry and a couple more embedded systems So you can really get Qt on any platform you reasonably may want to target, right? On Linux, obviously X11 and Wayland are supported just out of the box Qt also supports Some frame buffer backends so you can even use it on embedded What is a great Think about Qt and one of the most powerful parts is that it is a platform native look Which means that if you run a Qt application of Windows It actually looks like a Windows application if you run if you run the same code the same application just compile for Mac It will look like a native Mac application on Linux we have KDE has their own style like plug-in that slightly changes the default style of Qt currently there is a project called QQ GNOME platform, I think Which basically creates Which basically is a plug-in that makes attempts to make Qt applications look native in GNOME So you start a Qt application in GNOME and it will look like a GTK application So you can really and if you if you if you're targeting Another platform and or you want to have a specific look you can just write your this plug-in yourself so Then you can create your custom Look and fill packages very easily and it also can it can also affect your QML code. We will we will show that later So this is an example of the Qt designer on Windows Q designer is you know the tool where you can just click click click and create UI This is how it looks on Mac So you can see that it this looks like basically a native application and that's without any piece of you know Changes to the code of the project So nowadays Qt is really everywhere. It's not just your computers, but you know phones televisions Coffee machines fridges Qt everywhere You don't see it because it's using usually you cannot even tell let it Qt because the looks is customized and everything But really Qt is everywhere So if you if you have a project where you want to target more than just Linux then Qt is a really great choice for that So now to finally finally speak about QML a bit So QML is a declarative language Ditch the declarative means that Unlike with C++ where you would just say you know in sort of commands this to this to this to this In in the QML you actually describe the entire thing In a declarative way, right? So you just described the hierarchy of the objects how they are nested What are the properties and how you describe it? That's exactly what you get on the screen later on Right. So it's really easy and because it's a scripting language You can you can actually Well, you don't need to recompile everything right once when you change something you just restart the QML viewer and you see the change So it's really great for quickly prototyping the UI because you don't have to you know Just just try to change this one big make it one pixel wider recompile everything run it again You know in QML you just change it reload the file and you are done one important note When I'm sometimes this is being confused for historical reasons when the separation wasn't like that But QML really is just language right when I say QML. I really mean just the language nothing else The language on its own kind of do anything right just the syntax To do in order to be able to instantiate some some some objects in the QML you need some components right and There is a set of components or a module called Qt quick which contains the basic simple components like rectangles Some scrollables and and this stuff, but you need to import it first right without that you have a cool language But nothing to create in that language There are more modules of components obviously so you have Qt quick is the default one ship with Qt Qt also offers Qt quick controls, which are the actual widgets like buttons checkboxes radio buttons and this stuff and then there's Qt quick layouts which provides layout for the for the for the controls there are some Graphical effect modules which provides a fancy fancy graphic graphical effects Or you can just create your own right you can just write your own module usually in C++ you can also create a Module just by putting a bunch of QML files together and saying this is a module and you install it into the Qt Directory and then from your QML code you can just say import You know my module and QML will import your module and make the components that you created there available in the QML file Speaking of the plugins Another great thing about QML is that it's extensible. It's extensible through C++ Which is not that great if you if you want to avoid C++ but still So as I said you can so there was a comment that it's also there are also Bindings available like for Python so we can actually write create plugins in Python as well and maybe other languages I think I remember there was a little bit bindings, right? but go yeah So Anyway, yeah, so let's focus primarily on the C++ plugin, but obviously it will apply on the other languages as well so you can imagine you have You have your your huge application like let's say a video editor So obviously you don't want to implement your logic in QML or JavaScript, right? That you just don't want to do that. So what you do is you you write a bunch of C++ classes that implement the actual logic write the business logic of your application and Then you export them as a plug-in so you can have a Model which gives you access to the files. You can have some sort of a timeline Which shows you the the the videos you are editing and stuff like that implementing in C++ and You create this as a C++ plugin that you install with your application to the system and then from your QML You really just import this module and you immediately have these objects available So you in QML you just create a list view and then you attach the model that you actually created in C++ to the list view in QML This means that QML being a different language Being a different language than then you know C++ it enforces you to keep your UI and logic separated It's the separation is very strict right because these are two different languages So you look at it and you clearly see the border when you are writing your UI or when you are implementing an application using the normal key to widgets in C++ You can try or you will obviously try to keep your UI and logic separated But since it's the same language eventually, you know, your logic starts bleeding into UI and vice versa With QML, it's really easy to do separation right because they are different languages So the approach is to actually So so the question is how do you how do you then get your logic connected to the UI? Right, so one of the one of the possibilities is the plugins that I mentioned the other possibility is that you actually have a C++ application that instead of a normal window creates a QML window and loads a QML file and then it basically Create instantiates, you know all of your application logic objects controllers, whatever and then injects them into the QML context Basically as global variables so you can reference them from the QML and access them like lucky they were pointers in C++ I will not Probably show or talk too much about the UI C++ integration late in this talk, but Yeah, it's definitely possible and it's used a lot But it's also possible to create a pure QML applications Right QML is using JavaScript for basically extend to also provide some some non declarative some imperative Programming or way to because not everything can be expressed it with with the declarative approach, right? sometimes you need that bit of imperative programming when you say well do this this this this and it somehow affects the the UI but Mostly mostly you you are okay with just a decorative approach So QML is so awesome. I actually use it to write slides and To create this abomination took me like 15 minutes Right, so and there's like I don't know six things happening at the same time and This is all really like I don't know maybe 100 lines of code in the slides, right? So yeah QML is easy and now Okay Now since this is a developer conference. I need to show you some code But the I will just I really just want to explain how the basics work, right? We won't go into the deep details although after this couple slides You actually will be able to write a simple QML application because it's really easy so The in this piece of code we actually create a blue rectangle The syntax is very intuitive if you ever saw any programming at all you get the idea what's going on So on the first line we just import the Qt quick So we need to impose tell QML which module of components it should import so that I make it available Right because as I said QML is just language. There are no components. No rectangles nothing So we import Qt quick which contains among other things the rectangle and then on the next line We just say rectangle and curly braces and that's it this way we tell QML Please create an instance of rectangle and then we use the JSON like syntax to just set a couple properties So we set x y with height and color and what we get is a blue rectangle. Yeah Now You can you can also create your own Extend the object by adding your own properties, right? But that's I will not go into it here But it's possible to have your own properties added to it and then all the things that I will show later apply to these properties as well Now a question like what if we want to put another rectangle inside of this rectangle, right? Alright, for instance, what if we want to put a red rectangle into the blue rectangle? Well, it's easy. We just put another rectangle into the rectangle in the code as well Right, so we just nest another rectangle into the blue one and magic happens. It's also shows inside On the on the screen There are a few things that you might notice the blue rectangle is the same as on the previous slide in the red rectangle in the nested one You might notice a couple weird thing First is that we nothing is really we don't use any absolute positioning, right? The geometry of the red rectangle is relative to the parent So in in the x and y properties I use parent dot with the parent is sort of magical variable. They just refers to parent So in this case it refers to the blue rectangle And I do some math to make it just to make it to put it in the center for the width and height I just refer to the blue rectangle explicitly, right using the id property This allows me to do using the explicit reference the explicit name allows me to reference any other object in the hierarchy Right in this case. I only have one other object Well, if there was you know much more complicated tree, I could refer any other object in the tree using the id Now what you might also notice is that? I'm referring the width of the red rectangle before I actually assigned to it, right? So on the line, what's it? Well for the x, right? I say with like the width of the red rectangle, but I only initialize the width a couple lines later So how is this not an error? Well, the properties are defined in the object in the object in the module that we imported So the rectangle has defined a bunch of properties including the width height and others So by default they just have some default value like zero. So in this case I'm just saying well take parent width minus zero divided by two So then the red rectangle should probably be off-center right because the math doesn't work yet The width is not yet initialized Well the great thing about QML and this is one of the most powerful parts of QML is something that these are not just simple expressions These are also called bindings The expressions are can be any JavaScript expression that you want, right? It doesn't have to be this simple math. It can be something way more complicated It can be a function call, you know, you can have if then Any way of any complex expression, you know, and it's just about the return value of the expression, right? That's what gets assigned to the property so In this case a binding means that when I'm referring to some property in the expression QML remembers that and whenever that property changes the QML will automatically Evaluate all these expressions that somehow refer to it again and update the value update the result, right? so yeah when this file is this Rectangle is being created for the first step The the the x is assigned what is off-center, right? Because with it's to the zero but when we assigned with a couple lines later It actually gets the QML knows that there is another property referring to with and it will again calculate The value of the property and then the rectangle moves to the center Right, and this is not happening only during the start of the application This is happening all the time and we can make pretty nice use of that so Here we have again a blue rectangle a text and an animation the property animation thing at the end is a non-visual element, so Kid quick doesn't have only rectangles and texts But other non-visual elements that you really cannot see but they have some functionality in this case property animation Really, we just said what we want to animate so we animate the blue rectangle and the property width of the blue rectangle We say what we want to animate it from you know 200 to 600 So the width will just grow and then for duration is five seconds, and then we just enable it, right? So that's what's happening right the animation is changing the width of the blue rectangle, so it's growing and it's looping Again and again again. What's interesting is that nowhere in the code is nothing like Well normally in C or C++ or any other language What you would do is you would have to have a callback connected to I don't know On width change or on geometry change signal, right? You would have to have a callback connected to it And you would need to get the new width of the of the rectangle and then set it to the text, right? So it's so that the text gets being updated In QML, there's nothing like that, right? There is no callback nothing involved all the magic is In the text property of the text element, right be a sign that we say the text is equal to you know math that floor of blue rectific so math the floor is JavaScript right this from JavaScript writers JavaScript has this math library So which is also available in QML so you can use things like this, right? So it's completely valid ECMAS script And yeah QML is smart enough to know that even though the blue rectangle width is just an argument of the floor function It still knows that it needs to evaluate the property every time the width changes and update Update the value of the text property and this way the text automatically updates itself Right and this makes so many things so easy, right? Because you don't have to have any more like Random connecting to signal somewhere and then having a callback somewhere else which changes, you know properties of this object somewhere else Right, you have the object and then you see that this property of this object depends on exactly these things Which makes it really easy to navigate, right? It makes it really easy to Fix and find bugs and change behaviors, right? Because you don't have to go and find all the places where this button is being disabled right in the code from some random callbacks You just look at the button you find this enabled property and then you see the expression Which says disable it if this condition is true or this condition is true or this condition is true So we just change it to fix it and you know that nothing else would be affected the button, right? So it makes it makes it really easy to fix the box Actually, I have this more useful example We are finally getting to actually getting to actually showing some widgets here So here I have a combo box a checkbox and two buttons right and The properties of the the checkbox and the buttons somehow depend on the state of the combo box So so the checkbox will be checked if the first item in a combo box is selected The first button will be enabled only if the second item in the combo box is selected And the third button will be only visible if the third item of the combo box is selected So this is something like you do often in your UI, right? You you you have parts of your UI enabled or hidden depending on some state of some checkbox or some some combo box value right, so if I Go and switch it to item 2 as we will expect The button is now enabled the checkbox is unchecked, right? And there are no callbacks or you know signals or anything, right? You just I just you know set the condition send the property of the button depends on some condition and Whenever that condition changes and QML will reevaluate if the condition is true now and then update The properties accordingly. So this makes it really simple to to create create UI Right another great example how QML makes it easier for you to create UI Here we want to create a bunch of radio buttons or well it could be any buttons or any other widgets, right? But in the code we actually only had to mention it only once right We just say the radio button once and we use a component called repeater and Then we pass some data to the repeater and then the repeater instantiates the the the radio button for each Of the of the day or each of the each item in the model The model can be anything in this case. It's a simple JavaScript array Which with with objects It can be it can be just It can be just simple array of strings out the ray of numbers It can be basically any JavaScript array. It can also be a queue string. So a cute container class It or it can be it can even be a queue abstract item model derived class So that's like the cute base class for models, right? So it's very very versatile So you don't really you don't need to if you have a simple thing like this You don't have to implement like a complicated queue abstract item model subclass in C++ and import it You are perfectly you're perfectly okay with just some JavaScript array Right, but if we would get to something more complicated, then you may be going to go to to have a C++ model or You can do With a model actually this is for instance what the network management applet in KDE does it has models implemented in C++ which talk to network manager and they provide information about You know the available Wi-Fi networks and the strength of the signal and stuff like that and then we just import these as a as a plug-ins or as a modules into the QML and Attach them to to a view and then so we get the data Fet to QML from C++ doing the complicated, you know talking over D bus with network manager But the actual visualization happens in QML where we have the list view and bunch of delegates to actually visualize the items differently and so on so yeah That was more models, but here we have us just a simple model well And the QML what it does is that for each of the each of the item in the model just instantiates a new radio button, right in this case So here we have it So I can even switch those Yeah, there's a special property called model data Which is something called attach property. I will not go into that in detail But it just makes it it just makes the data of the current item available to to each of the each instance of the radio button So that we get a title and the default checked state Basically propagated from the model to the to the radio button to the delegate Okay, that's it. That's the last slide I decided to show you how easy QML is I decided to take a risk and actually write some Program here during the presentation Actually, I will not write the program I won't I will show you how to create a simple QML calculator without actually writing any code. So I will sit down I Will try to close this Right, so let's create a new project. We create a cute quick controls project We call it the calculator Let's use new version of cute Yes, please. Okay. Well, this is code code is ugly. Let's let's use something else We don't need font we will do it. Ah, okay, we will not do it Let's try again. That's better Okay, so we have a window. Sorry, it's so small but Oh, the screen is small. So let's create a calculator. So for calculator, we will need a bunch of buttons, right? so Come on work. So let's have one button This will be slow So QML was created actually with Non-developers in mind So the idea is that you can actually have your designer or people from the design team Actually have to come up with mock-up instead of just right creating mock-ups in I don't know whatever tools are used for mock-ups I know Photoshop, MS Paint, whatever You can they can actually create a simple UI in Actual in QML, right? You don't really have to be developer You don't have to be programmer to get the idea how to create QML. You just saw how simple it is so You can you can have basically your design team or designers actually create a working Mock-up or working example or UI prototype in QML just like this Right and then so you can have these people create the UI and then just hand it over to developers who just bridge it with the C++ backend they wrote and Everyone is happy right the designers cannot complain that you made it two pixel wider than they wanted and You don't have to bother with well stupid UI. So let's make this bigger and Let's So let's make this fill the rectangle What's at some Margins? Yep, that's good We want to get rid of the text Um now we label the buttons I Cannot really zoom this in I'm sorry But hopefully you get the idea of what I'm doing nine So be zero plus minus equals clear Now we put it into some sort of layout so it doesn't break when we change the window size. So let's hit grid layout and magic happened Okay, cool So now we have a UI I Can just I can just run this Yes, please Okay, I need to compile it first Okay, so that's it. We have UI right took me Three minutes maybe last right so we have UI that works. I can actually click the buttons and everything Now how do we make it to actually do something? Go away So I can still I could switch to the code and start implementing the behavior in the code But why would I do it? I can I can I can do it from here, right? So there's a this says button one. So that's the button. I want to Create do something for and there's a signal handler So the button the button will when I click it the button will emit a click signal and in QML for each signal You automatically get a handler called on something so on clicked on text changed on whatever So we connect to that and the action we want to happen Oh, okay I will do one more thing and that is I will rename the label that shows the current results to result and What I want to do when I click the button is that in case of the first button I want to result the text just append one Right, so this is a simple super simple JavaScript expression just append You know to the to we just append to the text property of the text label here, right? So we do this for each button this might take a while So on clicked we went to for three we append three three For plus we actually append plus So this is I mean this is a bit of programming right? I don't really think this is real programming Anyone can do this kind of you know just writing the simple expressions. They are actually quite intuitive So even if you are a non-developer you can still do this simple stuff So yeah, it's it makes it possible to actually You know with QML you can just sit down with your fellow developers and you can quickly prototype Some ideas for UI and you can even get you know the idea how it looks like and what it will do Right walk-ups and wireframes are fine But the problem is that they are not moving right? You don't see what was going to really happen when you click a button or when you you know just change something while With QML really doing stuff is so easy and so you are done really fast This will be zero this will be so for the clear button I will just instead of Appendling I will just set the result text to empty string and now for the for the equals button. I will just I Will just do well I will this is JavaScript right so I can use eval to evaluate the expression In a text build right and assign it back to the text field. So let's see build and run Hope I didn't do any typo. So let's see How much is 42 minus 6? Right, so I created working calculator without actually writing any real code And I'm thank you So yeah, so this is how easy it is to prototype or create something with with QML, right? So I will not try to improve it because that's when things would go wrong So I think I will end this talk. So if you have any questions The entire desktop Like this whole thing is QML There is a lot of obviously a lot of C++ backends involved in there But the entire shell is in QML not the applications, but the shell as the desktop shell Indeed I can I can show you for instance the desktop settings dialogue, which is like a settings dialogue for The desktop is also this is also completely QML complete QML UI Right and you can see that the animations when it switches you get it for free with QML because you just said well animate Property, you know X or Y and then just instead of disappearing Instantly the animation just makes it makes it slide away slowly and it's like five flights of QML again. Maybe less for for the plasma thing quite a lot there is a The problem is that there are things that you cannot really do in QML right handling multiple screen support You know getting access to files So you need to have the file system access implemented in QML and then there's a lots of logic involved, right? How wide the panel should be anything so yeah, but many basically the So but this is like the the application logic, right the the actual UI this is QML Yeah, yeah, that's yeah, that's that's true for instance The problem with the components is that the controls are really properly available on their own desktop You can have them on phone as well for instance on Android. They work really nice but For instance BlackBerry, they they don't really have cute quick controls. So the buttons I show you just now They have their own module that have they have their own components there So if you are developing from Yola or BlackBerry you instead of importing cute quick controls You import, you know com dot Yola dot something and then you get The Yola components which might have slightly different API slightly different property names than the BlackBerry ones And which might be slightly different than the cute quick controls So yeah, eventually if you want to target all the mobile platforms with at once You will have to have on different UI for each platform But then again, it's easy right because your actual logic the C++ code you share on our platforms because that's in a C++ But and you just have different UI for different different platforms Which is actually good because then you get native look on each platform. Maybe adapt it to the size of the device Yeah, well, they are not new they've been around since for a couple years for quite a few years But they've been revered and like many times But they support custom styles so you can actually have your custom style library that so you can make your own Basically, this is what you can see here, right that we have not the default cute looks But we had the components here actually have a KDE breeze team, so they look differently Right, so what choices what what else you can use except for C++ for backends? Well, I'm sorry mentioned that you have at least Python Ruby and go bindings I'm sure I think I heard about a long bindings Haskell bindings, so if you like obscure things why not I'm not I don't know what the state of these bindings is but At least at least Python is definitely doable. You can you can write. There's pie cute Right, you can write the entire cute applications with Python and which and so this applies to Writing a back-end for QML code as well Well, the bindings First bindings are not officially developed by Qt. They are developed by other company. I Think you don't get like 100% API compatibility like there are things that you cannot copy easily in Python like templates So there it is made slightly different, but the general stuff is like one to the API is one to one Yeah, that's I Think I need to restart. Yeah, come on. I need a way to jump to the last slide quickly That's it Right well, you wouldn't see it in the code right when I when I change the button You wouldn't see change the value in the code because the code is separated. I Think that you can this doesn't happen, but we can take a look after the dog. I'm out of time So let's check it out. Thank you


Regional law enforcement is encouraging communities to establish neighborhood watch programs and parents to be more involved in their children's lives to reduce the potential for deviant behavior. This call to action came out of a regional community policing panel discussion hosted by the Royal St. Lucia Police Force from the GIS Studios, featuring virtual presentations from the Bailey's Police Department and Acting Inspector Roland Kobler of the Royal Barbados Police Force. Since in alarming rates of violence in schools across the Caribbean, Acting Inspector Kobler explained the risk factors associated with deviant behavior among school-aged children. He suggests methods that parents can utilize in dealing with their children to avoid such outcomes. These include modeling the appropriate behavior each and every time. As I said before, now say again, children mimic what they see. Of course, observe children carefully for troubling behaviors. Once you pay attention to your children, then you will see their deviation from that expected behavior, and then you'll be able to identify troubling behaviors and try to give early interventions into situations as they arise. Of course, take an active role in your children's education, encourage them to go to school and learn, encourage them to desist from getting involved in violence or any activity that will disrupt them from getting a strong education. To know your children's friends and family is very important that we know as parents who our children are spending time with, it places the goal and the company that they are keeping. And of course, you need to monitor and supervise our children is the point that we monitor them and have an understanding of their internet use. Of course, you need to check their bedroom because there may be times where they struggle with issues of bullying, but because we're not monitoring and supervising, they may take a little weapon from home and then hence violence at school will occur. And of course, you also have to look for scenes of other paraphernalia such as the use of illegal drugs and being constantly monitoring and supervising our children will play a critical role in reducing some of the liquid and violence behavior experienced in our schools. At the community level, Inspector Zenubio Cook from the Belize Police Department illustrated the significance of a neighborhood watch group to deter crime and violence, enhance the quality of life and improve relations among neighbors. Firstly, we want to recruit and organize as many neighbors as possible. We want to walk into the neighbors, into the neighborhood and organize. Let us schedule a meeting very, very important. I also discuss community concern and develop an action plan. And again, whenever we have our meeting, those who are not privy to attend the meeting, they can actually get the information by way of being a part of the WhatsApp group and other means of communication. But definitely it is very important to share this information. That was Inspector Zenubio Cook of the Belize Police Department. The regional community policing panel discussion is airing throughout this month for an NTN and can also be viewed on the Government of St. Lucia Facebook page and YouTube channel.