Today I'm going to talk to you about platforms, platform engineering and how reality is a bit more complex sometimes than we expect it to be. A bit, if you don't know me yet, I used to be a data scientist in university for like seven years, Germany, China, different countries and then nine years ago I switched into the cloud native space, working with Docker, working with a lot of technologies as a dev world person, developer advocate. I got my CKA at some point, got a bit more technical and then switched to product. I'm now the VP of product at Giant Swarm and I'm also a CNCF ambassador and today we are going to talk about something that I've been working on quite a lot within Giant Swarm but also upstream and that's platforms and platform engineering. Basically everyone's talking about platforms these days and there's going to be, there was like so many KubeCon talks already, I hope I don't need to define platforms by now and I think the most interesting part for me is that we now have an upstream workgroup called workgroup platforms or platforms workgroup within the tag app delivery. There's been a white paper published I think early this year which is really nice, this graphic is from that so if you haven't read that platform white paper, really recommend it. Soon to be published there is a platform maturity model and we just kicked off work on a platform as product paper which also has a research part so if you're an end user and you want to participate then hit me up later so we might set up some qualitative interviews there. The white paper, I think the most important part of that white paper for me was that it stated that a bit trivially you might say developer platforms should be enabling developers right but sometimes we forget that and restating the goals of a platform team is important to think about where our focus should be as platform products and platform people and the three goals that the white paper tells us are the top goals of a platform team is first researching platform user requirements and planning a feature roadmap which is basically very basic product work right but when it gets into where it gets interesting as the second goal is about marketing and evangelizing the platform because if you build it they won't come sometimes especially in a big company if you build a platform people might not even know about it like there's maybe different platforms competing at the same time so you need to actually actively go out and get people to use your product and this is where the third part comes in is you need interfaces documentation APIs how people will use your product you need to meet your end users where they are if you're an organization that lives in confluence maybe documentation and confluence is nice if you're an organization where your developers live on the CLI you need CLIs if they want to automate things and you want to enable them to integrate what you have as a platform into their platforms you might need more of an API direct API approach so oftentimes you need a mix of all of those and especially if you have a lot of different interfaces something like a developer portal also what might make sense because discoverability of platform services and capabilities is oftentimes a problem especially the bigger you get and I couldn't agree more with all of these goals but in reality when you look into platform engineering and platform teams you oftentimes see we don't have the time to focus on these things you're always like on the run and the reality looks a bit like this is an actual picture of me working on platforms and it sounds like really nice your your mission is to like enable developers right and your mission sounds pretty straightforward just put some Kubernetes there and then build a platform there's backstage just put it in front of it it's all going to be nice right but then like actually managing the lifecycle of all the clusters that you have maybe on different clouds maybe on premise managing API deprecations over time maybe every four or five months if you go to the next version then going through basically this whole CNCF landscape choosing the tools is not easy it's it's a it's a task it's 24 seven right it's like every kubecon we have like new versions new tools new projects being announced and it's really nice it's it's exciting but it also creates a lot of frustration and stress for a lot of platform teams because we also have might sometimes competing products and you don't know what to choose and if you choose the wrong one what happens and it's only to set up your platform then you have maintenance bug fixes you need to ensure security have your regulations in there you build your company glue in between all of these things and then sometimes because it's open source you might be forced to actually contribute yourself and this is sometimes really cool this can be really rewarding this can be a great career for yourself but sometimes it also distracts from the main job that you had to enable the developer and to refocus on that we need to shift our mindset a little bit and the mindset this is not just for the product owner it's not just like hire some product people put them in their platform teams and you're going to be done these people and you as an organization need to understand that the mindset of the platform engineering teams needs to shift towards a product mindset towards a mindset that has the point of view of the developer in mind and two tools that I would like to give everyone from kind of the the product space but that work for every engineer we've used them internally quite a lot are one job to be done and user journey mapping and jobs to be done basically means look at what is the job that your end user wants to do right they might come actually to you and say I want Grafana right or I want Instana I want something I want this tool I've seen it on a kubecon I want it right but that's not their job that's not what they want to solve right they don't even need really observability that's not a job to have that might be a job description for some people but it's not a job that like solves a problem for a company it's usually that they have issues either in testing or production and they want to debug it and for that they need data and maybe some dashboards and and and you need to again meet them where they where they prefer it some organizations really like to keep all the observability on cli level and only switch to two dashboards in in some historical cases so you need to understand this this concept of thinking about what is the job that the developer wants to achieve and how can I help them achieve it irregardable of the tool irregardable of the technology and the the the most famous example most probably for jobs to be done and that makes it really understandable is it's usually if you go somewhere and you want to like buy a drill it's usually not that you need a drill you need sometimes a hole in the wall and most probably that's not even your job you want to hang a picture and there's different ways to hang a picture maybe you use some 3m tape or some other means of like projecting the picture on the wall that's the goal that you have it's not to get a hole in the wall or use a drill that's not your goal and similarly this is how we need to think about our features and this makes us focus more away from the tooling and more on on what we want to actually achieve and another tool that we've recently been working and this is actually from Miro from my Miro like a few months ago we've tried to use user journey mapping where you actually kind of try to linearly map a journey of a user through your systems or through their job actually we actually completely refocused saying let's not think about the platform let's think about what is the job of the developer they start a project right at some point they start writing code and then that code needs to go into production right and then that needs to be running in production and within that you can go level deeper and say okay when they start a project they they have a bootstrapping phase where they might have subtasks like oh I need a git repository I need my IDE setup maybe I want code spaces then I want to discover is there APIs I can use is there managed databases in the company then at some point I start writing code so I have interloop development I then go into CI and to CD and at some point I'm in production and I want to ensure reliability and once you have this high level journey then you can go in and think about in which phases can I add to this process can my platform enable the developer or can can I help the company accomplish something like a security policy and it's not about also focusing just on a single space there it's about saying thinking about like where does this like in the process hang so like just think about policy management right we think about policy management and then like at cubecon and we're like okay there's two tools it's caverno or gatekeeper or some other tools so I put them in the cluster then I have policy management that's not how we should think about it right should think about like how do I get policy management as easy as possible to our developers so let's say we have repo templates so could I give the developer in the template already some kind of base policies could I help them adhere to pot security standards for example by having something in the template already that helps them get started shifting everything left shifting the real capability of my platform towards the end user and then already in ci and in internal developer loops I want to validate that everything works so there's no surprise once the developer goes into production and they're like no you forgot to have network policies right I want to think about the whole chain and this how I can think about much more holistic capabilities of the developer and I can think about more and I can break up also team barriers because oftentimes when you grow your platform teams you might have an observability team and a security team and a connectivity team and all these kind of different teams and if you completely treat them separately they're not going to accomplish that much because the integration is what makes it right you want to have integrated services and I'm going to show you an example where this makes a lot of sense to most but before we go to that example let's talk about risk because that's really dear to my heart when you build platforms we've been there right we've had past in the past it's not something new there's been platforms that enable developers and people have loved things like Heroku or even cloud foundry these kind of things because they help them get started very quickly and deploy code into production very quickly but inherently once you abstract away things you also set limitations and sometimes those limitations might be right but oftentimes the more mature a developer gets they hit these limitations and if they're too hard they will work like find workarounds and these workarounds are quite ugly sometimes like not ugly in terms of like it's a bash script no bash bashing here but ugly in terms of they might go around security they might not comply with your regulations they might not have what the best practices inherently they might even lead to complete shadow IT shadow platforms because they were not happy with your platform because you limited them too much sometimes compliance doesn't allow you to to give so much freedom but in most cases there is there is a balance to be taken and then once you start building especially like internal the platform teams for a single company you always focus on your company right naturally you want to solve problems for your company but there is a risk of building very bespoke platforms very proprietary internal APIs and doing everything like very close to your to how your company because your company is always special right every company is special we're different like every time you you think about it like we're different we have more regulations yes usually you're quite different but there's also a lot of common denominators just look at this community look at the end user community everyone has a lot in common and if you build it too specific for yourself you risk getting stuck in the maintenance of your own things right and when once you're you're forking things and building a lot of court yourself you also risk getting overtaken by open source right if you've built your own app management helm deployment github system and there's things from flux and github and and argo out there they might overtake you but you might have not built in oci support and they already have it and you have to always add these features so trying to to not kind of be too specific is is is a good thing here and then also we need to be careful because it's easy to lock in your lock yourself into a single technology or a single tool and and tools naturally promote that right you um but a tool change can be very painful right and in this ecosystem tools change a lot right standards change and trends go through this ecosystem it ebp f used to not be a thing like maybe five years ago but now you might need to change your your your networking towards something like that or you might be currently using some some tool from a from a vendor that is vc funded maybe they get bought maybe they can't continue what happens to the tool right and some strategies and we naturally we're at kubicon and open source summit here the answer for me is always open source and community standards and the risk reduction strategies it's not just like yeah just use open source it's also to think about when you're choosing the right um yeah building blocks for your platform think about is this this this building block that i'm using is this maybe a multi-vendor open source like not being dependent on a single vendor is very good right foundation membership can be quite helpful in that because i mean we've seen companies changing licenses recently and this can be very painful if you have to migrate away from that like maybe someone steps up and has a foundation alternative like we've seen but sometimes it doesn't happen and then you have to migrate away and this distracts you from building value again as a platform team right it's a huge project and all your backlog is going to be delayed by that and really really importantly for me is also building on community standards right this will also abstract away a bit the actual tool right if you use things like gateway api or other apis like csi cni all these community standards this abstraction levels that we've been working on in in the community then it's easier for you to change out the underlying tool without having to change the way your developers work right and sometimes that means also you might introduce some additional abstractions but trying to work on community standards and not build your own abstractions is always uh recommendable here and going back to this first point here of like past like abstractions make abstractions pokeable if you can i'm a big fan of having at least like especially if you look work for example in a git ops way having at least view rights for developers on the platform and them at some point maybe maturing into contributing to your platform and seeing like actually changing changing things and fixing bucks for you you don't need to give them merge rights right you but at least giving them the opportunity to escalate and say hey you didn't think about my use case um i don't know i need tpu's instead of gpu's you didn't think about that could we change that for me and having this at least the process that is easy and and uh doesn't block the developer so they don't need to go with their own credit card to amazon and just uh build their own machine on the side and thinking about both now the product view and this like building on standards i wanted to run through like a very common example that we see oftentimes right it's like progressive rollouts it's a typical use case of thinking how to connect uh different tools and here again what is the job to be done it's not the progressive rollout itself right it's not getting flagger into production or something like that the job to be done is i want to roll out an iteration of my code into production i want to get business value delivered it's it's the only job that i have as a developer right it's not going through the pipeline right that's the job is just getting there and for that i need release engineering capabilities to build and to deploy software there's some connectivity capabilities if you want to dynamically route to like cannery or blue blue green deployments here uh there's some observability capabilities where you want to maybe actively monitor and automatically actually roll back and roll forward into new versions deliver more traffic to the new version and then slowly phase out the old version and because security is important we want also the whole supply chain of this software to be trusted and secure right so now a question how many tools do i need how many cncf tools do i need for this rough ballpark 10 57 depends i think it depends on how you count right like where do you start and when do you stop just let's look at like just the base one right and this is really this is not a recommendation you can use any tool out there for this you can build your own but this is one selection of cncf tools that would most probably work together in this way right like let's assume we're in a github's world we use flux and flagger to trigger a cannery or blue green deployment here and then we use gateway api as standard right and behind that we could use a service mesh like linker d or maybe something from cilium we need a gateway api a compatible ingress controller contour or there's others out there to dynamically route traffic to my new service to the new version and then i use for example something like promissius or something compatible to that to observe this new traffic observe my new service and then give feedback back to flagger and to gateway api to direct more to like roll out the complete service into production right and the six store that's the three tools by the way so you said like six store three six store uh cosine for example to to uh sign my images and trust the supply chain and then i want to check for those signatures in the cluster let's say we use a qverno or gatekeeper for that so we have a secure supply chain but that's just the main use case right i also have i don't know maybe cluster api to to manage my apps and my clusters and then i should build images and store them somewhere so i need a registry that registry should also adhere to standards like the oci standard again right and maybe i get a hosted one or i host my own harbor right and we talked about interfaces it's a complex use case the developer wants to get get like maybe visual feedbacks or that maybe i integrated with backstage and i think flux just announced the backstage plugin alexis was tweeting about it so that's again another tool another plugin that you need to to manage and this is just one capability right it's just one capability out of many that you want to give your ones but this is one of the core ones and you can integrate more into these right and this is just to make make clear that like it's it's not that easy right it's it's it's a complex system we live in and to to survive here we need to basically stand on the shoulder of giants and to summarize basically what we talked about today is yes developer platforms need to enable the developer and while we do that especially the higher we are in the management level we need to understand and not underestimate the effort right there's a lot of people that are needed a lot of resources that are needed to build these developer platforms they're not easy to build and while we're building them we need to really focus on a product mindset on tools like jobs to be done on it or user journey mapping and everyone in the team needs to understand those like especially in engineering it's not something like you hire a product engineer or a product manager and they're solid for you you need also to enable the the whole team towards that then to avoid the risk build on open source don't build that much yourself try to see if there's products out there that can help you that package some of that that help you with this choice talk to people talk to people at cubecon about your choices and for me also much more importantly is stay true to the core of open source and try to if you find use cases that don't fit talk to upstream right involve yourself and it's actually quite easy and nice to become contributors and it's very rewarding like i know it can also be distracting but in some cases it might be the better investment of your time because once you have your use case supported by upstream you don't need to maintain it anymore the community maintains it maintains it right and you don't need to carry the patch or fork or reintegrate every time things change right and hopefully if you rely on these you as a platform team and as a company that is using platform teams and working with platform teams you you you can be happy and also really appreciate it because you're really enabling the developer you're caring for them you're helping them adopt these technologies thank you questions hello so thank you for presentation quick question like how do you measure velocity of successful pattern teams and what are their measurements yeah so it it's very company specific i would say but there's some frameworks that are not bad like a dora matrix for example i can recommend that's a good one i would be careful though to put very specific kpis in there right it's like you should always measure but being too data driven can also be risky because data can lag or be biased and but dora matrix is a is a good framework also there's existing tooling and dashboards for that but i would also think about go and talk to engineering departments engineering managers and ask them like for example with this user journey map that we created we went with that map to end users and ask them which part is slow for you which part is painful even right maybe it's not even slow but it's just painful right and do the same thing even with the platform teams which part is playing painful for the platform teams and they'll sometimes tell you like nobody knows that we have databases as a service right so then you can increase have a measurement for that like adoption rates i love adoption rates as measurements because it shows that people are actually using it and and this is why like it's very company specific i would say but talking to people will help you find the the right measurements for you i want to ask a question about how how the responsibilities divided between the platform team and the application developers some some tasks are not so clear like if application requires the public internet access who should be responsible for configing the or i'm maintaining the load balance and the dns config okay it's not an easy one responsibility is is always hard and usually you you would strive to have clearly defined roles and clearly defined responsibilities and make the limits very clear i do believe that something like for example a load balancer and dns are still on the platform side the developer shouldn't need to care that much about it but sometimes you have this case and this is where i was saying like if you make your system pokeable some like if you manage it as a platform team you need to manage your resources and you need to set some limitations on what you can give as an sla as a as a as a service agreement and then if you have a team that needs to go way beyond that has very specific needs for that you might need to say okay you team if you need that i cannot provide it you need to to manage that yourself but making the the the lines very clear is where is is important here um usually i would say try to standardize and keep ownership within the platform teams and then have good interfaces towards the developer how they can use it in a safe manner and only like in rare cases try to like move the ownership over there it's still hard because um maybe it breaks the load balancer breaks because of misconfiguration because i don't know wrong certificates in the ingress resource if you have a lot of wrong certificates in ingress resources some ingress controllers might fall over right then it's not the responsibility of the platform team anymore but it's it's the platform team's responsibility that takes care of the ingress that they work with their engineers why are you like what like and find out why why are these misconfigurations happening and trying to avoid them in the future either by helping with templating better or automating things that can be automated i would say does that solve your question thank you thanks for sharing i just have a question regarding to how to really attract the developer team to really use the platform product that the protect uh protect uh platform teams are actually delivered just like you mentioned some sometimes there will be fun some work around solution to just work around like the security check something like that so any best practice for it so it's hard to avoid right it's like you you don't have visibility everywhere but um i think the way that you once you realize that or like to avoid it even from the get go is to make things easier right um if everyone's running around with root access it's most probably because it's really hard to do like find great permission control so maybe then you need to invest in either a tool or building some permission management so make like it's it's usually about a usability problem where people get go towards work around or build around security and especially in the security case it's you need to work very closely with the end users to see what helps them because oftentimes with security use cases is like here's all the cvs fix them doesn't work right 800 cvs but if you can prioritize them help them prioritize that give it to some product teams then and then also maybe even create issues for them in jira like we've built in a jira integration for cvs at some point to make it easier for them to prioritize and and understand why it's important okay thank you and also another question is around the value of the platform because i will see that we will be facing some challenges from the management team especially for say oh and you guys know that uh when the investment or the budget for the platform is really huge so how really shows the business value when we are established and kind of platform product yeah business value is is not easy it a little bit goes back to the first question of like usually at some point in management level they understand like develop a velocity to be important for a company like any company not only tech companies software is becoming important and if the company hasn't understood that yet then uh then we have more work to do then we might need a bit more strategy consulting to get them understand but if the if it's understood that software is is really contributing value to the the the the revenue of the company i mean and retail it's easy because it's e-commerce oftentimes but in some companies it's maybe not that easy but once that's understood making clear that this platform and showing that this platform is actually enabling developers to to like deliver value faster and with less downtime and with less problems so we get less support tickets like measuring these and then showing that back to management that helps and also um sometimes you need like bigger new projects or you might need a new team packing that into the business value that this will provide into the value that you expect from this like an automated rollout feature you expect features to land much quicker and with with uh with less problems into in production so showing that and bringing it up to the level of saying okay this will save us x amount of time and or this um for example usually you can say something about time uh spent uh currently right like how much time does that do you take from uh inception to go production right and if you if you can then say okay we we're definitely saving time here and this new project will save more time then that's something that you you can use for budget negotiations and trying to expand the team okay thank you I make a very quick question because we are over time actually and lunch you just had one spicy take in it with the not committing too much on a tool and then go on the thing um I experienced this heavily in a place I worked before you spent so much effort to not lock in yourself into a tool so it's just not contradicting each other to say okay we want to be quick we want to be fast but then we want to stay on a such a high level not taking the benefits of maybe everything because then we are too deep into the tool what is your take on this it's it's a fine line to tread I fully agree it's if you if you're too careful and you build like everything abstracted away and like moving between all the clouds and all the tools it's it's gonna be way too much right but trying at least where it's possible and even given to you maybe by the community like cni cni gateway api all these tools that maybe the community already has worked on and checking if there is people that have worked on on abstractions already at least adopting those and for those not going too deep it'll be hard it still doesn't work always right there's like even with network policies which are a common component sometimes you need more and then you need to go into your specific tool and and and and think about and and use the the specific functionality and sometimes it's really beneficial because you get more secure you get faster and you get a lot of power it's it's just something that you need to think about especially when you see already things on the horizon like if you're currently working for with on validation let's say in Kubernetes clusters there's a lot of tools that you can use right now and they're all proprietary and then core Kubernetes is currently using like trying to introduce cell and other validation mechanisms back into core maybe those can replace some of your use cases in the future if you're thinking about that maybe now investing in a bit of abstraction will help you migrate in the future if you can already anticipate it a little bit cool I think you all want lunch everyone is hungry a little bit thank you


Setting the date for Family Day, we decided to let British Columbian families choose what date they wanted it to be. I got back into politics because I wanted to make government, I wanted to make the province better for British Columbian families. And so I'm proud and delighted to deliver on that commitment as I announced that BC's first Family Day will be on Monday, February 11th, 2013. I want to express our sincere thanks to the Premier and the Minister for this very positive announcement. I am confident that this decision will drive significant benefits for BC's tourism industry, the provincial economy and the people of British Columbia. Premier Clark has been very clear that jobs and families are two of her top priorities and today's announcement is an excellent example of her commitment to deliver on those priorities. Our industry is a vital component of the BC economy and we are very pleased to have such a positive working relationship with the provincial government. The cooperative research we have conducted together shows that the resource sector has great potential and today's announcement will support our ability to achieve that potential. This is an important day for families in BC. It is certainly a cause for celebration. Families work hard and on BC Family Day, families can take the day to reconnect and spend time together. So thank you for recognizing the unsung heroes. Mark your calendars. It's a day to spend with your family.  Hopefully right here in British Columbia.


Anonymous asks, what is your opinion on Mimble-Wimble? First, a quick explanation for those who don't know. Mimble-Wimble is a very interesting proposal that uses some mathematical and cryptographic quirks. To create a blockchain that massively reduces the size of the blockchain and transaction, by summarizing a lot of that information and only keeping the summaries in a way that you can still verify everything. Everything is validatable and verifiable independently, but you don't need to store everything. It also massively increases privacy at the same time. Mimble-Wimble is not something that you simply slap on top of Bitcoin, although there are proposals to adapt it somehow. At the moment, it is running as a testnet, so it is a blockchain of its own, with its own technology. I believe the currency they are using on that testnet is called a grin, but I am not sure. Lazar asks, could you explain and go deeper into digital signature aggregation via Schnorr signatures? To what extent would their application increase Bitcoin anonymity? I am going to try to explain this and a caveat here. This is a topic that I am not entirely versed on. I am going to try my best. Let's see how I can go. Digital signature aggregations and Schnorr signatures are two different things. Schnorr signatures are a particular type of signature, and the primary advantage they have over other forms of signatures is that they are shorter and smaller, compared to ECDSA, an elliptic-curved digital signature algorithm. The advantage of Schnorr signatures is that they are more compact, as far as I understand it. Digital signature aggregation, however, is another capability that Schnorr signatures can enable. They allow you to summarize the right word. Aggregate is the word you used. It is called digital signature aggregation, but you add all of the signatures together. I use add, not in the traditional one-plus-one equals two. We are talking about mathematical operations that are happening in a prime field on an elliptic-curve. Nevertheless, for simplistic purposes, you use a mathematical operation to aggregate all of the signatures in such a way that you can still validate that something has been signed, but you can't see the individual signature for that item. In the case of Bitcoin, what that does is two things. One, it saves a lot of space. Schnorr signatures are already more compact. Let's say you have a transaction that has five inputs and requires five signatures, each input needs to be signed. First, you sign in with Schnorr signatures. Great, now you have saved some space. Then you take the five signatures, you aggregate them, and you produce just one signature for all five inputs. That one signature is the same compact size as each of the five signatures. You have now decreased the space of the signatures by 80% by taking away four out of the five. You have those five signatures aggregated in the same space as one. Then imagine that those transactions belong to some kind of joint transaction, where the inputs come from many different individuals who are providing their own signatures. You have aggregated all of those, and that way you can't really tell... Although you can tell that the signature is valid for all of the inputs, and that it properly corresponds to the public keys of those inputs, you can't really tell who applied those signatures. As a result, it makes privacy in things like CoinJoin more secure. Again, I probably got some things wrong there. First of all, it is still in development. The only example of this in use today is in the element sidechain, which is a blockstream project. This is being developed actively by a whole bunch of people, including Greg Maxwell and Adam Back. I believe Andrew Poulstra, but I might be mistaken. This is still very early days, but it is the kind of thing that can be added to Bitcoin, thanks to Segwit and script versioning, and can be added by a soft fork. It will be a way to increase the capacity of the network by compressing the data, rather than increasing the space.


A lot of hockey players would consider a broken hockey stick a done deal, but there's a business in Bemidji that's bringing those sticks back to life on the ice. Reporter Cheryl Moore has that story and this week's In Business report. You may think when a hockey stick breaks, it's the end of the line, but thanks to an integral hockey, a lot of sticks are being resurrected. It's just like their motto says, don't throw it away, keep it in play. It's a patented process. We've been doing it now for almost 10 years. I've owned a franchise in Northwest Minnesota now for about four, and it's a lifetime warranty on the repair. The 47-step repair process is top secret and was developed by a man from British Columbia, Canada. Almost no repair is too big or too small. We can fix the shaft. This happens to be a broken stick here. We can fix the blade. There's just a couple of pieces of the of the stick when it's broke right down in the little area right down here that we can't, but everything else. It's a hollow core carbon fiber repair. Getting a stick repaired is really simple. All customers have to do is drop it off at Top Shelf in Bemidji. The repair process will take up to 10 days, depending on the workload. Then customers pick it up and it's ready to go. When you're looking at a hockey stick today that can cost upwards of $300, a stick is demanded to have some performance in it. So when somebody is taking a look at an integral hockey repaired hockey stick, at first they're a little bit leery, like what am I going to give up, and really the repeat sales speak for themselves. Not only is the repaired stick saving customers money, it's also environmentally friendly, which is something integral hockey takes a lot of pride in. All of these sticks prior to this repair system ended up in a landfill, and they do not break down. This is a very green method, and we're very proud of that. So all of these sticks get reused again. Integral hockey may have its northern Minnesota base in Bemidji, but they do work all over the Lakeland News viewing area. The best way to learn more information is to head to their website. We have a link with this story on lptv.org. The thing is just absolutely exploded in my market, and when it's 70% of new, that's something to be said for the parents and saving some money too. In Bemidji with this week's In Business, Shremor, Lakeland News. If you enjoyed this segment of Lakeland News, please consider making a tax-deductible contribution to Lakeland PBS.


Hello, everyone. I'm Sanjay Gupta. I welcome you on Sanjay Gupta Tech School. In this module, I'm going to discuss how you can apply CSS and components. Let's understand how we can apply CSS and components. So CSS basically stands for cascading style sheet. So if you want to use your style file, so if I go and create new lightning component. So I'm naming it as CSS demo. And if I create any component, so here you can see we have a style file. So in this module, you will understand how we can use this style file. So I'm going to demonstrate this. So basically, if you create any other component and let's say I'm using a dev and inside dev. I'm going to write hello lightning, right? So this way this div is created. And if I open any existing application, so I'm just opening demo app. And here I'm placing CSS demo. And if I preview it, so here you can see hello lightning is displayed. Now what I'm going to do, I'm going to use a class here. Right. And in this class, I'm just writing white. So name of class is white. Right. And if I go here in this dot CSS. So basically, if you write dot like dot this is already available. And if you don't write any class here and you directly write, let's say background. Hello, and great. And I'm just removing this as well. Right. So what will happen? This CSS will be applied to the whole component. If I go here and refresh the page. So here you can see this gray color is applied on the dip. Right. So in this component, we just implemented the dip. So on the whole dip, this color is applied. Right. Because it is written in this along with dot this. So dot this basically refers to the component. Now if I write dot this dot white. And if I use it here as well. So what happens? So for this dip, like where classes white. So dot this will be applied for other tags and for the tags where you used class as white. So this will be applied. So if I copy this and paste it here and change the color to white. So you will see the difference. So if I go here and do a refresh. So you can see now it is in white color. Right. Now, if I create one more dip, let's say I write hello aura and I am just removing this class. So what will happen? For this dip background color will be white, but for this dip background color will be great because we have not applied any class here. So if I go here and refresh, so you will see the changes. So hello lightning background color is white and hello aura background color is great. Okay. So this way it is implemented now. Let's suppose I created an ordered list tag and inside this, I'm going to use list items. So here I'm going to use the colors. So I'm using class red and next will be my background is red. Then again, list item class equals to green. And here I'm writing my ground is green. Right. So this way these two list items are available. Okay. So this is our main tag UI and this is the sub tag of this UL unordered list. Right. So if you want to apply CSS on this class, which is the sub tag of particular time, or you can say like it's part. So what you can do, you can just copy this. And if you want to apply that, so you need to just provide a space before this dot. It is important. Right. So for this list item, you need to provide the space because it is not the main tag. Right. Now here you can write classes red and color will be red. And if I copy this, so I can paste it one more time for being and I'm saving this. Now I'm coming here and doing a refresh. So here you can see this list item is coming in red and another one is coming in the green. So this way if you provide the space, then it will work. Let's see what happens if I don't provide space. So I just removed the space from this red one. So if I go here and do a refresh. So you can see that red color is not applied. Gray color is applied because in this case. This you an ordered list is not having any class. And the CSS is assuming like this red glasses related to the main tag, not to the tag, which is written inside a particular tag. So if you have any sub tags, so in that case, you need to use this space, then only it will be applicable. I hope with this example, you understood like for top level tags, you don't need to use space, but the tags which are available under the top level tags. So you need to use the space, then only your CSS will be working properly. So this way you can use any class name and accordingly you can provide the CSS. And in a particular block, you can have like multiple properties. So if I want to apply color, so for this, I am applying color as red. If I save it and do a refresh. So you can see big down like color is red for all all the tags because I applied it for this. And here only background color is applied, not the foreground color. So that red color is applied for all. So instead of applying it for all, so you can remove it. And if let's say you want to apply it for wherever class white is used. So now if you refresh, so red color is applied only on this hello lightning, not for others. So dot this is for the whole component. And if you want to use CSS for particular tags. So in that case, you can create a class and don't forget to decide like whether it is the top level tag or it is the tag which is under the top level tag. So accordingly you can just remove the space or you can use the space. So this is all about how to use CSS in the components which are built with the help of our framework.


They want to give these big behemoth coal stocks the benefit of the doubt, and you can see here macro-wise, what could possibly happen tomorrow? Again, if we could confirm the 10-day moving average. Welcome to Access to Trader, the number one community for those who are committed to taking control of their trading in order to achieve success, profitability, and longevity. Thank you for joining us. Here's Dan Shapiro to help you find your edge, master your process, and own your future. Hey guys, giving everybody, welcome to another edition of the AccessToTrader.com nightly wrap up show, hope everybody is doing well. So we have five days left to the election. Again, I really, really encourage, and again, if anybody's been trading the market for a long time, you see the difference between a market that is trading on potential new leaderships or the same leadership continuing to stay in office, then a normal market. Again, ranges are gonna be tighter if you're watching this broadcast for the very first time. You're going to see a tighter session until something breaks, kind of the levee separates and the water goes. And we have five days left, literally five days left from now to election night. Obviously nothing will be kind of put to bed come November 3rd, but at least will give us a glimpse of our future. And I really encourage people trade for cash flow, don't get a lot, you don't need a lot of exposure overnight just because of the sheer uncertainty of what's happening. And the most important part is you are going to get a lot of value throughout the days, most days, right? You're also going to see a lot of days that are gonna be stagnant. So you have to really understand how to press and pull back at the same time. And today was a session for whatever reason, I traded very, very aggressively today when I didn't need to in the morning, had a couple of brain farts. Luckily we had some good opportunities that I kind of got back everything, kind of got back everything and wound up on the right side of the ledger. But sometimes your brain as a trader, sometimes you know what not to do. Like for example, I know don't smoke crack, right? Crack is bad, right? I think we could all agree crack is bad. But once in a while, you'll turn around and the human being will do crack. Well, why are they doing crack? I know it's bad for them.  And today for some reason, I got very, very aggressive early in the morning. For some reason I had a major brain fart. Usually again, every single trade needs to be confirmed. Every single interval needs to be confirmed.  But again, we were fortunate enough to have enough value throughout the rest of the day that I was able to get hold. But it really does show you how, I don't care how long you've been trading, you're going to have that mental lapse of judgment. And sometimes even when you know not to do something, all right, say no to drugs, don't do crack, sometimes you'll just take out the pipe and go, shh, allegedly, right kids? If you're listening at home watching at home, allegedly, allegedly, don't ever do that stuff. So that's kind of where we are. The one thing technically that I did like today, what I continue to see kind of from yesterday's session, if you guys remember, we sold off 650 points yesterday in the doubt. And the one thing I kept on kind of harping on over and over again in the live webinar and in the video at night, that we really didn't see any aggressive put buying coming in, especially ahead of earnings. And again, this is a very, very big week for technology earnings. For example, Microsoft came out with earnings today. Pretty muted reaction, had a nice move pre-market. It's pretty, excuse me, regular market. It's pretty much flat after the close. But what I like, what I saw yesterday, number one, the cues did hold, right? Did hold this rise in support, held, re-held, reclaimed the 50 day moving average. And now we're kind of back at striking distance, kind of where we were a couple of days ago. You guys remember that 286 level? So this is still on the table. Remember, those levels are valid until new levels of form, new levels are peers. So this level here is still very, very valid. And now we're getting close to some really big earnings coming up on Thursday, your Amazons of the world, your Googles of the world, Facebook, so forth and so on. So it's very, very important that the bulls kind of hold the line to kind of peers through. And again, going forward guys, these are still the big levels. 286 continues to be the big level initially. And then any close above 288, but just in case things get very, very hairy. Again, we have the bottom of the channel here, roughly 276, 76 is our area for reference point to go down. Again, what we saw today with some pretty good action, very, very, very, very expanded roles, meaning the electrical names were strong. Like, look at this NIO.  Crazy call buying coming in. And not only just like the 30s, the 33s, we saw $40 calls being traded as well. So this is a very, very strong stock continues to be strong stock, continues to get really, really good, aggressive speculation money hitting. And when you have a market that could produce a move like this, right, a move like this, the point is, is there really any fear despite the market going down? Like today, for example, yesterday, the Dow went down 650 points. We were talking about the whole time, there was no fear. Today the Dow was down 200 points. So you're talking about 850 points net net in 24 hours. And here we're talking about a stock that literally went from $13 to 32, actually 35 after hours. So the most important part where we need to kind of maintain, number one, remember, every day is gonna be different from now to the election, every day is gonna be different. There's no gonna be two days alike. There's no gonna be two days that are aggressive and passive alike. I think that we have to understand as well. So the most important part is again, what we talk about every single day. Take it day by day, okay? Take it literally day by day. There's no reason to press. And the most important part is from now to election day, just understand, you're not gonna get big, aggressive money flow in most days. Again, think about this from the mutual fund, index manager, hedge fund manager point of view, right? Our future is uncertain until we find out who the leadership is. So nobody's gonna be putting real money behind an idea. Nobody's gonna allocate $20, $30, $40 million on an idea if they don't know what the implication is gonna be next year. We don't know that. So I think there's a lot of money sitting on the sidelines. I know a lot of my friends, they're passively in this tape right now. They're not really to the point of view that they're aggressively taken on positions more kind of like surviving and patching days together until after the election day. So you have to be very, very conscious of that. So I think we'll get a lot more clarity. Like somebody asked me today, is this normal? Is this a normal environment? It's not a normal environment, not every single week, not every single month, you have a major election. A lot of people will turn around and make an argument. It's probably one of the more important elections in recent years. So it's very, very important, okay? Incredibly important really to understand the dynamics of where we are. Again, take it day by day. If you have to trade smaller size, take faster profits, but just understand, the market will be here five days from now, okay? So if you don't need to be aggressive in this market, don't, it's very, very important to understand that. So going into tomorrow, again, I wanna give the bulls the benefit of doubt just because how strong the Nasdaq names were. Amazon reports Thursday, they had a nice spike today into the close, reclaim some big levels. So that's very, very important. So you have a lot of speculation money continue to roll, not only into names like SRRK, but names like Amazon, again, they wanna give the stocks, they wanna give these big behemoth coal stocks the benefit of the doubt. And you can see here, macro-wise, what could possibly happen tomorrow? Again, if we can confirm the 10 day moving average tomorrow session, remember they report Thursday it's very, it's very high, it's very conceivable that we can get a really big run between now and Thursday session. So let's talk about today's pivots, some good things, some not good things, some days, some things I just completely had a brain fart. It literally took me pretty much all day to get on the right side of the ledger, which was a little bit frustrating considering I over-traded it and really messed up a lot of trades. So let's talk about this.  And then why did I screw up? 39, 20, 39 if it builds below. Again, I always dwell on the trades I don't make money on because those are the important ones. There's usually a reason why I screw up. It's usually not technically, it's something that I do mechanically. So Stock already had a big run here and it didn't rally today and it put in a low of 39, 35. So it put in its initial low of like 39, 15. So I said basically 39, 20, 39 if it builds below and I can flush. The problem is the first candle's move was all in one candle. So I didn't wait for confirmation. So I didn't wait for that second move to confirm for the 10 o'clock candle. Again, this is what we talk about. You could trade 20, 30 years, 40 years, 50 years, but at times you will have brain farts and that's exactly what happened because if I would have just waited, right? If I would have just waited for that confirmation candle stock went down to 37, 90. Again, the difference between a dollar move, right? A dollar, dollar, 20 move, then we losing 50 cents on the trade. Now again, it's 50 cents down to the world, absolutely not. But again, that trade could have been avoided if I didn't have the human side come out of me, but again, it is what it is we're all human beings. So I gotta hold the L for this one. Boeing I scalped, Boeing I scalped. And is this really like the hardest stock to trade in the world these days? It really is. If you look at where the stock close compared to the pivot, it looks great on paper. To say I messed up this trade is an understatement of the day. So 158.70, if it builds below can flush. So look where Boeing closed today, right? Stock close at 54, right? Looks great on paper, looks great on social media, right? Great call Dan, you're a must follow, right? The nonsense I scratched on the trade.  So again, you can see what we talk about.  Today was kind of my mental fart day in the morning and it took me all morning to kind of get back to where I needed it to be.  This is one of the biggest moves of the day. Congratulations for all you guys who swung the trade. And I said this is not gonna be a day trade, but any close above 10 is super bullish. Not sure if it's gonna be a day trading stock, probably a longer hold. I thought the stock could have gotten to like the 1150 at some point next week. Apparently next week was today. This was an absolute huge move. Congratulations guys. So this was the $10 build, right? $10 build here and the stock just exploded when all the way up to $11, really, really nice move guys. Again, congratulations for all you guys who are holding this thing still. Again, 1150 is the IPO high. Big, beautiful move potential there. You actually saved me. Of all things, you actually saved me. You rejected 104 twice, needs to build. Here was letter U, right? So here was the 104 break. Nice move here. The crazy part, it actually went as high as to 108. Here's the crazy part. Look what the stock did in the middle of the day, right? So it goes from 104. This is the candle that we were long. Goes to 104, goes to 108, reverses, goes all the way down to 95.  And then it runs back, and then it runs back $8 from there. Again, if you could explain to me what happened there, we'll be nuts. Nice move on square, pre-market pivot here. 173 rejected three times, needs to build. Here is square, right? So here is the 173, right? 173, 173, 173, nice pop here. Took out the 173, went to 176 before it kind of faded into the sunset. Amazon, it was big. This is a big pivot, and it closed above a big range. Again, for all you guys who are holding Amazon overnight, there could be one more pop there tomorrow, guys. So here was the initial pivot, 3237 needs to build, right? So here was Amazon, right? So here's the 3237 right here, okay? So the first move was like 25 points, right? Big move, you can see the stocks trade from supply to supply. So the first move was like 20, 25 points. The most important part, and it gets being sold off a little bit after hours, but I think tomorrow it's gonna confirm, at least that's the plan. Once it got above 3285, okay? That was the big key here. That's where it closed trading to the 3290s. So again, if you are holding Amazon, if it can just confirm tomorrow 3300, there's a lot of room here into an earnings push. So keep an eye on that. Zoom, nice spike on Zoom. Zoom looks great, okay? The Zoom looks amazing. You have crazy, crazy reports of different countries thinking about possibly locking down now. Experienced traders only, the first move was the 531. So 526 needs to build for a 531 spike. That happened pretty seamlessly, right? So here was Zoom, right? So here was Zoom, here was the 531. You see this 526, 526, 526? So trader right to 531. So once it got above the 534, and that's the pivot we talked about right before I logged off. Unfortunately, it didn't catch the second end of this. But 34 right here, once it took out 34, and now it looks like it wants to test the previous days high. And if this thing confirms and news continues to filter through, you could get an expanded move there. NVIDIA, nice move there as well. 531, 532 needs to build for cash flow move to 535. It actually went a little higher than that. So here was NVIDIA, right? Here's a 60 minute view on the NVIDIA, right? So here was 531 right here, okay? This whole area here, 531, 532. Went to like 537, nice spike there. Tullo got destroyed. So here's the, again, here's the point of pivots. We don't care which way they go. We just don't. 304 to the upside, 297 to the downside. And look at Tullo. Tullo got absolutely smashed. So here was the 97, and it went all the way down to 287, big, big move. It's actually selling off more after the close. Amazon, again, nice 20 point spike. Again, Boeing, but before that new lows, right?  I really, really screwed this up. So again, it is what it is. Beautiful move, PLTR, huge move on PLTR. You take on the way up. And again, this was the point. Any close over 3284 is bullish ahead of earnings. So nice 10 point spike ahead of that number, above that number, into the close.  I kind of did, I kind of did overtray today.  You overthink everything or don't think of anything at all.  The good part about today's session, I stopped myself. At some point in the morning, if you guys remember, I said to myself, which trade was it? After Zoom, because I shorted Zoom also, which you guys didn't see on the Twitter feed. We had a Zoom short as well. That went from like 18 to 13. I shorted some Zoom to make back some losses. But after Zoom, I kind of just stopped.   But yeah, crazy day. Again, I have no expectations tomorrow. I am by bias. Again, we'd like to see everything confirm. Okay, I think that's the key. Obviously I will not be preempting or anticipating the moves. We have to let everything confirm. And if the bulls can just reclaim that QQQ 286 level, I do believe we'll start the next leg up. Guys, God bless. Have a great night everybody. I'll see you all tomorrow.


I have an honest and sincere question for those people who speak in tongues today. As I've said before, I started off in a charismatic Pentecostal church and I won't forget when I started having questions about tongues. This was when our pastor was a bishop who was speaking in tongues. He went from English to tongues to English and I raised my hand and asked a question. This was during a Wednesday night, the teaching service. And I asked the question, what did you say? And then the next question, the follow-up was, since he didn't know what he said was, why? He said, I don't know what I said. The spirit just came over and it just came out. And I said, well, why did you say that should we know what we're saying? And he really could not give me an answer. So just led me through my journey. So I have a question and I want to start the question prior to that. I want to look at a scripture and then ask this question. In 1 Corinthians 12, 1 says, now concerning spiritual gifts or numitikom spiritual things, brethren, I do not want you to be unaware or some verses may say ignorant. And the word issues here in the Greek is a Greek word, agnotain, which is to not know. I don't want you to not know.  So he's saying, he's referring to what someone is saying, but he starts off by saying, I don't want you to be ignorant or unaware or to not know. So here's my question. For those of you that speak in tongues, shouldn't you know what it is that you're saying? Now, the reason why I'm asking this question is, as I look through the scriptures, especially in 1 Corinthians 14 and that going along with chapter 12 as well, seems to indicate to me that we should know that there should be something that we, we should know and understand what is we're saying. And we look at chapter 14 in verse, let's say in verse two, he says in the spirit of the person that speaks in this singular tongue or the King James version might say an unknown tongue, this person, he says, no one understands what he's saying. I'm sorry. Yeah, verse two. He says he does not speak to men, but to God for no one understands him. Now, does that include he himself, the person that is speaking? And then if we look at what he says, continuing this in verse six, he says, Now brethren, if I come to you speaking in tongues, what will I profit you unless I speak to you either by way of revelation or by knowledge or of prophecy or of teaching, yet even lifeless things, either the flute or the harp in producing a sound, if they do not produce a distinction in the tones, how will it be known what is played or on the flute or on the harp? In other words, it seems to be saying that the people who are also hearing this should know. I'll get this issue about should you also know, but his point here is that shouldn't we should we know what you're saying? And so continuing, he says, for if the bugle produces an indistinct sound, who will prepare himself for battle? In other words, you need to know what's being played on the instrument.  If what you're saying is not intelligible, understandable, how will anyone know what is being spoken? He says, for you will be speaking into the air. I don't think that that is a good thing. I think that really might be a kind of a jab, but that's certainly not a positive thing to say that all you're doing, you're just speaking to the air. He says, there are perhaps a great many kinds of languages in the world, nobody says, and no kind is without meaning, without some sort of understanding. If then I do not know the meaning of the language, I will be to the one who speaks a barbarian and the one who speaks will be a barbarian to me. Now, could that also mean you are a barbarian or a foreigner to yourself of your speakingness? Maybe, maybe. That's why I'm asking the question. He says, verse 12. So also you, so he's using the same thing, this analogy in terms of tongue. So also you, since you are zealous for spiritual gifts, seek to abound for the edification of the church, which he's already covered, that our spiritual gifts are for the benefit of others, but I'll leave that for another discussion. Therefore, let the one who speaks in a tongue pray that he may interpret. This word for interpret here in the Greek, it means to explain, to interpret. You give an understanding of what's being stated. So he should pray that he may interpret or explain or understand. For if I pray in a tongue, my spirit prays, but my mind is unfruitful. My mind is unfruitful. What is the outcome then? So the question is, it is asking, there's a solution to this. There's a problem, which is why he comes back with a solution. What then is the outcome? What shall I do? What is the outcome of what? What is the solution of what? Me praying, and my mind being unfruitful, not knowing what I'm saying. His solution is this, I will pray with the spirit and I will pray with the mind. Also, this word for no a or no a is from the same word that we have in chapter 12, verse one, where he says, I don't want you to not know or to be unfruitful or to be ignorant or to be unaware. I want you to know what you're saying. So he says, I will pray with the mind or some person may say, I will pray with understanding. I will sing with the spirit. I will also sing with my mind or with understanding. So my question is, shouldn't people that speak in a tongue, shouldn't you understand what you're saying? The question is, do you understand what you're saying? Now, if the answer is yes, I do understand what I'm saying, well, then why am I not just speaking English? Why not just speaking your native language? And if you don't understand what you're saying, of course, no one else does either, then should you do that? According to this passage, that's my only question.