All right cyber traders welcome on back to wrap things up for this week Friday December 3rd shortly after 2 30 p.m Eastern time welcome on back for our afternoon meeting This legavelin trade long ever an LGVN is pretty much the embodiment of how this day has gone with the markets dropping off all together Great to see Michael great to see Brian all this otherwise live in cyber group great to see you all coming on back right now Gary and Leda and Ron loud and clear from everyone seems like which is good Grant included Michael perfect. All right, and then again, of course if you're joining us on social media Facebook live or YouTube as always welcome I'm back. So, you know what we'll move away from LGVN, you know at this point. It's hard to borrow It's been hard to borrow. We're not gonna try and short it on the way down because we can't Practically what we'll do is just go right from top to bottom otherwise. We'll do Bitcoin at the end But today's been a fantastic day if you're short So, you know a couple of stocks that we've been shorting from earlier and then heading into this very meeting So we'll talk about those two, but no better place to start than right at the top of the gainers list here otherwise Hopefully the audio is coming in sharp. Hopefully it's there's no like real weird issues with the audio right now I feel like there is from my mic. I don't know. Hopefully I'm just paranoid nonetheless though Just starting at the top the HGTY trade up over 53 percent very thin order book So again, not really too much to write home about on that seems We'll kind of skip over that for right now Now this CYD stock at least this CYD stock is something that we can keep our eyes on we had this on our morning watch list It was one of the top percent gainers back from 9 a.m And with that well after the market did open at least to provide it a little slingshot gave us a nice little under and Over from 460 moved up pretty nicely at the time But damn this things had a hell of a tough time trying to break above historical resistance off of 525 You could just pretty much go to the daily chart for that. So I'll just quickly draw a line 5 22 5 25 practically right here Right, you could just see such a big support such a big resistance at first and then it tanked after that point So, you know to see this make the squeeze up the grind up this morning No surprise where we would find a resistance on this trade. It was practically right off that 25 level I mean peaked above it a couple of times, but otherwise held really well under it Now on this one trade, I'll tell you right now. I'm long on the stock right now I took a 5 cent loss just earlier and that was actually on a partial fill I got partially filled on a thousand shares. It was 600 shares I got filled on So I'm just bringing that up because I entered the trade again. I wanted to give it one last shot So it's on this like odd 600 share position that I'm in on this a CYD from 452 I stopped set right at my entry price. So God forbid if this tanks, you know as we go through this meeting I'll get stopped out break even very likely. So, you know, I don't know either way just because I'm in it doesn't mean I'm gonna put it on our watch list. I'm more hopeful than anything No, you'd like to think if it's not gonna break higher There's only one other way it's gonna go and that was like over here So if it's not gonna break lower if it's gonna give us one more chance, you know what I'll take it I took it. I'm not fully confident of putting this on our main afternoon list just yet You know if you come back to this at the end of the meeting and it ends up showing a little more signs of life Then perhaps I feel more confident to put it on our list for you folks If you're not in from 450 now, I just feel like you're chasing So, you know, see if there's any more signs of life on the stock at least at the end of this meeting All right, so we got the CFVI stock at the warrants are number four I don't know where CFVI is here itself on the gainers list. We'll find it the actual equity not the warrants Now otherwise though, there's a few other things on the percent gainers list as you could see But with the markets dropping off the S&P the Nasdaq the Dow entirely all the VIX index the Volatility slash fear index is moving up and you know this ETF UVXY that follows the VIX in particular is Obviously trending up so you know on days like today and days like we had back from March of 2020 and then beginning at the beginning of the Pandemic practically, you know just to say for the most part well Hey, we'll look at these ETFs more frequently in that regard. So UVXY VIX or VXX Vixie VIXY here number 12% gainer, you know, they're all making practically the same move, right? All right, so we'll see it all so we can get I mean I saw a crispy cream go against the grain here This was actually a stock that was like moving real steady on the way up as the markets were falling kind of odd I don't know why I don't think there was any like news that came out because I don't think there was much activity from pre-market But either way the stock's pulling back down now so not much to adhere for the afternoon That's gonna be the theme here at least on the gainer side and be honest with you I probably should have started off in the losers list here. I obviously never do that But probably find more opportunity on the losers list heading into the close for a day like today compared to a day like yesterday MGI so you day I called us out earlier and I just push up at least heading into the early afternoon Looks like the wheels fell off on this trade though At least it's shortable. Don't get me wrong and you can consider this tradeable I want to see if there's better opportunities otherwise on the losers list here I kind of rummage through the gainer side pretty quick, but Let's see Expo familiar name. It's moving up. You know, it's like slow as molasses otherwise, but You know what? Maybe I'll come back to this at the end You know if there's like legitimately nothing else that will put on our list then I wouldn't mind putting the Expo on our list in that case ISPC pop and drop that came fast And I guess I didn't find CFE I it's probably somewhere around there on the gainers list We saw CFE I make a really nice push-up earlier and wow look at that go, huh? It's still pushing so it's up eight percent. Yeah, I would have found it somewhere here going across the gainers list I went quick, but I most importantly on the stock I was wrong on something and you know, I'm always wrong day to day, right? You know every day I'm wrong on something as we're all human But it's to say that is this was pushing up and up and up and up and up and up Well, we called it out as was breaking above 1050, but for as much as it's pushing up You'd like to anticipate a false breakout at some point and for as big of a level as we had at 1092 And I'll at 11 from yesterday then I was Sure as can be that this would end up making a false breakout over 1092 and for it to come crashing back down under it Well, it broke above 1092 and made like a 50 cent pop off that price So that's where you can come back and say well, hey, you know what when a stock breaks over a big resistance And it actually moves pretty nicely off it Well at that point in that case you'd like to think the first time it comes back down to that level that it could hold This support so it took a little extra, you know a little under and over from the 1092 level at least But once it broke back above 1092 namely 11 here you could see the stock ended up propelling up a lot higher So nice move on CFE. Yeah, yeah, I'll definitely put this on the watch list for right now Probably the only stock that we found so far That's completely going against the grain as the markets are dropping off. So still be wary on this trade It looks like it's coming back down rather fast now So, you know, I wouldn't expect 1092 to hold again if there is another time Now maybe like for a minute, but then if it comes crashing back down again, then you know, it's gonna happen So yeah for right now, I'll put this on our list. It's pretty good See if there's anything on the loser side now. She's got a bunch of stocks getting crushed. Holy smoke CELZ down 56% Can't short it. It's like flat. So there's no like trade on that really for us ESPR pretty interesting. Wow. I missed this just now I mean, we all did in cyber group and all of a sudden social media like we all just missed this move What I mean by that is it broke under five It broke right back above five and that actually could have been a nice little, you know entry nice little long entry there But if you're not in from that point Then the question is how far with this push up to and if anything 515 520 ish seems to be resistant So, you know, I don't know it's down 42 percent. It can't short it The move was off of five if you're in from there right now, then hey, you're looking good But if not, then I'd move on All right, so let's keep it going with my home office door open I don't know if you just heard my loudest can be drier just go off. So I'm working from home today It's been a pretty slow day. So a good day to get the errands done, right? All right, so we keep it going. Otherwise the SW BI trade was getting clipped earlier today, too And I think this had to do with like a downgrade from some firms So ended up leading to a big drop as soon as the market opened up You could see that on the five-minute chart You know just smooth this can be downtrend all the way down towards low of the day roughly off of that 16 level and For right now, although it's trying to get back up. I feel like this could be In line for one more drop coming up actually. So, you know what? I'll add this to our list Smith and West and SW BI Shortable, you know, it's made a big move trading still decent amount of volume across the day so Yeah, why not? All right, so with the markets dropping off, you know, what else is dropping off folks I'll get to crypto Bitcoin and the others at the end Canon here is a Bitcoin mining affiliated stock Taking a big hit and with that I'll get to my swing trade or lack thereof now at this point I added more shares to BTBT yesterday at nine But then I'll get to that here in a moment, but I ended up closing out that swing this morning. I took a loss So You win a you win a lot. You lose a few. That's my line. You know the saying you win some you lose some You win a lot You lose a few so I lost on that one. I'll get to that trade in a bit Li at least Li auto near the lows of the day just moving with the market seemingly So, you know what I'll add this to our list is a short alongside the SW BI that looks pretty good All right. Where is it? Where is it? Come on now? We got Mara down 15% getting whacked Why not right and hey typically for these crypto mining affiliated stocks heading into the close believe it or not Well, it's not even believe it or not because if you've been watching this afternoon meeting for a lengthy amount of time day over day You know as we see these stocks down big heading into the afternoon They rarely ever continue in their direction with Mara down 16% still you got to watch the markets the SMP and the Dow both and alongside that Bitcoin entirely but You know what I'll tell you if this drops down at 41 this could be a nice little dead cap balance entry on Mara Let's see a break under 41 right back above 41 and that could be the play We'll see between this and riot right our IOT we have NCLH down cruise line down big right now, too So if I'm adding Mara, I may as well add riot to our list, you know both pretty much trade the same Where is NCLH I saw that down big just before too and I was gonna transition to CCL because I'm currently short on CCL Man I would have found NCLH there It was there for a moment and CLH is down over 5% So for right now, I mean it's kind of beginning to hold over 18 I thought I saw in the on the losers list there the CCL trade though This is the trade that I'm short on right now I was I took like a four or three cent loss earlier and then I jumped back in on the trade later on right off of 1748 here From that point. I mean I was anticipating the markets to drop off So, you know, it's just to say this has been a great trade moving with the SMP and the spies You could see on my five-minute chart So I took half my position out at 1688 before we started this meeting I had hopes of this dropping out into at least 1675 so I still have half left And I got my stop on that half at I think 1720 So God forbid if the shoots up a little bit more and the markets look to make a small correction going back up Then I'd like to see what would happen at 1720 at that price, but with the entry at 1748 I'm feeling pretty good about it. So I'm gonna hang on to my short and with that I mean, hey, I don't mind adding CCL to our list here in this case, you know the was it the freakin See why 8d stock we'll get back to that I wasn't nearly as confident about putting that on our list at the time as I am with CCL as a short But as we get back to that see why 8d stock It's looking just a little bit better. Isn't it isn't it now Norman? So, you know what? You might feel like you may have chased it or you might be chasing it if you didn't get in from where we were last watching it But I'm not out of the doghouse on the stock yet, but like by any measure I'm not out of the doghouse on this trade at all what I mean by that is well We have resistance and it's pretty much right here at 482 482 is the opening bell print price on this trade earlier today So, you know, you could see earlier. It made a false breakout here came back down So for right now, I mean hey, it's looking better than it was just before so you know what I'll add it see why 8d if it if it ends up tanking as soon as we finish up this meeting then I would just move on from it You day in the chat board saying CRKR is an interesting Bitcoin miner Unfortunately, it's not interesting Now you say that because it's only trading 18,000 shares total on the whole day. That's nothing now It's an OTC stock also. So I personally don't have data for OTC on my platform We don't really trade OTC here in the trading room You know, perhaps if it gets listed on the NASDAQ or the NYSE that could be pretty interesting We've come to know in other crypto miners in the past hut being one of them each you tape and hive Those are I think formerly OTC stocks that became listed on the major Exchanges like the NASDAQ as you could see here. This one's taken a bit of a hit to this one I don't know. It's not as volatile as the Mara and Wright trades are and that's not as good here in this case pretty slow All right, we'll check out my unfortunate BTBT trade, you know yesterday I ended up jumping into this I ended up adding more shares to my position at 9 bucks in total now at this point with the second half My entry was 500 shares all together You don't look to date You don't look to swing trade the same amount of shares you look to day trade in a position folks If I was still be the first to tell you that you would actually be the first to tell you trade like 8 to time 8 to 10 times less On a swing than you would a day trade. So this was like half size in total for me But still took a loss I was in from 11 and then I added more at 9 yesterday afternoon in hopes of Bitcoin making a nice bounce back up It did not so I ended up getting out of my swing entirely at 860. So I took a bit of a hit Yeah, it's not all about the good stuff folks I'll tell you about the losses too now with that at least let's just jump to Bitcoin because hey You know I took a loss on BTBT as a swing But once I happen to see the tide to turn on Bitcoin, then I'll definitely be antsy on re-entering Here's the thing though, and you know how bullish I am on Bitcoin But again, we're here to talk about all scenarios including a further drop So where we last left off on Bitcoin it wasn't actually this line It was just from back from Wednesday of this week as it was beginning to try and bounce back up However, just over the last 12 to 18 hours big drop again This is a six hour graph so with the markets dropping we're seeing Bitcoin continue to pull back But now as you could see it's breaking this, you know white trend line that I had here This was holding for so long dating back to mid-July So it actually broke under it here for a smidge But then it made the slingshot pop right back up and that's where I last bought when I got back from My Florida vacation So it is to say at least now at this beginning to pull back and breaking under the white trend line now Really strongly doesn't seem too pretty does not seem too pretty. So where could we anticipate Bitcoin making a bounce from should it continue to drop Well, we ended up seeing it kind of hold over the 500 pretty nicely here If it ends up kind of making the same tussle with the 500 as it did back from late September Then perhaps we could see it drop a little bit closer to 50k Maybe a little bit above 50k. Maybe it kind of teases around 50k slightly under Let's jump to the daily chart here for right now because again, we got to look kind of a Longer term. That's why I never really go into a 15 minute graph or a one minute chart for bitcoin really So with this well, you could see there are some other trends that I drew and I'm not expecting those per se to You know hold over time But in relation to the moving averages that I have here The 200 on the daily chart would be the next moving average support that I have Well, it last kind of chopped around there dating back to that late September time and then it ran So perhaps, you know in a best case or not best case an error best case would be it holds here and flies But you know, let's say if this comes down and like kind of kisses touches the 200 and then pops Like no tussle like it did back from late September Then that could be right around that 50,000 mark. Maybe 51,000 50,000 So I'm not going to buy anymore is what I'm telling you until it ends up making that move If it ends up popping and then suddenly running All right, so be it. I have enough bitcoin to go around actually I can't say that but you know, if I don't have a chance to add anymore and we happen to see a giant run I'm content. I'm happy. So I'm going to try and catch the dips as we go if there are any As I try to do back from here So you will see All right, folks that's all I got for you at least in bitcoin land If there's anything else otherwise up down left right that you would want me to look at here in terms of stocks Let me know here in the chat board Yeah, norman that was a good exit there that jumping in at 476 there in between the levels never really good ideas So that was a good exit there at least all right going once going twice going thrice I think that we're pretty much good folks I will look lastly one more time on benzinga pro the signals page seeing if there's anything there there that we had missed I'll tell you there's actually one that we did miss there is one that we missed actually let's jump to it It's not the fastest moving stock Uh, we'll see though ryan probably be a bit frustrated with this tigr is moving back up tigr got about a 23 000 share iceberg on the bid at 5 49 and it's at a new high of the day now So this is where I'll come to you and say hey for as much as this stock moved up and up and up earlier For the first time it's going to test a big resistance a la 550 I would expect for it to fail Well, that's what I said on the cfbi stock and unfortunately I was wrong there But that resistance became support led to a great trade, you know about 10 minutes afterwards here in the case of tigr Well, here's the first real test of resistance It failed here's the second test. This looks a little bit better right now So hopefully there's a lot more left to this run on tigr I'll add this here Got a nice like a mishmash here of trades to work with between stocks that are moving down with the market that are Continuing to drop We have some stocks that are actually going against the grain to a degree like cyad The cfbi stock tigr And a couple of others in between folks, so I'll tell you I think that we're pretty much good to we're pretty much good to go Feeling good about this list So for all of us on social media facebook live youtube I appreciate you sticking with me each and every day each and every afternoon. Enjoy the weekends If you have any questions about what we do at separate training university, you have a couple of options I always like to leave my email here in the chat board for all of you But otherwise if you would like to join us live monday to friday live inside our trading room Especially going into this market close for all of us there. I'll be back on the mic right at 3 p.m Give me about a 10 or 12 minute break. I don't have a 3 p.m. Coach And I'll be I'll be right back on the sticks at 3 p.m For for all of you you'd like to join us live though inside our trading room You can go right down to the link on the banner below just to get yourself started on the stream there for all of us there Right now later brine michael included. I look forward to talking to you folks coming up pretty shortly. Take care


Daily Tech News show is made possible by its listeners, thanks to all of you, including Tim Deputy, Brandon Brooks, and Hector Bones. Coming up on DTNS, Why You Will Love, I'm not even kidding, the new Bluetooth LE audio standard, a risky move to go open with AI, and iazaktar plays which customer policy is worse. This is the Daily Tech News for Tuesday, July 12, 2022. In Los Angeles, I'm Tom Merritt. And from Studio Redwood, I'm Sarah Lane. I'm Iazaktar from New York City. And I'm the show's producer, Roger Chang. Oh, Iaz, it's good to have you on the show. It's been too long. Thank you, thank you. I never pronounced it that way, but that's what it said in the docs. That's what I said. You take direction well, yeah. Thank you. That's what I do. He's a man who can follow a direction. Well, let's do some tech news today, starting with a few tech things you should know. The K Asia reports that Nikon will withdraw from the DSLR camera market focusing its camera development on the mirrorless market. The company will still produce and distribute existing DSLR models, but Nikon's last DSLR release was its flagship D6 in June of 2020. In its fiscal 2021, mirrorless cameras accounted for half of the revenue from Nikon's imaging business. Okay, end of an era there. Spotify is also ending the era of hurdle being independent. Hurdle is a game that is like Wordle, but you listen to it. Spotify bought the app, making it its first game acquisition. Game will remain on a standalone website for now, though it will link song answers to Spotify instead of to SoundCloud in the US, UK, Ireland, Canada, Australia and New Zealand. Spotify plans to integrate hurdle more fully into its main app, but did not give any specifics yet. Twitter began rolling out its unmentioning features to all users after testing it in April to a limited set. Users can now select to get you out of this conversation option in the three dot menu on a tweet that they're tagged in. Of course, this is the official Twitter apps. Their username will still appear in the tweet, but they won't receive notifications after that once unmentioned. You can't be tagged back into a thread either. Yeah, I've been really looking forward to this one. It doesn't happen that often, but I will definitely take advantage of this. Get me out of the canoe. But then there's the ones where you're like, well, they'll notice if I took myself out. They're just being, it's going to create a whole new thing. Bad news for F commerce, a.k.a. fast commerce, a.k.a. instant delivery of things like groceries and restaurant meals. One of its big stars, airlift is permanently shutting down as of July 13th. In May, it started cutting back, shutting down its operations in South Africa and going from eight cities in Pakistan to three. Restofworld.org attributes high operating costs and a global startup funding crunch among the reasons for the shutdown. TikTok planned to update its privacy policy in Europe on July 13th to no longer ask users for consent to be tracked to receive targeted ads. The Irish data protection commission announced that after engagement with the company, it agreed to pause the update to allow analysis by the regulator. Earlier this week, Italy's data protection watchdog warned that the change would breach the privacy directive and GDPR. All right, let's play a little game, shall we? It's called, that's kind of like award show music. I'm not going to use that here. How about this? Let's play a little game, shall we? She is Tom. It's kind of dark. Work on that. Maybe I should ask our video producer Joe next time instead of just going wild on my own. Let's play a little game, shall we? It's called which is worse. We're going to present two new policies from companies and I as you're going to tell us which one you like the least. Ready? Ready. All right, Sarah, give us the first case. All right, so the UK's hive, which sells smart home thermostats, also smart lighting, smart plugs, smart sensors, no longer sells home security products like cameras and water sensors. But there's more to the story. Hive is discontinuing service for those previously sold home security products. The leak detector will stop working as of September 1, 2023. So not tomorrow, but it is happening and the cameras and security systems lose support August 1, 2025. This isn't the first time this has happened. Hive stopped direct sales in North America back in 2019 and devices there stopped working in November. So to be clear, Hive is not going out of business. They're given a year or more of notice before discontinuing support. Okay, are we mad about this? Tom, what's the other case? All right, compare this when I asked. So we got Hive pulling your service. BMW is making several car features available as a subscription in South Korea. They've tried this before in the US with car planning didn't go so well, but in South Korea, heated seats, 18 bucks a month heated steering wheel, 10 bucks a month. We converted the numbers from one by the way. High beam assistant headlights, you know, the ones that automatically brighten or dim based on traffic, $8 a month. There are a few more options like that. Each option will give you a discount if you pay for a year or three years in advance and they offer permanent access for a higher cost. For example, the $18 a month heated seat subscription can be obtained permanently for $406. All right, so you've heard the deets, which is worse? Hive slowly discontinuing support for its products that people have already bought or BMW charging a subscription fee for luxury features that people thought were bundled in? You know, I thought long and hard about this in the minutes we've talked about it and I will say that the BMW plan is worse because I'm used to places discontinuing products or if you're in your home, at least you can have the option of changing up what you're doing. If you have a BMW and this thing actually catches on, that means other car manufacturers be like, hey, we're going to continue this model. And I think this model is horrible. The idea you can unlock features and then isn't that just part of the cost of the car because you're buying a whole thing. When I buy a house or buy an apartment or rent an apartment, I can equip it as I want and I know things will disappear. This is my Harmony remote and it's going away. I mean, there's going to be support for a long time, but I got to get ready for when things disappear from smart home. But my car, which I don't have one, this thing scares the heck out of me. Yeah, the Wraith 86 was like, how is this steering wheel optional to which we clarify heated steering wheel? It's the heated steering wheel. You get the steering wheel. They haven't made that. You can drive the car. Yeah. I don't know, though. This is all optional stuff. You don't need a heated steering wheel. You don't need heated seats. They're nice to haves, you know, but you can still drive the car without them. They're not like essentials, whereas Hive is taking away the ability for the thing to work at all. I feel like that that makes a difference. I mean, when it comes to the car stuff, I have luckily I have heated seats and I have a heated steering wheel. I don't use any of that stuff half of the year during the winter. I definitely think it's nice. But I kind of equate this to, I don't know, the way I feel about Photoshop and Creative Cloud. I can kind of come and go YouTube TV. Sometimes I'm like, I don't need live TV for a few months and I'll just like sign up later. So I'm not paying for something that I'm not using. So the subscription version of the driving a car that has luxury features that I may use sometimes and not other times. I don't hate that idea. I think I'm probably going to spend more. And that is the whole point that BMW is going for here. But yeah, I think that the the Hive situation, you know, for anybody who has Hive products, that is that's kind of the that's the nail in the coffin.   But people don't think of car stuff that way. They think of it as I have it. I have a heated seat. It either works or it doesn't. It shouldn't go away with a software update. You know, I shouldn't have to jailbreak my BMW to get my heated seats back. And Hive actually has a good read. I don't know personally if the company has a good reason, but most companies have a good reason to discontinue products that require software updates, require security updates, making sure everything is working in whatever world is happening. So let's say Hive said, oh, yeah, everything's going to work until 2025. A security update stop at a certain time. Actually, I did say 2025. Let's say 2030. If they didn't provide security updates and everything that that will change their business model. So if Hive is going to shift to what they're doing, they have to tell everybody well ahead of time, look, we're we're shutting this stuff down. We're moving away from this stuff. And that while is while it's annoying for people who have Hive products, it definitely seems like at least there's enough notice.  In theory, I'd imagine since I'm the the smart home community out there is freaking really smart. So I'd imagine there'd be some kind of firmware upgrades that could be done for these things. So you can have continuous use if you really want to. I'm not saying that's a good thing, but it's it's an option and or you can change out the parts BMW.  What's that? My credit card changed. My info changed and I don't have that right now. Why are my seats? Oh, great. Oh, yeah. My card expired. Yeah, these little things actually do mess up your experience. I believe one of the things was like some kind of a headlight high beams. It's like, hey, guys, don't don't attach it to like adaptive headlight safety features. Yeah, that's something you can control on your own. I don't have assistive headlights in my car and I'm able to turn the high beams on and off myself. But but yeah, it's nicer if they just do it naturally speaking. I don't know. I get why Hive is like, these are security features and it requires staffing, right? Because they provide staffing to like respond to security threats, even the water leak. They'll call plumbers for you and stuff like that. I get them taking that part of the way of the service away. But the fact that they're disabling them, that these are just not going to work at all anymore, makes me not want to buy any other Hive products because what are they going to take away next? Oh, you don't buy Hive then. Man. Yeah. All right. So in the end, I as you the winner. Quote unquote of which is worst is if for you is the car. That's correct. All right. All right. Well, maybe this will brighten all of our spirits. MIT review MIT technology review rather has a write up on bloom. That's a large language model similar to open ai's GPT three or Google's Lambda GPT three is famous for powering things like Dolly. A lot of people have fun with that recently creating pictures of cats orbiting space in a Ferrari or my favorite achita jumping over a bus. Lambda is the one that the one that one of the Google employees thought might be sentient as of late, which we talked about on a show recently. The similarity of GPT three and Lambda is not that they're both large language models, but they're both preparatory. Neither group shares their code or models with the public. So unless you got the code, you can't really do anything with it. Open ai says it doesn't offer access widely because it's unsafe at this point to do so. However, there's one large language model that is partly open. And that is Meta's open pre-trained transformer OPT 175 B making its code and logbook on training available on request. But the license is limited to research purposes. So that brings us back to bloom. Yeah. So bloom is completely open. Bloom stands for big science, which is one word. Intercapped, which is also the name of the product. One one word. Intercapped. That's the name of the project. Anyway, big science, large, open science, open access, multi-language, language model, multi-lingual language model. Anyway, rules right off the top. Yeah. Bloom is much better. Not only is the code available for anyone to download for research or commercial use. So you can do what you want with it. But they record their meetings on development as part of the project and upload that for anybody to review. So you can find out what data it's being trained on, how it's being developed, how they evaluate its performance, something you cannot do with any of these other projects. The startup called Hugging Face with some funding from the French government has coordinated big science with more than a thousand volunteers selected from around the world trying to get a representative sample, not having everybody all be in Europe or any other one place. And they've been working on this for about a year. Now it's officially launched as of July 12th. The aim is to change the culture of AI development and make access to cutting-edge research available to everybody worldwide. Bloom has 176 billion parameters. That's almost the same as GPT-3. It's actually a billion more. It can handle 46 languages, including 13 Indic languages, 20 African languages, and it's the first model of its size for Spanish and for Arabic. It can write recipes, make poems, summarize texts, write code just like GPT-3 can. It can understand 13 programming languages. But is it dangerous to make something so powerful available for free to everyone? Have they thought about that, Sarah? Well, they have. In fact, the big science project folks understand it could be dangerous. So they warn that Bloom can suffer from the same biases and possibilities to export offensive languages as other models. However, the hope is that by making it accessible, it can correct those problems more easily and faster. And big science is taking its own steps to help further that goal. The group developed a data governance structure that makes clearer what it is used and how it belongs to and who it belongs to. And it sourced multiple data sets from around the world as well as making sure to include a wider variety of volunteers. It's also using a responsible AI license designed to deter Bloom from being used to harm or exploit anybody or be used in high risk sectors such as law enforcement or health care. All right. So if you want to try it, you can download it. It's available at huggingface.co slash big science slash Bloom. If you log in to Hugging Face, if you create an account there, they'll let you play with it online and do some sample queries and texts and that sort of thing. If you're recognizing the name Hugging Face, they're also the company that did Mini Dolly, which was an open source version of Dolly 2 from open AI. So they're doing a lot more than just Bloom, but it's the same folks, same startup that's doing this. I don't know. What do you think? This feels like a big step in AI to have a big and fairly competent project making AI accessible, but do you buy what open AI and others have said that that might be irresponsible? Okay. So you're always going to have bad actors with anything, right? You could use Photoshop and you could use a legal copy of it and create all kinds of horrible things with just Photoshop. So there's always going to be bad actors no matter what's going on with this. I was taking a look at the license and it claims that if you use it for usages that could harm others and particular other things, you shouldn't be able to use the code base. If the code base is open, I could see anybody grabbing it and using it for nefarious purposes. Again, that could happen with anything. I think it seems like it's about time. Something like this has happened though that we're going to have an open version of this. Never underestimate just like how many people have free time and they can actually help grow this kind of stuff in a way that you wouldn't expect. Open source software. You've seen the amazing things that can come out of that or hacker communities, what you can actually build. There's home assistant for smart home like I was talking about earlier. There's all of these ways that you can create new usages and use case scenarios if you have millions of people of access to it. I'm really curious how this is going to move all of this forward. But I'm also concerned about how other tools could be, I don't want to say manufacturer, but created using this technology. Yeah, I don't think we're going to see Bloom necessarily outpace open AI or Google or meta in its competence, but you might see a lot more companies take advantage of it. Do more innovation around it because it's out there. At the same time, that also might mean you'll see more malicious uses than you would see of the other more lockdown. This is not a case like security where, you know, if you lock it down only the bad guys have it because right now it's very difficult to get access to Lambda or even open AI. They hold it very close to the vest. So this will be available for everybody to use for good or ill. Well, folks, next week is special guest week here on DTNS. If you like stories about people using technology for ill and then maybe getting caught. You probably like dark net diaries and we're going to have Jack Resider on from dark net diaries. We're going to also have Will Smith from Foo VR, Quinn Nelson from Snazzy Labs, Joel telling the 3D printing nerd. It's going to be a heck of a week, folks. Lots of new faces. So help us promote the show. Make these special guests feel welcome with a big old audience. Tell your friends to watch or listen to Daily Tech News show all next week. Well, if you've ever wished that your wireless headphones could have better battery life or share listening from one device. We have good news. I wanted to do that in Twin Peaks voice, but it didn't work out. The Bluetooth SIG or SIG has completed the Bluetooth LE audio specification. Manufacturers can now start adding support for this standard to devices, which should start hitting shelves by the end of the year. Let's run through some of what is new in Bluetooth LE audio IaaS. The big one is LC3. That's a codec. It can deliver higher quality audio at the same bit rate as the current Bluetooth classics SBC codec and SIG claims it can even still do better audio than SBC at half the bit rate. That means higher quality audio is going to use less power. Love it. Love it. I have said before many times on this show I have a tin ear, so the higher quality is lost on me. I went over to Bluetooth.com's audio codec demo and I trust people who tell me that it sounds better at half the bit rate. It all kind of sounded the same to me. But if it can save my battery life, I'm in. I'm 100% for it. Oh, yeah. For sure. Yeah, I'm kind of with you, Tom. I mean, I listened to so many podcasts these days that as long as I can hear what people are saying, I'm not... I don't spend too much time thinking about how the audio quality is unless I'm listening to music.  But the better we can do with battery life and also audio quality, because I know a lot of people out there really care about that, that is good news. Yeah, I'm thinking if you have a lousy connection, your bit rate's not very good and you're using this codec, at least the audio will sound decent and not crunchy or terrible or just cut out. That to me, I just want consistency. I want this thing, I want to be able to hear as I'm walking around outside because there's going to be tons of interference no matter what. If I have a little bit rate, I can still get what I'm listening to, it can sound good. There's also a feature called AuraCast, A-U-R-A-C-A-S-T, which lets unlimited audio devices. So speakers and headphones connect to a single audio source. For instance, everybody in the gym could connect their own wireless headphones to a single TV. Everybody in a theater could actually wear earbuds and get improved movie audio connecting to a single source. Users can select AuraCast like they would a Wi-Fi network. This could either be done in the operating system, androids including support, or it could be done with an app. The connections could be password protected. So if you just wanted to share this with a few friends but you don't want other people to be able to access it, you can put a passcode on it. You'll need an assistant, probably most often a phone but it could be a smartwatch to the broadcast, but then once it's selected, the headphones connect directly and get it from the source. AuraCast also supports connections by QR code and NFC. I hope this works well. Oh, go ahead, Ayas. Thanks. I hope this works well. This has been like a debate of my existence in the small apartment of like, how do we listen to something of the televisions? I had to use my Samsung phone which allows you to have two different pairs of headphones wirelessly attached to it to a Roku network. If AuraCast works the way they're claiming it works, I will be super thrilled. I don't know if it'll work. Somebody in the chat mentioned this is like the silent disco kind of model. I want it to work. I really want it to work. But if you guys remember when Bluetooth was rolled out a long time ago, oh boy, did that not work well. So I'm really hoping that AuraCast, when it's pushed out and everyone supports it including Apple, Apple, you better support it. I hope that it works as well as they do. I'm already thinking ahead of my use cases and there's plenty of them that will be just fine. Not that I go to a gym, but the gym audio style. Maybe at a hotel or a bar or something where you want to hear the sports broadcast but not everybody else at the bar does. I was thinking like movie theater, I don't know about all that. But yeah, listening to sports at a bar that's loud and nobody's talking next to you type of thing.  But if everybody's kind of on board and this is just the norm, it's not that weird. I'm also, I sometimes just want to share songs off my phone or podcasts off my phone. It's weird to have to like either repair somebody else's headphones or hand them earbuds. It gets a little dicey, you know. Oh yeah. No, no sharing of earbuds. Yeah. Not my home. We have a few other notable features here from the story. Bluetooth audio also lets each earbud maintain its own connection with the source device. So you don't have to rely on one of the earbuds passing the signal to the other. My job does do that. I'm used to it, but it can be a little wonky at times. Apple already does this with its own method, but now more earbud makers can do it free as part of the spec. Bluetooth LE audio also claims 20 to 30 millisecond latency versus Bluetooth classics 100 to 200 milliseconds.  And it's better at managing packet loss when you're at the edge of the range so you don't have as many interruptions to your connection. And LE audio also supports hearing aids and implants. And that is good news for those in the accessibility community. Yeah, that's a huge one. That's been one of the impediments to using hearing aids with phones and stuff like that. So that's huge. And the packet loss thing, I mean, it just seems so simple when you read through it, but they're like, yeah, Bluetooth is meant to like hold on to packets for data uses in case you need them, which when you're transferring data over Bluetooth like a file you want. But with audio once that packet is a few seconds old, you don't need it anymore for your audio and it's just delaying everything else if you're waiting to try to get it. So LE audio, when it's doing music and things like that says, oh, if this packet doesn't arrive within a short amount of time, we'd stop looking for it and move on to something else. I think that's super smart. All right, so how can we get this stuff? How can you get it? Well, I'll tell you some devices may be able to support Bluetooth LE audio with a software upgrade Android 13's beta supports it already. Most likely though you might need new hardware. Yeah, they're probably going to make us get new hardware and Apple, like you said, Apple please put it in the next iOS. That would have been nice if we already knew it was an iOS 16. But there you go. All right. I just want to watch some cricket. Sarah, where can I go watch some cricket? Tom, I'm glad you asked a group of Indian farmers set up a fake Indian Premier League or IPL cricket tournament. You might say, why did they do that? Well, they wanted to trick Russian audiences into making real bets in order to steal their money. The Times of India reports that the fake games took place on a farm in the state of Gujarat with 21 farm laborers and unemployed teens who were each paid around 400 rupees or $5 U.S. to impersonate pro cricket players from well known Indian teams. Apparently the farmers live streamed the tournament to YouTube over the course of a couple of weeks and even set up a telegram channel dedicated to the games where they took bets from Russian gamblers located in Tver, France, and Moscow and a bit of red flag for anybody paying attention since the actual league's 2022 season ended in late May. So if you're paying attention, you might say, this isn't kosher. A lot of people didn't know. Even still the farmers managed to trick quite a few folks by setting up 5 HD cameras, halogen lights around the field, sound effects that mimicked the noise from a real crowd. It seemed real. Eventually Indian police busted four of the people running the sham event during the tournament's quarterfinals which were taking delivery of 300,000 rupees for about 3,775 U.S. dollars from Russian betters before they were shut down. Now listen, scamming people out of their hard-earned money is bad. It's bad. There's nothing funny about a dozen farmers pretending to be one of the world's most popular leagues. And yet it's sports. Kind of smart. It's not funny at all. I'm not laughing about this. Not at all. Not funny. Yeah, and yet. This is fantastic in so many different ways and also it's fantastic the fact that we can report this because if you are looking to bet on sports at all, make sure it's in season at least. And make sure you have a reputable booker, I guess. I don't like bookie. Excuse me. I'm like, this is wow.   It's like, there's a whole league set up. Wow. Very, very ingenious. It's ingenious. The lengths they went to with the fake jerseys and the commentator. The commentators. I can't wait for the movie. We're like, oh, yeah, I want to bet on this game. Yeah, this is, this is going to make me somebody's like searching around for betting sites like in the shady corners of the internet found a pirated feed and was like, oh, this is too great. I can make so much. But you know what, I wonder if some people made money betting on this. Did they pay out ever? Yeah, the farmers. Well, until they got busted, I guess. But yeah. Yeah, you know, it was fun while it lasted. You know, again, not, not, don't do this. It's not funny. Don't try this at home, but also kudos. I hope they get their stories optioned soon. Let's check out the mailbag. Let's do it. So associate producer Dan White from what he says is hot and humid Bristol in the UK wanted to follow up on our AI assisted screening conversation in yesterday's show. Dan says for several years, I worked at the quality assurance program for cancer screening in the NHS. I worked in the cervical screening program, but the principles are broadly the same across all cancer screening services. You don't want a false negative result, but it can in fact be as bad if you encounter a false positive regarding the AI assisted program. Let's say a woman received a false positive result for cervical screening test depending on the severity of the result, she may be referred to a biopsy sample to be taken. This would mean the woman would have to be subject to an ultimately unnecessary invasive medical procedure with very small, but real risks of complications like hemorrhaging, infection, difficulties with future pregnancies in rare cases would be required to undergo a general anesthetic, which is itself has a very small, but non zero risk of complications and or death. Before I scare anyone away from going for a screening test as Dan, I would like to emphasize it is incredibly important. The risks involved in not attending screening massively outweigh the possibility of any complications. Yes, having an AI as an automated second opinion is undoubtedly a useful tool. They need to be continuously trained and corrected when they get it wrong if we are to avoid false results. Yeah, so if anybody didn't listen to that show, you know the point of the study that we talked about was radiologists on their own outperform the AI but radiologists in the AI working in tandem where the radiologists identified screenings first and then the AI would step in if they thought the radiologist didn't identify a positive score that improved at 3.6% so and it reduced false positives, which is to Dan's point a really good thing false positives while screening is important if you're false positive and you get the biopsy and it turns out oh you don't have it that's great news but also now you've had to undergo the risk of the biopsy which is small but still a risk that you wouldn't have had to undergo anyway. Totally. Anyway, thank you Dan for sharing that info with us. Good points. Yeah, thank you Dan really great email and you know thanks to everybody who writes in with questions, comments, thoughts, updates on anything that we talk about on the show please do keep that feedback coming you can email us at feedback at dailytechnewshow.com Also thanks to you IAS for being with us today it's been too long my man let folks know where they can keep up with what you're up to lately. Well, I mean if you're looking for me on CNET you're not going to see that anymore I'm not with CNET anymore so go to like Twitter and follow me at IAS or you can go to IAS.tv and if you're doing what I'm working on this week I have no idea I was on DTNS today if you missed it go listen to it again because you just heard it so go to twitter.com slash IAS and you'll know what I'm doing before I do. Well, we're so glad to have you and I can't wait to see what you're going to be doing over the next few months also we have some new bosses to thank today we are on a roll this week everybody we've got Mark, we've got Trevor all just started backing us on Patreon thank you Mark, thank you Trevor and thank you Jacob Yeah, yesterday we're like tomorrow it could be you and Mark, Trevor and Jacob we're like it in fact is me Yeah, so thanks y'all if you'd like to see IAS on more often become a patron you know the more patrons we get the more chance we can we can play around and do cool things reminder there is a longer version of the show called Good Day Internet we roll right into it after DTNS closes patreon.com slash DTNS is where you can find out more about that but just a reminder we do the show live if you can join us live we'd love to have you Monday through Friday 4 p.m. Eastern that's 20 hundred UTC and you can find out more at dailytechnewshow.com slash live we're back doing it all again tomorrow with Scott Johnson joining us talk to you then this show is part of the Frog Pants Network get more at frogpants.com Diamond Club hopes you have enjoyed this program


So, as we get ready to go back to work with our partner, we always have to remember our conversation norms. It's so important that when you're having a conversation that you show respect. So what are the three ways we show respect for our partner? Brianna. Keep your eye on the speaker. Okay. Keep eye contact with the speaker. Make sure you're looking at your partner as they talk to you. Number two, Natalia. Listen to the people that are talking to. Right. Active listener. Pay attention to them, okay? And they'll know that you're paying attention if you're looking at them as well, right? You're not looking out the window. Okay. And the last one, which is most important I think for my class, what do we always try to do? Oh, stay on topic. Absolutely. Stay on topic. And what's our topic today? Vocabularies. Strategies. Okay, good. Vocabularies.


Welcome to my talk. I'm gonna talk about the Phoenix Framework today. My name is Christian Cook. I'm from NCSA in Chicago. So I've got a couple few goals for today's talk. I wanna familiarize you with the Phoenix Framework generally, and I also hope to root our discussion of the Phoenix Framework in terms of Phoenix, Elixir, OTP, and Erlang. So we'll sort of explain some of those in a minute here. So what this talk is not? No Phoenix puns. I'm very sorry. No memes.  I certainly don't need to pander to you by showing you pictures of my cats because that would just insult you. So why not Rails? Sort of reasonable question to ask at RailsConf.  I'm not an evangelist kind of guy. Rails is great and I enjoy working with it. I know it very well. It's fast to deliver functionality. It's fast to develop. However, I don't really love trying to grow my Rails apps. It usually requires more than just spinning up additional servers and it often requires new technology in the stack. Redis, Sidekick, another queue agent, maybe Elasticsearch, something like that. So let's consider one alternative. The Phoenix Framework bears a lot of similarities to Rails and shares many of the same motivations. Chris McCord was a Rails programmer before writing the Phoenix Framework. There are many aesthetic and structural similarities between Rails and Phoenix. Both are designed to be productive frameworks. Both emphasize convention over configuration and both are server-side MVC frameworks. There are also a number of important differences. Phoenix is written in Elixir, which is a functional language. A Phoenix app is compiled and a Phoenix app isn't really an app at all. It's an implementation of an OTP application written in Elixir. So I may use Elixir and Phoenix a little bit interchangeably today. In part, this is because the Phoenix Framework is the implementation of an app written in Elixir and by design, Phoenix programming is Elixir programming. Yes, I will. That's next slide. Two slides from now. So Phoenix Framework is a web framework written in Elixir. Which is a functional language that grew out of Erlang. So let's look at what each of those components implies. Functional programming offers data immutability, meaning actions taken on data structures always return a copy of a new data structure while leaving the original unchanged. There are no objects or classes. Instead, you pass data like hashes and arrays to functions, which are first-class elements. So Erlang is a programming language used to build scalable, soft, real-time systems with requirements on high availability. It was originally developed by Ericsson to support their telecom infrastructure. And the fault tolerance required to seamlessly failover from one switch to another makes Erlang an ideal choice for use in the web. Erlang has a somewhat different syntax that bears some similarity to Prolog. And it's used by a number of companies in production, Ericsson, since they developed it sort of obviously. WhatsApp, another one of the more common, more well-known companies running Erlang. The OTP, to your question, is the open telecom protocol, which I've also heard defined as the open telephony protocol. But basically, it's not quite a full-fledged framework. It's more a collection of Erlang libraries and design choices that will create applications that conform to and offer a distributed, highly-available, supervised, and failure-resistant runtime. So Elixir is a dynamic functional language that has a syntax that's somewhat similar to Ruby. It was written by Jose Vadim from Platform Attack. He was previously a member of the Rails core team. Elixir offers the promise of building distributed, scalable, maintainable applications that can run with very low processor overhead as well as very low latency. Why Phoenix? Because Phoenix is written in Elixir, which is written for the Erlang virtual machine, it's a functional, immutable, asynchronous, scalable, lightweight, and fast. A Phoenix app is compiled with the added certainty that that can provide around runtime stability, and it's well-suited to the current state of the web with multi-core processors running multiple processes on a single machine or many machines distributed geographically. So there are a number of companies who are running Phoenix in production. Bleacher Report is the one, the example I've heard more. According to their reports, they were able to handle eight times more traffic while reducing the number of servers when they migrated from a Rails stack to a Phoenix stack from 150 servers to five. And if I'm honest, that sounds a bit too good to be true. And there's probably a little fudge room in there. Maybe they dropped a Redis server or something like that, but anyway. So that's enough talking about programming languages. Let's look at an example. So here we have a Ruby example. We define a class and a class method to modify a hash at a given key by adding the third argument to the initial value. When we evaluate it, it does pretty much what we expect, except we will note that our original hash and our new hash both have the same value, and if you looked at the object ID of the two, they'd be the same object ID. So let's write the same thing in Elixir. Instead of a class, we're gonna define a module, and we define a function within that module. Because a module is just a group of functions, there's no concept of instance or class methods. When we evaluate the example, we see the result is similar. New map looks like our modified map in the Ruby example, but the first one, my map, has remained unchanged. Let's just break down a little bit of what's happening within our transform function. So we call this update bang method, and we call it via the map module. We don't call a method on an object because there are no objects, if I don't call update on a hash, instead I'm gonna reference through the map module and use this update bang method. In this case, update bang will raise an exception if the key isn't present in the map. So the update function takes three arguments, a map, a key, and a function, and the third argument is an anonymous function that takes the value at the map key as its argument and passes that value to its own function code. And then here the function code uses the angle bracket string concatenation operator to combine the two values. So let's look back at the Ruby example one more time. We could try to make the Ruby example immutable. Dot dupe would keep the original hash unchanged. We could also try dot freeze, which will do the same thing in this case by raising a runtime error. But both freeze and dupe only produce a shallow copy. So if we were to trivially change our Ruby example, we can see that immutability doesn't hold for nested objects. And quite frankly, neither of these approaches is practical across your code base. I'm not gonna litter dot dupe or dot freeze with every method call I write. And if I'm trying to make Ruby immutable, probably I've sort of started down the wrong path from the get go. So some language specific concepts that probably have already come up and will come up again, just so we're all on the same page. Elixir uses lists, not arrays, maps, not hashes, although they're very similar. There are no objects. Elixir has modules and modules package groups of functions together. The beam is the Elixir, sorry, the Erlang virtual machine, and that's where all Phoenix and Elixir code is executed. We see we have a tuple, which is ordered collection of elements between the curly braces, where the symbol or atom at the front represents the successor fail state of a function call, often. And in general, there's no for loops, no iteration. Elixir favors recursion and higher order functions like map and reduce. So looking at a Rails project and Phoenix project, there are a number of similarities with how they're used. Mix module in Elixir combines the role of bundler and rake. Bundler and now Rails under the Rails 5 world under a single, wrapped in a single module, can generate migrations. There are a number of code generators. You can generate application, controllers, views, et cetera. Unlike Rails, Phoenix requires you to explicitly define your pluralizations. And if we look at project structure, a Phoenix project is reasonably similar to a Rails project. It doesn't look all that different. The underscore build folder contains our compiled project files. The depths folder contains our dependencies, priv static files as well as migrations. And if we look at the web folder, the web folder in a Phoenix project is pretty similar to the app folder in a Rails project. Channels in this case are the Phoenix equivalent of action cable or web sockets. And if you look at Phoenix 1.3, which is in release candidate form, it's gonna introduce a number of changes to the project. And it's way beyond the scope of this talk to go into all of them. But it's important to note, if you knew up a Phoenix 1.3 project, it's gonna look a little bit different than your 1.2 application. So Postgres is the default adapter for a new Phoenix project. And there is support for other adapters present. It's not always up to date with the latest release of Ecto. Personally, I was really surprised to see that there's not one, but two Microsoft SQL adapters. And both the msequel.ecto and amnesia adapters are new, at least on the Ecto repo page since I started working on this presentation. Things are happening. Okay, so Phoenix is an MVC framework and let's kind of step through that a little bit and look at the different pieces of that. Let's look at a controller first. So we have a Rails controller and a Phoenix controller. And there's not a whole lot of difference between these at a glance, but let's look a little bit more closely. A Phoenix controller action requires two arguments. The first is the con, which represents the web request. And in Rails, we get this implicitly via application controller. From the Rails docs, they tell you as much. It comes in invisibly to you as the developer. And that's okay. That's not a bad thing. It's part of the speed and ease of development that Rails offers. But there's a different way of approaching your controller. So as Phoenix requires the con passed in explicitly, maybe we wonder how the con got there. So let's jump back up the stack and look. So this is the endpoint module. And we don't need to get into what's happening here in specifics, but I just wanna sort of call out that with our Phoenix app, we're declaring sort of each plug that we're gonna put in, which a plug represents more or less a transformation. It'll be each transformation that happens to your web request as it comes into your application. We're gonna parse, log, do all those other things that will convert an HTTP request into structs that you can then modify with your application code. Most of the time, you don't need to worry about this, like rack in Rails. But when you do, when you need to look into what's happening, it's nice to know that it's mapped out somewhere and you can review it. This is also a really great place to add your own custom functionality if you need something like a rack, something to do that thing that you need. So plug and rack are rather similar. And actually, if you look, their specifications are really similar. Plug however can be used almost anywhere while rack is wired into place at the beginning of a rack app. If we were gonna do that in sort of rack in Rails, we can do that, but it sort of involves shimming relative to some other piece of functionality. Not necessarily anywhere you wanna use it, but early in the call stack related to something else. Okay, it's back to our controller. Second argument in the controller is a map in this case, which is going to destructure the request parameters in a variable called data. Since we're in an MVC framework, it looks like we're probably developing something restful. We expect there might be a database query here. So let's put that in and see what that would look like. Note with a query, we're not invoking the query through the model, like a find or a find by. Instead, we specify the repo, the actual repo module through the application itself and then specify the model table against which we wanna query in the function arguments. This is gonna be a slightly different. The interface to the repo will be slightly different in Phoenix 1.3. Again, worth noting. So we can change our query to use something other than the primary key and our controller is gonna require that we declare the view template that we're gonna use. There's no implicit assumption based on which view file we're gonna render. And again, that's not a trivial issue in an app like this, but something's been around since Rails 2 to 3 to 4, on its way to 5, where your view folder has 40 sub-folders in it. That's definitely no small amount of cognitive overhead saved. So we're gonna use the plug render function to name the view template we wanna use and assign the result of our query to a variable for use by the template. And because we're explicitly rendering, we can easily switch out the view template we wanna show. So stepping back a little bit, Phoenix isn't an application itself. I think I mentioned this earlier. But it's an important distinction that becomes apparent after you work with Elixir and Phoenix for a while. Phoenix itself is an implementation of an OTP app written in Elixir. The Phoenix layer is more or less a routing layer to the code that you write. With Rails, you're relying on the often implicit promise that your app offers, whether it's rendering a view by naming assumption, routing based on a similar assumption, or exposing instance variables across responsibility boundaries. Rails is there to help, but it makes Rails the centerpiece of what is more ostensibly your business and your application logic. Because of the way you interact with your own code and the Phoenix code in the application by passing data structures to functions instead of sharing Rails or ActiveRecord objects between classes, it's conceptually harder, at least for me, to think of Phoenix as a thing that's doing a lot of the heavy lifting. And I think this can leave your application code more isolated and less prone to getting bound up in the MVC framework layer. So if we go back to our Elixir example, how can we structure this and make it just a little bit more functional? And we can use the pipe operator for that. Piping values, which is passing the value from the left into the function on the right as the first argument, is a more idiomatic way of expressing the flow of data into a function. So we can move our map to the left of the pipe operator, and then it's passed in as the first argument to this function. And in our example, that's a small improvement. The code executes the same, maybe it reads a little bit better. But if we look at another example, for me, this expresses better the way data flows through a module as a series of discrete but related steps. This conceptualizes back better to the HTTP request response cycle and expresses what your application code is doing. Future me appreciates code that's self-evident and doesn't rely on implicit actions and potential side effects. And partially that's because current me forgets what my code does within a few days of committing it to source control. So any web request can be viewed as a function. And for me, this was a big aha moment of writing functional code for the web. The call itself has all the information you need to figure out the state of the world and serve the appropriate response. Web requests are stateless functions. They have to be to work on the worldwide web. And this is just as true in Rails as in Phoenix. There's no reason you can't or shouldn't structure your Rails app in a way that expresses a discrete series of transformations to get you from request to response. I think this is where the structure imposed by your language and your framework can really have an influence on how you write your application code. So back to, we'll step now and look at what's happening in a Phoenix model. Side note, as frameworks go, Phoenix has gotta be one of the harder ones to Google for. Phoenix model does not get you what you think you're gonna get you most of the time. You definitely need to include the elixir modifier on that one. Okay, so as we saw in the controller show function, database queries don't rely on model functions. They rely on the model in order to reference and access the database table name, but the queries are functions called on the Ecto-repo module. So this really limits our models to handling schema and data validation. So if we expand the web model function from the previous slide, we can just see that it wraps the import of a few Ecto modules, including change set and query. You can define a UUID as the primary key. And then we define the schema within the model itself as opposed to a schema file. Set field names, name and a type. We can also add default or null values to our schema here. So Ecto change set was one of the modules we imported. Change sets are how Ecto transforms data structures like maps and lists into more formal structs, which we can then insert or update into the database. And Ecto provides a number of functions to manipulate our change set data. Cast will make a best effort attempt using the field types defined in the schema to coerce the params non-destructively. We can validate our required, ensuring that our params map has keys for all the values that we expect to be in our database on our table. And we can update change with something more, a more invasive coercion. So this is definitely longer and more boilerplate than writing an active record insert. But you are explicitly calling out the validations that you want. It's also less dry. You're adding validations, which probably duplicate the structure that you've imposed on your database. But by validating in the model, you can handle errors and provide error messages back to the user. You can also write a custom validation. So note we're pattern matching via the case statement here on the result of the valid position ID function. Then we can take our custom validation and wire it back into the change set validation pipeline. Within our custom validation, we can add an error message back to the change set, which we'll send back to the request response. So this is more or less the extent of our pretty basic Phoenix model. But because we're also not using the model to query the database, the models naturally get skinnier as they're primarily concerned with ensuring data validity. There's definitely a whole lot more to say about Ecto and working with the persistence layer, but that would actually be an entire talk on its own. Somebody gave one here last year, Ecto and Active Record. So that's something, a reference there, if anybody wants that. So back to a controller, which will handle the result of interacting with our model layer. So the model validations we were just looking at come off a change set function. We use our change set example to perform an insert action. So the create function is the corresponding controller action. So let's simplify our example a little bit. Note again, we're gonna pattern match off the result of our repo insert function. The repo insert will return a tuple, the order collection of items between the curly braces. And the okay atom tells us the insert works as expected. So we can continue on with our happy path. When the change set error, when the change set fails whatever validations we've defined, we can return error messages back to the view. We can take those errors, set an HTTP status code, add error and flash warning messages, error and warning flash messages, and put the entire create function back together. We can render a view, which would look like this for a very vanilla Phoenix app. It's a little brief aside. Rich Hickey, the author of closure has a great talk where he discusses the perils of easy, easy versus complexity, and how easy can disguise complexity. And I definitely encourage you guys to watch it. So Rails is easy. It embraces convention over configuration.  But the ease of Rails disguises and hides its complexity. Rails is often performing some complex work under the hood. Phoenix on the other hand is less easy. It requires more explicit code and it requires you to think about your application differently. The explicitness of your Phoenix framework application encourages keeping things simple. A model in Phoenix is a good example of this. It really only does data validation. You need to use an entirely different module to query the same table. But this command separation structure can keep the overall structure of your application simpler and easier to reason about. And in general, this design pattern is entirely possible within Rails, but it's often the way a language or a framework is used that reflects the design choices we make when using it. So we move from a controller to a model back to a controller and let's look at the view. Phoenix views are pretty simple, similar to Rails views. They work pretty similarly. They're functions. They're invoked by the Phoenix render function, usually from the controller. And you need to explicitly define the view module, template, and the variables for the function, for the view function. This is a basic application template, not particularly interesting on its own. Really, the part we care about is where the template wires up the render function. This is similar to a yield block in a Rails template. Define our view module. You can add a decorator function to that module. Then we can render our show template. This template uses EEX code, which basically is ERV code, similar enough that it shouldn't look all that different. Then we can take the title function that we've defined and add it back into our template, which would look like this. I did have Bojack on there before DH's keynote yesterday, so odd little coincidence. Okay, anyway, so that was a pretty long walk through a basic web request. But I really wanted to emphasize the similarities between Phoenix and Rails. Getting started writing Elixir code in Phoenix shouldn't be too daunting of a challenge, and it should feel familiar enough for you to dip your toe in to try it out. But Phoenix isn't Rails. They're similar, but they're not the same. And it's when you start getting into the differences, that you start to appreciate the strengths of Elixir and the Phoenix framework. We didn't really even touch testing, but take it for me, your tests run fast, there's little to no stubbing, there's no mocking or doubling. Tests are easy to write and usually don't require a lot of elaborate setup. I feel like I'm not doing the Phoenix side justice if I don't mention microsecond response times, which everybody loves, but we wrote an app that basically does one thing and has one database record, so that's not really a meaningful measurement. As you grow your application, you can add queues and background workers just by adding code. You don't need any additional infrastructure. A queue and a queue worker exists as Erlang beam virtual machine processes which get started and supervised by your application itself. Your application has the capability for failure handling built in. Within the OTP framework, it provides a supervisory tree and that supervisory tree sort of monitors everything that's running. It monitors your application, monitors the queue workers that you've set up, other pieces of the connection to your database. Within that supervisory tree, your app can and is designed to crash. It just gets restarted and keeps right on going while barely missing a beat, but Elixir and Phoenix are too immature you might say. And while it is true that Elixir and Phoenix are relatively new, a Phoenix framework application is an OTP app and this is a pretty well understood, well defined operational pattern. Phoenix is Elixir code and Elixir transpiles Erlang byte code that runs on the beam virtual machine. This code base has been matured and battle tested since the 80s which makes it older than Java. The beam like the JVM is the party piece of the Erlang ecosystem. It's super lightweight, fast, fault tolerant, scalable. And because it's so lightweight, you can grow your application with less need for additional infrastructure. There are cases where a library that you need or some piece of functionality may not exist in Elixir yet. Although that's becoming less and less true every day as more packages are written for the Elixir ecosystem. However, in many cases, similar libraries possibly do exist in Erlang and Elixir is fully interoperable with Erlang. So it's no problem to import the libraries that you might need. Should I use Phoenix? Part of me wants to say categorically yes and you should experiment with Phoenix. I mean, it depends though. If the subtext of this question is can I do this XYZ thing that I need to do, then the answer is probably yes. But you may need to write your own code or your own package for it. But I've often found that when I get really tied to the how of an implementation, I may not be thinking broadly enough about the what and the why. And there may be a different path towards the same end. However, if the should I use Phoenix question is more like is Phoenix right for my company or maybe more accurately is my company right for Phoenix? Then that answer depends a lot more on your company and your risk profile for new technology. If you want to be an advocate, I think it helps if you can develop some core competency within your organization, whether that's a group of developers who attend meetups, write some toy apps for an informal learning session like a lunch and learn. I think the key is to grow interest and a competency in the framework first. Learning curve, however, is not as steep as you might think. The similarity between Rails and Phoenix really works to your advantage here. So let me leave you with a quote from the great Jim Jarmusch film, Ghost Dog Way of the Samurai. So the second half, it's the same for anything that's called a way. If one understands things in this manner, you should be able to hear about all ways and be more and more in accord with his own. I hope I've helped you to understand the Phoenix framework a bit better and maybe consider using it for an upcoming project. With that said, I'm not advocating abandoning Rails. Phoenix is new and shiny and that has its own appeal, but it's a different tool in our toolbox that may be more suited to some problems than others. As Rails or Elixir programmers, I believe there's a lot of benefit in exploring different technologies, not just because they provide a different way of doing things, but because different methods can reflect back on how you've done things and reveal new aspects of what you've been doing all along.


God wants you to be wealthy, prosperous, happy, and healed of every physical ailment. Okay, wait, wait, wait, okay, God definitely does heal people, but that doesn't mean that every single person is going to be healed of every single thing always. There's no verse in the Bible that says that. Those people who are not healed are not having enough faith. Wait, what about you? You're literally wearing glasses, bro. Your eyesight is bad. You can't see properly. Is that because you're not having enough faith?  Listen, I fully believe that we will be restored to our perfection one day, but right now we live in a fallen world. But instead of always seeing our pain as a result of our lack of faith, we should see it as the means by which God is growing as closer to himself.


Check out what we got here. Manicotti noodles. Let's make them.  Next step, some marinara sauce. We got a little bit of that leftover dano's pulled chicken. Put that right on top.  Cover them about halfway.  That's the whitish-looking top. It's kind of like cheese mixed with seasoning, so we call it cheesening. Last step, top it with a bunch of fresh mozzarella and a little more cheese on top of the cheese because it's dang good. Now we go into our 400 degree oven. All right my friends, it's been 55 minutes other than the cheese being a little bit too much cheese, but it's still the bomb. That's a 10 out of 10 and I'd do it again.


So we are three and a half weeks after Brexit and news today is Arm is getting sold off to Japanese owner, Mr Masayushi-san. He seems like a cool guy. You can check him out on YouTube. He has a lot of interviews with a bunch of people in English with all kinds of ideas and stuff. And it seems cool. And he had a guy from Google who was working with him before, Nikesh Arora who was a business manager for Google for 10 years. So it could be a very cool guy. He might be perfect for Arm to bring all this cash in and make things happen, maybe. But there's a Japanese economy. Maybe there's too many robots, too many Pokemon. How can you trust that the future of the Japanese economy is going to be stable? It's kind of unstable. You know after Brexit, the Japanese stock market was the one that crashed the most. So who knows where the Japanese economy is going to go? So maybe the US economy is a little bit more reliable and that's why maybe Larry Page and Sergey Brin should pick up the phone, dial a plus 44 directly to Arm headquarters or just walk down the street. There's like an office just next to Google and they can speak directly there with the CEO and say, hey, how about this counteroffer? We'll give you $45 billion and all the same conditions. And maybe Arm can just be A and the Google alphabet. So we'll see what happens. There's need for cash. Technology without cash is just interesting videos on my website, which is great. But a lot of these cool technologies need a lot of cash and then people can get them and then it can make the world a better place. So cash is important. And let's see where and who the people with cash, what they're going to do right now. This is a big deal. This is it. It's not going to be European anymore, no matter what, probably.


For more than 70 years the Water Carnival has been an annual summer tradition in Bemidji. Tonight, Haiti Clowder shows us how the Bemidji JC's are now taking it back to where it all started. This way for the Bemidji JC's. They held a press conference to discuss changes for its 73rd annual Water Carnival. The festival is a six-day event that goes along with the city's Fourth of July celebration. It's just a tradition for the community.  People seem to look forward to it. A new logo was unveiled featuring none other than Paul and Babe in highlighting the location change to Fourth Street. Last year the Water Carnival was held at the Sanford Center, but due to construction that changed. It may be snowing now, but come this summer, Fourth Street and the city lot will be filled with Marion's Midway. The last time it was held at this location was in 1995. The parade will be shortened by five blocks and will travel from 15th Street, then south down Beltrami Avenue, turn west on Fifth Street and then travel north on Minnesota. The carnival will also have an effect on local businesses downtown, but the Bemidji JC's are hopeful for a positive impact. Bringing the Water Carnival back downtown is an important thing for them during that time. Parking will be a big deal and city manager Nate Matthews believes the Bemidji JC's will work well together with the Bemidji Downtown Alliance to find a solution. We'll be able to work it through okay. We've got good communication with the Downtown Business Alliance and the city and we'll be communicating with them with the JC's leadership on the best way to handle the parking this summer. While some things still need to be figured out, this big move will show how the community has evolved. It's a time for us to celebrate our lake and it's a time to get together in the summer with our visitors and also with the residents of Bemidji to celebrate summer and celebrate our community. In Bemidji, Haiti-Claude, Lakeland News. Last year an estimated 10,000 people attended the Water Carnival that featured in an entertainment tent, a fireworks show and more. If you've enjoyed this segment of Lakeland News, please consider making a tax-deductible contribution to Lakeland Public Television.