Today on The Journey, you're going to learn five strategies for product marketing testing on a budget. So I'm sure you got a great idea and you're super stoked on it and you just want to get out there and start selling it. Make that money.  And if you want to give yourself the best opportunity to succeed, you want to make sure you're doing the product market testing and what product market testing is, is to make sure you can find that great product market fit. What that simply means is you have a product that people find beneficial and they'll pay you for it. Now, Emma, say you decided to open up your own surf shop, tell us a little bit about that. Yeah, so I definitely look at where I'm at, right? Like if I were still in Indiana, not much of a market there, right? Not much. Surfboards are just going to be collecting dust, well, I guess unless you did some wake surf on the lake. But that's not what we're talking about, we're talking about surfboards. And so you look at your market and you want to definitely think about how can I get people stoked to catch some waves and how much should I charge for this? So maybe to be competitive, you have some surfboards around the 500 range and you need to sell like 25 a month. So how can you sell 25 a month? Will that be enough and are you in the right market? That's just the beginning of making this dream come true. All right, so that sounds great, Emma, but what if the market is already over saturated? Well, I would be surprised by this because personally I have like three boards, so I feel like everyone wants to get another board, but I hear you, you're right. There might be surfers out there that are like, hey, I'm good with what I'm catching waves on. This isn't really something I need. An idea that comes to mind right away is pivot, sell skateboards instead. So with pivoting in mind, is there anything else that we can do? Yeah, so definitely one way that reeled me in surf lessons because there might be a ton of potential surfers out there that are just a little hesitant or nervous to go catch some stoke. So you offer some surf lessons and you get some new surfers, they're hooked and then they're about to buy one, two, maybe three boards from you over the years down the road. So it just seems like with product marketing testing, you have endless options. All right, so we're going to take you through five tools for product marketing testing, starting with market research. Yes, you want to make sure that the people, you know enough about the area, what the people are into, so if your product is going to fit or not. Totally, and you can hop on Yelp. I mean, again, with the surf example, I currently live in San Diego. Yeah, there's a lot of competition, but I could go ahead and look up surf shops and see what am I working with? What am I dealing with? What am I competing with? Now, step two, you can put it on Facebook. You can figure out if the network that you have is interested in your product, but also don't forget, it's not just your friends, but it's your friends of your friends. That extended network, that's going to be valuable to you to figure out if these people are interested in your product. They can like, they can comment, share your posts. That will give you some good research. All right, number three, levered sign up forms and landing pages. And the cool thing is, I know email is a big one for me when it comes to surf boards. And it's a great way that you can keep your audience up to date. Like, for example, when it was the end of summer sale at the last place, I bought one of my boards. They sent an email letting me know about some discounted wetsuits that they had as well. But yeah, some summer suits before we get into those cooler temps. The ocean's going to cool down a little bit and they're selling the thicker wetsuits. So it was a great way for me to know, hey, I need to head back down to the surf shop or online and order myself a discounted wetsuit. But you might have some updates about new boards that you have in or some discounts. So that's one great way. Also, you don't need to have a website. We recommend it. But you can do a lot in the beginning just with social media. And it's good also to have something of your own, that landing page. Just really simple, one page where you can actually control it. This is something you own. So anyone that is interested, they can have the opt-in form where they can leave their email to stay notified when you're ready for that product to come out. Or as Emma was saying, even after your first product, maybe you can build it up and you have another product coming out and you can keep them up to date with that. And number four, surveys. You can have surveys to learn about your market. And also, if you don't know who your actual market is, surveys will be a great way to figure out if people are interested in your product. You can use things like Google Forms or Survey Monkey. Those are pretty popular. Pull Daddy. Pull Daddy. Where you can make sure that you can get enough people letting you know that they are actually interested in your product. So our fifth and final tip is to use Google AdWords to get in front of searchers. I mean, we already talked about the importance of creating a landing page. Put some AdWords behind that. And again, it's a great way to get in front of a larger audience, get them to sign up. Good call to action. And we've actually done a video on that with SEO. So if you're interested in learning more, just click over here. Also, I forgot to mention, draft some simple ads, send them to the landing page and then do a bid on keywords. Like, for example, with surfboards, some keywords that might be good to include or consider surfing, surfboards, leashes, fins. Wipe out. Wipe out. Let's sue. Wax. Rax. Dimension racks. Think about that. It will help you to get in front of that target audience. So any engineer knows before you invest thousands or millions into a product or your retirement. Exactly. You want to build a little prototype first. So the same thing when it comes to your product.  That's a wrap. You just learned five strategies for product marketing testing on a budget. Be sure to like, comment and subscribe. And ring the bell so you're notified when we have our brand new content. And thanks for watching. This is The Journey. See you next time.


Welcome to Tick-Mail weekly market outlook for week menacing August the 15th with me, Patrick Manley. The week ahead we'll see tier one data for most major economies. The US economic calendar is packed with key readings such as Tuesday's July CPI, expected to hold steady at 0.2%. Thursday we'll see retail sales and industrial production data, the latter likely to reflect weakness in domestic manufacturing driven by the ongoing China trade dispute and the robust US dollar. Aside from the headline releases, the market will also receive the NFIB Small Business Optimism Index, import prices, as well as the first batch of regional manufacturing surveys. Data on the housing front includes housing starts and building permits along with the NAHB Housing Market Index. The European docket is equally interesting. Tuesday's second reading of second quarter GDP growth is expected to be left unchanged at 0.2%, quarter over quarter, weighed by ongoing sluggishness in the manufacturing sector. Monday's German ZEW investors confidence is expected to track the recent plunging CENTIX investor readings as US trade tensions have recently heightened. Industrial production numbers and trade data are also on deck and factory's production is likely trending down again, taking its cue from the deterioration in recent manufacturing PMIs. Across the channel in the UK, releases comprise of the June Job Report which is expected to remain solid despite the ongoing political headwinds. Wednesday we'll see the release of CPI with inflation seen anchored by the weaker sterling. Thursday's retail sales should meet market expectations with consensus suggesting the firm labour market is set to continue to support spending. The Japanese data bag highlight is Thursday's industrial production, likely to remain depressed by driven by the weakness in global manufacturing and trade. This weakness will also likely be reflected in core machine orders slated for release Wednesday. Down under in Australia, second quarter wage data is set for release Wednesday and will likely to continue to lag with little change expected. However, the main focus will be on Thursday's July Jobs Report. Employment growth is set to slow but moderating participation from near record highs will likely limit the rise in unemployment. Okay, now we have an understanding of the fundamental drivers for the week. Let's take a look at the charts and see what the technicals are telling us. The Euro dollar has recovered sharply from last week's fresh year to date lows and I remain constructive on this pair as we trade above the 11170 handle. I would get even more bullish if we can get a close above the 11250 and then be targeting a move to test above 113 and then above 114 in extension. However, my bullish bias would be negated if we see a close below the 11170 handle. This would suggest we're likely to see a grind lower to retest the year to date lows. I remain bearish on the sterling pounds as we continue to track lower here. The break below this week's consolidation is a further bearish development and would likely suggest that if we close at or near the lows here, we'll see an early assault on the 120 handle next week. I could only get constructive on this pair if we can see a close above the 122 handle, which would then suggest we likely trade back to test prior lows at the 124. The Australian dollar had a difficult start to the week with prints below the 67 handle, almost decade-long lows there. We've seen a sharp recovery from those lows and if we can get a close back now above yesterday's high, currently at the 68-22 level, then I would get constructive on this pair for the short term with a test of the 69 handle life. However, if bears come out at the 69 handle, then we are likely to see a retest of the lows towards the 67 level. A close above 69 would be a bullish development and then we likely see a move up to test the channel resistance at the 70-30 level. The Canadian dollar has stalled this week after printing highs above the 133.30 handle. Yesterday's bearish reversal didn't get any early follow-through today, but we are potentially going to see a bearish close today. If we do get that close, then I would suggest that we are likely to see a correction here, probably trading back towards the 131 handle next week. However, if we don't get a bearish close and we close back towards today's highs, up towards the 132.80 area, we likely retest the 133.40s and then up towards the 134 and 135 handle in extension. The dollar yen is on the back foot again, retesting this week's lows below the 106 handle. If we close at or near the lows today, then it's likely that early next week we will test the 104.80, where we should see some profit taking and the potential for a short-term recovery back up towards the 107 prior lows. Gold continues to trade with a bid tone. We are now consolidating above the 1500 level, and as we do so, we can expect to move up to test towards the upper volatility resistance at 15.30. However, a close back below the near-term volume-weighty moving average at 14.87 currently would suggest that we likely track back down to retest prior highs at the 14.50 handle. However, a test of this level I would see as a potential buying opportunity and would look to initiate long positions in and around 14.50 to 14.40, targeting a retest of the current highs and then up towards the 15.50 handle in extension. The DAX has continued to track lower, breaking down from its uptrending channel, and we are seeing some reversal in the attempted recovery that we've seen early this week. Whilst we can't get a close above the 11.008.50 level, then it's likely we're going to grind lower, retest the current lows at the 11.468 handle, and then likely down in extension to test the 11.200 level at the middle of next week. However, if we can close above the 11.8.40 level, then I would anticipate that we grind up in a recovery to retest the broken trend line support, which should then potentially act as resistance towards the 12.200 level where we could see fresh sellers emerge. And that concludes the weekly market outlook for week commencing August the 15th.


Moving on now to entertainment stories, Gandhian actress Rosemond Brown, popularly known as Akupem Polo, has been sentenced to three months in prison for posting nude pictures online. Recall the actress had shared a nude picture of herself alongside her son to mark his seventh birthday on social media handles in June 2020. She was virally condemned for the post but a director of the Child Rights International Ghana Bright Appear filed the petition seeking her prosecution. However Polo had apologized over the post saying the picture was originally meant to encourage people to encourage their mothers. The matter was however referred to the domestic violence and victim support unit in Ghana which led to the actress's arrest. She was later charged with publication of obscene materials engaging in domestic violence and undermining human dignity. Hello, hope you enjoyed the news please do subscribe to our YouTube channel and don't forget to hit the notification button so you get notified about fresh news updates.


Hi everyone, Joe for Jaspy's casebreaks.com coming at you with the high end random number block, R&B randomizer for pick your team number four, NT football, which is coming up in a separate video if you're looking for that. We finally filled it, thank you everybody. We all dug deep, we made it happen. So it's just a serial number break, right? Only for those four teams for this particular break. I know it says three right here but it's actually for pick your team four. All right, so with all that being said, take thanks to this group here. Congrats again to the winners of these spots. There are the numbers right there. Let's roll it, let's randomize it. Four and a two, six times for names and numbers. One, two, three, four, five, and six. Four and a two, six times. Craig down to J, four and a two, six times. Four of the numbers, one, two, three, five, and once more, yes, sixth and final time after six. We got six down to one. All right, Craig with six, Sean with three, Josh with nine, Chadwick with eight, Steven with zero, Alex with two, Steven with four, Joshua with seven, Martin with five, and Jay with one. Now remember, Steven zero gets any and all redemptions as it states in the description. Gets any and all redemptions for those four teams on the bottom tab right there, including one of one redemptions. J, you'll still get any live one of ones that are popped for those four teams right there. Okay, I'm Joe for jasphyscasebreaks.com. We're gonna set up the break. So look out in a different video for that one. Bye bye.


We're going to talk about concurrency. We're going to talk about async and await as a sort of modern approach to doing concurrency in JavaScript. And I'm Simon, so I'm a JavaScript and React engineer. I've been doing JavaScript for a long time and React for a number of years now. I have a team just outside of Jakarta. CodeFox is our company. And so you can also find me on Twitter with sstur underscore. So today we're going to talk about concurrency. And it's kind of a technical topic. So I'll try to explain it as simply as I can. But you're definitely going to see some code. So we're going to go through some code and talk about some concepts. Maybe we should start with, is everybody a JavaScript programmer or does write JavaScript in here? OK, cool, just checking. And so what about using more modern ES6 constructs? Is everybody using ES6 at least has some familiarity with that? Yeah? OK, cool, because that's what the code slides that we're going to look at is all ES6. So let's talk about what is concurrency? So concurrency is doing multiple tasks in a period of time. So typically, one core can only do one thing at once, as well as other pieces of hardware can only do a single thing at a time. But over a stretch of time, we want to do multiple things. So a web server wants to serve multiple requests for a web page. A script wants to read multiple values from a database before it returns the request. And so what we're really talking about is doing multiple tasks over a period of time. And some of those things we can do in parallel, and some things we have to do one at a time. And so generally, order-dependent or partially ordered units or sorry, order-independent or partially ordered units of work is where concurrency happens. So this is just an example of multiple tasks that may start at various different times, but are kind of running over the same period of time. So they're running in parallel, essentially. Some of these are, right? And so this is something that is pretty hard to do in computing, right? In particular, it's hard to reason about, it's hard to, it leads to race conditions, it leads to difficult models of things changing over time, right? And so concurrency is specifically important when we're dealing with user input, sorry, input output is in like network requests, also user input, users interacting with the system and reading, writing from disks. Anything that is kind of considered asynchronous type of activity, right? Something where the CPU needs to stop and wait for the user to do something, or the CPU needs to stop and wait for some data to arrive from the database or the network, right? And so there's typically two ways for a program to do those kind of tasks, right? So to do IO specifically, we have the blocking or the synchronous style, which is, it's easy to write. It's what PHP and Ruby and Python and most web, especially server-side technologies are doing synchronous or blocking IO, right? And that's, and in order for that to work, we need multi-threading. Because if we stop one thread, we need another thread to be able to continue to serve user requests, right? And so, but it's easy to write because you write everything sequentially. However, there's a memory overhead to that because every thread requires memory and there's context switching. So when the CPU switches between the threads, right? So there's overhead there. The other sort of paradigm, the other pattern is the non-blocking or the event loop style. And so that's single-threaded. So everything runs in one thread, which means we cannot block the thread. We do get high concurrency and we get low memory. So that's the win. And it's really good for UI, so user interaction stuff, right? That's why the browser uses the event loop pattern. And it's also good for IO-bound services, things that are doing a lot of reading from network or database or disk, but it's not great for things that are CPU bound, right? Because anything that's using the CPU is blocking other things that could be happening. So that's kind of the overview of the two patterns. And so JavaScript, as you know, is the second one. And so all the browsers and most JavaScript server-side frameworks are all event-driven or non-blocking. There are some exceptions to that, like historically, like really older engines, but in general, every JavaScript you ever write will be event-driven, non-blocking. Does anybody have any questions about that stuff? So what happens if you block in JavaScript? Well, there are some things that will block the thread, right, that will halt any other execution. And so alert, right, is the most common, alert or prompt. And so we also have a synchronous style of XML HTTP requests and it's rare because that was probably a mistake in the API. They probably did not intend for that to be synchronous or at least it wasn't a good idea. And then we have some stuff in Node World that are intentionally synchronous for various reasons. But I think the one that everybody's probably familiar with is the sort of alert style where it blocks everything else that's happening. And so that's this one, right? And so that's like the page puts a dialogue up and everything pauses, right? You cannot interact or press a button, you can't even scroll. And so that's kind of a bad user experience, right? And so that's what we mean when we say a blocking interaction or blocking the thread. So how do we write concurrent software without blocking? So generally in JavaScript world, as you know, we use callbacks, right? And it's pretty straightforward. We just pass a function and when the task is finished, JavaScript will call our function. And that would be, for instance, an on click event. So you pass a function to the document, to the browser, and whenever a user clicks a button, then your callback gets fired, gets executed. Similarly, a network request, right? You're waiting for the network request to finish and then the callback happens. So this is the callback style, right? We're gonna read a file. This is more maybe server-side. We read a file. When the file's finished reading, we have our content. So does everybody understand the callback style? I mean, that's pretty much every JavaScript program you've written, right? So what's the good things? It's a good low-level abstraction for concurrency, for asynchronous actions. It performs really well. It has low overhead. There's not context switching involved. And we can do almost any asynchronous task using callbacks, right? What's the downsides? Well, doing things in callback style is really difficult, right? So doing things in sequence is difficult. Doing things in parallel is even harder. You give up your constructs that you're familiar with, like for, and while, and try, catch. And those are things that people come to JavaScript World from PHP background or from Java almost any other language, and they don't understand why you can't do these things, right? And so error handling, right? As you know, you always have to check this error parameter. Things could fail during the middle of a network request. It needs to be handled. And your code readability goes downhill pretty fast. So systems become kind of hard to maintain when there's a lot of callback asynchronous code. And so this is kind of the example of the first one, which is like the, or sorry, the giving up the constructs that programmers are familiar with, right? This is your typical example, right? So it's like every day on Stack Overflow, somebody asks, what's wrong with this code, right? And can anybody see why this code will not do what the programmer expects, right? So here we're defining an empty variable and here we're returning an empty variable. And then somewhere later, that variable will be set after the network request comes back. But to a programmer from a non-asynchronous world, this is a strange thing, right? This is a strange thing. And so that's why people new to JavaScript are always on Stack Overflow asking this question, right? So, you know, callbacks, they add complexity. It's messy to chain them, right? If you need to do three things in a row, simple things, right? Like write something to the console, wait a second, write another thing to the console, wait another second, and write something to the console. That's like a lot of callbacks, right? So it becomes messy to chain things and it's pretty hard to do things at the same time. And so this is your sequential stuff. And so this might be the most code you see on any slide, but I want you to get the idea of how the complexity grows when you're using this style, right? And we're not even doing any error checking here, right? This is like the simplified version. This is just taking three files and we just want to total the number of bytes in those files. So we have to read three things from disk, right? So we're gonna, so we're gonna stat file one, add it to the, add the size to the total, stat file two, add the size to the total, and do the same thing with number three. Every time we're getting more indented and then eventually we have our total and we can do our callback, right? And so, is anybody written code like this all the time, right? So if we want to do, so these three things, these three files, we don't have to do them one by one, right? We can just read all the files and then get the total number of bytes. So if we want to do it in parallel, it's a little harder, right? So this is kind of my naive version with no error handling of doing the same three files in parallel. So here we put the files in array, we for each and we stat each file individually, right? The problem is how do we know when we're done because the answer might come back in any order. So we have to keep track of the number that are finished and we gotta count every time one finishes, we gotta add that number and when we've reached three, then we know we're done, right? So this is kind of parallelism in callback world, right? And then there's error handling, so which we didn't even look at yet, right? So what do you do? Like we spent a lot of effort just checking if there's an error when we read file one but file two has already completed successfully, how do we handle that? And if we look at the same example with error handling, it doesn't even fit on a slide, right? Because now we have to like, if there's an error, we need to log it and return and that's not even good error handling. Like that's the minimum error handling just to log the error and just give up, right? And so we have to do it every time and so we have readability issues. So when readability is this bad, you know, systems become difficult to maintain, difficult to read, it's easy for sort of like errors and bugs in your code just to sneak in. So let's talk about promises. So we've kind of talked about callbacks, right? So promises do a little better. So this is basically a thin wrapper, a thin abstraction around callbacks. And so it gives us the chaining that we need, you know, doing task one, waiting till it finishes doing task two and continuing in sequential order. It gives us helpers to do things in parallel. It gives us error handling and they're composable, right? Because the way a promise works is we can pass around a representation of a future value. Right, so a promise is an object that represents what the value will be when the operation finishes. And so it kind of looks like this. So we read a file and then we get two things. We get then and catch. So then we can in a sense attach a handler or a callback that gets executed whenever the data is finished. So it's better than callbacks. Like it may not seem so at first. It may seem more complicated, but it is better. And so it looks, if you look at this code, like all we did was take our callback and put it inside of then, right? But we still have our callback. But it's better because we can do some chaining with that. And so I'll give you an example with, so this is a very simple function that uses setTimeOut and it just waits for 1000 milliseconds for one second and then it fulfills the promise, right? So it's the same idea as a setTimeOut, but in promise world. So the idea is that here we want to just wait one second and log something and wait another second and log another thing. And so we don't want all of that nested callbacks. So we get a better, more readable pattern here. So at least we can see first we sleep, then we do this thing and then we do this other thing. And then lastly, we do this final thing. So at least it reads in a very sequential order. And so the first thing you might notice is that we're returning something from inside our callback, right? So inside of our then handler, we're returning another promise. So remember, whenever we call sleep, it returns a promise that will fulfill or will finish in the future. Resolve, it'll resolve in the future. And so when we return a promise from in here, that's what allows us to call another then. And then the last one, we didn't return anything. So we're finished, right? So even this, right? Might be a little better than callbacks, but you know, it's not amazing. But we get flow control. So when we go back to our example of doing certain things that we have to do in series, we have to wait for one to finish and then do the next. Other things we wanna do in parallel at the same time. And so that's really hard with callbacks, but it's easier with promises. So the example would be, we wanna fetch some data about maybe the user that's logged in right now. And then we're gonna get back, we're gonna get back this user object. And then we wanna fetch the friends of that user. And then we'll return that promise, right? So every time we call fetch JSON, we're gonna get this promise. And so we'll return that promise. And then when that finishes, we have the IDs of all the friends. And so now, and this is where it becomes powerful, is now we can take these IDs and we map through them. So we go through each individual friend ID. And we wanna fetch the user details of that friend. And what I do here is I actually create an array of promises. So each time for each ID, we return a new promise. And since we're calling array.map, we get a map, we get an array of promises. And then we can call promise.all, which just waits for them all to finish, gets all the results, and we can return that promise. And then when we're finally finished our last then, we have all of the details for all of the friends in the order that they were provided, in the same order that they were in this array. So promise.all is the magic that I want you to understand from this slide. So here we're doing something that would be really hard in callback world because we're doing the first two things in sequence, right? They have, we can't get the friends until we get the user, right? So we have to do some things in sequence, but other things we can do in parallel. So that's the power of control flow with promises. So promises, even though they don't seem great at first, or at least when I first learned them, it seemed like a not much better than callbacks. Once you explore the chaining and the control flow, it is better. So error handling, we get a catch. And so we don't have to check every single time for this error. We can just attach one catch function at the end. And so exceptions will bubble through our code or bubble up the way we expect it to work in normal programming with try catch. So in this case, if we go back to our same user profiles example, I can just add one catch at the very end and grab that error. And we just know an error happened somewhere in one of these an error happened. All right, everybody with me so far? Cool. But we're still putting callbacks inside of then, right? I mean, we're still doing callbacks. It's a nicer way to do callbacks, but ultimately we eventually have to pass these functions. So can we do better? So what do we wanna do? Like we wanna just like have normal sequential programming like we're used to in other languages. And so here's what we want, right? We want to get our promise. We wanna somehow wait for the promise to finish and then we just wanna log the result, right? With no then anywhere. And so the problem is, JavaScript is fundamentally single threaded. So we can't block. And what I mean by that is, we can't just pause the program right here, wait for the promise to finish and then resume because we don't wanna block our entire thread and then you have the same problem as when you use alert and then the whole software is just not doing anything useful. So JavaScript is single threaded. We can't block, however, there's a special thing called a generator function. And so what that is, is that allows us to pause just one function and we'll go back to it later. So we're not gonna pause our whole program. We'll just pause this function. And so has anybody used or seen this generator syntax? With the star. So that's the special thing right here is the star. And then the keyword yield. So generators are not about asynchronous or event loops or they're not about doing concurrency. They're just about pausing stuff basically, right? So we get this thing called yield. We can just wait. So the idea is we just pause the execution of just this function. We wait for something and then later we will be resumed and we just console.log the string that says we're back whenever somebody has resumed us. So there needs to be something controlling this. Some function needs to resume this whenever the fetch has completed. So generators are pretty complex and I don't wanna spend a lot of time on them. I just want you to know that generator is the only thing that kind of allows this to work because we can pause our function. And it's important to understand it just pauses this function, not everything. So we take promises, we combine it with generators and we get awesome stuff. So this is the whole point. We get a single weight. So it's basically just a layer of syntax on top of generators and promises. And it looks like this. So instead of a function star, we have this async function but it's really similar to that function star, right? We use the word await and we put a promise after that. So await and then a promise and it always has to be that way. And then what that does is that await will pause it in the middle of executing this line, we just pause the whole function and we just wait but we let the event loop do other stuff and then eventually when this fetch has completed, this function gets resumed and then we have our result and now we can just console.log the result. So this is the whole idea of async await. A few things to remember. You can only use a weight inside of an async and it has to work with promises. So it's a win, it's a win because we get back our traditional constructs, right? We get back our for while, our try catch, it becomes readable. I mean, it's got some keywords in there that might seem strange at first but it flows like normal programming in any other language and normal thread blocking programming, right? And we get this kind of interop with promises. So we can use any other promise library and use it with async await because it just uses promises. So the same example or a new example of reading a file here with async await is that here we just use this read file which is a function that we've kind of made up that presumably just returns a promise and then we just wait for that and we get our content and then we convert it to a string, we parse it with JSON and we log the result. So it just reads sequentially like you'd expect and the point of this slide is that now we have our try catch back. So two things could go wrong here, right? Something could go wrong with the reading of the file, the file doesn't exist, the USB stick has been unplugged, the permissions aren't there. So this thing could fail. The other thing that could go wrong is parse. There was invalid JSON, it just doesn't, the JSON.parse can't handle what the file had in it. So these two things could have gone wrong and so this thing is going wrong in async world, right? Something is happening asynchronously while our function is paused. But this exception is just a traditional normal regular JavaScript exception. And async await doesn't care. The try will work exactly how you expect it to and it will send the error to your catch no matter which problem happened. So we can kind of not really think about async callback errors being different from any other error. And so we also get back our for loop, right? Things that are just normal programming constructs that have been around since the 70s and we understand them. And so in this case, we're combining just a regular for loop with async await and we get something really cool. So in this case, we just take a regular browser element and we're gonna loop through 100 times and move it a little bit to the right. By increasing the left value by one pixel every time, we're just gonna increase it to the right. But we wanna do it every frame, right? It's an animation. We wanna wait in between the frames. And so we're gonna wait 16 milliseconds between every adjustment of the value, of the style. So in this case, in like four lines, we've written an animation with 100 frames that happen 60 frames a second that would be really difficult to do with callbacks. But because async await just pauses our function in the middle of a loop, it just does what we kind of expect it to do and it's understandable. Does anybody have any questions about this? So it's just promises. And async function itself returns a promise. And so when we await a promise, our function pauses until the promise is ready or until it's resolved. So we can still use our normal promise stuff, right? So promise.all, which we talked about earlier, still works with async await. And here's an example of that. So here we're gonna fetch our, we're gonna get our user and we're gonna get our friends and then we're gonna map over our friends and create our array of promises just like before. But in this case, we're using await for both of the first things because we can't do the second thing until we've finished with the first thing, right? So we have to wait on those. But these promises, the fetching the friends, we can do those all at the same time. So we just create an array of promises just like before we call promise.all and then we await that. So we await them all to be done. So we just, so we, as long as the thing on the right of the await word is a promise, everything's cool. So the thing on the right needs to be a promise. And then, and then we console.logit at the end. But the thing I want you to know about this is that this whole entire function because it has this async word itself returns a promise, right?  Yes, yes you can. You can await another async function because it's just promises. So a few pro tips, don't forget to use your await. If you accidentally leave out this word because you're so excited that everything is like, normal programming again, that you kind of forget to leave out the await, it's not gonna do what you think it does. So don't forget your await. Be careful about doing too many things in sequence if you can actually do them in parallel. So now that we have our for loops back that we love, it's very tempting to just put a weight inside of a for loop. And we have to remember that if we do that, it's gonna pause that for loop every single iteration. So don't do too much in sequence if you can do it in parallel. And so the other thing is that using a weight in a map or filter function probably doesn't do what you expect. And so I should show you an example of that, but the idea is that a filter function, right? A rate of filter should take a function that returns a boolean. But if you pass an async function, it's gonna return a promise. And so probably not gonna do what you think it does. So you just have to remember that. So map, it's fine to use, but just remember that if you pass an async function into map, you're gonna get an array of promises, which might be what you want. And so even though it looks synchronous, also remember that your code has been paused and then started again later. So some of the assumptions that you might make about global state or global variables might no longer be true after your function has been resumed, because things have changed in the world while you were paused. So user input, right? It's been traditionally hard with Node.js. If you've ever written a CLI tool, you need to read some data from the user and then you gotta have a callback and then you gotta read more data from a user and it becomes really nested. And so this is just our final example. It's just that we can just create a read line function that returns a promise and we can now await it and write command line programs just like you would in Python or any other language. But we get all the advantages of Node as well. So you can use this today. Async await is in Chrome, it's in Firefox, and it's in Node. For any of the other browsers, you should use Babble, but it's actually not that bad to use Babble because async await is a pretty thin layer on top of just generators and promises. So most browsers support generators anyway. So there's not too much stuff that Babble needs to do to make this work. So thanks for listening. Does anybody have any questions? Is anybody use this stuff? Has anybody used this in production or yeah? A little bit? Oh yeah. I have a background for back and forth and in the finance department and the double screen below here, I've been facing many cases like using promises instead of all that out, which we could use. But since I'm using Angular and it encores us to use the observable, I think it's better than promising since it gets many points. Async that we don't really have to write because the function looks already run by itself. There are certain things about promises that I would like, like whenever the function is re-learning the promises, then I need to run another promises to get that value instead of using plain variable, yeah, that's all. So I think it sounds like what you're saying is when should you use it and when you shouldn't use it, kind of. And so in Angular, you shouldn't use it because they've already built that around observables. And so another example would be onclick stuff. Like you don't need promises to do onclick handlers, right? If onbuttonclick, I want to console.log or send something to display something on the screen, I don't need promises for that. I just need to attach a callback, right? So observables are a totally different abstraction. And observables are about handling events that happen multiple times over time, right? So clicks are an example, right? A click doesn't just happen once. It happens a lot of times. It can happen a lot of times. So observables allow you to filter that and map that and do really powerful things that promises would not be the right tool for that. Because a promise is designed around something that gets a result back around a server request only gets one result back, right? It doesn't happen a lot. I mean, you can send a lot of server requests, but there's not a lot of results. There's only one result, right? And so that's what promises an async awaiter for. So I would say you gotta use the right tool for the job and I do agree that observables are the right tool for the job sometimes. In the case of what you were saying about then and callbacks, I totally agree that that's not ideal. So like some of this stuff that we were looking at here, like what you were saying, you can't just get the result into a variable. You have to do all the then stuff. And that's what async await is trying to solve. So I do think that it will solve half of your question. Yeah? Yeah. Right. Yeah. Bluebird is good. Yeah. And it's the fastest out there. In fact, Bluebird is faster than some of the built-in browser versions of promises. They're just really fast. Yeah. And so that guy has a pretty good talk on performance. But yeah, so, so Bluebird is a good choice. Yeah. And generally though, I mean, I use promises because it's a standard. It's becoming a standard. It's built into the browser. A lot of the browser stuff like fetch. And like if you're in the browser and you want to get the battery percentage of the computer, you need to use promises for that. Because JavaScript is just moving towards promises, even the built-in functions. So yeah. Right. So if I learn more about your use case, there might actually be a good way to do that with promises. Yeah. I mean, I don't know. So we should talk after or shoot me a message. But yeah, I mean, there might be a great way to do that with promises. Or maybe promise is the wrong tool for that task. Right? So anyway. OK, cool. Thank you. Yeah. About error handling, do we need to use a promise project or just use things like throw or any JavaScript error handling? So you can do both. You know what a good way to explain that would be for if you're creating a new promise, if you're using. So nowhere in my slides did I use the word like new promise because generally those are library stuff. Like you expect your database library to already create the promise. You expect your fetch library to already give you a promise. And so if you need to create your own promise, then you have to use reject. But if not, you can just throw. So I guess that's a low, to answer your question, that's like a low-level tool. So that's something that library authors would use, whereas you probably don't need to use that if you're just consuming promises. Is there any limitations when you're using promises? Like how many are different, the number, the number? Yeah. So promises are not as, they use more memory than callbacks, but it's not a lot. So most of the time you don't have to worry about those limitations. So if you're on a low-end device and you have a very large amount of things happening at once, even then I don't think you would have a big problem with memory. The limitation that I know about with promises are they're not cancelable. You cannot cancel a fetch. So if you fetch data from a server and then you realize you need to cancel that, there's not really a way to cancel a fetch request. And so there's a reason for that. The people who built promises, they didn't want it to be cancelable. Because if you think about, for instance, what's our example like this one, in normal programming, if there was no await there, you can't really cancel a task in the middle of a line anyway. So promises weren't really built to be a construct where you can just cancel a request. But it is a limitation, right? They're already used testing await in early 2016. And there are also some early developers of this. And this is actually drafted for the S7 right in 2016. So what could possibly be the next expansion on S7 in a week? Right, so maybe streams, maybe some way to handle streams. So for right now, if there's some ongoing talk about what to do if we're, let's say, instead of fetching JSON, let's say we're fetching a JPEG. And that JPEG is big, and we want to handle it in chunks so as not to put it all in memory at once. Like this whole paradigm here doesn't work with that, right? This is about doing the entire task at one time and then getting the result.  So it's a little strange. Can I show you the, sorry? What is CodeFox? Yeah. Yeah, so I'm glad you asked. I would love to talk to you about CodeFox. So CodeFox is, so we're a dev team, and we're about one year old, a little over one year old. And so most of the CodeFox guys are in the back corner there, so CodeFox did. And so we build mobile applications specifically using React Native. In fact, we do kind of everything React in JavaScript. So we use a lot of Facebook tech. I was at Facebook previous to CodeFox, so that's where kind of I learned React. And we were using Async Await when I was still there in 2015. We were using GraphQL, and we were using Flow, the type system Flow. So we've kind of built our company mostly around Facebook tech. I mean, we use like Jest, even, which is from Facebook for testing. So we use a lot of Facebook tech. And it's all just open source stuff. And I'm probably a little biased, but I feel like it's really good software. So yeah, so we build native apps in React Native using a bunch of pretty modern and cool tech there. I heard about the license issue about React Native. Yeah. Like if you build something that goes a bit with Facebook, it feels real. Yeah, I don't know enough about the details of that, but I can say that I'm not really worried about it. And a lot of the big companies that are using React, like Airbnb and Netflix, and even Microsoft is using it, they aren't too worried about it. So I think it sounds scarier than it is. And so the big companies who are using that have really good lawyers that are looking through the license agreement to figure out what they can and can't do with it. Ultimately, I think that that was probably put in place for them as a protective measure from patent lawsuits, because the bigger you are, the more likely you get sued, because somebody knows that you're likely to settle out of court instead of dragging through court for 10 years. And so Oracle sues Google, and Google sues Samsung, and Samsung sues Apple, and they all just kind of sue each other. And so sometimes their best defense is to have something like that in place that says, like, if you patent infringe me, then I can reverse sue you for using my open source framework and something like that. But generally, I think it's a defensive measure and not an offensive measure, I think. Just a quick one about the promise. The promise is a pretty good way to put it, yeah. So an observable is something that can resolve a lot of times. And a promise is something that can resolve once. The difference is that observables kind of treat time as a parameter, right? So you can, I might not be explaining that perfectly. We don't use a lot of observable stuff. My understanding is that you treat a series of things that are happening in time as if they're a series of things in an array. So you kind of do functional stuff to those. So I think that that's probably a good explanation. But in reality, they're used for very different things. Yeah. So actually behind this is because the technologies are actually different from ours. Yeah, I mean, they're all just using callbacks, I guess. So that's why callbacks is kind of the primitive building block to build better abstractions. And there's lots of cool abstractions on top of callbacks. There's, like, if you think about GoRoutines, or we have sagas in Redux World. And so a lot of these things are about running, like handling concurrency in different ways. Cool. Yep. Thank you. OK, thank you.


What's the craziest DMs you ever got? Videos. Oh, man. This don't happen anymore, because I don't really go through my requests like that, but like just back, further back then. I would just be bored and just...


to Sheboygan County government working for you. My name's Adam Payne, the Sheboygan County Administrator and co-host of this program with Chairman Bill Gehring. And today we have a very special guest in light of the weather and the road conditions our Highway Commissioner, Greg Schnell. Greg, good to have you here. Thanks for having me. We're gonna talk a little bit about the roles and responsibilities of the Highway Department. Greg's been Highway Commissioner for about 14 months. That's correct. And definitely hit the ground running. And Greg, please start by sharing a little bit about your role as Highway Commissioner. Well, as you said, this is one of our most challenging times of the year as far as winter and making sure that everybody's got a safe way to get to work and an opportunity to get to work, obviously. We depend greatly upon that commerce. And the position of Highway Commissioner is a lot of times challenging and most of the time rewarding. You get to see projects start to finish and it then be evolved in a lot of different programs and get to meet a lot of special people in my position. And you came to this position with a real breadth of experience. You previously were in Manitowoc County for how many years? 17. 17 years. Yes. I worked my way up through there and worked my way into a management position and was fortunate enough to get hired on here and I really like being here. Now, many of our viewers might be thinking, well, Highway Department, how complicated is that? But there's really a lot going on depending on the season with the Highway Department.  Well, our Highway Department is very progressive in construction. We like to build roads and maintain and we own our own asphalt plant, our own crushing plant, so we produce and lay down our own asphalt and aggregate. We construct, like I said, so a lot of our planning goes, it's three to five years out as far as our larger construction projects and some of the funding that goes along with it plus the seasonal things that go along with it and the maintenance to mow the grass and control the vegetation and patch and shoulder, all those stuff that goes into it. So it's just a year on a continuous cycle, year to year, it's the same things, but sometimes it's different roles that you go into. And at this time, most of the emphasis is keeping the roads ice-free and snow-free. That's correct. And we've been challenged so far, not challenged so much, we're putting our equipment to use, which we're not normally used to in December. It seems to be, has been a slow month for the last couple of years and now we're bearing its wrath early. So we're taking care of business and I think so far it's panned out pretty well for us. How many employees do you have and what's the general components of the department? We have 117 employees currently. 103 of those are union employees which have job classifications that they perform. We have six potline shed district supervisors and they keep control of the individuals or the employees that are in that area and send them out to their work functions. We have seven staff in the office that are arranged from patrol superintendents from an engineer to administrative assistant and bookkeepers. And as you said, right now folks are real busy keeping the roads clear. Well, we say that, what are we talking about? How many roads do you have to maintain throughout the year? Sheboygan County is probably one of the largest in the states as far as how many miles of road it maintains. We have a hundred and 450 miles, I'm sorry, of lane miles of road. We also maintain 170 miles of state road and 465 miles of town roads. So we do have a lot of responsibility as far as what we have to maintain and keep clear. Let's repeat that one for our viewers. So there's a total of 450. County miles. County miles. In addition to the 450 county miles, you also maintain, say that again, please. 170 miles of state road and 465 miles of township road. That's a lot of road. Yes, it is. Our responsibilities are our priorities are we maintain the state county townships and then we go into some of the villages that we also take care of. So we wanna try to make sure that the main connectors, the larger volume, ADTs, the average daily traffic is taken care of and from there we spread out and take care of the rest of the stuff. So if you interact with someone who has absolutely no feel for the highway department in a snapshot, what would you describe as the primary roles and responsibilities of the department? Our primary roles and responsibilities would consist of the maintenance, making sure that we're providing that safe and reliable transportation that people need to get to work. We wanna make sure that we don't have potholes that are causing damages or could cause accidents. We wanna make sure that the roads are free of snow and ice so that obviously we all can get to work and generate dollars and make sure that the goods and services are delivered on time so that we all have something to do when we get to work. It's not just the commuters that have to get to work at the school and get their social activities. We need to give commerce in and out in order to keep everybody busy, especially in this county we're very factory orientated that depend upon goods and services coming from without. And before I turn it over to Chairman Gearing, I know that your department is overseen by the Transportation Committee and the Transportation Committee oversees the airport, that department, and you and Chuck Mayer have an excellent working relation from time to time your crew is working out at the airport. How's that work? We, Chuck works with the Federal Bureau of Aeronautics in order to expand our airport and has been very progressive in doing that over the last many years with the airport expansion. And our crews are called on and we can, we are asked to provide estimates for cost and we can go out there and essentially help Chuck build and keep our services going along with that help and it's paid for partially by the federal government. So it's a win-win for everybody, helps us get our airport to the size we'd like it to be, to keep it growing and helping the industry that we're supporting here. Excellent, thank you, Greg. Greg, as you know, in my other capacity, I'm also a town chairman. I know that the Highway Department works very closely with municipalities, villages and the state. How do you coordinate all of those projects? It's, well, first of all, we have good staff. We have people that are willing to step forth and do what it takes to get the job done. That's what needs to get done at the time. We, at every different level, we have people that town chairman such as yourself can contact and get the job done. If it's not getting done, they can contact me and we'll make sure they get that done. The coordination level is, everybody knows what seasons we always come into and we go full circle. So depending upon the service, if it's no removal, we know that this is the winter season we're gonna take care of business. Summer season, when we do our paving and we do those types of needs or you have those types of things done, contact us, we'll get it taken care of. The communication is the top thing. It's key to making your township be progressive and stick with the planet you have in place and us communicating with the people that supply us with the building needs that we have and to get the job taken care of. Okay, I firmly believe that there's a benefit for a township, a village to contract with the county to do their work. Can you tell our viewers what those benefits might be? Well, if you look at the, as I mentioned earlier, we have six different sheds that are strategically placed throughout the county and from those sheds we can supply different services to the area, the township, the village that's in that area and get the service taken care of. Insane, that way the village, the township doesn't have to have a building to maintain their equipment, a salt shed to store their salt, even the equipment or the employee, if that's the direction they take that they wouldn't have to pay the benefits and the wages for, they can contract us. We provide the service and we feel we have provided an efficient manner that takes care of everybody's needs and you don't have to be maintaining that equipment day after day, you get a rental rate charged to you that we get established by the state and we pass that on. Okay, what is your total budget for your department and what part of that budget would be accounted for with the winter snow plowing and salting and those activities? Our budget for 2007 is 15, almost $16 million. Anywhere between $1 million to $1.5 is normally what we'd spend on an average winter. This year we're up a little bit. If we all could be back up and remember January, February, March of last year and the latter part of that, those months we've gotten really hard with the heavy wet snow, the stuff that's hard to get rid of and it causes more heartache and headache and sometimes it takes more equipment to get that off the road. Those dollars added up. This year we're a little bit higher than what we normally would like to be and now December is definitely not helping to cause. What is the variety of equipment we have out there to attack the snow and what would be the cost to handle the average two inch snowfall like we had a couple days ago? In that type of event we would send out about 40 snow plows and again they're taking care of the state, the county and the township. So those are, and once they complete their state routes and their county routes they're gonna go and assist in helping the town roads and get that stuff taken care of so everybody can get done at the approximate time or the same time. The average cost, it can vary depending upon the timing. If it's a weekend obviously the removal is gonna be done on the weekend but if it's during the week it would generate anywhere between 20 to $50,000 and obviously there's a lot of other things that come into play. If you're gonna get wind and drifting and all that stuff, sometimes after the storm is where the cost comes in when you have to try to get pushed that stuff back and it's a constant maintenance going back to that same drift because it's out into the middle of the road and you can't control it anymore because it's not getting caught up on anything. So it's kind of a loaded question and I hope I answered your question. Sure, kind of off the skift. Do we still have a couple of Oshkoshes and snow blowers, should it really get bad? Yes we do. We did get rid of some of the Oshkosh trucks. We had 20 of them and we're down to 12 and we have them placed at our outlying district sheds that we can still support. There is some areas in the county that the roads and ditches won't take the capacity of snow that we'd like to and there's a potential that they could get blocked at some time and those are the pieces of equipment we're gonna need to open that up. So we felt comfortable keeping two at each outlying shed to provide that service. And then is there new technology that the Highway Department is using to deal with the weather? The state has provided us with a contracted service that they notify us two hours prior to an event and they put a classification on that if it's got 30% probability of precipitation that could affect pavements they're gonna call our supervisor on a call to put them on alert that you have this coming and it could be freezing rain or it could change over at this time. So we have a person that we can contact basically it's a meteorologist that's gonna give us the information we need as far as pavement temperatures what the wind direction is gonna be what the wind is gonna be. That's a great tool. We also in our supervisors trucks the state has provided us with surface temperature gauges so that when our guys are out there and depending upon what the pavement temperature is can gauge how much salt we use. If the pavement temperature is up a little bit it's gonna take a little less salt to get the ice and snow off whereas if it's too cold or cold we're gonna have to put down more salt. So there's just a few of the things that we use and then to gauge how much snow we're gonna get throughout the year we usually go out to the marsh and check how high the muskrat houses are to see and gauge the depth of snow. Have the meteorologists been pretty accurate if they see it's gonna start snowing at 330 in the southern part of the county will it happen then? You know that's just like watching the news. They're all looking at the same radars some have a different take on it but our experience is that and what they have told us is very difficult to predict the late fall, early winter weather because of the jet streams and all that stuff once they get through January they can kind of predict how things are gonna go but for the most part sometimes we use the old adage wait until it hits the ground and we'll tell you what we're gonna get. Then do you have any recommendations for our drive result there how they can be of assistance when they come up to a snow plow? The best thing is is to stay back keep your distance obviously if you can't see the operator when he's sitting there and he's looking in his mirror he can't see you and give us time we'll get to where you want to be you might get there a little later but we're gonna get you to where you want to be so give us some time and some space. And then are there any resources that I could call if I wondered how the road conditions were in Trevegan County or Manitowoc County? 1-800-ROAD-WIS would be the overall picture of Wisconsin you can during business hours which are seven to three thirty during the winter at the highway department between Monday and Friday you can call us and we'll provide the information as well as we can as far as road conditions and we get a lot of calls for I-43 and State Highway 23 to see even if they want to see if our plows are out there and our services that we provide for the winter maintenance during the week we have pretty much 24-hour coverage although in the evenings it's limited to only two people that are on there taking care of the hotspots or just monitoring what's going on I think the hotspots is after we got I-C bridges and stuff like that that they can take care of but typically if we had snow overnight most of our guys would be in by three thirty four o'clock in the morning so we can make a complete round on all of our county and state roads by seven and then we start branching out from there. Well I'm glad you're in Trevegan County came to us from Manitowoc County you're doing a great job I appreciate that, thank you Bill. And I'm glad to hear that you're checking out the muskrat how soon do you want to know how deep the snow is going to be. I figured you'd like that. I haven't heard that one for some time. What can we expect based on that? I haven't physically looked myself. Personally haven't. I may have to do that yet. Have to get Ed Harvey out. That's right, exactly. And have him take a look. Well speaking of you know being relatively new to us 14 months out the time has flown but you followed the shoes of Roger Landing who was a well respected highway commissioner for a long time for Sheboygan County did a great job and you had big shoes to fill as you know and as Chairman Gearing mentioned you've made good things happen in your short tenure you've already shown a real command of the area and the operation and just in general what are your impressions of the Sheboygan County Highway Department. I love the growth. There's a lot of potential. There's building going on. We have great support from the county board and yourself Adam and Transportation Committee. It's great to be involved. Our department like I said earlier is very proactive in construction. I like that. That's a great thing. We have a lot of stuff to offer and there's a lot of stuff in Sheboygan that Sheboygan has to offer in Sheboygan County in general and it's a great place to even raise my kids. We're here now and we moved here and it's been nice and you guys have welcomed me very well and I appreciate that very much.  And I was pleasantly surprised that the roads were in good shape particularly Highway 23 coming all the way into Sheboygan. We know that's your route so we kind of did that. You make sure that gets covered, right? What's to give our viewers a feel for just what happens, your staff are out there at what, 5 a.m. already? Aren't they helping with the commuter? What's the general game plan in that day to make sure that commute is as safe as possible? We, well again, we go back to the monitoring of the weather making sure we know what's coming the night before and obviously in the off hours, on the weekends we're not providing that 24 hour coverage the Sheriff's departments are eyes and ears.  So in that respect, our supervisor are gonna check that out and see what size of crew is gonna be needed to take care of what we have going on. So we work hand in hand with the Sheriff's department in order to make some of those calls and to make sure that we're covering and providing it safe and way into work or way to the social event. Like I said, throughout the week we have people on 24 hours. There's a little lapse of the second shift from the first shift and a little lapse from second into third but we pretty much got it all covered and if we need more at night we bring in more resources. So literally people are plowing all night long and first thing in the morning? Yep, and in the off, when there's not snow to be removed we have plenty of equipment to maintain. There's 600 pieces of equipment at our department that need something done to them so we have, there's plenty of things to do. As you look at the last year and the initiatives, the projects, the different things you've been involved in, give our viewers a flavor for that. What have been some of the major projects that the Highway Department was involved with? We had finished up the, there was a county trunk eye in a village of Adel which is a section of road that turned into just a real nice piece of highway now. There's retaining walls, new sidewalk, new curb and gutter. It was a joint effort between us and the village. We reconstructed a county trunk PEP between Willow Road and 57 Joint Project between us and the city of Plymouth. We made the pavement wider so they'll accommodate bike traffic in the future for their industrial park. And then one of the major ones that we just finished up at the last part of the year, here's the Interurban Trail, the connection between Woosburg and Cedar Grove which has been utilized a lot by even Adam and myself. Greg and I had a chance to bike that and it wasn't a pretty picture but we certainly enjoyed that, about a three mile stretch. It's just beautiful if you haven't gotten out to the Interurban Trail again between Woosburg and Cedar Grove. Beautiful stretch of non-motorized. And that piece goes all the way through Milwaukee and all the way down to Interurban Trail as a long piece and it starts here in Sheboygan and we hope to in the future continue that through Sheboygan. You gave a nice overview of the areas your department's involved with but one you didn't touch on until just now is you personally have been involved with the non-motorized transportation program for Sheboygan County and the opportunity to improve some of our networks throughout the county. If I recall correctly, we're gonna have some improvements made to the old Plank Trail along 23 here next year, isn't that right? That's correct. There's a section that had not been rebuilt or hasn't been built to the standards that the section from County Trunk M to the West, yeah to the West was. And there's an opportunity here with, there's a major gas line that'll be running across Sheboygan County and they're gonna utilize some of that right away which in turn doesn't sound good but they're gonna wreck some of the trail that's currently there. So we're gonna get that built up to standards and hopefully continue to build all the way out to County Trunk M in the future with some of that non-motorized money. We also have some non-motorized money going to extending pay of shoulders on County Trunk A and M and we applied for some for County Trunk O in connection with our construction project that's gonna take us from Taylor Drive and eventually all the way out to 32. So it's gonna do a lot of good things. Some of it's a little challenging at this early start of it but there's no boiler plate set in stone we're a pilot program and there's a lot of things that are all learning as we progress through the process. Another activity that folks have been keeping their eyes on locally is just what's happening with Highway 23 and the kind of the ongoing saga when it's gonna become a four lane and will it be 2010 or 12 or 14 and there's been some discussions amongst legislators locally about that but where the rubber hits the road is the work that you and your staff do and I know that you've already been doing some work to prepare for that. I think some people are of the impression well nothing's really happened yet and things won't get rolling until after 2010 but what are some of the activities already in play to expand 23 from a two lane to a four lane? There's a real estate division at the DOT has been progressively buying properties and trying to buy the right away that's gonna be in need for expanding that to a four lane. Currently our department is demoing demolition on a barn that's on the right on the Fundal Action Boykin County line that was a fireman that was bought up by the state in order to enhance the road. So there is progression being made and I think it's gonna happen it's just that we have to cut through some of the red tape and get to the construction. What are some of the major projects you have coming up in 2008? 2008 is gonna be a tremendously busy year for our department. We, through the help of yourself and the finance we're gonna be doing some creative accounting for the construction wise we're gonna be building County Trunk V which is two and a half miles of rule road. We're building three quarters of a mile of County Trunk O from Taylor to I-43 plus with freeing up some money and doing some different things and in our capital projects we're gonna be paving about 25 to 30 miles of road. That's gonna be a very aggressive year and we have also some road to relocate at the airport so lots of construction next year we're looking forward to it and we're just in the process now of putting together our schedule just so that we have everything lined up so we can continue to flow. And none of that gets done if the County Board doesn't appropriate the dollars you need to make it happen and as you said the budget for the highway department looks pretty good for 08 and in part because of the sale of Sunny Ridge and some other things that allowed the County Board to move more resources to departments that the last few years it really had to tighten their belt more and more. And you touched on an area with the overlay I recall a report that your staff prepared a couple of years ago now where we weren't really keeping up with some of those maintenance or overlay responsibilities we're hoping to give that a little kick here in 08 as you just touched on. But what about the future? How do you see the cost of fuel and oil impacting your budget and your ability to keep up with this work? Well, it's a stretch it's gonna be a challenge and we're not alone. Everybody's faced with the same things and obviously if oil's going up on asphalt and it's going up for all of us to heat our homes and to drive our vehicles and what it does is it challenges us to find other alternatives or do different things in order to stretch that dollar and we're working at those where there's all our alternatives as far as using different types of oil like waste oil in order to heat your asphalt plant so you don't have to depend upon all those other resources that you have to buy and import it from other countries. So there's ways that are getting around it but it's gonna take a lot of time and bureaucracy to get to that point but I think in the future there's gonna be strides made in order to provide a cheaper alternative to what we're using now. In a sense everything goes up. Your cost of your equipment if the fuel is higher obviously that rental rate goes up and the oil price goes up so you just don't get as much done for what you have to spend and that's a challenge for everybody but I think we're making the right steps in the right direction as long as we can keep on that pace. As certainly the three of us know but some of our viewers may not be aware the county board adopted a property tax levy reduction which is the first one in 21 years even though they were able to provide for a property tax reduction overall most county departments including the highway department received at least a 3% increase some a little bit more but what continues to be very challenging for us in the county is when you have unfunded or underfunded state mandates many of which were responsible for providing at the local level and then you have the realities of fuel costs and oil costs going up a lot more than two, three percent which is what most people would like I think the line held on with property tax increases it makes it difficult and what we find at the county level is that folks certainly wanna see property tax relief or they want us to hold the line but they don't wanna see their services reduced or we don't get too many suggestions on what areas not to plow or what programs to cut back on so it continues to be a challenge and I hope Greg you're gonna be here for some time to help us work through that process I'm a young guy I'm not going too far so well thank you for joining us this month and I hope that you got a nice overview of the highway department and it's programs and services if you have questions or suggestions please don't hesitate to contact Greg Schnell directly our highway commissioner for Sheboygan County or chairman Bill Gehring or myself and we're also going into an election year in April we'll be looking at an election for the full county board there are 34 county board supervisors my bet is some of you out there may not know who your local elected county board supervisor is but trust me they're involved with making very important decisions about how your property taxes are spent so if you don't know please look into it and please get engaged in that process as we go forward but on behalf of chairman Gehring and the Sheboygan County board thank you for joining us next month Julie Glancy our county clerk's gonna be here to talk a little bit about the upcoming election process and how that works as well as some of the very important services she provides in the county clerk's office so again until then on behalf of county board chairman Bill Gehring and the county board thanks for joining us


mag the rookie whatever it is i'm just been magging every single one okay it makes sense i hope like for some reason going to be a michael harris the second 21 of 25 rookie jersey out of four the braves there you go itlanta a lot of michael harris coming out of this which is awesome he was the lat uh rookie the last year yes sir yes sir learning i'm getting there learning perfect very nice again we'll uh mag that michael harris so i found that again itlanta what position to see is that outfield i think it's outfield probably this is rookie of the year award winners that is yep there it is eight of fan mike trow first trow i have pulled this year out of sterling congrats angels god angel's destroying it joey a there you go buddy i kind of agree with that rob should have been spencer strider he might win the scion this year nice trowdy on the triple eight of ten let's go dude after he destroyed us last night in mlb worked by spencer strider in the show online dude absolutely worked that's stupid dude such a broken card all right we've got saw young award winners and tops all-star rookie cup team start with these saw young award winners it might be yes it is justin verlander one of one game news letter going to the astros nice one there houston uh yep that is houston astros is braden a congrats braden this one there buddy pulled the uh what was it i think the r in that one or i pulled another verlander i was gonna say it wasn't when i was here what's up chad last one here tops all uh all star rookie cup team i think forest pulled like two of the letters in pudge oh yeah i know i pulled two clavins too i pulled i think the a and the i or something weird yeah and we both pulled uh we pulled the n and the o and nola for air nola too so i wanted to get a picture of you saying no uh nice three of 25 won soto for the padres no not so we are not we're a group uh selling group break spots nice one there three of 25 for the padres Juan soto uh rossi congrats ross do a quick recap here guys uh start with our bowman autos we've got aria alamonte randed asus gabin cross robert peres jr nor uh to 499 norwellian sidenio how you lead andrew taylor purple to 250 brann walter blues to 150 that is uh ben brown kuma rocker and diego hernandez gold daemon keith yes cal's mind you don't get scared i know i saw her i heard him don't worry i heard him this time this is done maddenly anthony rizzo uh rod caru orville Miguel cabrera uh null and ryan mags cards we had a one soto to 25 we had a game use letter justin berlander one of one we had a eight of ten mic trout for the uh um angels and then a michael harris 21 of 25 rookie jersey that will do it for the break thank you guys again for the fill next up we've got nothing i'm also off how are you yeah got you and we got kenzie 10 a.m. yeah there you go kenzie tomorrow at 10 a.m. everybody um thanks again for uh all the support today guys do appreciate it let me drop you a link to the break schedule again kenzie tomorrow morning at 10 a.m. with personals um and then four is starting at five with um group breaks so it's gonna be a good time i'll see you guys again on monday with uh over on match channel i'll be top loading for him and then i'll be breaking again on tuesday so thank you all i do appreciate it have a good one everybody


Gwdaydd i gymryd â'r cymdeithasol ynghylch i'n gwrthoedd a'r cymdeithasol yn enthylch Cymru yn y rastafell Ffostrafulton, cymdeithasol ynghylch i'r Cyfnod. Gwdayddiant. Arddod wrth gwrs yn gwnaeth gwirionedd yn ddechrau, ac yn ddod yn gwrthod, rydyn ni'n gweld i weld i chi ni gynnalu sicr oedden nhw i'n dychmo. Closing your eyes and imagine the shape of her eyes, the curve of his smile, the sound of their laughter called a mind, the way he smells, the way she feels, and that look they give you that says, I've had just about enough. If you can hold that face, that feeling, that love, then consider this, 100 trillion cells, 7 million years of evolution, 40 weeks gestation, years of love and lessons and laughter, tears no doubt too, have gone into that one person you brought to mind who holds your heart. Now consider this, our planet home holds over 7 billion souls. Every single one a unique one off never to be repeated ever again creation. We are over 7 billion and behind every number is somebody's name and behind every statistic is somebody's story, dream, unique purpose. That's where we're from, our first thought wasn't Edinburgh, Glasgow, South Carolina or Scotland, but I'm a citizen of planet earth, I'm part of a global neighborhood, intricately interrelated, one family and indivisible, as vast as the ocean, as intimate as a face, a smell, a feeling, a touch. Them and us is a myth we can no longer afford to tolerate. Never has it been more important for the world to embrace this truth. No one is an only child. Scotland though small is a beacon. Climate justice grounded and know them and us. So will we stretch for what's necessary rather than settle for what's feasible now? Will we embed policies that cherish those who are pushed to the margins even when it means all of us moving over? A small part of something bigger. Thank you for governing us well. When decisions loom, look wide, salty drop in a deep blue ocean, grain of sand on an endless white beach, leaf on a tree in a vast majestic forest, pedal in a sea of poppies, blade of grass in a field green and growing, we're part of something bigger. Note in a song, voice in a choir, instrument in a symphony of sound, word on a page, chapter in a story, character in an evolving saga, facing a crowd, one in a million or a billion or seven or eight, part of something bigger. Being human depends on others to be human with. So let's embrace our interdependency. And when decisions loom, look wide. Thank you.


So, next up in our list of continuous practices, we have the topic of continuous experimentation. So what this means is that we continuously run experiments with our users. And the way we look at experiments is in the scientific sense of the word experiment. So, what you have, for example, when you do drug testing, when you do clinical trials in medicine, like you currently see with the COVID vaccines, that you have two groups in the easiest case. This can get very complex. One of the groups gets the actual drug, the other group gets a placebo. None of them knows what they get, so they are not sure whether they get the real drug or the placebo, and then you somehow measure the effect. So you try to see whether there is any kind of effect of the drug over the placebo. And this is pretty much also what we would like to do in software. The difference is, of course, that we don't test any drugs, but what we do instead is we test features. So we could, for example, test feature A here, and here we test a slightly different version of the feature, feature A prime. So we want to see, OK, if we implement it in one way, is it better than the other and measure the outcome? So that's essentially what the idea of continuous experimentation is, and we do this continuously at runtime in our productive system. So that's the big difference, maybe, to a clinical trial. We don't do this with a special group, but we run it live, so to say. There are different versions of doing that. So there is, for example, something that is known as a cannery release. The name comes from the old mining times when the miners would take a cannery bird in a cage down into the mine. And if the bird would die, then there was an indication that there was some gases released that are toxic, so they would try to get out of there. That's essentially what it is. It's kind of a warning sign, something is wrong. And what you do is, basically, you have a new release, so let's say a new feature that you release, release N, and you have the current version. And you try to keep pretty much everything as it is, but a certain percentage of the users, maybe 5%, there's a common number, 5% get the new release, the others get the old version, the stable release that you're running. And this means if something is seriously wrong in your release, there's a bug you haven't found, then you will, pretty soon, probably, there's a good chance that you will get some kind of warning. There are lots of bugs happening, there are lots of errors happening here, people are complaining, it's some kind of early warning, but 95% of your users are fine. So you are making sure that you don't crash your business, for example, by releasing it to everybody, but you just get an early indication, so that's a so-called cannery release. Then there's something else called AB testing. This is essentially what I mentioned here, that you have a feature, or you have a version A and you have a version B, this could be different features, it could be the same feature in two different variants, it could be the old version, the new version, and instead of doing 5%, 95%, you do 50-50, so you test different, kind of half the proportion of the users goes to A, the other goes to B, so that's why it's AB testing. So that's another option you can do, ideally, of course, compared to the cannery release, you do this when you already have an indication that these things are stable, they're not so many errors. If you would do this with the experimental release N that we have up here, there is a fairly high chance, if there are errors, that a large part of your user base gets really, really annoyed, because things don't work. And then finally, to mention, we have something that is called a dark launch, this is where we actually don't really expose the new feature, let's say our new release to anybody, we send 100%, everybody uses the version, we are still having the stable version, but in the background, you are also replicating, kind of duplicating the traffic, whatever actions the users are doing, you send also to the other version just to test. So the user never gets any answer from that, they never see that anything is wrong, but you are essentially simulating that the users are using your new release, and you see whether this would cause any errors. So the good thing about that is that the user doesn't see anything of that, it doesn't feel, for example, slower to the user, you might do this on a different server, but you are getting a real user usage scenario, you're getting the real actions that the user is doing, you don't do anything artificial basically, so that's a dark launch. These are some of the variants, I'm sure there are many more, but you should have heard definitely the first two, I think the dark launch is a bit less common, but it's good to know them. Now, if we talk about all of this, what is important to know? I think what you might first be interested in is the technical aspect, how do we actually implement this? This looks advanced, well thought through, it hopefully is, but in the implementation side it could be pretty simple. So something that we often have is, for example, a so-called feature toggle. A toggle is a switch that is kind of on off, and a feature toggle is literally just a statement or a flag in your configuration or anything like that, that switches a feature on or off. So this could be as simple as an if statement in the code. If a certain variable is set, then enable feature A, otherwise don't. Or if, for example, here you want to have 50% here, 50% here, you just choose a random number between 0 and 1, if it's smaller than 0.5, you send the people to feature A, if it's larger than 0.5, larger equals, you send them to feature B. It's just an if-else statement. So it could be as simple as that. Of course, you can do this more advanced. You could do this on a network level that you have, for example, different nodes. This is on one node somewhere in the cloud. This is on another node. And you actually have some kind of routing that sends 50% here, 50% there. So there are different ways to do this, but this could be on a very basic level. So it doesn't have to be advanced necessarily. I think if you have a lot of these, at some point you might need to consider performance. If there are a lot of ifs and else and different loops just to make sure which features you enable, that can be questioned, but generally it doesn't have to be very complicated. So that's necessarily, that could be enough. The other aspect of tech is this one here. How do we actually measure measurement? And there are nowadays a lot of tools that help you with this. So that kind of automatically collect usage data, for example, but you might also have to implement this yourself. And that means going into your code and actually adding things, using libraries for measurement, starting with basic logging maybe, but you have to have some kind of way of measuring. And we will a bit later in this module also quickly look into measurement theory and software engineering. Just to give you a quick introduction of what is it we might want to measure here. So you have to have some kind of way of telling what which feature is actually better or is something wrong. And I've thrown in a number of words already. I've mentioned, well, there are lots of arrows. So can you measure lots of arrows? There are maybe here ways of getting a similar answer. For example, you run a survey with the users, did they like it? Or you just look at how many people are leaving the website, for example? How many people go to the next page or not? So different ways here. But then finally, and this is very important, there is the scientific aspect here. So this is actually, this is, that's why I mentioned medicine here. These kind of experiments have been studied in detail. There are a lot of guidelines on how to do them properly. And if you ignore them, there's a good chance that your results will be pretty bad. And that for a number of reasons. So for example, we have discussed this in elicitation and requirements that you want to get different stakeholders, for example, if you do interviews, this is the same here. You want to make sure that 50% and 50% are maybe similar groups. So this is about sampling. How do you make sure that you get similar people here? And one thing you do in clinical trials that you should maybe do here is simply random selection. So it's not that 50% that get feature A are all in North America and the other 50% are in Asia or Europe. So you need to be careful here. Similarly, if the 5% that get your new release and the cannery release, if those are sort of the early adopters or the power users, maybe those are the ones that don't care that much about bugs. So then they won't tell you a lot about the kind of issues you're getting. So this is something you need to be very careful about. And the same goes if you start mixing different features. So if you do feature A, B, and C here and feature B, E, and F, then you get into controlled experiments and there are very different structures of how to do them. You need to be very careful that you actually measure this properly. This is something I cannot quite cover in this course, but I would definitely recommend you if you want to do this on an advanced level that you actually read up a bit on experimental science, how to actually conduct these experiments in a meaningful way. Because this is not as simple as it might seem in many cases. When you see these results and when you see these sketches, it always looks very basic, but this very quickly becomes extremely complicated. So definitely I would recommend you if you want to do this, look up the details.


Meanwhile, cash prizes were awarded to winners of the Ministry of Youth Development and Sports logo competition. This latest venture of the ministry is part of an overall thrust to enhance its image and increase visibility. Rianne O'Brien from the Information Unit filed this report. This of a logo competition, organized by the Ministry of Youth Development and Sports to enhance its image, were presented with their prizes during a ceremony held at the ministry's conference room recently. In the last few months, the ministry has embarked on a number of initiatives to increase its functioning and public image. It is the ministry's hope that the logo will create a refreshing new look to help connect with the youth, support and align with the youth of the nation, and give the ministry an image that young people can identify with. After responsible for youth development and sports, the Honourable Ed Manester-Fran was on hand for the presentation. Once we continued to use the code of arms for all government agencies, we felt it necessary to brand the Ministry of Youth Development and Sports. So against this backdrop, we threw out that challenge that you took with open arms, and we are told that about 70 individuals on Ireland responded to the challenge. And as far as I'm told, well, I should say as far as I can see, that it's a beautiful logo, and I'm sure the whole of St. Lucia will embrace it. Stuart Cauldron emerged winner of the competition and received the cash prize of $1,000. The prize went to Neil John, who was presented with $500, while Brandon Scott was in third place and received $250 for his submission. From the Ministry of Youth Development and Sports, I'm Ryan O'Brien.