Hello and welcome to CMC Markets on Friday the 12th of January 2018 and happy new year to all of you out there. Now pretty much it's been a case of normal service has been resumed we saw a very positive end to 2017 and that has carried over into the first couple of weeks for 2018 certainly in the case of US markets which have once again hit new record highs as well as the FUSI 100 which has also managed to post new record highs and is on calls to close higher for the sixth week in succession and that's quite a significant run given the fact that the pound is also on calls to make its highest weekly close since June 2016 and before the Brexit referendum against the dollar so what are we going to be looking forward to for the upcoming week well we've got a host of important economic data coming out not least we have the latest UK inflation numbers for December as well as retail sales for December now over the past week or so we've seen US inflation numbers and European EU CPI numbers come in slightly weaker than expected and that is somewhat surprising given the fact that we've seen crude oil prices rise at least 56% since the middle of the summer so you sort of have to ask yourself you know where that when these this high inflationary pressure that we're seeing in particularly oil prices and gasoline prices is going to filter through to the headline number we're not seeing any evidence of it thus far certainly in the US and the European Union where core prices have dipped back below 1% but certainly in the UK we do have high levels of inflation and we did come in at 3.1% in the November numbers which prompted the Bank of England Governor Mark Carney to have to write to Philip Ham in the UK Chancellor to explain why the Bank of England had missed its inflation target now expectations for December offer inflation to moderate slightly to around about 3% but they're still going to be at fairly elevated levels and I think there's a good chance that we could stay at these sorts of elevated levels for at least another couple of months and the reason for that is because usually in January we get very high inflation data come through in terms of travel fares rail fares bus travel and what have you and that's likely to keep CPI in and around that 3% level we also have retail sales numbers latest retail updates that we've seen from UK retailers have been a bit of a mixed bag but certainly they've been nowhere near as bad as I think people had originally feared food retail in particular was very very strong and we've got UK retail sales for December coming out on Thursday now expectations for UK retail sales are I think a little bit on the negative side we saw a very big 1.2% rise in November largely I think as a result of Black Friday we could see or we are predicting economists are predicting a 0.8% decline that does seem rather a lot given the fact that Cyber Monday will come into the December numbers as well as I think a significant amount of pre Christmas spending as well and now general retail was a little bit on the weak side but again in general retail there were some bright spots so what we've seen over the course of the past week is we've seen record highs for the let's see we've seen record highs for the US and we've seen the euro dollar breakout above the top side the previous September highs at 1.295 now that is significant but we do have to be careful about suggesting that we're going to move significantly to the upside on euro dollar because what we do have is a significant retracement level at around about 1.2170 so I think we could get a squeeze up to 1.2170 if we do break above that then really that does open up the top side quite considerably towards around about 1.26 the reason those levels are important is because they are Fibonacci retracement levels of the decline from the 2014 highs to the lows that we saw at the beginning towards the beginning of 2017 at 103 so 1.2170, 1.2180 very big resistance level but also a move above 1.22 could certainly open up 1.26 the pound is also broken back fire it's broken above 1.35 what we haven't done as yet is broken above the September highs of around about 1.3660 but here as in euro dollar we are approaching some very key resistance levels again 2014 peaks around about 171.92 172 pre Scottish referendum and the lows at 1.1980 or 1.1950 depending on where you take the low from 38.2% retracement of that entire down move comes in around about 1.38 so at the moment we're on course to post our fourth successive weekly rise in the pound and post our highest weekly close since since in the middle of 2016 before the Brexit referendum and that could well be significant going forward certainly I think there is a there is an expectation that we could push significantly higher so it was around about 1.3830 initially which was which was this these lows here in early 2016 and just above that around about 1.39 which is the 38.2% retracement level from the entire down move from 2014 to 2016 other things I will be keeping an eye out for this week will be the latest China Q4 GDP numbers the trade numbers were a little bit disappointing for December we saw a little bit of a drop-off in import data and I think that was largely as a result of a slowdown in China's oil consumption and we've seen Brent crew prices move above $70 a barrel potential reversal may be in place here if we break below $69 a barrel on close below $69 a barrel this looks like a shooting star or a Greystone doji so certainly keep an eye out for a little bit of weakness in oil prices and we've also got a very key central bank decision this coming week as well the Bank of Canada is due to make an announcement on its latest policy announcement now we saw the Bank of Canada raise rates twice last year shadowing the Federal Reserve we just saw a very decent positive employment report out of Canada and as prompted speculation we could see another 25 basis point rate rise by the Bank of Canada over the course of over the course of the next day or so now the one thing that could stay their hand with respect to a rate hike is the NAFTA talks and uncertainty over them but certainly I think the expectation is we will see a 25 basis point rate rise this coming week from the Bank of Canada it would be a bit of a surprise if we didn't give them some of the decent economic data that we've seen out of the Canadian economy in the past few days resistance on dollar CAD is around about 12670 support around about 12380 so again at those are the key levels there we've also got the US Bayes book the latest EU's CPI numbers which again keep an eye on the core number and keep an eye on the headline number 1.4% is the headline number and 0.9% is the core number if they continue to remain on the slightly softer side then I think the hawkish rhetoric that we saw from the December minutes of the ECB meeting could be dialed back somewhat particularly if euro dollar is able to sustain this current move above the 120 level so that's it for this week don't forget to tune into the Monday market webinar at 12.15 this is Michael Houston talking to you from CMC Markets


Amazon is the latest tech giant to face an anti-trust case in the United States. What are the charges against the company? A high-level meeting was held at the United Nations to discuss the fight against tuberculosis. Where are we at in controlling this disease? And finally, Egypt is set to hold presidential elections in December, and Abdul Fateh El Sisi looks set to win a third term. What explains his vice-like grip on the country? This is the daily debrief. These are your stories for the day. The Federal Trade Commission in the United States in 17 states are suing tech giant Amazon for creating a monopoly. In this landmark case, Amazon stands charged with unfairly promoting its own platform and services and engaging in business practices that led users to pay more. Amazon may have become a vital part of life for many of us in many countries in the world, but activists have long called out a number of its practices for being both anti-labor and anti-consumer. While trade unions across the world have been fighting the company for its violations of workers' rights, this case has put the focus on its monopolistic practices. We go to Anish for more. Anish, very interesting times. We saw a case against Google being launched a few weeks ago by the Department of Justice, I believe, and now the FTC, which has been in the news a lot when it comes to issues of anti-trust and monopolies, is now going against Amazon. So maybe could you first give us a very, from a layman's perspective, a very brief idea of what really the case against Amazon is? It's slightly more complicated than, say, what other kind of similar anti-trust cases or litigations have happened with the FTC, say, against Google or even much earlier against Microsoft, because when it comes to Amazon, Amazon is pretty much a retail platform as well. It's not just a tech giant. So that is one of the issues where it comes. Primarily, the issue boils down to how it acts to pretty much cut off all competition of any kind of competition, not just among its sellers, but also pretty much all of its cash material. So what it does is like some of the practices that Amazon says is like standard retail practices, like bringing up discounts, bringing down prices so that it will prices become more attractive. But other than that, you also have issues of them actually. This is some of the litigations that have been raised. It's just like they would kick out or threaten sellers in their own platforms if they are selling outside of Amazon at a much cheaper rate. And that is possible because obviously, sellers have to put up a big share of their sales to Amazon. And very often, it's much cheaper for them to sell outside of Amazon, even though they do not want to completely do away with that option. They also kick out sellers for punished sellers from their full film and setters. Full film and setters are basically warehouses, storage units, which also conduct delivery services for these sellers, where you can send your products and then Amazon does pretty much the packaging, the delivery, warehousing everything for them. But it obviously comes with a higher share price and that is pretty much one of the other ways that they punish sellers. They also punish sellers if the same products that they sell is sold by others or any other platform at much lower rate. And that is also something that pretty much basically punishes sellers, dictates their rates, dictates them of how they want to conduct their business. And it pretty much, so Amazon stops being just a retail platform. It basically becomes the sort of monopolistic mega corporation that is controlling all sorts of mom-and-pop shop stores around the country. In any context also, what is likely to happen, for instance, if say the case against Amazon succeeds, if Amazon is found guilty of this kind of monopolistic behavior? It's very difficult to say because it's beginning with the fact that it's very, it is not that likely. It's a 50-50 chance at how things stand right now for Amazon to be even convicted of monopolistic behavior. But even if it does get convicted of it, it's more likely that they will be let off with a fight. And that has pretty much been the most stringent of practices that we have seen in the West, where monopolies have been allowed as long as corporates are willing to pay a couple of million dollars or a hundred million dollars in fines. And we have seen that in Europe, the US is far worse. We have seen many big tech companies completely going scot-free. And the fact that Amazon is fighting this case and not trying to come up with a settlement with the FTC or with a compromise, or even preempt the entire lawsuit by actually creating its own, you know, adjustments in its own structure and process clearly shows that it expects to win very easily from this entire litigation. And that speaks volumes about the, about how capitalism functions in the United States, where monopolies are allowed as long as they're big enough to actually pay their way through the system. And it is interesting because what Amazon has thrived on is, of course, one by offering convenience to users to sometimes offering low prices in various ways. But we also know that behind this, there is this whole system of very exploitative labor. We have seen labor movements across the world take up, you know, very powerful actions against Amazon. People have been suffering in various parts of the world. There's a make Amazon pay campaign, for instance. And now there's an interesting kind of a move that has sort of come out, come out against Amazon in terms of trying to target it from its monopolistic perspective. So thank you so much for talking to us. And we'll definitely be tracking this issue as time passes because it's definitely one of the more interesting cases of our time. Thank you so much. The UN General Assembly held its second high level meeting on the fight against tuberculosis on September 22nd. It couldn't have been more timely. TB kills approximately 1.5 million people a year and is the most deadly infectious disease according to experts. The fight against the disease is complicated by the emergence of a drug resistance strain, which is more difficult to cure. There are also questions if the global community is doing enough to ensure the availability of medicines. We go to Jozna Singh for more. Jozna, thank you so much for joining us. Quite a lot on the health agenda at the UN General Assembly, though that's not often talked about so much as the geopolitical issues. So may let's first start with the discussion around TB itself. We know that the important recently, for instance, TB became the most deadly infectious disease once again. There's been a lot of discussion on medication. So what were the kind of discussions at this high level summit on TB? So Prashant, during the UN General Assembly, there was a resolution that was passed on tuberculosis. And as always, the thing is that firstly, it was in 2018 that the first such resolution was passed. It was for the first time that the UN General Assembly had taken up TB as a major issue. So and also it was in the context of drug-resistant TB, which has been increasing across the world in the last 15 years or so. So UN did take note of that and it happened. And during this particular General Assembly, the idea was to take stock of the situation where have we come in the last five to six years and what is to be done. Now firstly, the problem is that we on most of the targets that the UN had set, UN has failed, the UN has said the world leaders have failed badly. For example, the idea was to raise a fund of $5 billion a year for research and development and other things to be done for tuberculosis. We are far, far short of it. We are nowhere close. And constantly, the reason given is that COVID-19 pandemic that started to, that did not allow much progress on the TB front. So while of course, because of COVID, tuberculosis faced a lot of back, I mean, it went, we lost a lot of decades of progress that we can't deny. But at the same time, even before that, the data shows that we were not really meeting the targets. So it is not good to just put it on the pandemic, but also what is the world leaders doing if they're not investing enough money on the deadliest of the disease. And just to give you an example, every year 1.6 million people die of tuberculosis. And that is the same as the population of Manhattan. So we are losing a Manhattan a year to tuberculosis. But in terms of the political will, one does not see. And it is the same thing that we are seeing now also in the declaration. It has some good words. It again talks about the same targets. It is again saying that we will need the targets, but by 2030. But we also know that in the past few years, the progress has been dismal. And there is no reason to believe it will change because the declaration doesn't really talk about the fact that, you know, you have something like intellectual property barriers, et cetera, which need to be addressed, more investment definitely has to be made. There has to be some words which talk about making things mandatory on part of the government and especially the developed countries to do so that tuberculosis, we can get rid of it by 2030. But we do not see any of that is strong language coming in the declaration. Yeah. Right. Also, I believe also there were other discussions, including on the pandemic treaty, some of which, you know, turned out to be a bit controversial. Also, could you maybe tell us what that is about as well? Yes. So there were three more topics that you are related to health that were part of UNGA and the declarations were made. The pandemic treaty, of course, is one of them. Then SDGs, which also has some portions regarding health and then the universal health coverage. So to note, I think the overall political, you know, things that happen around UNGA also shows the increasing polarization world over. So 11 countries actually wrote to the general body and the secretariat that they are not happy with the way declarations regarding health have been developed and are going to be issued during this. It is a very big thing. 11 countries which included countries like Bolivia, Cuba, Iran, Venezuela, all of these are the countries which are facing the unilateral coercive measures or unilateral sanctions by the United States. And they all said that we are suffering badly because of these sanctions and the process with which the UN itself is working is very problematic. So they wrote that there is no democratic process through which these declarations have been arrived at. Russia also joined this group of 11 countries and they made major objections to it. So it is like these countries actually represent one third of the population of the earth. So they have not agreed with these declarations. So I think this is something to take note of. And of course, there are major problems, especially with regard to pandemic treaty. And it is because these discussions are happening at so many levels. G20 is discussing it. We at the level of WHO we are discussing it. And essentially the pandemic treaty, the way it gets framed is something which is going to guide how we will treat future pandemics, which can happen. And so you do not see any strong language. It actually saying that the countries should have domestically fund any response in future, it is indicating something like this. It is impossible. It is the duty of the richer countries to really ensure that in a pandemic situation, they do fund the poorer nations and ensure that the pandemic does not spread.  So none of those learnings seem to have been taken on board while preparing this declaration. It is like it will not, it is so far from anything which can lead to equity or equitable access to medicines, medical products in the future. So that is a huge problem. And a lot of people have objected to it. Organizations like MSF, like AIDS Healthcare Foundation, they really objected to what is the way the declaration has come out, the wordings of the declaration. It does not talk about intellectual property barriers. It does not say that the big pharma companies cannot really make a killing out of a pandemic. So it is a problematic one. And next year when at the level of WHO, the pandemic treaty is being discussed, we hope that UNGA's declaration does not guide the outcome because otherwise the poor countries will be at a losing end. And these countries, 11 countries, really have taken a stand, which is strong. And we hope that other developing countries follow the suit. Right. Jyosa, thank you so much for that analysis of what happened at the UN General Assembly. I think it ties into a lot of the issues we have been talking about at the geopolitical level as well, at the level of financial institutions. Very similar issues, I think, being raised when it comes to health. So very important discussion to keep track of. Thank you so much. And finally, Egypt is set to hold presidential elections from December 10th. incumbent Abdul Fateh LCC is, of course, the favorite to win what could be his third term. LCC became the president in 2014 and has won two elections with such huge margins that many have questioned if they were even fair. The same concerns remain about the upcoming elections as well. Under CC, both the economic condition and human rights situation have declined. But with the help of his foreign allies, he is held on to power. We go to Abdul for an early analysis. Abdul, thank you so much for joining us. So elections being announced in Egypt, of course, Abdul Fateh LCC has not announced his candidature yet, but widely expected that he will contest his elections going for his third term. Now, the key question here, of course, in everyone's minds is that what are the possibilities of this election being free and fair because that is a big complaint raised against previous processes and also how is sort of LCC kind of, you know, let's use the word manipulated or change the institutional framework of Egypt itself. Well, Prashant, given the experience of the last two presidential elections under CC in Egypt in 2014 and 2018, it is very unlikely that this time is going to be very different. For various reasons, of course, one, CC has this obsession of winning with huge margins and showing to the world or the Egyptian people that he has no contest at all. So every time, no matter what is the ground situation, CC always wins with at least 96, 97 percent of all the votes pulled in the last two elections. That's what happened. And this is one. And of course, one can easily say that this is not a result which one can achieve in an election which is held free and fair. Second, the Election Commission in Egypt makes sure that CC has no serious contender. So it either rejects those candidates who are considered to be popular or have or basically some kind of political persecution starts against anyone who shows interest in participating in an election against CC and contesting elections against CC. And this time is again, we have seen this is happening for last months, various last few months. Ahmad Tantawi, who is considered to be a serious contender, though his popularity is not that big that he can challenge CC, has already faced spy incidents of spying on his phone by a software which was made in Israel. And given the fact that the political parties most of the other political parties which are considered to be ideological threats are banned and so on and so forth. As far as the institutional arrangements under CC have been done, of course, the first major changes he did in 2019 that he amended the constitution and which basically allowed him to basically contest for presidential election for at least two more terms and that one and the term of the president which was four years before has been now increased to six years. So this basically allows him, if this continues, to stay in power for at least 12 more years from now. And that basically has been done under CC's regime. Right, Abdul, in this context, how do you sort of assess the legacy of Abdul Fateh Al CC so far? It's been, I believe, close to 10 years since now, since he's come to power. And he's really, of course, had an impact in terms of repression, in terms of changing the country's constitution. And also a very important, other key question, I guess, is how has he sort of managed to stay in power despite all these reasons for resentment against him, including the economic crisis? Well Prashant, it is not very difficult to know the reasons or to guess the reason that despite massive food and other inflation in the country, despite rising poverty in the country, despite the fact that Egypt has been on the verge of a failed state for many years now, CC has been able to keep himself in power only through repression. There is no other explanation for that. And this is, in a way, a kind of reenactment of the Hosni Mubarak period, despite the elections, periodic elections, and so on and so forth. His legacy, of course, CC's legacy is basically a legacy of repression. He is only considered to be a kind of a person who defeated the massive euphoria of popular hope, which was generated post 2011 uprisings. And he has been able to kind of completely dismantle that hope. He has, if you see, despite the global criticism about his repressive regimes, even from the closed allies like the United States, CC has not burst a bit. He initiated the so-called national dialogue a few months back in which he tried to basically, at least that was the attempt, that was the stated objective, to bring all the dissenting voices on a table and sit and negotiate, create a national consensus. Despite that process started, we don't know where it is going, what is the fate of it. Nobody knows. On one side, there is national dialogue going. On the other side, the activists continue to be imprisoned. Political parties, which are considered to be popular or a threat to CC's power are banned. Some of them are declared as terrorist organizations. Their leaders are living in exile and so on and so forth. So overall, if one has to say CC's legacy, of course, it is a legacy of repression and a legacy of Oslim Obarak. Thank you so much, Abdul for talking to us. We'll definitely be tracking the campaign as it proceeds as well. I guess a very, very important election as far as Egypt is concerned and its future is concerned. Thank you so much. And that's all we have time for in this episode of Daily Debrief. Do come back tomorrow for a fresh episode. In the meanwhile, do visit our website, peoplesdispatch.org. Follow us on all the social media platforms. And if you haven't hit that subscribe button on YouTube already, please do. See you tomorrow.


Thalassemia is a genetic disorder that causes anemia and can be fatal if left untreated. Screening for thalassemia has been shown to be cost-effective and reduce the incidence of thalassemia major cases. This study found that screening for thalassemia is more cost-effective than treating thalassemia major patients. This article was authored by Firas Esmailzada, Batola Madi, Sajjad Vahidi, and others.


A 40-year-old Fauston man is in custody after allegedly burglarizing fish houses on Lake Bemidji. Deputies observed a minivan make brief stops at about a half-dozen fish houses. The van was driven by Christopher Robin Braun, who is charged with two counts of third-degree burglary. Braun and a passenger inside the minivan were found under the influence of a controlled substance. Fishing equipment was found in the backseat along with multiple other items. Law enforcement says it's best to use common sense when you're not using a fish house. We encourage people not to leave valuables in their fish house. Take them with them, haul them in, haul them out, but don't leave anything of value inside the fish house that they don't have to. None of the fish houses are going to be safe from being broke into. They have enough time and then enough tools with them, they're going to get into your fish house. So we encourage you to pack it in, pack it out. If you leave valuables in your fish house, law enforcement encourages you to take pictures of the items and record serial numbers and also report any suspicious activity you may see on the lake. If you are missing items from your fish house, you can contact the Beltrami County Sheriff's Office. If you enjoyed this segment of Lakeland News, please consider making a tax-deductible contribution to Lakeland PBS.


So, thank you all for coming. Thank you. Thanks to the host for organizing this event. So, I'm Fabien Chouteau, Embedded Software Engineer at AdaCore. Here, you can find some of the silly stuff I do. And today, I want to talk about alternative programming languages for safe and secure RISC-5. So, I will first start with a bit of context. Then, I will try to explain the philosophy of the languages of my choice. And then, I will try to open more the perspective with some ideas on how the RISC-5 community can keep the door open for alternative programming languages. So, the first question is, what do I mean by alternative? Well, basically, it's everything that is not C or C++. Okay? So, I know that, for them, it's probably the best audience for this kind of talk. But probably, most of you are going, you know, why? What is wrong with C and C++? I'm perfectly fine. I like it. It's great. So, we could talk about the Stockholm syndrome, but I think I will focus on something more positive today. So, there are a lot of different programming languages, a lot of different principles, and of course, they all try to give you to help you make the best software, the fastest, by reducing the debugging time, reducing the maintenance cost, increasing the portability, et cetera, et cetera. So, I'm sorry if your favorite language is not in the list here. So, first let me say that there is no silver bullet.  There's no such thing. But there is a lot of progress and improvements to be made on top of what you usually get. And why am I considering that, let's say, these languages are alternative, because usually when you get a piece of hardware, you always have a C++ compiler with it, which is not necessarily true for all the others. So, I have a really clear bias towards two of them. So, that's the languages that I will talk about today. So, as I said at the end of the presentation, I will try to open the subject a little bit more. Why do I think these two languages are relevant to the RISC-5 community? So, these are, so, Ada and Spark, some say system level programming languages or embedded, you can say, bare metal programming languages. So, they compile through machine code like C, C++, Rust and another. And what I really like about those languages is that they really make the great gap between, on one hand, being very high level, and I will show you some examples. And on the other hand, being really close to the hardware, giving a lot of control to the developers. So, yes, two there. So, some keywords about Ada and Spark. So, these languages are really from the ground up designed for safety and security. What's probably the most important, those two points here, powerful means of specifications, I will show you that, and strong typing. What's important to note here as well is that Ada and Spark are not only strongly typed, they also give you a lot of ways to define your own types, which is really important. And then you have all the good stuff, object-oriented, concurrent programming, generics, et cetera, et cetera. So, this is my very personal way of explaining the philosophy of Ada and Spark. Programming is all about communication. You have something in your head, you have an ID, and you want to express it to different people and different tools and machines as well. So, of course, you talk with the compiler because that's what is going to make the code to run on the CPU. You're talking with other tools, static analyzers, provers, I will talk about that again. Users of your API, of course, they have to understand what you have in mind when using the API. Your team, colleagues, working on maintaining the software that you wrote. And, of course, yourself, because we all know very well that in two weeks we will never remember what this piece of code is doing. So, let's start with an example, simple example. I'm writing a driver for this servo motor. So, you know this is a piece of hardware that you can control by the, you can set the position, the angle. So, this is how I would write the API in Ada. So, in other languages, you might just use a floating point as an argument for your sub-program to set the angle. But, floating point is really not enough information for the API because it can be radiant, can be degrees, can be a percentage from 0 to 1, minus 1 to 1. There's not enough information. With Ada, you have the means to specify what you really mean. So, you declare your own type with some restriction. You say, okay, it's a float, but I only allow values between minus 90 to plus 90. So, just by doing this, you're giving a lot of information to the compiler that will decide the right representation in the hardware for this type and the checkers that will check if the values are correct within the range to the user of the API, et cetera, et cetera. Another means of specification in Ada is what is called programming by contracts. So, you have preconditions, something that must be true when you call the sub-program and a post-condition, which is guaranteed to be true when the sub-program returns. So, very classic, basic example. You write a stack. Of course, it doesn't make sense to push something on the stack if the stack is full. So, you express it in the API. And same thing, once you have pushed something on the stack, well, it's not empty anymore. So, this is called programming by contract because the contract is that if you give the right parameters, you will get the right outcome of the sub-program. So, now let's take an example that is probably more relevant to this room. So, something that I don't have time to talk about. There is some kind of real-time operating system within the Ada programming languages. There's actually a blog post. If you go to blog.a.org.com, I have a blog post about this. So, right now, I'm working on porting this real-time operating system to RISC-5. And so, I have to work with the platform local interrupt controller to handle interrupts. So, this is from the specification. Very quickly, the idea is that there is an interrupt notification. Some piece of software here will claim the interrupt. So, I want to service this interrupt. The PLIC will answer with an interrupt ID. The software handles the interrupts and then we signal the completion of the interrupt to the PLIC. So, how do we specify this in our code? So, first, we define our types. So, this value here will be dependent on the implementation. But let's say I have a maximum of... The last interrupt ID is 15. This is a common design pattern in Ada. So, the range should be 0 to 15. But actually, I add one more value that gives me the opportunity to define something that is not an interrupt. So, an invalid value, if you want. And usually, we have the prefix any in that case. So, I define my range and I define that the last value of the range means no interrupt. Then I define a subtype because I also want to express when the interrupt ID is valid. And so, this is a subtype of the full range. Okay, so let's write the API to write our specification. We need to extend the, let's say, the definition that comes from the hardware. So, this is what I'm doing here. This function here claimed that returns the last claim interrupt is not really implemented by the hardware. It's not mapping a hardware feature. But I need this function to do my specifications later. This is why I will flag it as ghost. This means that the compiler know it's only used for verification and the function will not be in the final executable. So, this function tells me what is the last claimed interrupt and potentially, we can see, it's any so it can be no interrupt. So, now what is the contract for claiming an interrupt? So, we can claim an interrupt. It can be that there's no interrupt to handle. So, potentially, we have no interrupts here. What we want as a precondition is that there is no interrupt claimed when we start doing this. So, we cannot claim an interrupt when there's already one claimed. And once we return from this function, the interrupt claimed is the result of this function. Okay. And the last point to complete the interrupt. So, again, I have a contract here. I can only complete a valid interrupt. So, it's not any. And my precondition is that there is an interrupt claimed and that the interrupt here that I want to complete is the one that was claimed. Okay. And the precondition is that there's no more interrupt claim. So, I'm asking to the expert. I'm not sure this is really, you know, valid representation of the hardware specification. But what we can say is that at least we can talk about this. So, it's really, it's expressed and everybody is able to reason and to discuss. Now, what is happening? How these constraints, contracts are actually used by the tools. So, there's different ways. The first one is the runtime checks. So, maybe you notice but the contracts are actually just the same as the code that you write in Ada. And so, the compiler can produce a code for it which means every time you run, every time you call the complete sub-program there will be some piece of code that will check the precondition is true when you return the post-condition is true. So, obviously this will have a huge performance penalty. But, this is still something we want to do. For instance, for debug or testing where performance is maybe not the most important thing. And what this means is that when I debug I have right away all the information but what's going wrong in my application. And same thing for testing. You save a lot of time writing your test because you already specified the boundaries of your inputs, outputs and everything is checked. Now, we can do a little bit better than that. Of course, we want to, at some point when we release the software we want to remove the runtime checks. So, there are multiple solutions for that. First, the compiler because we express a lot more with the contracts and with the strong typing the compiler can do some basic verification. So, if you do something really obvious like setting the servo angle to an invalid value statically the compiler will find it very easy. The static analyzer. So, if you don't know, static analyzer is a tool that will do its best to find bugs. Sometimes we compare it to peer review so the tool will analyze the code and try to find bugs. Sometimes it will find things that are actually not bugs and some bugs the static analyzer will not find. What's the advantage of Edyne Spark in these situations that because we give a lot more information the tool is really more capable of giving a good result. And the last step which is somehow the ultimate goal for software verification is the formal verification. So, formal verification is actually doing mathematical proof that there is no bug in your application. So, this is what we do with Spark. So, Spark is a subset of the Edyne language in a way like MISRACI is a subset of C but as I said Spark is for formal verification. So, Spark transform your software into a mathematical proof and then we tell you, we'll be able to tell you if there is no bug at all. So, this is extremely powerful because you can say I have a mathematical proof that there is no buffer overflow in my application, there is no division by zero, there is no integer overflow and for instance that I follow the API listed above. So, of course very, very strong guarantees that you get from this tool. On the other hand, as you probably guess it's more difficult to achieve this level of safety because you have to tell really precisely how your application is supposed to work. So, all of this is what we can call functional safety. That's the ultimate goal of Edyne Spark. To be able to say that your program does what it's supposed to do and only what it's supposed to do. So, this was the really high level part how do I specify my application and how do I check that it works. As I said at the beginning Edyne Spark are also great languages for hardware access manipulating the hardware. For every type that you define in Edyne you have the high level view and you have the low level hardware representation of the type. So, here it's not necessarily very interesting but I can specify the size in the alignment for enumerations, same thing. So, I can define the size, define the values, the hardware values that are used for each enumeration. For record, so record is more or less the equivalent of struct in C but much more advanced but let's say it's equivalent here and so again, high level definition of my type and low level representation specification. So, here we can set the ranges of really which bits in the byte will be used by each field of the record. And so, the ultimate goal and the ultimate benefit that you get from this is that you don't have to do this kind of things anymore. This is really error prone there is no checking whatsoever and so, I would say unfortunately this is more or less the industry standard for drivers but this is really, really, really easy to mess up. So, in Edyne, with all the hardware representation that we define, this is what we would do. So, here I'm not using any pointers at all. I declare variable and I tell to the compiler do not allocate this variable on the stack do not allocate it on the heap or whatever I'm giving you the address where this variable is allocated. Again, very important, this is not a pointer and then I can just assign the value to the field I want to modify. So, as you can guess, this is really, really powerful. One slight problem that we have with this is that it's a bit cumbersome to write all these things especially with modern microcontrollers for instance that have thousands of registers. So, something nice that happened in the world of ARM microcontrollers is the definition of the SVD format. So, SVD is hardware description, more or less. Of the memory mapped registers and with the SVD to Edyne tool we can generate all the hardware mapping in Edyne. And I will come back to this because I think this is really something really, really important. Another point which might be of interest Edyne is really easy to interface with the C application. So, for instance here, I have a C function that I want to use in Edyne. I can just import it. Just import, I say it's a C function and I put the symbol here. What's really interesting is that you still benefit from the specification features. So, you can have a C function, it still puts preconditions, post-conditions on it. And to export to use Edyne function in Edyne it's just more or less the same. Okay, so that's it for the, let's say, very quick introduction to Edyne Spark. Maybe you're wondering where this is actually used and the answer is here. So, Avionics, Defense, Rail and Space. These are the really core domain of Edyne and Spark. Of course, what is common to those domains is that failure is not an option. And what's really important to see as well is that most of them, not necessarily defense, but the other three, you not only don't have any rights to fail but you also have to prove that your software is correct. So, before you put an aircraft in the air, somebody will sign and say, okay, this aircraft is safe and you have to prove it to this body, this authority. But we also have new emerging domains starting to use Ada. The automotive industry, so there's some really bad or story these years about software in the automotive. So, we have some companies from Japan coming to us, asking us how they can use Ada and Spark to improve their software. Security as well. So, as I said, mostly with Spark, you have some very strong proofs like the fact that you know there's no buffer overflow in your application. This is of course really, really interesting for security and so we have some nice projects going on like Muen, which is an supervisor in Spark. We have the French National Security Agency that also wrote a microkernel in Spark. These kind of things. And just a quick word about the company I'm working with. There are some, I think, interesting points here. So, we are developing an ecosystem, a software development ecosystem around Ada and Spark, so compilers. What's important, I think, is nice here is that the Ada compiler called GNAT is part of the GCC tool suite. And everything we do at Ada Core is open source. So, we have IDs, code coverage, et cetera, et cetera. And we do... Okay, I won't say it too loud, but we do support CNC++ as well. We support dozens of platforms including RISC-5 since last year. We do frontline support. That's one of the values when you are doing open source software. You have to be really helpful to your customers. And if you don't know what this is, well, lucky you. And so, big announcement for this week. I'm really happy about this. Ada Core joined the RISC-5 Foundation just this week. So I'm really happy. And I was supposed to be able to do another announcement this week, but it's going to be next week, okay? I'm sorry. So follow us on Twitter and other stuff. We have a big announcement around RISC-5 for next week. Where am I? Okay. So, now I just want to give you a quick getting started overview. I won't do any live demo because that's a recipe for failure. These are the two solutions that you can use right now, two hardware solutions that you can use with Ada very easily. So, as I said, the Ada compiler is part of GCC. So if you know how to compile GCC, you can also quite easily compile GNAT and use it on any hardware you want. I'm mentioning those two because we have out of the box support for it. So it's going to be easier. So this one is the high-five one from Sci-5. You probably know it. This is a tiny FPGA BX. So what it means, basically any FPGA, I have a blog post using especially this one. And I use the PicoSoc, I think, soft CPU on this. So quick instructions. You go to our download page on the community. You can download the community edition of our tools. You have the cross-compiler here. And I also recommend taking the native one because there is the IDE and the Spark Provers as well if you want to have a look at that. You go to GitHub. So the objective is clear is to develop drivers in ADA to use on microcontrollers. And in particular, we have support for the high-five one. And after that, you should be able to do something like this. Yeah, videos in PDFs, that's not a good solution really. Well, I think you get the idea. Okay. So for the last part of my talk, I want, as I said, to open the topic a little bit. And I want to give not necessarily advice because I'm not really in place to do that, but maybe some ideas from my point of view on how the risk-five community can keep the door open for alternative languages. So first, I want to say that the risk-five community is already doing very well to support alternative languages, mainly by contributing to open-source compilers. So of course, when you support, and so I watched the talk this morning about LLVM, which was really interesting. As soon as you support, you have support for risk-five in GCC and LLVM. You're almost already there. That's really important. And because of the very early support in GCC, we were able to start programming in Ada and Spark very quickly. Debuggers, of course, GDB, Open OCD, and QMU, I think I'm particularly interested in this one. It's very important to have some simulation tools to be able to check quickly your implementation. So some of the challenges for alternative language maintainers, let's say. So the first one, I think, is the complexity of the instruction set extensions. And actually from this morning's presentation, I think I should also mention the ABI. So if you are a hardware provider, you know you have this kind of CPUs, you use this kind of instruction extensions, so you can make one compiler for, you can make compilers for your customers, and you can check them. For us, potentially, you can have any customers using any kind of hardware, and we have to be able to support them, so you have to be able to produce a quality compiler and toolchain. So the more combination of extensions, the more difficult it will get. Something else that I want to mention is that knowing what is really implemented by the hardware is really important. So if I want to take the comparison with, if some of you are familiar with the PowerPC families these days, like you get the name of a microcontroller, it's impossible to know what's going on inside. So being very clear about what are the extension use is really important. Those two are probably going to give us, so deviations from the standard and custom or proprietary extensions. So as long as you go outside the standard, maybe you will say, okay, I have this very nice feature I want to add, it's going to be great, and I will do a special batch of GCC for it. Well, you have the risk that you put out of the game every alternative programming languages because we won't be able to maybe use your patch if they are not contributed and we probably won't be able to really test those features. So every time we will see something like this from our customers, it's going to be more difficult for us. The reference implementations in C, so I guess we cannot expect hardware vendors to provide the drivers and libraries in every other languages. What I would like to mention is that it would be nice to keep in mind the alternative languages when doing reference implementation, maybe getting in touch with the different communities to ask if they are willing to participate in writing an implementation in Ada, in Spark, in Rust, in whatever. Also what I want to mention is that C is actually not... It's an okay language for reference implementation, let's say, because more or less it's the basis for everybody. All programming languages have some way or others to interface with C. Going beyond, going into the C++ territory will, on the other hand, make things quite complicated. And so the last point for me today, and as I said, I'm going back to this. The SVD format was really a game changer for us in terms of support of ARM microcontrollers. As I explained, it can be difficult to write hardware mapping. So having a format that you can basically take any microcontroller, you generate the low-level representation. It's really easy to start programming this microcontroller. And so I think that the RISC-5 community should take inspiration from this. And actually I don't know if there's already projects going on, but I would say that we are willing to participate in this kind of definition of format. So at least I think SVD is really the minimum and probably we can go beyond. So for instance, what I have in mind is specifying the CPU characteristics inside this format. So I was talking about, for instance, the instruction set extensions. Specifying the memory banks, that would be very useful. Also, one of the big problems with SVD is that it's very monolithic. So let's say I have two microcontrollers. They use the same I2C controller inside. Unfortunately, there will be two separate SVD files and no real way to know that it's actually the same I2C controller. So potentially I should be able to do right only one driver, but it's going to be very, very difficult. I know that the RISC community, some people started to do some analysis of the SVD files to try to find different, I mean, similar patterns in the SVD file to try to identify common controllers, but really I really think that having a modular representation would be a great advantage here. And since the trend and what we maybe are going to see with RISC 5 is the ability to generate and to create custom chips, custom microcontroller, if the tool that generates this custom microcontroller could also generate the custom SVD, that would be really, really, really helpful. So that's it for my presentation. I think I hope that you got an idea of what it can mean to do something different than CNC++. If you want to have a look at Ada and Spark, I really recommend to go to this website. It's a new interactive website, so you don't have to install anything. You just click on the browser and you will be able to compile and run examples. And you can follow us over here on Twitter and join the Ada subreddit where you will see news about the technology and the community over there. That's it. Thank you. Okay. Do we have any questions? Maybe? Yes? We kind of... Oh, yes, sorry. So the question is that the next MicroSemi FPGAs, right, will have RISC 5 cores. And the question is, do we have any plans to support it? The answer is yes, but I don't know really when, so far. Okay. Yes? Sorry, runtime. So the question is, how good is the runtime performance of, I guess, Ada and Spark compared to C? So the answer is that it depends on the features. So Ada has more features than you would find in C. So if I think about exception propagations, these kind of things. So if you use similar features, we have similar performances in terms of code size and runtime performance. Some of that is thanks to the fact that we use the same backend. It's GCC, so performances are really similar. Of course, when you start using more advanced features, there's a runtime penalty, but that's a balance between the feature and the performance that you want. Yes? From your examples, I got the impression that your language could actually use, so Ada could actually use hardware extensions, for example, for boundary checks because you limit the range, value range of data paths. Is there anything planned to work on a proposal in that direction together with Rust files? Because why we have the opportunity to change hardware extensions? Okay, so the question is, it looks like the specification of the Ada language can use or can lead to use some hardware-specific maybe implementation to help implement those restrictions. So I would say the answer is definitely yes, but we are not really in this kind of ecosystem, unfortunately. So we joined the RISC-I Foundation. This is something, so we are definitely willing to participate into this kind of effort, but that's not really something we do right now. So yes, there's a lot of things. In Ada, you have fixed-point, native fixed-point support, you have modular types, et cetera, et cetera. So there's a lot of things that could use some specific hardware, but yeah, we don't really do these kind of things right now. So we use as best as we can what's available. Yes? Is there another key possibility to define like clear on read or set to clear registers? I mean, you showed how you model the address into the variable. I mean, especially when it comes to micro-controls, as you mentioned a few times, you sometimes have these exotic... Okay, so I will try to refresh the question. So the question is, is there any possibility to do, what do you say? Set to clear registers, et cetera, et cetera. So no, there's not really that kind of precision. What we do have is the possibility to specify, for instance, for a 32-bit register, the compiler will try to optimize the access and maybe sometime do 8-bit access, which is not always allowed by the hardware. So we have ways to specify to use the entire register, these kind of things, but nothing towards what you said. Okay? Let's see then. Thank you.


Welcome everyone to today's webinar, how to up-level your product sense. Before we dig in, I just wanted to give you a little bit of background about myself. My name is Sam. I've been in product management for 10 years, started in 2012 transitioning from sales slash account management. I have a background in mobile gaming, ad tech and most recently podcasting. I have a BA in film and media studies, which I only say to reinforce the notion that you don't need an engineering degree or other technical background to break into product management. I identify myself as a dad, a gamer, and an amateur rapper, which is the last reference here to that today. All right. Let's dig into it. What are we covering today? We're going to go over what product sense is for those who are unfamiliar with the term, why it's important, and what you can do to improve your product sense. So let's start with what product sense is. I would say that product sense has a bit of a mystical aura around it. And my personal opinion is I think this is a bit manufactured to gatekeep product management as a vocation, which is why this GIF is a metaphor. But there are a lot of definitions out there. And I tend to think that these definitions kind of fall on the ends of a spectrum between either overly simple or overly complicated. So I'd like to submit my own humble definition for you today. Good judgment applied to product decisions. Now, this is admittedly abstract, which is kind of on par for product management as a vocation, if you ask me. But I think it's worth taking a second to deconstruct this definition. So let's start with judgment or good judgment. My personal favorite definition is from Benjamin Todd of the wonderful website, 80,000 Hours. And he defines judgment as the ability to wait complex information and reach calibrated conclusions. Now, this is still a bit abstract or esoteric. So let me take a real life example of applying good judgment to a situation. I have my kid in the backseat of my car. Again, I'm a dad and he does not want to buckle his seatbelt. He's a bit older than this stock photo here. So he's capable of buckling a seatbelt, but he does not want to. Ultimately, I could buckle it for him or I could wait until he buckles himself. But there are actually other options I could consider. I could sit and wait patiently until he does it. I could try to convince him to do it, make up a story. I could threaten punishment and prey on his innate loss of version bias and withholding access to a toy if he doesn't do it. But there's actually more information to consider here. In general, he's been on good behavior. He's been buckling his seat on his own. He wasn't feeling well this morning and when he doesn't feel well, he tends to lean on others for help more. And finally, I have an important work meeting in 20 minutes. So in this case, I value time to resolution and my son's emotional state over factors like reinforcing independence and I buckle his seatbelt. And you can see what weights I've chosen that go into my decision here. And that's me using my judgment to make that call. So that's good judgment. Now let's go into product decisions. Well, product decisions are as broad as a scope of a PM's job. You might be familiar with this infographic, pretty renowned. Product management is this intersection of all these different kind of roles and domains. And so product decisions can be applied to UX. They can be applied to technology decisions, roadmap decisions, scoping, pricing, et cetera, et cetera. And these decisions are always contextual. And again, bringing it back to the car seat. I had the context of my son's general behavior, his general demeanor. And of course, the information that I had a work meeting coming up. And some of you might be asking at this point, what about intuition? Isn't that why it's called product sense? Aren't we glossing over that kind of important factor here? And I would say that intuition is under the umbrella of judgment. And it just falls into the subconscious category. And, you know, quite frankly, I wasn't sitting there in the car pulling out a spreadsheet and assigning weights to these different factors. This all happened very quickly, happened probably subconsciously, but it's still a form of judgment. OK, one more thing before we move on. There are decisions that do not rely on product sense at all. There are design principles like when to use a switch versus a checkbox does not require judgment or product sense. There are, you know, standards for how to stand up a RESTful API or how to conduct an A-B test. You do not need product sense for these things. But I tend to think, and I think most PMs would agree that the decisions that require a finely honed judgment are the most interesting and impactful. I didn't explain this before. I'm a PM at Amazon and we term decisions that are not easily undone as one way door decisions because you go through the door and the world has changed. You can't go back again. These kind of decisions require a high degree of product sense. Achieving product market fit, same thing. Even kind of decisions relating to creativity and innovation require good judgment because you need it to recognize valuable ideas and execute on them. OK, we've defined product sense, or at least we have a working definition. So let's briefly go over why it's important. This is a little goes without saying, considering we're basically just talking about good judgment. But there are two kind of practical reasons to emphasize its importance. First, it's critical to your employability. Being employed is great, maybe not better than being willfully unemployed, but this infographic is taken from a newsletter that I subscribe to. Shout out Lenny's newsletter.com in which Lenny, a former Airbnb product lead and product dot leader, conducted a survey of over a thousand product managers and adjacent roles and found that product sense was the number three most mentioned skill that's valued in hiring decisions. So it's really important if you want to get hired in product. Anecdotally, pretty much every product interview I've been in, there have been product sense questions and I ask product sense questions when I interview candidates. Now, I'm going to let you read this quote for a second. So the key takeaway from this is that any of these really important and valuable attributes drive charisma, creativity, while great to have as a product person are not enough on their own to be successful. Judgment is really the key that unlocks your full potential as a PM. Perhaps this isn't true at organizations where PMs are just kind of project managers. But this isn't the case if you want to continue doing product management at the highest level and you have ambitions to lead a product team or start a successful product company. There are a ton of examples of, you know, the importance of product sense and a company success. I just want to give you one. There's a gentleman by the name of Tony Fidel, who's credited with inventing the iPod, and he was a founder of Nest. And when they first started shipping their smart thermostats, they needed to make a judgment call about what screws to include for mounting the devices on various wall materials. And they initially included a few different screw types for different materials. But as I started getting feedback from customers, they realized customers were getting confused. They didn't know which screws to use, and this adversely affected their first time experience with a product, which is really critical to gain traction. And as a result, they did something pretty radical. They invented a new type of screw that would work on a variety of surfaces. And, you know, as he put it, the investors thought they were crazy, but they knew how important it was to simplify the installation of their product. And ultimately, that was kind of a foundational aspect of them scaling their business. OK, so we know what product sense is. We know why it's important. Let's talk about how you can improve it. I will say that there's kind of conventional wisdom out there that product sense is just something that comes with experience. We'll come back to that in a bit. As with most things in life, there are kind of two broad categories of activities you can engage in to develop any skill or ability, learning and doing. So let's start with learning. One of the best things you can do is observe people whose judgment is strong. No product manager is an island. We're closer to a bridge, but I'm not going to go down that analogy train. Over time, you will consciously or subconsciously pick up habits from the people around you, whether they're PMs or designers or engineers or other leaders. So pay attention to the questions they ask and the tradeoffs they consider and how they measure success. I would say the only gotcha here is making sure you're soaking up good judgment, not just any judgment. So ideally, these are people whose success in decision making is already evident. Read product case studies. You should seek out examples of how others have made product decisions and solved problems. I recently read a fascinating story from an engineer at Bethesda, which is a popular gaming studio, and they were dealing with a problem in their game Morrowind, which was a huge kind of open world sandbox kind of RPG game. And this game was pushing the limits of the Xbox hardware to the point where the device, the hardware was running low on memory. And they could have solved this problem by refactoring the game to reduce memory usage or optimize it. But they found a much more economical and clever approach. There were loading sequences all over the game. It's a huge game, huge world. Users are very accustomed to waiting to get into a new area. They found that they could reboot the Xbox, literally restart the system silently in the background during a loading screen. And the users would have no idea. Really clever. Learn more about how people think it behaves. So, you know, whether you mean to or not, you are going to leverage concepts of psychology and cognitive, you know, biases and behavioral economics and sociology when you're building products and making decisions that affect your customer. So it's good to be aware of these principles or of these concepts so that you can use them intentionally. They're very powerful when used intentionally. So one example of this stitch fix, if you're not familiar, it's a personal styling service that recommends clothing based on, you know, your size and your budget and your style. They intentionally added friction to their customer onboarding flow, which defies kind of all conventions of, you know, product. You want users to get into your product as quickly as possible and onboard it as quickly as possible. But they did this for a very good reason. Users who made it through this flow were more invested in their service. And this was probably due to factors like the IKEA effect, which is where people tend to place a higher value on products. They have had a hand in creating and the sunk cost fallacy where people have a reluctance to abandon a course of action after they've invested in it heavily. This was great for them. They could really qualify their leads and a key component of their service being personalization. They were able to collect all this data upfront. And they would not have been able to execute the strategy if they were not familiar with kind of how people think and behave. Stay on top of tech trends. This may sound a little intimidating, or like you might be getting to the point, who has time for all these things? And I'll go over resources a bit later, but this doesn't have to be something you really go out of your way to do, per se. You don't need to know the ins and outs of every technology. But you should think about the technologies that affect every industry. Think about when personal computing came about or the internet or the cell phone. I think now, you know, key concepts are web three, artificial intelligence, machine learning. These are kind of seismic shifts in technology that affect every industry can affect every business. So you should be at least aware of them. You should be at least familiar with the key concepts because, you know, whether you like it or not, they will apply to your business or your competitors' businesses. And then the last one here is expose yourself to new things. This is a, I'd say, general recipe for creativity, which is often a unique combination of distinct ideas. You can pick up these lessons anywhere. I recently went to an indoor playground with my son that didn't allow adults to join their kids in the climbing area. And as you can imagine, that could have been kind of disastrous because what am I supposed to do while I'm there? And the company was really smart. The small business was really, really smart in how they address this problem. They realized that while kids are the users of their kind of product, their gym, their indoor playground, the adults are actually the customers making the purchase decisions, deciding how long the kids get to stay, whether they get to purchase snacks and arcade tokens there. So what they did was they offered ample, comfortable seating. They offered free Wi-Fi and they even had paid massage chairs. Incredibly smart. And something that, again, I didn't go out of my way to kind of pick up on this. I was just being observant. I was thinking about how are they going to solve this problem? I read on the website that adults weren't going to be allowed into the playground area. So I figured I wouldn't be spending much time there. But I was really wowed. One other thing I'll mention is in the vein of unique combinations. Being a general recipe for creativity. I'll give a pause going back to kind of unique combinations of distinct ideas, being a recipe for creativity. Think about typography and user interfaces. Or more recently, live streaming and exercise equipment. OK, moving on to things you can do. We talked about ways you can learn and kind of improve your product sense. Now let's talk about some concrete things you can do. Meet with your customers. PMs are not self-made again. They're dependent on their teams, their peers, their reports, their stakeholders. Talk to the people that talk to your customers. It may sound ridiculous, but a lot of PMs don't do this. I have an example of how this solved a very important problem for our business. We designed an interface thinking that users would select five to ten items at a time. And due to performance constraints, we didn't load all of the items into the list that they could select from, so you had to search for each one. But we expected that to be not such a huge deal if you're searching for five things at a time. We released it and we found that users would actually select hundreds of items at a time in practice and it would take them hours to get through filling out a form. And we knew we had to address this problem. Many solutions were considered and the leading one was to allow customers to create groups of items so they would only have to select a few groups as opposed to a bunch of individual items. We talked to customers and we found out we were dead wrong. We had misplaced the problem.  The groups were distinct for every form. They were not reusable and creating the groups was a slow deliberate process by design. They had to think consciously about which items they want to select for a given opportunity or form. The problem was getting that list once it was decided on into our system. It was an operational issue. And through talking to customers, we found that the list was most commonly generated in a tabular format so we built a CSV ingestion workflow. And it reduced the time it took to complete a form from hours to minutes. And if we hadn't really dug into this problem, if we hadn't talked to our customers and figured out who the problem was for and in what context, we would have over engineered the wrong solution. I mentioned this before. Listen to your teammates. One thing I just want to point out here is that it's important how you kind of project yourself or how you put yourself out there in your organization. If you give off two busy vibes or if you are kind of short with people who come to you with feedback because you're too busy or you think the idea they gave you is not so great, they're not going to keep coming back to you. And they're going to self edit their feedback when solicited. So it's an important soft skill that you're approachable as a PM. Use and examine your products. Sounds very obvious, but you'd be surprised how many people who work on products who do product development don't use their products or don't use their products in the same way that their customers do. And that's really critical for building empathy. So the product I currently work on is a kind of one-stop shop for podcasters to host, distribute and monetize their shows. A couple of years ago as part of a team offsite, we actually did a podcastathon where we had small teams break out, create a short podcast and then use our product to upload their show and configure ad settings and actually insert an ad dynamically, which our product does. And this was a totally eye-opening experience for many of our team members who had never actually gone through the end-to-end workflow of creating a new show. They had worked on individual features. They had provided support for customers. They had even designed or developed different aspects of the product, but they had not gone through the experience that a customer goes through every day using our product. And again, I said before, product sense is very contextual and domain-specific. If you want to apply product sense to your product, you need to know it inside it out and you need to know it in the way that your customers know it. I was only able to make a decision for my son because I was very familiar with the context and the domain. You can also tear down other products. If you don't currently work in a product capacity, I recommend reading useronboard.com for kind of an example of how you could do a tear down related to onboarding, but there's really no substitute for doing it yourself. You don't really need to go out of your way to do this. The next time you're going to try a new app or a new service or even a physical product, just open a page in Evernote or Google Docs and Notion or whatever floats your boat and write down your observations on their onboarding flow. What are they doing well? Where are you confused? What would you do differently? I recently did this for a companion app that came with a piece of workout equipment and ended up sharing my feedback with a company who has since made updates to their app. So it can be kind of self-serving too. Audit yourself. People measure a lot of things about themselves. They audit their sleep habits, their diet, their exercise routines. So why not your past decisions? Whenever you're making a big consequential decision, note it down in a running list and revisit this list periodically to review what happened. With hindsight, what did you miss? What could you have done better? And what did you get right? If you recently joined a new company, maybe you just started your career in product management, ask to see some older PRDs and read about the decisions that were made and then contrast that to reality. You can interview the PMs who made those decisions and why they made those decisions and ask them how did it turn out. One other thing I want to leave you with is the importance of always considering another option. Research on decision-making has found that whether or not decisions where you really only have one option or another were much less likely to be judged successful versus those where several options were simultaneously compared and the theory is kind of that these scenarios frame the problem too narrowly. There are almost always other options. Even if that means not doing anything or waiting until you have more information to make a decision. And one trick that is courtesy of a gentleman by the name of Philip Tetlock is to say to yourself, on the one hand, on the other hand, on the third hand, because PMs are aliens. One other trick you can do here is reading about first principles which can often kind of take you back farther and say, how did we get to this point where we only have these couple options to think about? Let's revisit our thinking here. And one other thing, it's not the product manager's job to come up with all the options. It's their job to aggregate them and make a judgment call using their product sense about which option is best for the circumstances or even delegating someone else with more domain experience to do so. So there's a very strong correlation between ice cream sales and shark attacks. But we know that correlation isn't causation. And with regards to whether product sense comes with experience, I have a feeling if you map the two on a chart like this, it would look pretty similar. More experience, more product sense. But this is misleading. Product sense comes with experience because the longer you work in product, the more time you have to refine your product sense doing all the things I already mentioned above, whether you're doing it consciously or not. So the PMs with experience have product sense. The PMs without experience are new and need to develop their product sense to be successful. They might actually have some already courtesy of doing some of the things that I mentioned above knowing that they were refining their product sense. But I would say there are no PMs with experience without some product sense because they would have churned out of product. And I'm actually willing to bet that a non-PM who engages in the kind of activities and actively tries to learn and better their product sense is going to have a more refined product sense than a PM who doesn't go out of their way to improve it. And maybe we need to start an annual product sense competition to test this theory. One more thing. I don't actually like the term product sense. I think sense implies innateness with few exceptions. I do want to get lasik, but you can't really improve a sense. And that contradicts what we've just covered that you can improve it. So I'm proposing that we phase out this term and replace it with product muscle. Product muscle instead. Feel free to attribute that to me. Just to recap, product sense is good judgment applied to product decisions, something you can develop like a muscle. And to accelerate your development, you should be talking to customers. You should be using products critically, evaluating your decisions and staying curious about your industry, technology, and the world. Here are some resources. I will share these slides so you don't need to write these down. These are general product resources that have helped me become a better product manager. They're all things that I've used myself. I want to provide some acknowledgments here. Product managers like all of, you know, civilization stand on the shoulders of giants. So shout out to these PMs and thought leaders who helped me refine my own product sense and put together this presentation. And of course, thanks to Product School for giving me this opportunity to talk to you today. Despite outward appearances, I'm actually not very social. You can't find me on Instagram or Facebook or Twitter. I have that stuff locked down. But I invite you to contact me with questions via email, connect with me on LinkedIn. I'd really appreciate it if you took a three-question survey about this presentation. Thank you for sparing your most precious resource with me.


It's to see you, Mr President, have a great day, wonderful day, and I know that you took a very deep personal interest in my case, and I think that it was of that interest in my case to be here, so thank you very much. It was just really, just excellent. Hello, Mrs Reagan, how nice to see you. Wonderful to be able to be here. I hope all of you get this table. Well, you drive. I hope he turned himself inside out. I know he did. See, you are television. We have about five waves. We've got a long way to go. Let's go see them. We're trying to shut them down in person, but we thought it would just be a photo-op and we'd all stand up on steps and see them. We're very welcome visitors. We'll find out about ten days. What do you think about this stuff? We're not leaving in at all because no one had to cave in. The meeting in Iceland is part of the effort to get Danilov free. I just said that there wouldn't be any meeting until he was free. He said he wants free then there was a meeting. Wasn't that part of the agreement, sir? One thing if I may, and that is this was a very complex situation, and if it had been for President Reagan's taking a very deep and personal interest in my case, it would probably be some years before I could stand in front of you. And say thank you, Mr. President. We're going to get together afterwards I think we'll be much closer. This is where the steps ended.


Thank you Professor Burke for the kind introduction. I would firstly like to thank the Brain Foundation, its donors, sponsors, committee members and staff for the privilege of receiving this very generous research gift, for which I'm very grateful. I'm fortunate to work, as Professor Burke mentioned, with a wonderful team at the Movement Disorders Unit at Westmead Hospital, which is in fact in Sydney. I would like to thank my co-investigators and PhD supervisors, Associate Professor Victor Fung, Dr Neil Mahant and Professor Steve Wucic for their help and mentorship. I'm even more fortunate to have a wonderful and supportive family and I would like to acknowledge their support. This research gift provides a great boost to our research on tremor and its diagnosis and classification. Tremor is a common human experience and I think most of us in the room could probably think of some stressful moment in our lives, perhaps giving a public speech or waiting to give a public speech, when we develop some minor trembling of our hands or of our voice. But in some people, tremor goes beyond these rarified circumstances and invades day to day life. So our patients come to clinic and they tell us that their hands shake so much that they can't write or even sign their name. That they can't eat with a knife and fork or drink out of a cup and they avoid restaurants at all costs. Or even that they've had to give up their job, their livelihood or their hobbies as a result of tremor. And unfortunately tremor is also a common problem. If we combine the two commonest causes of tremor, namely essential tremor in Parkinson's disease, it accounts for about a percentage point of the population which is over 240,000 Australians. At present treatments for tremor can be roughly divided into medication treatments which are only modestly effective and have their own side effects and surgical treatments such as deep brain stimulation which is very effective but invasive and involves brain surgery. So how can we develop better treatments? A key barrier to progress is not having a robust and evidence based way of diagnosing and classifying patients with tremor. There's no single diagnostic test to determine the cause or type of tremor and even in 2017 researchers in the literature continue to refer classified tremor according to different criteria. And unless we're all talking about the same thing it's very hard for us to learn from the research work that gets done and that includes clinical trials of new treatments. So our work involves studying the clinical features of patients with tremor and then recording the properties of the tremor objectively using sensors that we apply on the skin to measure the amplitude and frequency of the tremors those are accelerometers and other sensors on the skin to measure the behavior and bursting activity of the muscles beneath the skin that generate the tremor. We hope that by applying a statistical technique known as cluster analysis to the data that we collect that we can identify different subgroups of patients with tremor who behave in a similar way and hopefully respond to treatment in a similar way. In the future we hope that this work might provide the basis for clinical trials of new treatments such as the current ongoing trial of botulinum toxin for upper limb tremor which we're conducting at Westmead Hospital. Our overarching goal is to provide better care and treatment for our patients with tremor to help them do the things that they want to do in life and we are very grateful to the Brain Foundation for its help in reaching this goal. Thank you.


I was going everybody forced here rip in eight boxes of 21 22 prism basketball For Ryan B. The eight boxes a couple different skews here You have a 21 22 prism basketball fast break four of each of these by the way and a 21 22 Prism basketball choice We'll start with the four fast breaks and finish the four choices Ryan. Thanks for the phone order, man Let's see some Cade Mowgli Barnes Wagner Getty. Let's see them all man Big vets with like a nice low number of LeBron or Currie or Giannis chiefs looking washed Done Disco fearless Bradley Beale Disco Dennis Schroeder Laker legend Jonathan can mingle rookie base Fox legend Kai Jones rookie fast break auto Non-numbered with a shy Gilders Alexander disco Gotty Barnes base Elements immaculate collegiate and both standard and a 10 bucks Feeling dangerous disco prismatic Jalen Brown a purple disco clay Thompson Clay 27 out of 75 Cameron Thomas rookie Silver Harrison Barnes a disco Terry Rose here Shreve Cooper Yes Richard it went through you're good good to go cool-cool Disco wide-screen they call the yokich a blue disco Zion Williamson Numbered Zion here 136 150. I think he's gonna have a big year. Yes, Greg round the third. He looks prime to just Very good, and I'm just gonna put the pelicans in a playoff spot right away. Yeah, I would say so. That seems good lime green disco Jeremy Grant Low numbered to a five on the Jeremy Grant Bama to bio disco Zach Levine prismatic disco red disco Royce O'Neill 26 of 100 Do the green rookie base There's a Josh giddy disco photo variation. It's giddy Penny Hardaway disco Mindset disco Steph Curry Dorian Finney Smith at disco Bfs illegal in state of Florida Raiders on the first and golf on the one they run a passport fireworks disco Zion Williamson Raven's legend blue disco Kendrick Nun 39 of 150 All right First thing over the one you probably run on the first down right like I Feel like that's the way to go on first down from the one Yeah Josh Jacobs a trade acquisition our league. That's true. That's true Got a Luca Garza rookie fast break auto for the Pistons, which is Ryan B blue disco G Andre Hunter 13 of 150.  I saw you order the hobby diamond things guys are probably getting close to an hour On the queue here. Let's go prismatic and then the Edwards T Wolves. Just go with the Amaladon Silver Xavier Tillman red disco Jamal Murray 83 of 100 Franz Wagner rookie. Yeah, I think all the all the auto should be sticker in here kind of they are in prism Prism hobby this go widescreen Damian Lillard a Luka Donchage disco Josh giddy rookie base Pink bones Hyland Stuck to the card behind it there Nice bones 33 of 50 Pink disco bones blue disco Kenny Martin jr. 79 of 150 fireworks disco dwelling B disco Dramon green Jones, Wisconsin Anderson photo variation this time. It's Chris Duarte Eric blood. So oh Yeah, Travis. Oh, yeah You know in big time danger PSA nine number one's right. It's like Nikola Yokochworth. That sounds like a question for eBay to be honest Disco prismatic Deere and Fox disco Darnabitsky. I am not a price guide fortunately wish Yeah, 130 point.com or eBay fearless disco Devin Booker red disco Paul Pierce 4400 that's Bones Hyland base pretty far away though. So I get it. Yeah Big big reach there flow percentage shot from that from that distance fireworks disco Russell Westbrook Disco Tyrese Halliburton 130 point.com 130 point.com Literally just copy your eBay like search into the the site and it'll come up with the eBay stuff The best offer price to be shown what was expected very helpful. I silver norm palette A disco Josh Richardson Chris Duarte rookie Disco fearless Steph Curry Disco and as cancer Bones Hyland base Chris Weber pink disco 18 to 50 blue disco Miles Turner 126 of 150 fast break auto karan butler ice Ron butler wizards variation there Zach Levine disco Yukon legend from Pete legend Mavericks legend slippers legends Fireworks disco Kevin Durant disco Chris Weber Wide screen disco LeBron James disco Emmanuel quickly fireworks Lamello Disco shake Milton prismatic disco Russell Westbrook red Desmond Bain Second-year Bain 90 of 100 prismatic Chris Paul Derek white disco Celtics legend Josh supremo rookie photo variation disco down in a banson rookie disco Mobley base What one-of-one was it? Oh, that was the one I pulled for you right Travis. Did you get that one? It was uh, it was like the triple one-of-one patch auto like shield tag and Like then out of cold standard I don't know. It's such a hard one to comp Travis There's one-of-ones. I honestly if you're selling it. I just throw it up at a price. You'd be happy if someone Paid for it. If not some of the dual and triples must have sold like the yeah 49 or whatever so silver car Malone I'd probably like Quadrupled that price. Yeah, maybe Disco RJ handed for a car like that. I probably quadrupled it. Yeah It was book night. Maybe you listed higher than that.  I always whenever I do that. I always listed a crazy price Yeah, the market's the market's still kind of forming. So yeah, exactly Disco mindset Steph disco Jalen Smith Spicks Hey Donovan Mitchell There's a pink all by a blue every single time 10 of 50 Blue rookie wants us kind of Anderson 58 of 150 fast break auto jacks sigma Disco Russell Westbrook Lakers Yeah, Zach. We were actually everyone in chat was just talking about him Vaughn about member Milo's dosage. Me neither That's what we're talking about. Disco Zach Levine prismatic Disco Jalen Johnson rookie Moses moody rookie. Yeah, it's a much riskier hold. I think though Rory.  Well, that's like if they go out and Like do you imagine if they go out and they paint and draft shroud like Disco prismatic Jalen Brown Xavier Tillman Waddle and Chase are different because they just kept going at that rate. It's like Justin Jefferson did the same thing Yeah, disco widescreen. Nicola Yolkic red Brandon Clark 52 100, but it has been trending that way for receivers the past few years Kid Cunningham breaking not a ton of buster at the top of the draft recently, right? Yeah, it's been very spot like it's almost like you're guaranteed to hit fireworks Zion Composito disco How many other types of rookie is 30 years old remember that dude that debuted for the Lakers a few years ago He was like 32 or something.  Um What a variation for the magic Ben Wallace Ben Wallace Choice time. Let's see some big time hits and choice four of them here All right starting off a couple silvers here rookie want to scuttle Anderson and nick clackston Try colors. These are non numbered Ricky Rubio Lou Dort Eric gordon Another one of your castler Edwards rookie Or try color. That's an extra card then Nice a Davion Mitchell sensational signatures. Nice rookie auto Paul Millstapp on the blue 19 out of 39 And a red Wendell Carter jr. 37 of 88 Really fine any like good data for you Travis Silver and Nikhil Alexander Walker silver miles bridges Try colors now I was only three this time jordan nuara Ben Simmons draws in petrovich Red rookie auto joshua primo non numbered Solid Mitchell rookie auto as well or Mitchell and primo now as well Red miles bridges 31 of 88 And a red rookie jeremiah robinson earl 22 of 88 All right, come on Let's see something huge here. Uh rory. I know you were in these last time rich just listed some fanatics Silver and diamond box breaks. I know you're in I know you're in a couple of them Check out the schedule if you're down again Silver is Malik monk heaven 40i pride of new york Eric blood. So try color Joe engels and shy guilty south xander a red choice auto long zz face Oh back a legend right there red 88 reggie lewis 27 of 88 and a blue jalen brown 28 of 39 Nice bet there. We need a big rookie color here big time I'm building up to it. All right silvers Josh heart coal ampany try color derrick rose kevin durant And jason kid red choice auto penny hardaway Penny got red jordan clarkson five of 88 And a green nice color here is avary bradley green one of eight And that's gonna do it ryan. Thank you again. Get all these cards out to you shortly


Phillies… A while back a co-worker was unloading some stuff including some NES cartridges, nothing too fancy, just the usual stuff you'd see anywhere like Mario, Duck Hunt, and that Caesar's Palace game. But, one cartridge was Codename Viper, a 1990 Capcom published game developed by Arc System Works, who usually made games for the Sega Master System like Vigilante, Battle Outrun, and Rolling Thunder. And you're gonna hear about the latter a lot in this video because Codename Viper is essentially Rolling Thunder but slightly more polished. It's got the exact same gameplay structure where your character shoots bad guys and has two distinct planes to jump between. We have the same perspective and viewpoint, the same pace and tempo, the same bad guys who shoot at you the microsecond they appear on the screen, and the same mechanic of going into doors to get power-ups and ammo, rescue hostages, or just to hide from bad guys and dodge enemy fire. So how is Codename Viper different from Rolling Thunder? Well, the latter was made in 1986 by Namco, and it got a ton of ports, including one to the NES that was released in 1989 by Tengen, and it's... okay, it's a completely serviceable port. Despite being a pretty clear clone, though, Codename Viper does do a fine job improving upon certain aspects of Rolling Thunder. For one thing, we got an original story you play as Kenny Smith. No, not that Kenny Smith. A special forces agent who is sent to investigate a massive drug syndicate in South America.  You also slowly uncover clues of the drug syndicate's true leader. You get this sheet of paper which supposedly lays out the cartel's plans, and finishing each level adds more words to it. So yes, this is the rare story-driven action NES game with a twist at the end. Well, you can see the twist coming from about 20,000 light years away, but still, it's nice to see some real effort put into that part of the game. One thing Codename Viper has going for it is that the level layouts are larger than Rolling Thunder, and you have a bit more going on. The game starts out very simple, so you can get your bearings, but after that, you've got wooden crates and shipping containers you gotta hop around and occasionally use for cover. You've got zombie dudes jumping out of cages, you've got conveyor belts to deal with, ugh, those are second only to underwater levels on my pet peeve list, and you gotta explore a bit to find certain doors which may contain a power up or a hostage, and if you collect 16 hostages, you earn an extra continue. The controls are spot on in exactly as you'd expect them to be, it's simply A to fire and B to jump, and hold up while jumping to move to the upper tier, and hold down while jumping to go back down. And when you pick up a weapon upgrade, it automatically equips it for you. So yeah, this game has an easy pickup and play style that has a lot of appeal. That doesn't necessarily mean this game is easy though, there may only be a handful of enemy types in this game, but you really have to have your reflexes dialed in when you play this one. This is the kind of game where enemies appear on screen for a millisecond and immediately start shooting at you, and you have to be constantly on edge since you have a life meter, and it's just three hits and you're dead. And yeah, unfortunately like I said, there's only about seven or eight enemy types through the entire game, and it's just dudes wearing different colors that have different patterns and health meters, so this game can get kind of dull at times because of that. But I do appreciate the door mechanic where you're able to just hide a bit if you need to, and patiently wait for enemies to wander off before popping back out and gunning them down. It's like a proto version of what eventually became a primary game mechanic in titles like Blackthorn and Flashback. But yeah, like I said, this game is basically just rolling thunder with some tiny alterations, like being able to shoot in midair and changing the trajectory of your jump. But Codename Viper is also a lot harder. It's a classic case of NES difficulty, where the balance of speed between your character and enemies and projectiles is just slightly off kilter. Coming in contact with an enemy takes away half your health, but getting shot kills you instantly. It's ruthless.  You get dudes popping up, shuffling in from all over the place, and you get to the point where you stop trying to shoot them all and just try and see if you can get to the boss. As you probably noticed from the footage, this is one of those games where you cannot shoot up or down, only left or right, Turrican style. And that limitation goes a long way to making this game so tough. There's not much sense in memorizing enemy or door locations either, since enemy placements vary throughout each playthrough, and the stuff behind doors is shuffled as well. So this isn't really a pick up and die game, where you just progress a tiny bit at a time while dying every two seconds. Instead, it's a pick up and play and hope you get really lucky, kind of a game. It's a roll of the dice. So yeah, Code Name Viper isn't bad, but it's one of those games where if you want this style of action platformer, then you're way better off with Rolling Thunder 2 for Sega Genesis, or even any of the Rolling Thunder arcade games. They are excellent. To Code Name Viper's credit though, it's at least better than the NES version of Rolling Thunder, and this game is reasonably well made. It's got that Capcom style polish to it, the controls are great, and the visuals and music do their job. In fact, if you really want to get into this game, check out Nintendo Power Volume 12 with Super C on the cover. It's got an eight page feature on this game, complete with maps of every level, and lots of commentary as well. I always love that kind of stuff, so if you decide to play this one, make sure to look up that issue as well. Otherwise, you might as well just stick to the Rolling Thunder series. It's nearly the exact same kind of action, but with better execution. All right, I want to thank you for watching, and I hope you have a great rest of your day.