Welcome to this presentation on Cryptanalysis of Psyche. This is showing work with my co-authors, Greg Costello, Patrick Longa, Michael Narek, and Fernando Virdia, and this work was done while we were at Microsoft Research. The main topic of this presentation is Psyche. Excuse me. Psyche is short for Super-Singular Isogeny Key Encapsulation, which is around two candidates in the NIST standardization process for post-quantum cryptography. I won't go into too much detail here. If you want to know more information, please visit the website, Psyche.org. I want to highlight the work on cryptanalysis that has been done on Psyche. First of all, the work by Ajay Adal, who'll look at classical cryptanalysis, and then the work by Jacques and Skang. Initially, and much more recently, a very recent e-print paper by Jacques and Trotelor, who'll look at quantum cryptanalysis. That's interestingly for Psyche. From round one to round two, these work showed that the attacks that were considered to be practical were actually not as easy to execute as initially was thought, meaning that the security actually went up a bit, meaning that the parameters could be decreased and therefore resulting in smaller public keys but also faster execution. So in this talk, we consider further analysis of classical attacks. Only we will not look at quantum attacks. It's hard to say which of the two really determines the security of Psyche at this point, which makes it interesting to still consider both of them. Okay. So let's start with a bit of an introduction to isogenic-based cryptone. So it started as SIDH, which is super-singular isogenic defilemon. The day behind is that it's a graph-based protocol. We built this graph from nodes, and these nodes here are going to be isomorphism classes of super-singular curves defined over f of p squared, where p is some prime which is chosen as a parameter. So these are sets of curves with the same chain variant. If we take the set of all these curves, it turns out that they all form a connected graph. Where the connections here are built, so the edges between these nodes are built as what's called an isogenic. An isogenic, in simplest terms, is a very natural map between two elliptic curves. So it's determined by two fractions of polynomials, F and G, written here that just maps the X and Y coordinates on one curve to the X and Y coordinate on other curves. So these are the edges in this graph. When we look at the whole graph, it turns out we have about p over 12 of them for a parameter p. If we look at a local view, so we look at a single node, then we see that if we fix some prime L, then at each node we'll have L plus 1 outgoing ascied in these. So in this case, I printed a big blue dot here, which is a starting curve, so it's one node, and from that node, we see three outgoing edges which go to other nodes. So we can continue this picture since every node or essentially every node is going to have three outgoing edges. We can continue drawing this picture on and on. I won't draw it at the top because it won't fit, but also there in a generic SIDH setting, it will just continue growing and growing. So what does SIDH do? So an SIDH public key computation now starts at this blue node, and then it takes a random walk through the graph. So it takes here four green steps landing on this green node, and here the green node would be the public key, and this walk, this random walk would be the secret key. Another example of a walk would be the following ending up on a different public key. So now you can look at how many public keys are there actually. I've drawn 15 here. You have to be also considered the ones that go upwards, which I didn't actually draw here. So if you work this out, you can see that in this case, there would be 24 different public keys. So we look at crypt analysis of this. So the most naive way you could go about breaking this is a brute force attack where you simply try each and every one of them until you find the right one. So this has the following complexity, assuming we take E2 steps in the graph. The first one has three possibilities, and each step afterwards, since we're not allowed to walk backwards, only has two possibilities. So we get three times two to the E2 minus one probability, a complexity for the attack. So one remark immediately we can make here, when we move from SIDH, a generic SIDH problem to a psych problem. So a psych problem as defined in the NIST proposal, you can see that this blue dot is actually not really a generic node. So what happens if you look at it, it does have three outgoing asogenes. You can see here in the bottom, but one of them turns out the loop back to itself, and two other ones end up looping to a single node. Okay, and so this first step, which should give you three possibilities, actually only gives you a single one. If you assume we don't wanna loop back to the curve itself, then you can only end up on one node. And so the complexity of this attack basically decreases with a factor of three. Okay, and so here you can remark that we're working with big O terms. So this three actually doesn't change the complexity and it's true, but the constant hidden in this brute force attack is simply the cost of computing an asogyny, and the actual attack here does speed up with an actual factor of three. Okay, and so this is not the best way to attack this. And so what we can do if we assume to have some public key that we're attacking that we're trying to retrieve the secret key from, instead of just starting from this public parameter curve, which is the blue note here, we can also start walking from the public key and try to end up on a shared node in the middle. Okay, so we sort of walk halfway from both sides and by the way the site parameters are set up, it's guaranteed that there's only a single node which connects the two halves. In this case, the node labeled four, which I made blue. Okay, and so what is the complexity of this? Well, in the sort of the most ideal case, you can walk halfway from one site and store everything in the middle, and then you get a square root complexity. You get sort of a baby step, giant step kind of thing. If your memory isn't as large as it can store all that, which for typical site parameters it won't be, and then you can choose a smaller memory, which does increase the runtime then. So you get sort of a linear trade-off where via a memory of size w, you get a speed up with a factor w. Okay, and so in practice, these memories that we have available to us are actually fairly small compared to sort of the parameter sizes that we work with. And so there's an additional algorithm. So this is called the view w, the Van Oort shot wiener algorithm, which works better than meet in the middle, assuming that your memory is small. So if your memory is smaller than sort of the square root of the number of public keys, and then this Van Oort shot wiener will outperform the generic meet in the middle attack. And so it has the following complexity, two to the three times e2 minus one over four divided by the square root of w. And you really work out that if w is the square root of the number of public keys, it will basically have the same complexity as meet in the middle and any larger memory will be better for meet in the middle. Okay, and so here we can make another couple of remarks about psych. So first of all, there are some choices that are made in the psych proposal, which have an influence on its security, a small influence, but an influence nonetheless. So the first choice is the fact that the starting curve is a subfield curve. And by subfield curve here, I mean a curve defined over F of P, which is a subfield of the sort of the field FB squared in which the J invariant of all these curves is guaranteed to lie. And the influence that has is that subfield curves have Frobenius and amorphisms. And this Frobenius and amorphism leads to sort of conjugate classes. Okay, and so now we have sets of nodes which are connected by the Frobenius and amorphism. And so this is very similar to the case of polar row on classical elliptic curve Diffie-Hellman where you have a point, but also minus its point leading to a conjugate class by the minus one map. Here we have a similar conjugate class only induced by Frobenius map. And this means that sort of the, yeah, sort of the entropy from one side. So walking from the subfield curve is decreased by factor two. Okay, and the other hand, if we start from the other side due to the choices of arithmetic, so psych works only with Montgomery curves, it turns out that the kernel of the finalisogony, so the kernel of the dual of the finalisogony is always going to be the one where the x-coordinates of the point is one. And this gives some information away about walking backwards. Basically it gives away the first two isogenes on the way back. So this again also decreases the number of nodes that we can land on, and therefore it decreases the complexity of the attack. Okay, so if we look at vw and psych, we go from three times e2 minus one to three times e2 minus four over four, divided by square root w. Okay, and so this is Van Ossia-Wiener. I didn't actually explain how Van Ossia-Wiener worked. So is this such an important algorithm? I want to spend some time going through it. Okay, and so the problem it solves is a meet and a middle problem. So we have two functions, a zero and h one. That map from some set s, so these are just the integers from zero to n minus one, do some other set t, which in this case are gonna be sort of the nodes in our graph. And you want to find some x and y such that h zero and h one collide. Okay, and so the way we do this is we define several functions. So we define a family of functions, which do the following. So they take an input as an input, first of all, an element of the set s set here, but also a bit b, okay? And so what it now does is it takes an element z and it evaluates the function h zero or h one determined by the bit b. So it looks at the bit b, if it's zero, it evaluates h zero at z, if it's one, it evaluates h one at z. And then to the output, it applies g of n, where g of n is just some random function indexed by n. Okay, and so for example, it could be shot three or shot 256 or some other hash function, which kind of has a sort of random behavior. And to generate a family of those, we can just domain separate them by this index n. Okay, and so now what happens that we get a family of functions indexed by n and each of these functions has a golden collision, meaning that it's a collision of the function f, f of n, such that if we find that collision, it leads back to a solution of the meet and the middle problem, okay? And sort of a downside that we have to deal with here is that we don't only have a single collision, but these functions f n, they're going to have many collisions, many other collisions, which are kind of useless for our purposes. So we're going to do collision searches on these f n, but there's only a single one we're interested in and all the other ones we basically throw away. And this is simply called a golden collision search in any of these functions. Okay, so finally we have to find a collision in one of these functions f n. So how do we do that? So we assume n to be fixed, and we assume to have a set as star of size n and a memory of size w. And the way the algorithm works is very similar to polar row. So there's some distinguishness property that says that a fraction theta of this set as star is distinguished, where here theta is defined to be the square root of w over n. And then we start the algorithm by randomly sampling an element z of s star and iteratively applying the function f n to it until we hit an element that's distinguished. And then we go to the memory and we check whether this distinguished point already appears in the memory. If it does not, we simply store our point in memory and we sample another element and we start over again. If this distinguished point is already in memory, and then we have a collision and we check whether this is the golden collision. If it is, we are happy and the algorithm concludes. If this is not the golden collision, then we just store our distinguished point in memory again and we sample a new element and start over. It could happen that you're very unlucky and you keep re-sampling elements and finding distinguished points without ever finding the golden collision. And in that case, you don't want to forever get stuck in the same function. So you want to define some way to moving to the next function version. And there's some heuristic analysis by Van Orschel and Wiener that say, well, if you have found about 10 times w distinguished points, so if you filled the memory up 10 times with distinguished points, then you should move to the next function version and try a look there. So how do we apply this to SADH or Psyche? So here, the set is sort of of size square root the number of public key. So it's the square root of two to the E2 in this case. And then we define these FN as follows. So it looks complicated, but basically what it says, we start from EI where this index I, if it's zero, we start from our starting curve, which is a public parameter. If the index is one, we start from the public key. Then from either of those two curves, we compute an isogeny walk corresponding to our input Z. So Z is just some bit string that basically says at each node that we end up on, we get two choices and it tells you which of the two to take. And finally, we end up on a J invariant and we will apply AES or some variant of AES to this key to put with N. And so that's some sort of randomly behaved function that we apply to the J invariant. Okay, and so we implemented all this. If you go through a theoretical analysis of this, so we ran this for different parameter sets. So for different depths of walks for the secret key and different memory sizes. And for those, you can do a theoretical analysis also done by Van Orzen and Wiener that tells you how many queries to this function FN you expect. Okay, so that's plotted here. This X is the expected value. And so the work by Ajay et al, who also implemented this sort of came close to these expected values, but there were still a bit of a gap. It's unclear where it comes from. It could be a minor detail in the implementation or it could be that they didn't average over enough runs. Okay, and so if we run sort of the same algorithm on SIDH, we see that we actually get extremely close to this expected value. So yeah, 0.09 bits different, for example, for the first row. Okay, and so it's sort of more interesting maybe. So what happens when we move from generic SIDH to psych? So we can now include the optimizations for the psych parameter choices. So the equivalence classes under Frobenius, but also the kernel of the dual that's known. So this decreases the set size by factor six, and therefore the attack decreases by a factor about 15. Okay, and so if you run this, you can see the expected value goes down a lot. And again, our implementation reaches very close to the expected values and is about a factor 15 faster and then the generic SIDH. Okay, and so this is a sort of theory. It just measures how many queries we need to the oracle where the oracle is basically an isogenic computation. And so here we implemented all this built on the psych submission. So one advantage of that is, is that it uses the fastest available arithmetic. So these isogenic walks are constructed using Montgomery curves, just like the psych submission, which leads to some speed ups in this oracle, which again, asymptotically, doesn't have much of an influence, but actually running the attack in practice, it will speed it up quite significantly. And so all of this will be published soon on the following GitHub pages here. I say soon, it could be so soon that by the time that this is put online, this GitHub will also be online. So yeah, keep a look out for it. Okay, and so I think an important remark to make about implementing this Venarsha Wiener in practice is that naively, it's actually quite simple. It's sort of a simple algorithm to explain, but there are actually many salties to it. But for a single instance, which has a certain memory available, it works very well. And there's no significant overhead for the single instance querying memory, basically every time it finds a distinguished point. This changes though, when you go to a more realistic setup. So theoretically, Venarsha Wiener parallelizes perfectly. So if you have M instances now with some shared memory of size W, the runtime should increase by a factor M, exactly. Okay, and so as depicted here. But if you try to implement this, you actually see that all these M instances now have to query the same memory all the time. So there's lots of distinguished points that are found and they have to query this memory to check for collisions every single time.  Okay, and so furthermore, you now have these instances running and they have to, if they start running on different function versions, so they run on different indexes N, the collisions that are put into the shared memory become kind of meaningless. So you have to make sure that all these functions are running on the same function version all the time. So there are some synchronization issues there you have to deal with. So what we did, so we didn't consider yet sort of a true distributed implementation yet. So we only consider a multicore. So we assume a single machine with many cores. So we have a 28 core setup, but also we tried with bigger setups where they do share a memory, which is just RAM, but we do have many threads trying to access that memory at the same time, which has already caused a number of issues. Okay, and so finally, if you assume such a setup, if you move towards a distributed setup, kind of one interesting area of research would be to look at how could you use some local memory? So yeah, you assume you have a very big database of size W, but if you have, I don't know, say Raspberry Pi running, it still has a little bit of local memory that you could try to use in some way to speed up the computation. And so I will consider, we'll look into some available options in the next few slides. Okay, and so if we look at the parallelization, so this is our implementation where on the x-axis we look at the number of cores and on the y-axis we look at the actual wall time of our implementation measured in seconds here. And as you can see, sort of the average depicts just the actual linear optimization compared to a single core. I mean, we see that the expected value depicts that the average is the average of our runtime and it matches extremely close to the expected value, which shows that we're really getting linear speed up up to 28 cores. Okay, so finally some remarks on how to use this local memory for speeding up the algorithm. The first idea is to use it to speed up the collision checking. And so a short reminder on how we check for collisions. So we assume here we have a collision consisting of two triples, one which starts at a point Z and ends in a point Z bar and takes exactly D steps, another one starting at a point Y, also ending up at the distinguished point Z bar, which takes E steps. And here we assume that E is smaller than D. We know this as we check the collision because we store this in memory. And so the way we check for a collision is we start applying our function fn to Z several times until we know we have as many steps left as the chain length of Y. And here, if at this point the value of the chain starting at Z is the same as Y, we are kind of unlucky because we've reached the collision without having two distinct inputs. This is what we call a Robin Hood collision. If this does not happen, we simply continue walking both chains forward until we do hit the same intermediate point, which is guaranteed to happen because at the end we reach the same distinguished point. So then we have a collision and we can check whether this is the golden collision. So one idea is that if we have local memory available, we can simply store all these intermediate points in one of the chains here and the chain starting at Z. And now if we want to check for a collision, instead of having to walk from Z first and then starting to walk from Y, we actually don't have to walk from Z at all. We can simply start applying FN to Y until we hit one of the points in the chain of Z at which point we have a collision and we can check for the golden collision.  So we could hope to get maybe two times speed up here. So in practice, if these chains get longer, of course, you may not be able to store all of these intermediate points. Instead, you may be only able to store T intermediate points, say, and in this case, in that case, there are some smart tricks and ideas to optimally store these points to still get really nice results and to still approach the two times speed up with fewer memory requirements. So if you look at the actual improvement here, on the x-axis here, you have the number of, so basically T, the number of intermediate values that we can store and on the y-axis is the number of steps that we need to check a collision. And we can see that sort of as it grows, it seems to go closer and closer to about half the number of steps, which is similar to what I said before. Okay, so finally, a sort of a nice thing you can do if you, what you can do is that these devices are all computing isogeny walks, basically. So every iteration of FN is an isogeny walk and this consists of a tree computation as follows. And so now instead of starting at the blue note every time and computing all the way down the tree, you can fix some pre-computation depth. And so you can pre-compute all the notes up to some depth and now you start to walk only from that depth. Okay, so now your isogenies have a degree decreased by a factor delta, by a linear factor delta, and you have to store a table consisting of two to the delta of these notes and each of these notes consists of six elements in FB squared. We have six times two to the delta elements in FB squared. So this grows very quickly, but delta of course, but it could still give you some small speed ups for these devices. Okay, and so there again, there are some intricacies here. You have to be careful how you actually store these tables and which bases of these torsion points you choose, but again, for more detail, see the paper. Okay, and so some two other optimizations that I want to mention. So you can look into multi-target attacks. If you assume two public keys and you only want to retrieve one out of two or then you can get some small optimizations and they're all kinds of sort of practical speed ups. For example, these distinguished points, you can for example, choose them in a way that some bits are zero in which case you don't have to store those which leads to some optimizations because you can now store more points in the fixed memory size that you have available. Okay, well thank you for listening and enjoy the rest of the conference.


Good morning Martin and good morning everybody. We'll be talking about taking European companies global and we're going to do it with a twist. Whereas normally people talk about taking the commercial organization global. This time around we're going to speak to Martin who's the CTO at Salonis about taking an engineering and product organization global. But let's start from the beginning. So Martin can you explain a little bit what Salonis does just to set the context? Yeah sure good morning also from my side. So we at Salonis we're developing technology like largely data processing technology which we're delivering as a software as a service solution to customers and I mean the important question is like what do you actually do with that technology? So what we enable customers to do is to put like a process management process mining process observability and automation layer on top of their business processes. That's a little bit abstract so you take an ERP system inside of the ERP system you're running your purchasing you're running your order management and so on and so forth. You put Salonis on top and then you can exercise much better control over what's actually happening inside of your business. Yeah sometimes I explain it as it's like waving an x-ray over a company and then seeing what kind of processes the company follows and then giving recommendations and actually actions to automate some of those processes. So Martin Salonis was started in Munich. How did you build the product organization and the engineering organization in the early days? Yeah so it was mentioned like also at the beginning so we ran the company in a bootstrap fashion for the first five years and this is also how we built the organization so we grew the organization very organically we brought in people we grew talent internally very tight knit organization but then as the company grew we had to bring certain levels of structure to the organization like just to make sure that we are able to manage so I think this is kind of similar to what most companies at that stage what experience is what we did is like taking the key leaders from the organization turning them into managers broadening the organization and being bootstrapped like using opportunistically ways to just get people interested in Salonis because I mean as most of you probably know it's very hard to hire good engineers so we had a lot of homegrown talent who were building the product and the platform in these days. It's already problematic in a way right because you take your best engineers you're going to say don't build product anymore now become a manager and then sometimes it turns out that these great engineers aren't actually the best managers so how did you deal with that? So that was a big challenge because the people who knew the software the best who knew the code the best were also the people who kind of had the natural leadership skills but I think what we saw is that and we learned that also along the way is that like leadership and management is not the same thing and we have to be careful that we're putting people into the position where they can exercise leadership the best way and for technical leaders that might be an individual contributor role where it's also a lot more fun for them so like I'm personally I'm an engineer and what I always say is like I love solving technical problems I don't love so much solving people problems or working on these on these management topics so I think it's like back in back in the days it was the natural thing to do also because we we didn't have a brand yet we we had like also in Munich like fierce competition in the market so there were not a lot of other options what we could actually do but it has been like one thing as the organization scaled up we consciously did was seeing that like we create IC tracks we make IC successful we allow people to step from management roles back into IC roles to make sure that our most valuable engineers can actually work on engineering and in driving the product forward yeah so it's not unusual in the sense that many organizations have a management track an individual contributor track and you can get rewarded on both tracks you don't necessarily have to become a manager in order to get paid more or to have more influence in the organization I think a twist of that is like as an as an engineer sometimes we're like okay we can build everything and we can self organize and so on and so forth but like the the flip side of that is that as the organization grows and and is becoming bigger and then also becoming distributed is that you need good management as well so you don't just need good engineers but you also need good management because you have to establish processes you have to establish an accountability structure you have to make sure that people work on the most important stuff for the company and not just the things which they are like most excited about so I think both is like very important I think from from what I have learned is that like management is something which is easier to import into the company engineering culture and engineering skills and context of the technology and so on and so forth something which is much harder to bring in externally into the into the into the company correct um just to set a bit of context so Salona's now has 3000 employees yeah 650 and product and engineering so it's a sizable organization yeah when you start to grow your organization in Munich you mentioned earlier in the day that you actually were competing for engineers with with a number of incumbents right yeah how did it go um so like in Munich over the last years like a lot of like large also u.s. companies established a presence and especially for for engineers like there was a pretty fierce competition so there's google there is amazon there is microsoft and like these companies also at least to some extent imported silicon valley salary bands to munich which is quite difficult for a for a bootstrap company to match and so yeah we just had to be creative that we were like forced to like foster and homegrow our talent but we like at the same time we had to build a brand and trust in the community um for for being able to attract um like high-profile engineers and people with more experience because i think one thing one thing which i've learned um over the years is like when you want to attract um senior engineers uh who are interested in building like an individual contributor career with like very special skills uh in a certain domain which you uh which you need then um you have to take the position of them so so why would they want to join your company and especially for these engineering careers i think big companies uh big tech companies um provide a very let's say relatively low risk path uh of building such a career and uh they have people in technical roles uh who people want to work with and for us being uh being a company with like homegrown talent like no kind of um uh let's say uh prominent profiles uh per se in the company um that was one factor which was pretty hard for us to overcome uh to actually attract people because they they want to work with people who have a track record um it's similar i guess for for you on the investor side for you like working with serial entrepreneurs is also uh sometimes simpler than putting a bet on a company like Salonis with like these three guys who um don't have a clue about what they're doing yeah well it turned out that you did have a clue but yeah well in hindsight right so so Salonis services and like it has as customers like 20 of the global 2000 yeah about half a billion in in revenue so the company ended up going global commercially but why did you decide to also take the engineering organization global because you didn't necessarily have to right you could have tried to kind of just keep it all in one place in germany yeah i mean i think the great thing about software uh is that um like you don't have to ship any physical goods you don't have to like go local for production or something so per se i think uh taking a source global uh from a technical standpoint basically means like you might want to deploy to some other data centers or uh um uh yeah getting closer there but for us so we're working uh with like very large corporations we're working with uh regulated industries as well um and so the initial um push why we went to the us was because some of these companies they have like guidelines or or policies that part of the system has to be operated by us people on us soil um so that was basically driven by the business um that we have to build some kind of platform engineering presence because one of the things we're doing is we're operating a pretty large scale distributed data infrastructure um for our customers um so so that was the that was the one side so i think in general like if you decide to introduce a certain additional level of complexity into your organization and internationalization is definitely it's a big um it's a big step in terms of adding complexity because of the time zone difference because of the cultural differences and so on and so forth you have to do that like very purposefully so you have to know why you're doing it and uh for us uh supporting the business was was one key reason the second one is that like when we started um uh Salon is uh like cloud and uh uh cloud infrastructure wasn't really a thing which these customers uh or our customer groups would uh accept as a as an operating model so so initially Salon is was a was like an on-prem product which you went out and deployed to your customer and we did uh very big transformation where we um uh yeah essentially redeveloped a large part of the stack um uh built a cloud native platform um but that also introduces a lot of additional duties because like now it's you operating the service it's you not like just shipping an install or a software package um to customers and they run it but like it's software as a service um so 24 hours 24 hours yeah it's a lot of additional processes in terms of what you have to do um in terms of certifications and and so on and so forth so um the the fact that we had to internationalize our business because the US is the biggest software market in the world um combined with us like offering a software as a service solution combined with the additional certifications um in the end um like plus um the access to a bigger talent pool um where I think the main reasons for us for thinking about going internationally or almost forcing us to go international so if you have a a whole team of people on the west coast in the US yeah you have a team in Madrid if I'm not mistaken yes and a team in Kosovo yes amongst others yeah and one in Prague one in Prague as well of course yes so tell me how things changed when suddenly you were recruiting engineers in Silicon Valley and managers in Silicon Valley um there must have been a certain kind of culture clash between the new people coming on board from the outside yeah and the existing people who have who had grown with Salonas over a number of years how did you manage to integrate those two different kind of groups of people yeah that that's a that was probably the most difficult challenge which we had when when when scaling was that it's it's like onboarding people to code and so on and so forth like this is all doable but making sure that we're like also able to establish the culture or to export the culture which I think makes our company unique um is has been has been quite challenging especially as we did this like during also during the corona phase where it was just very hard to travel and and so on um so um yeah there was like a lot of so when we hire people in Silicon Valley for example there's like relatively high salaries compared to the current workforce there is like a question of how do you distribute projects how do you um how do you kind of do you take new projects do you cut projects in half or products in half how do you distribute the um the the responsibilities um and what we I think did relatively well is start with uh kind of uh like bring in a few key people experienced people people who you can build trust with and people who have a network um in these like in these regions for example in Silicon Valley um and then first like get them on board um build a relationship with them and then scale it up and we also did things like a an exchange program for example where uh some of our like very first engineers uh were traveling over to the US for for some time like meeting with the people and just giving context um about the uh about the uh the the platform and the way how we are thinking about engineering and that's also one thing which I personally I think I underestimated the importance of that at the beginning is um we're we're like a very a very tight knit team so like basically everybody was friends with each other and uh we have been working together in a very informal way for a very long time um so basically uh if you would tell someone in the team some something okay like you have to uh we have to we have to make this part of the software faster we have to make this part of the software we have to do it differently then then almost everybody would end up with the same conclusions on how to do that now you bring in someone uh who has like a very strong background in in engineering you bring them into your company you tell them the exact same question most certainly they will end up with very different conclusions on how to do things on on where to where to do things on how much that would cost on how much time that would take um so um that I think was the was the biggest challenge uh there was to establish the accountability to establish the trust which I think is the basis for almost all work uh like not just within the company but also um between the employees uh and then to bring the context so that we can create alignment um within the organization and have everybody run to the same direction um without like just like micromanaging uh every task because then you don't need experienced people I think in the process your own role ended up changing as well right so you ended up hiring a chief engineering officer yes tell us a bit how that went yeah so so I mentioned that earlier like when we when we started um like basically putting people who were individual contributors and kind of our best engineers into management roles um and I wouldn't say that I'm the best engineer in the company but I I also went through this process of okay like at the beginning it was the three of us then we added some more people but I was still like doing a lot of work on the actual technology but eventually our organization grew to others to a size where I couldn't spend time anymore on thinking about the technology but I had to spend a lot of time thinking about how do we structure how do we hire um like basically what I would say from a from a product standpoint or from a from a technology standpoint our non-core topics um and um so that came to the point where it was very hard for me to to actually drive the technology direction of the company um and uh we figured out that uh it's probably not the best use of my time um so I did this um I wouldn't say like stepped down or like I basically just stepped out of the management uh uh job and uh went into a uh an IC role essentially uh with uh I have some people who are supporting me but I don't manage a large organization anymore and that just increased I think my efficiency and my impact I could have like for the company and for the uh and also for our customers um a lot and then we we hired uh Vice a lady uh who is now running our engineering organization um and she's doing a fantastic job uh in in that so she's she introduced a very good accountability structures uh very structured uh system for how people get rewarded uh we have a I think a very good system now for promotions and she also managed to attract uh some like really key people uh key engineers key ICs uh into the company so she was also great help on on hiring and and building the team uh there so yeah it's uh I think overall just increased the the clarity we have in the organization like who's doing what um and it just freed up a lot of um uh minds for working on on actual problems problem solving uh as opposed to like just managing organization and the results speak for themselves right because our product is arguably the industry leading product it's scalable it's it's um it has massive stability and and is really a leading yeah a leading product um when we spoke a bit earlier today you you said you have a number of learnings from this journey that went all the way back from what was it 2010 yeah so a 13-year journey about your learnings about how to run an organization and how to take an engineering and product organizationally global yeah what what are some of these learnings yeah so so I think the first the first piece of advice I have is if you're getting advice then then think about if that advice is actually applicable for you and like interpret it to to fit to your situation because I think every company is different um and it has its own DNA and the worst thing you can do is compromise your DNA because you think that you have to do something someone else is also is also doing um and uh yeah for us like talking about uh bringing the engineering organization global like from our nucleus and in Munich and from our homegrown team I think the the so there is there is a lot of things which uh we have done right there some things which I think if I would have known we we would have maybe done it differently but in in hindsight that's also always easy so one one thing which is important is that like even even though you might have a distributed organization it's still important to bring people together on a regular basis in person so um we're doing that like when we're when we're doing like planning phases or when we're when we're doing uh yeah just for aligning strategy because you have so much like subtle context which is hard to transport like if you're not in the same time zone um um or if you're not sitting in the same office even um the the second thing is that what what we have learned about like executing projects is um it's very important for everybody to know about all the projects but then executing the projects is much easier if you do it like locally so um um we have uh we have different areas where we are um basically defining is that something which we have to run globally because we need skills from from all parts of the organization is that something which we can run locally and running local is always preferable because you don't have these time zone handovers uh you have a team which can kind of push itself much better um so so prefer running local uh over running global projects then uh one topic which we have covered already uh a little bit in the conversations is make sure that you are creating uh tracks for your key contributors uh which allow them to to be successful um because they're very very important assets for for the um uh for the company so if um uh if you don't have people who in the end like are actually designing the system and writing the code and and doing this then you can have the best management uh you want like in the end the product won't do anything uh anything meaningful um yeah and there was one as well where you said new managers tend to think that they'd have to look out for their team and defend their team but that's not always the way they should act yeah yeah so so that was that was one um I also think one thing which we which we learned along the way is that if you have someone like if you have engineering teams and then uh one of these people is stepping up into a manager they tend to basically fight for their team so they try to protect their team try to protect their scope maybe to some extent they have a very strong attachment to the components which they have built but like for us like switching from a uh on-prem system to uh uh cloud infrastructure to a cloud system uh to a system which doesn't just do analytics but it's also like driving automation to a system which incorporates like AI components and so on and so forth like sometimes you just have to replace components and you have to restructure and and align the organization with this and uh and so I think managers like the job of a manager is to drive the company strategy and to manage the company strategy into the teams of course also helping the people to grow but um with these like internal like promoting people from inside out um I think that sometimes led to a situation where uh they were just like protecting their work or their their baby so to say uh instead of like doing what is uh what is the most important thing from uh from a company strategy standpoint Martin this was incredibly fun and I hope helpful to talk about taking an engineering organization from one person to uh to 650 people around the globe and and we hope too many many more over time so thank you so much for taking the time to speak to us this morning and thank you for your attention yeah thank you for your attention


Hi everybody, I'm Lance Coykey. Today we're talking about the dumbbell row and probably the most common error that I always see that is shrugging of the support arm. So generally when I'm setting somebody up in a dumbbell row, you've got two feet secured somehow on the ground, maybe one knee is on a bench, maybe the other foot is on the ground, maybe both feet are on the ground, and then you've got a hand on the bench. And oftentimes I'm doing this exercise for this hand on the bench. That is the hand that I care more about. It looks like a rowing back muscle exercise. And you know, I want you to load those things because I think it's fun and I think it's good to build that fitness. But I'm really concerned with what the support arm is doing. So we're talking about shrugging. That's kind of like the main everything. I'm gonna tell you that a lot of stuff is going on here if you watched my last video, we talked about side bending a little bit. I would probably work through that first. I think that oftentimes the shoulder is shrugging just because that's all it can do. All the air on that side is generally pushing it up and it's destabilizing the shoulder. So the only way that it can, the only place it can go is up because the air is pushing it up. Okay, so I need to exhale. I need to side bend over to that side and then I need to learn how to get kind of comfortable there if I'm gonna worry about any sort of shrugging that's going on. So that's step one. Watch the last video. Do some of that side bending over to your support arm. Start on the right side. It's generally a little bit easier there to find that and then just try to make it feel the same on the left side. Side bend, okay? Once you get that, generally the shrugging has gone away because the shrugging is again, it's just a byproduct of the position of your core area, your ribcage. What does it look like? So from head on, generally I got a lot of air in here and I can feel my neck turn on really easily on that upper support side. And then I just row here but all I can feel is my neck here. I don't feel my rowing muscles very much. So what I'm gonna do to fix it, I'm gonna exhale, I'm gonna bend over to that side and then I'm gonna just make sure I not only bring my hip up toward my shoulder but I'm also gonna bring my shoulder down toward my hip and that's what we'll get this full side bending that I'm looking for. So exhale first, hip up toward shoulder, I feel it, shoulder down toward hip and now I feel that whole left side secured and then I can row from there. Hopefully that makes sense. I would definitely work through it incrementally like I did in the video. I teach it this way on purpose because I think you need to take some of your roadblocks away before you're ever gonna get to the end goal that you're looking for. And that is probably the most common error that I see in the dumbbell row.


Is that just for people in poor areas? I think that was going to be for anyone. That's for everybody. That's what I thought. But what it will do is give, you know, the people who can afford it now choose private schools or something, but if you give the money as a voucher that the government puts up for students, to those that are poor, they too can choose. But also, we envision voucher systems not just for private schools, but the kids want to take that money and go to a different public school than they have to be allowed. The whole idea is not only to help the people, have some choice, but to make the schools competitive. That by golly, they got to pay attention to how good they're doing the job. Sure. It will be reflected in the drop in attendance. Well, I just wasn't sure. I thought that that was for everybody, and it would be a big event for people in the Rogiel schools. But when I read that, I thought, well, maybe it was just for the people in the country. No, we just, we've pointed to, we're pointing that up because we don't think that many people realize, I'll tell you, I met with a group of black leaders the other day. They are just heart and soul for this because they know that there's just too many schools in the inner city where they pass a kid to the next grade, whether he's learned anything or not, just to move them on and get rid of them. And there's an awful lot of that goes on. I had a black mother, that's when I was governor, come to me and she said, you know, don't talk to me about busing or whether that's rather long or anything. She said, keep our children in the grades they're in till I learn what they're supposed to learn in that grade. And then she told me, she had a son who had a high school diploma, he couldn't read his own diploma. Maybe it was a graduate or a husband. Would you know how many colleges have had to put in a course called Bonehead English? That's for freshmen to come in and that haven't learned what they should learn about English in high school.  Ten weeks that he hadn't been going to school. Does Rudy write well? Oh yes. That's some belt you have on the day. Ranchero's Vistadori's. Where's that? That's that group in California, I'm blown to it, have kept alive for 75 years or so. The old Spanish tradition of visiting the missions where they would ride for weeks. We come together for a week's ride and you have a camp, so forth, and it starts at a mission and then you just ride around this whole area and have two camps that you can stop at one or the other night. In the beginning you just carried a bedroll and did it on the ground, but now they have a regular camp and you have some hometown of entertaining at night. Oh, that's nice. And of course you can imagine from all over the country people come with their horses and this thing and you can imagine what we all look like by the end of a week out there in the woods, so every once in a while out on the road at a banquet or something, some guy will come up with his wife and he'll say, you don't remember me, we met at Rancheros, Mr. Dorey's, and I take delight in looking at him, all dressed up and so forth, and I say to his wife, I never saw this man before in my life. Do they all ride western or do some good riding? No, all have to ride western there. Counting down, ten, seven, six, five, four, three, two, one, that Rancheros are so nationally known, you know, they have a constant waiting list of hundreds. And do you have to be a very good rider? Do they check your riding ability or anything? No, I'm just a horseman and I want to go for that kind of life for a week. This is a test of the audio circuit from Camp David for President Reagan's radio address, which will begin in one minute from our mark. Counting down, ten, nine, eight, seven, six, five, four, three, two, one. The next voice will be the President of the United States, which is radio address from Camp David. It will start in 30 seconds from our mark. Counting down, ten, nine, eight, seven, six, five, four, three, two, one, mark. Ten seconds, mics on. The first national holiday for Martin Luther King, Jr. will be celebrated this Monday. But Dr. King's birthday fell this past week on Wednesday. I spent a good part of that morning at the Martin Luther King, Jr. elementary school in Washington, and believe me, that was the place to be. I've got a pen pal at the school, eight-year-old Rudy Hines, and he's kept me up on the doings at the school and what he and his friends are thinking about. So I wasn't surprised that in spite of their age, the children at the King's school knew all about his life and why it had meaning for all of us. Martin Luther King believed, as I and so many Americans do, that our country will never be completely free until all Americans enjoy the full benefits of freedom. It is now over seventeen years since his death, and enough time has gone by to get a sense of the progress made by minorities in America and by America in the area of equal justice since 1968. I think it's fair to say that we've come a long way in the pursuit of racial fairness in our country. We have a lot to be proud of, but nothing to be complacent about. We still have a way to go. We are committed to a society in which all men and women have equal opportunities to succeed, and so we oppose the use of quotas. We want a colorblind society, a society that in the words of Dr. King, judges people not by the color of their skin, but by the content of their character. Vigorous enforcement of the civil rights laws continues. More employment discrimination cases were filed by the Justice Department during our first administration than during the previous four years, and we have successfully prosecuted more criminal civil rights cases in more parts of the country. We've also continued strong support for the fair housing laws. I agree with the late Dr. King that our country won't be free until we're all free, but I take it a step further. Our nation won't really be prosperous until everyone in it enjoys a share of the fruits of prosperity. What progress have we made in this regard? Still not enough. Record high employment, lower tax rates, lower inflation, dropping interest rates, and continued economic growth have helped Americans, and that includes black Americans. The policies of the past five years have produced the biggest economic expansion since the 1960s. Because of these policies, about 400,000 black Americans moved up and out of poverty from 1983 to 1984. A record 10.7 million black Americans are holding jobs. In fact, blacks have gained an average of 40,000 new jobs a month for a total of one and a half million since the recovery began. In addition, the median family income of black Americans adjusted for inflation rose almost 2% in 1984. Another measure of expanding opportunity is minority entrepreneurship and, there too, the news is encouraging. The Commerce Department reports that the number of black-owned businesses increased 47% between 1977 and 1982. By the way, over the past three years, minority firms have enjoyed $15 billion in government business and at least another $15 billion with private sector companies. Now, none of this happened by accident. The economy is expanding because from the beginning, we made it clear that one of the prime motivating intentions of this administration was to get the economy going again. And it was clear the way to do that was cut tax rates, stop penalizing initiative, and sit back and watch the fireworks. All of us have benefited. The poverty statistics show John Kennedy was right when he said following his own tax cuts, a rising tide lifts all boats. So, we've done some boat lifting the past few years, but it's still not enough. We can do better. We can reform our tax system, make it fairer and lower most people's tax rates. We can also get spending under control and keep government from demanding more and more of your money. For years now, we've been asking for enterprise zones in depressed areas, areas that would get tax breaks to attract the businesses that create jobs. And in education, we propose the educational voucher system in which families that live in poor areas can use vouchers to send their children to any of a number of schools, whichever they think is doing better. No reason parents shouldn't be given more freedom of choice and no reason schools shouldn't compete for students. The answer to the question, how are blacks doing in America is better than ever before and still not good enough. There's work to be done. But if we continue to allow the economy to expand and continue to work for a more perfect society, the people of all colors will prosper. And isn't that what Dr. King's dream and the American dream are all about? Until next week, thanks for listening and God bless you. I wonder how long this weather's going to last. I said I wonder how long this weather's going to last. Not long enough? No. But it went up. But can you imagine? A little bit of rain, but it should be fairly pleasant for the rest of the day. Excuse me. That should be fairly pleasant for the next day or two. A little bit of rain tonight. Yeah, that's what I was hearing about rain. It's very warm. It's about 50 degrees down in Washington. So it's warm all over. Funny. Arthur Mounder says 70 degrees, but that's in the sun. All right. Bye. Okay. Okay. He doesn't miss a beat. Okay.


The NIH Molecular Libraries Initiative was started in 2003 as a translational initiative after the Human Genome Project, and it really had two purposes. One was to determine the function and biological and therapeutic potential of all human genes using small molecule compounds to study those functions. The other was explicitly therapeutic intent, which was to provide starting points for the development of new therapeutics for human disease. The way the Molecular Libraries program was operationalized was on the principle that there are common mechanisms which underlie many different diseases, and as we're taught in kindergarten, the knee bone is connected to the leg bone, which is connected to the hip bone, but much of science is done in a quite silo-driven way, where one person will work on the knee bone, one person will work on the hip bone, one person will work on the leg bone, but this organization, because it's funded by the common fund, is able to look on all of those bones simultaneously in a much more holistic way. So we have people, collaborators coming to us, who have different interests in aging, environmental toxicology, in cancer, in development, for instance, in rare diseases, and in many cases they are all interested in the same biological pathway, but that same pathway is involved in many different diseases. Now under a normal circumstance, it would be very difficult for one lab to work on a project with those many different disease or biological implications, but here, because the organization was built to be trans-NIH, to be something which is agnostic to the disease, and in fact looking for cross-cutting mechanisms, we're able to leapfrog many of the problems. What we started with this initiative was a completely new model of creating a pre-competitive space, so-called, for this kind of science to happen. Previously, this kind of science had only happened at this scale and at this level of sophistication within biotech and pharmaceutical companies, and we sought to and now have now done a project to bring the best of the technologies, the lessons, the team-driven, deliverable-driven culture from the best pharmaceutical companies into the academic domain and set those technologies and those people loose on the many targets and many diseases that simply can't be worked on easily in the private sector due to poor return on investment. In order to do this, we've had to set up a number of really cutting-edge innovative centers, one of which is here, where we're sitting at the NIH Chemical Genomics Center to develop what we call an assay, which is a testing system which allows us to test well above 100,000 compounds in a day as a starting point for the kind of work that we do. So the robotics that is required gives us the start of the chemical material which might eventually become a drug. So what do I mean by that? We develop an assay. That assay is a testing system which allows us to test currently 400,000 different compounds in seven different concentrations in a little less than a week. Now in order for a person to do that would require constant work seven days a week, eight hours a day for 12 years, and we do that in five days. Now what that allows us to do is to take the new gene or the new protein or the new pathway in a cell or a cellular phenotype, so-called, that is something that a cell does that's abnormal, which is representative of the disease. We put those cells in each one of the wells of this plate, which is a 1,536 well plate, which can contain 1,536 different experiments. I'll give you one example that we're working on right now as a matter of fact. There's a project that was brought to us by an investigator at Illinois State University, David Williams, who's now at Rush University in Chicago, who came to us with an enzyme that he thought was involved in a very prevalent parasitic disease known as schistosomiasis. It affects about 280 million people worldwide, and he came to us with this idea that this novel enzyme that he had discovered, if inhibited, could safely kill the worms without hurting the individual who has the infection. And so working with him over the course of two years, we developed these just such compounds and were able to prove, in fact, that his hypothesis was right, that in worms in a dish or in an animal model of those diseases, of that disease schistosomiasis, that these compounds actually do cure those mice. And then as an example of the kind of leapfrogging I'm talking about, through our various connections, through David's connections and ours, we identified an investigator, Michael Capello, at Yale, who works on a completely different disorder known as hookworm infection. It's another parasite, and it turns out the variants of these compounds, these very same compounds, also work in hookworm. Hookworm is another tremendously prevalent disease, affects about a half a billion people worldwide, and they haven't really been thought of as being related before, but here we have one set of compounds that may actually be curative of both disorders. One issue is that it's a collaboration, it's a multifaceted collaboration between biologists and chemists and informatics, scientists and engineers here, in a very tight collaboration with academic investigators all over the world who are working in a network of investigation to look across targets, across diseases, to try to identify these keys into these various locks that will work not only for one disease, but for multiple diseases.


So I thought I was done talking about my own personal issues with content locked behind amiibo at least for a while because Nintendo doesn't lock significant content behind amiibo often and I thought you know We're probably not going to talk about this again until maybe Super Mario Odyssey and then after that who knows probably not again until some switch game in 2018 and I was fine with that because The topic is kind of redundant in a way, but Nintendo was personally asked about the Amiibo issue in Metroid Samus Returns and how some people don't like the idea that one of the hardest difficulty modes in the game is locked behind an amiibo that currently is sold out and We all know Nintendo's history with amiibo You probably won't be able to get your hands on it outside of buying from a scalper for Months if not a year or two from now if Nintendo even does more runs of it in the first place because not every single amiibo has Always been restocked at all. So I mean give you a prime example I still don't own the Zelda 30th anniversary amiibo because they've never been restocked since they came out and I understand those might have been limited run, but The anniversary amiibo come on anyways, so US gamer decided to ask Nintendo to clarify About stuff at a preview event here is is what happened This was written by Matt Kim over at us gamer net and he says at a preview event for Metroid Samus Returns Nintendo finally clarified amiibo support for the game Especially with regards to how hard mode will work in the game as it turns out this probably was a case where better Communication could have cleared up the whole problem Okay, so Nintendo's clarifying. This is good. Maybe things aren't as bad as I thought All right. Here is how the rest of this piece goes Here's the lowdown of what Nintendo told us gamer when I asked Nintendo representatives at the preview event if hard mode was locked behind amiibos. They were clear to make the distinction Fusion mode they corrected me. Yes fusion mode Which will give players access to Samus's fusion suit as well as a more challenging Difficulty in the game is indeed locked behind the Metroid amiibo This content will not be offered as separate DLC in Nintendo's digital e-shop However, there will be a standard hard mode that will be unlockable once players complete the game on regular difficulty This mode which is confusingly separate from the fusion modes harder difficulty It's said to be harder than the standard difficulty But not as hard as them as that found in the fusion mode It was previously reported that amiibo tie-in for Metro to unlock hard mode for the game In fact purchasing the amiibo would be the only way for players to access the fusion mode content making it a mandatory Accessory if players want to access everything Samus returns has to offer. This is still the case Only Nintendo failed to explain that fusion mode difficulty is separate from a standard hard mode. Okay Let's just think about this for a moment Metroid Samus returns does have a hard mode when you beat the game If you want the hardest difficulty in the game, however, you need an amiibo This is almost similar to Breath of the Wild in that master mode is the hardest mode in the game But you can make it even harder with the Ganon amiibo if you want you can increase damage again, and that's fine whatever But that's not what this is. This isn't like a double damage thing. This is an entirely new mode So essentially the way I view it you have normal mode and then you have your medium settings or your hard mode And then you have your extreme very hard mode. That's what this sounds like. This doesn't make me feel better The fact that Nintendo wants to clarify its fusion mode It's not hard mode. But hey, by the way, it's more difficult than hard mode. It's like really so if it's Yes, there's a harder difficulty you can unlock in the game But it's not as hard as the difficulty you can get from the amiibo So still the hardest difficulty in Metroid Samus returns is still locked behind an amiibo And it's just funny how Nintendo is like, no, don't call it hard mode.  The complaints I had about this still stand just because there's another difficulty mode between between standard mode and The hardest difficulty in the game doesn't change the fact that the hardest difficulty in the game is locked behind an amiibo That people cannot get their hands on And I know someday maybe I have less complaints because I'm a member of the media and they might start sending me amiibo And that's fine, but I still don't have the general complaint because my my friend can't get it no one can get it's just this is just a really frustrating situation and It's weird how You know Matt Kim is a kind of suggestion here in this piece that if there was better communication It could have cleared up the whole problem. Well, this is better communication and it doesn't clear up anything It's exactly what we thought it was. We just now know that there's an extra difficulty mode in between Having that extra difficulty mode in between and calling it hard mode Doesn't change the fact that fusion mode is harder than that and Nintendo told him the fusion mode is harder than hard mode So, oh man This is just this is just a mess And maybe the thing they can get away with this because it's a remaster or recreation of an older game I don't know and as I said breath of the wild kind of sort of dabbles in this because if you really want the hardest difficulty You should really want the Ganon amiibo in addition to You know In addition to master mode, but Still at least like master mode you could it was it was attainable via a digital purchase and The double damage aspect isn't necessarily a difficulty mode in the game per se Fusion mode is an entirely new difficult. Oh, oh Sorry, I'm making all this background noise over here. I'm so frustrated I Let me know what you guys think about this down in the comments below because this is just Baffling to me and how like oh no, no, don't call it this don't call it this remember. It's fusion mode It's not hard mode, but it's harder than hard mode. So Yes, you need the amiibo by the way. Oh man Nintendo Nintendo Nintendo your clarifications don't help the situation. It's still exactly what we thought it was Anyways folks, I'm Nathaniel Ruffles jantz from Nintendo Prime if you like this video You know what to do if you dislike the video hit that dislike button Subscribe for more videos like this and as always folks. I will catch you in the next one