Yes, so the talk on this topic called unambiguous catalytic computation, so suppose you want to perform some computation, but the space available to you for performing that computation is not sufficient, okay and let us say in such a case somebody helps you by providing some extra space, but there are two things, first this extra space is already filled with some content, something arbitrary and something incompressible and the second thing is that although you are allowed to use this extra space for your computation, you can write something on this extra space or you can modify the content, but at the end when you are done, you should restore its initial content, okay. So in such a case a question that one can ask is that can we use this extra space somehow to perform the computation that we were not able to perform earlier and if not can we prove that this extra space is useless. So to formally study this question we have a model called catalytic Turing machine, so what is a catalytic Turing machine? It is just like a normal Turing machine where apart from the input tape and the work tape you also have this extra tape called auxiliary tape, okay and this auxiliary tape initially it can have anything on itself, it need not to be the blank symbols like we usually assume in a Turing machine and in the middle of the competition Turing machine can write on this auxiliary tape or read from it and it is free to do both read and writing there, but when the machine holds the initial content of the auxiliary tape is back, okay. So I guess this explains the name catalytic because the auxiliary tape is supposed to help us or act as like a catalyst acts in a chemical reaction, it helps us in performing our computation and then gets back to its original state, okay. So the class L denotes a usual log space class the set of all the languages which are decidable in order log and size free space by a normal Turing machine. The corresponding class in the catalytic setting is CL. So it is basically the set of all the languages which are decidable by a catalytic Turing machine with order log and size work space and some poly size auxiliary space, okay. So here we have taken the size, here we have taken the size of auxiliary space to be something some end to the C. So this makes sense because if it is anything more than that you will not be able to store the address of some cell of the auxiliary tape in your work tape, right. And this is a pretty reasonable thing a Turing machine should be able to do. So the question that we asked on the very first slide that extra memory is useful or not. In the log space setting in this model it is equivalent to asking whether L is equal to CL or not. So intuitively one may feel that the extra memory is useless because since you have to restore the information at the end at every point of the computation you should remember it in some form, right. And since it is incompressible also, so you are effectively working only with your work space or free space. But the lower bound that we know of class CL indicates that this is probably not true. So the lower bound on the class CL and the upper bound was proved in the same paper in which this model was defined. So the lower bound is TC1 and the upper bound is ZTP, the set of all the languages which are decidable in expected polynomial time. So why does this lower bound indicates that L is probably not equal to CL? The reason is again a very long standing belief about some other classes. So TC1 is known to contain NL, non-deterministic log space and NL contains L, right. So if now someone proves that L is equal to CL that would imply that L is equal to NL is equal to TC1. And it is a long standing belief of the community that L is not equal to TC1. So this is why we also now believe that L is not equal to CL, okay. So this was the deterministic catalytic computation model. We also have non-deterministic catalytic computation. A non-deterministic catalytic Turing machine restores the auxiliary content over all possible sequences of non-deterministic choices and the rest of the things remain same. I mean if the input belongs to the language it will be accepted along at least one path. If it is not it will not be accepted along any path, okay. So NL is the well-known class non-deterministic log space. It's catalytic equivalent or I mean the corresponding class in the catalytic setting is CNL. The set of languages which are decidable by a non-deterministic catalytic Turing machine in order log in size free space and some end to the C size auxiliary space. So for CNL we know two results. We know the upper bound. CNL is a subset of ZPP which is the same as the upper bound of CL. And we also know that it is closed under complement, okay. The Imourman-Chilebzine equivalent of the catalytic word. But this holds under an assumption that there is some language in linear space N which requires linear exponential size circuits. So the reason why we need this assumption was needed because we need some pseudo-random generators to prove that CNL is equal to co-CNL. And those pseudo-random generators exist under this assumption. So let me just quickly go over the proof of CNL subset ZPP. Proof is short and easy to follow and but more importantly the observation involved in the proof is crucial not for just CNL subset ZPP but also for CNL, co-CNL and also for what we have proven in our paper, okay. So the proof goes via the notion of configuration graph, okay. So in a normal Turing machine you have one configuration graph with respect to one machine M and one input X, right. Here it is defined in a slightly different way. Here you have one configuration graph with respect to one machine M, one input X and one auxiliary content, one initial auxiliary content A, okay. And so let's say G of MxA denotes such a configuration graph with machine with respect to machine M input X and auxiliary content A. So a configuration here contains four things. It contains the state, it contains the head, it contains the positions of the head. It contains the work tape content and it contains the auxiliary tape content, okay. So just one more thing. So G of MxA contains only those configurations which are reachable from the starting configuration, okay. Unlike in the normal setting you take all the configurations which are not even reachable. Here we are only taking those configurations which are reachable from the starting configuration. So let's say this is one starting configuration and let's take one more starting configuration which is different from it, okay. So both are the starting configuration for some fixed machine M and fixed input X. The only difference is the initial auxiliary content. Here it is A, here it is A prime, okay. Then the claim is that through no sequences of non-deterministic choices, both of them can land up at the same configuration. To see why this is true, let's take one competition path starting from this middle configuration to a halting configuration, okay. And let's look at this particular competition path. So this is a competition path from a starting configuration to a halting configuration and since it is a catalytic tuning machine which restores its initial auxiliary content, so A should be equal to A2, right. But at the same time this is also one starting configuration and this is also one competition path. So A2 should also be equal to A prime. But since I mean it cannot be equal to both A or A prime simultaneously. So something like this cannot happen, right. So what this basically says is that two different configuration graphs. So here you can take two configuration graph G of M X and A and G of M X and A prime. So what this says is that those two configuration graphs cannot share a common node between them, okay. The node set is disjoint. So this gives us a good upper bound on the sum of the size of the configuration graphs over all possible auxiliary contents, okay. Which is just the total number of configurations possible at all, okay. The number on the right hand side. So the first two numbers are basically the number of different work tape content and the number of different auxiliary tape content and the last three numbers are just the head positions for three tapes, okay. If you divide on both the sides by 2 to the end of the C. What this basically says is that the average size of the configuration graph over all possible auxiliary content is very small. It's something just poly of N, right. Even though for a particular auxiliary content A, the size of the configuration graph can be very large. Something exponential in N, yes sir. Is it also very similar to the group of CL contained in it? Yeah, it is, yeah. Yeah, it is. But does it need to change that? No, no, but- From the original paper? Yeah, yeah. So basically, yeah, they prove CL subset ZPP first, but- Yeah, I mean, this is not my- First, again in their CNL paper. Mikal was one of the co-authors, yeah. What we know now is that for some particular auxiliary content A, the size of the configuration graph can be very large. But on average, it is very small. So in other words, if you pick your A randomly, auxiliary content randomly, then the expected size is some poly of N, right. And I guess this, I mean, so now the ZPP algorithm for the language of machine M is obvious. On some input X, you randomly generate A. And then you look for the accept node in the G of M, X and A, using some polynomial time search or something. So this was the non-deterministic model. In our paper, we have studied a special type of non-deterministic computation called unambiguous computation. So in unambiguous computation, your non-deterministic algorithm accepts the input along exactly one path, okay. Unlike the non-deterministic model where you accept it along at least one path. Here you are accepting it along exactly one path. And if the input does not belong to the language, you will not accept it along any paths, okay. So such type of computation or unambiguous computation is well studied in the, with respect to the normal Turing machines. So class UL is that class, it's unambiguous log space. So it's a set of all the languages which are decidable by an NL machine with at most one accepting path for every input, okay. So we defined this class CUL in the catalytic setting, the corresponding class for UL. And for this, we have proved that CUL is equal to CNL. And this holds under the same assumption as that of CNL equal to co-CNL, right. So CUL is trivially a subset of CNL, it follows from the definition. To prove that CNL is a subset of CUL, what we do is we construct a CUL machine for a given CNL machine. And this CUL machine finds the, looks for the except node in the configuration graph of the CNL machine using two techniques. The first is Reinhard Elander's double counting technique, which I will explain briefly in the next two slides. And we also use some of the tools of the CNL equal to co-CNL result, okay. So the double counting technique was also used for proving the similar result in the traditional setting. So the same result is also known for NL equal to UL. Let me just briefly explain what is double counting technique. So it is closely associated with mini-unique graphs, okay. What is a mini-unique graph? A directed graph G is called mini-unique with respect to sum vertex S. If there is a unique shortest path from S to every vertex, which is reachable from S, okay. And there are two applications, two well-known applications of the double counting technique. The first is that you can construct a UL algorithm for deciding if G is mini-unique or not with respect to sum vertex S. And under the promise that G is mini-unique with respect to S, you can also decide, you can also answer the decide. You can also answer whether some vertex T is reachable from S or not, okay. So let me first define the two parameters that we actually count in this double counting technique. So for a given graph G and a source node S, let S side denote the set of all the vertices which are at the distance at most i from S, okay. And C i is the first parameter that we'll count. It is simply the cardinality of the set S i. And Sigma i is the sum of the distance of all the vertices in S i. So here by distance I mean the length of the shortest path, okay. So our UL algorithm basically computes these values C i's and Sigma i's iteratively starting from C 0 and Sigma 0. And it computes the correct value along a unique path. And while computing these values it also finds that whether the graph is mini-unique with respect to a vertex, with respect to the source vertex S, S or not, okay. So at the outset we know three things about S 0, right. I mean S 0 is the trivia set which contains only S. So for this we know three things, we know C 0, C 0 is 1. Sigma 0 is 0 because the distance from S to S is 0. And we also know that every vertex in S 0, which is S itself, has a unique shortest path from S. So let's assume the same thing for S i, okay. Let's take it as the base case. And we'll see the outline of how this UL algorithm computes C i plus 1 and Sigma i plus 1 along a unique path. So what it does is that it first sets C i plus 1 to be C i and Sigma i plus 1 to be Sigma i, okay. And then it loops over all the vertices of the graph G and checks whether the distance of this vertex U from S is i plus 1 or not, okay. And it does it by generating the vertices of S i along a unique computation path. It can do it along the unique computation path using the three things that we assume about S i, okay. Due to the shortage of time we cannot get into the details there. But using those three things it can generate the vertices of S i along a unique path. And then what we do is that first we check whether any vertex of S i is equal to U or not, okay. Because if any of the vertex in S i is equal to U, that basically means that the distance is less than equal to i, not i plus 1. And after that you also check if there is some vertex in S i whose neighbor is U. If its neighbor is U, then that means the distance is i plus 1. And if there is such neighbor, you increase C i plus 1 appropriately and Sigma i plus 1 also. So basically increase C i plus 1 by 1 and Sigma i plus 1 by i plus 1, okay. And so once you are done with the values of C i plus 1 and Sigma i plus 1, if the graph is mean unique the property of S i that every vertex in S i has a unique path from S. The same property will hold true for S i plus 1 also, right. So you can keep on computing these C i plus 1 and Sigma i plus 1 till C n and Sigma n where n is the number of vertices. And in the end you just say yes because the graph is mean unique. But what if the graph is not mean unique? So in that case there will be some vertex which will be having two minimum, two shortest paths from S, right. And so let's take a vertex which is nearest to the source S, okay. And I mean the nearest vertex to S which has more than one shortest path, okay. And let's say its distance is i plus 1. So when you are computing C i plus 1 and Sigma i plus 1, what you will find is that there will be two edges for such a vertex U, okay, from two different nodes of the S i. So if this is the case you can just halt and reject the instance at that time, okay. So this was for deciding whether the graph is mean unique with respect to S or not. Under the promise that graph is mean unique, you can solve the reachability also. So it is not hard to see that if graph is mean unique, you will be computing all the C i's and Sigma i's properly. And you are bound to see all the vertices which are reachable from S, right. So you can set a flag somewhere and if you see the node that you are looking for, you can set it to true and when you are done with the C i's and Sigma i, you can just output that flag. So which is what we do in the CUL algorithm of the CNL configuration graph. So yeah, so what we are doing here is that for a given CNL machine M, we are constructing a CUL machine M prime such that both of them have the same language, okay. And here is the basic working of this machine M prime, the CUL machine M prime on input x and also very content A. It treats A as the auxiliary content of M, okay. And then it performs a double counting technique on the G of M, x and A with initial configuration as the source, okay. And while performing the double counting technique, it looks for the accept node because if it is reachable, you will find it somewhere and based on that it accepts the input x or not. But this is not correct, there are three issues with this. First issue is that you do not have the space to store C i and Sigma i, right. Because on a particular A, the size of the configuration graph can be very large, something exponential in N. So for storing C i, you may need N bits. And since in CUL machine, you only have some order log in size free space. You do not know any good way to store the C i as an auxiliary space, without losing its content. So this is one problem that you cannot store C i and Sigma i if the configuration graph size is very large. The second problem is that it may not be mini-unique, right. You should work with the graph which is mini-unique. And the third problem is that M prime cannot loop over all configurations of M. So this is required if you remember that while performing a double counting technique, you have to loop over all the nodes and check whether their distance is i plus 1 or not. So here the CUL machine also needs to do the same thing, but it is not able to do. It can do it, but it will lose its initial auxiliary content. There is no good way of looping over all the configurations of M. So the problem, the solution to the problem 1 and 2 is very similar. So first thing we know is that even though for a particular rate, the graph size can be very large. The expected configuration graph size is small, okay? And second thing about creating a mini-unique graph that we know is that which is a simple application of isolation lemma. That if you randomly assign some poly size weights to a directed graph with very high probability, it makes it mini-unique, okay? So under the mentioned assumption, we have two pseudo random generators which help us in creating a small size configuration graph. And a weight function also which makes that configuration graph mini-unique, okay? So specifically, we'll be working with these two pseudo random generators, F and W, which are log space compatible. And so for F and W, we know that there exists some seed, S and S prime, such that it makes, such that for S, G of Mx, A zore of Fs is a small size. And the same graph is mini-unique with respect to the weight function W of S prime, okay? And the solution to the third problem is using a hash function which maps the large size nodes. So since the size of a node of a configuration graph is some n to the c, okay? And you cannot loop over all those nodes. So what you want is some hash function which can map those large size nodes to some small size nodes, okay? So for that, we do not have a single function, but what we have is a hash family where we know that at least one hash function out of that hash family has this desired property that it will map the large size node of a small size configuration graph to small size nodes, okay? So with this, so this is the, okay? So I'll be presenting now the final outline of the algorithm. So m prime on input x and auxiliary content W, it creates all the tuples using all the seeds of S, all the seeds of F, all the seeds of W and all the functions of H, okay? So for one particular S, one particular S prime and one particular HK, instead of working with G of m x a, it works with hashed weighted graph G of m x a's or f s with respect to the weight function W s and hash function HK with initial configuration as the source, okay? You perform the double counting on this hashed weighted graph. And while performing the double counting, you also detect whether this tuple is bad or not. So by a bad tuple, I mean that if a tuple is bad then that means that either S is not creating a small size configuration graph or S prime is not giving you a many unique weight function or HK is not injectively mapping the nodes of the configuration graph on the smaller values, okay? So if it detects whether the tuple is bad or not while performing the double counting and it moves to the next tuple. And if it is a good tuple, then you just finish computing c i's and sigma i's and at the end, you accept or reject the input based on whether you saw the accept node or not while performing the double counting. So all this requires some minor fixes and minor modifications to the actual double counting technique which we do on the actual graph rather than the hash graph. So I cannot cover all of them obviously, but let me just present one major obstacle that we faced. So let's assume that everything goes well till the ith level, okay? So by that I mean that all the vertices in si have a unique shortest path from initial configuration, okay? And your hash function h maps every vertex si injectively to these smaller values, okay? So here we compute c i and c i plus 1 and sigma i plus 1 and sigma i plus 1 in a slightly different way instead of going over all the nodes and checking whether it is at distance i plus 1 or not. What we do here is that we go over all the hashed values. And we check whether there is a, there is a node at distance i plus 1 which hashes to V or not, okay? So for this we can do a simple test that on all the vertices of si, we will generate it in a along a unique computation path like we did for the double counting technique. And while we are generating these vertices of si, we will check whether, we will check that none of the vertices of si hashes to V. And if there is a neighbor of one of the vertex of si which hashes to V, then we increment the c i plus 1 and sigma i plus 1 appropriately. So this is a fine case. The problem occurs when something like this happens. So there is a node in si which hashes to V and there is also a node in si whose neighbor hashes to V. So here we do not know whether V1 is equal to V2, is equal to U or not. Or I mean, so it could be that V1 is equal to U, okay? Which is fine, in that case we just move to the next hash value and check for it. But in case if V1 is not equal to U, then that means that you are facing a bad hash function which is not injectively mapping the nodes of the vertices, okay? So to find this, you cannot simply, so let's say you, at this point you realize that you have some node which is hashing to V and you know that there was one node earlier which was also hashing to V. But due to the way we are generating these vertices, it is not simply possible to go back and compare these nodes to see that whether they are equal or not. So instead of that, what we will do is that we will do this procedure again and again, okay? So we just store that, okay, this is the first vertex, okay? And there is a neighbor of the second vertex which we need to compare. So we run this procedure again and while running this procedure, you store the first bit of this node and first bit of this node. And at the end of the procedure, you just compare whether these two bits are equal or not, okay? If they are not equal, then that means that these nodes are not equal. And basically you are facing a bad hash function, so you move to the next apple. If they are equal, then you do the same procedure for the second bits. And you keep on do it until you finish all the bits. And at the end, you will know whether these nodes were actually equal or not. And if they were not equal, you move to the next apple, okay? So this was one way of detecting a bad hash function. We had to detect whether the graph is many unique or not. That was other hurdle and apart from that, we also had to see that the consistent graph size is small and not. So yeah, so this was all. Thank you. Is it clear that where you are like on the CUL is close on component actually? Yeah, it is, it is. So yeah, it is. So I think the only thing you need to do is that, right? You know that whether accept node is present or not along a unique path, right? So at the end, you can just flip to your answer and that would result in the, I mean, that would be the proof that CUL is equal to co-CUL. I mean probably I am not clear, but this is true, I mean, because I mean this was I mean advised by one of the anonymous reviewer also and we also checked, but yeah, we can, yeah. The simulation needs these generators, so that comes from the assumption that. Yeah, it comes from the assumption. That is exactly the same assumption that is used for complementing C and N. Yeah, yeah, exactly. Is there any possibility that you may be able to do this simulation with a slightly weaker assumption? Yeah, there is. So here what we need is that we need just one seed for which the completion graph size is a small, right? You need just one seed. In case of C NL, co-C NL, you need at least half many seeds, right? So I do not know, I mean, for that I guess we have to look at those pseudo random generator result if we can, we can the assumption there, but yeah, I mean, we thought about it that here all we need is just one seed.


Internal Revenue Service IRS Tax News! IRS Updates Frequently Asked Questions and Answers for 2021 Recovery Rebate Credit, but first, an attempt at a joke, I apologize in advance. One of the most intimidating of the United States, over $30 trillion debt collectors is known as Bond, Treasury Bond. The Administration assures us Biden can handle Bond. However, doubts have been had. I mean, the last time Bond confronted Biden about our outstanding bill, the President seemed to think he was a duck being complimented. However, the Administration assures us it's all part of a complex plan. President Biden is ten steps ahead of Bond, stating President Biden is playing chess, Bond is just playing checkers. Well, at the same time President Biden was currently playing with his mask, his advisors gently reminding him, the mask goes on your face. Most likely President Biden was imagining the mask to be the versatile queen on the chessboard, which he planned to masterfully maneuver in such a way as to be able to ask the opponent's pawn for a loan. You know, just to hold me over until tax time. Did President Biden really think he was a duck?  And certainly not the sharpest razor in the raft. I are 2022-28 February 8, 2022 Washington. The Internal Revenue Service today updated frequently asked questions, the FAQs for the 2021 Recovery Rebates Credit. These FAQs, FS 2022-09, there's a link to that here. We're updated 2021 Recovery Rebate Credit Topic A, General Information. There's a link to that here. 2021 Recovery Rebate Credit Topic D, claiming the 2021 Recovery Rebate Credit. There's links to those here. 2021 Recovery Rebate Credit Topic F, receiving the credit on a 2021 tax return. Updated those. There's links to that here. 2021 Recovery Rebate Credit Topic G, finding the third economic impact payment amount to calculate the 2021 Recovery Rebate Credit. Individuals who did not qualify or did not receive the full amount of their third economic impact payment may be eligible to claim the 2021 Recovery Rebate Credit based on their 2021 tax year information. So just remember that there's three of these economic impact payments were basically concerned of at this time. You might hear them or know them as stimulus payments. And the first two you want to keep in a separate group as the second one. You can think of these payments as in essence prepayments of something that would be tied to the tax return or the tax year. The first two being tied to 2020 tax year and instead of waiting until someone files the tax return in order to give the amount out. They gave the amount in the prepayment in the form of the stimulus payment, which is basically a prepayment of the recovery rebate credit, which for the first two were tied to the 2020 tax return. Now those two, the names is kind of confusing because they're nothing alike, right? You got the stimulus payment or the economic impact payment, the EIP and then the recovery rebate credit. And the EIP is the prepayment of the recovery rebate credit in a similar way as the advanced child tax credit is a prepayment of the actual child tax credit that you would be recording on the tax return. So even though the stimulus payments were the first before this advanced child tax credit payment, I think people might understand how the advanced child tax credit payment works because of the name being an advanced child tax credit payment, a child tax credit payment being something that we're already familiar with with regards to the tax return. So I think there's some confusion with the stimulus payments. I know there was in the prior year because it backed up the IRS a bit for some misinformation or tax returns that weren't being completed exactly properly given the recovery rebate credit. So the third recovery rebate credit then is a prepayment for the 2021 tax year. And if you didn't get the stimulus payment or the full amount of the stimulus payment, then the remedy for that would be to file the tax return for 2021 claim the recovery rebate credit then. Okay, individuals may have received their third economic impact payment through initial and quote plus up payments in 2021. Note third economic impact payments are different than the monthly advanced child tax credit payments that the IRS dispersed from July through December 2021. Most eligible people already received their economic impact payments and won't include any information about their payment when they file. However, people who are missing stimulus payments should review the information on the recovery rebate credit page. There's a link to that here to determine their eligibility and whether they need to claim a recovery rebate credit for tax year 2021 to claim any remaining credit for 2021 eligible people must file a 2021 tax return. Even if they usually do not file taxes, also people who did not receive all of their first and second economic impact payments in 2020 can receive those payments only by filing a 2020 tax return or amending a previously filed return and claiming the 2020 recovery rebate credit. They should review the recovery rebate credit page to determine their eligibility. For 2021 recovery rebate credit can reduce any taxes owed or be included in the tax refund for the 2021 tax year. And filers must ensure to not mix information from their 2020 and 2021 tax years. In particular, filers should not care should not should take care not to include any information regarding the first and second economic impact payments received in 2020 or 2020 recovery rebate credit on their 2021 tax return. I'm sure they're worried about this happening. I'm sure it's going to happen no matter what they do because this is confusing because you've got three economic impact payments which people kind of think of as kind of the same kind of thing. And the first two are and their prepayments, the prepayments that are called different names economic impact payments or stimulus payments and they're tied to the tax return in an advanced format which people aren't completely used to at this point. And the credit on the actual tax return that they're tied to is completely different in name called the recovery rebate credit. And these two payments are spanning to two different tax returns. The first two on the 2020 tax return, the last one on 2021. So there's going to be there's going to be some confusion, I would say here, but try to keep it straight on your tax return so that when you file it that you can do it correctly because if you get this wrong, it's likely that it will go into something that needs to be updated or will need some kind of manually fixing on the IRS's side of things. And they're backed up on that kind of stuff that will delay a refund. And if you're looking for the refund, try to get this stuff right. Tax software will help with it. They will need to they will need the total of their third payment received to accurately calculate the 2021 recovery rebate credit. When they file their 2021 federal tax return in 2022 individuals can now view this information in their online account. There's a link to that here so you want to get access to the online account. It looks like last time they they're doing away with this facial recognition thing which was really hard to get an online account. I think you can still have an online account with like a normal kind of login and verification and whatnot. And if you get the online account, then you can see on these these prepayments that you have gotten as well as the child tax credits. They should send you out a letter with it too, but it would be nice if you had access to the online account so you can kind of double check there. What the IRS thinks they have sent you with regards to all these prepayment kind of things that are so popular at this point. So people can also locate this information on notice 1444C which they receive from the IRS during 2021 after each payment as well as letter 6475 which the IRS will mail to them through March 2022. The FAQs frequently asked questions cover most questions related to claiming the credit and are for use by taxpayers and tax professionals and are being issued as expeditiously as possible. I always get that word mixed up, expeditiously. It's not expediently, expeditiously, expeditiously. File for free and use direct deposit. Taxpayers with income of $73,000 or less can file their federal tax returns electronically for free through the IRS free file program. There's a link to that here. The first way to receive a tax return is to file electronically and have a direct deposit into a financial account. Refunds can be directly deposited into bank accounts, prepaid debit cards or mobile apps as long as routing and account number is provided. More information about reliance is available. There's a link to that here. There's links to some other of this information, the FAQs and what not. There'll be a link to this in the description.


Okay, wonderful. So let's try this one. It says, find the concentration of calcium in parts per million in a 3.50 gram pill that contains 40.5 milligrams of calcium. So this question is a mass by mass problem, okay? But remember, mass, mass percent problems, we did mass divided by mass times 100%. This one's a part per million problem, okay? So instead of per cent, which everybody understands, cent means 100, if you didn't know that, you know it now, okay? So parts per million, what are we going to multiply by? To the 6 or a million, right? Yeah, okay? So the first thing we're going to have to do, though, is get these two units in the same unit. So if you prefer to take this to milligram or this one to grams, I'll take this one to grams, it's just preferable to me. So that's going to be 0.0405 grams of calcium, right? Calcium at 3.50 grams altogether total in the pill, right? So how do I do the PPM? Just like what we said, it's going to be the mass of, well, in this case, calcium, divided by the mass of the pill. Make sure they're in the same unit times, well, a million, in terms of the 6, okay? Everybody okay with doing this? So what do I get? 0.0405 grams. Make sure you keep your units there. Divided by 3.50 grams, okay? Times 10 to the 6, cancel, cancel, like that. What are my units? Well, this is 10 to the 6, sorry, this is PPM. Now what are my units? Sorry, PPM. Okay, so let's just plug these guys in. So 0.0405 divided by 3.5 times 10 to the 6. And how many sig figs are we going to add here? 3, 1.16 times 10 to the 4, right? 1, 2, 4. PPM of calcium in the pill. So let's go on upstairs and continue along with this discussion.


We're at West Point, United States Military Academy, a place I got to spend a few years, four years. I graduated in 1986 and have been connected to this amazing institution ever since. So for me to, you know, connect my love of this place with my passion and my vocation and our team, the Atlanta Falcons, it's just unbelievably gratifying. You're proud to wear this brand, represent Army, but to represent you and all our fellow Americans, an American team here at West Point. So I hope you have a great day. You're going to love this place. It's a beautiful, historic, incredible college campus. Arthur has said salute to service is something that we're going to do 365 days a year. So we use all of our platforms, the Falcons, Atlanta United, Mercedes-Benz Stadium to continue to shine a spotlight on service and sacrifice. And so for the coach and the players to come here to take time out of a crazy busy schedule before they take the field against the Jets tomorrow, it's a huge testament to the fact that we honor and respect those that are protecting all of us. And this is a really cool, visible sign that we mean what we say. The Falcons who are one of the best, if not the best team in all of sports when it comes to using their platform for honoring the military, sacrificing service, these guys show up and do this all the time. So for that reason and that reason alone, you should be about to pay. Thank you, sir. One, two, three. E.A.P.


And we're live! Hey y'all, I know we live live earlier and all that stuff, but I Ordered something this morning that I have forgotten about and it just came in so I wanted to Show you how you can do like this Shealy type or Tammy or Tara or Canella or Canella type Bloom for Bowie and us or Erica Hughes out of Erica Hughes as well So basically I'm out of house paint, so I'm just using my leftover whatever paint and My thing of my jiggy saves me from Almost passing out basically Pretty sure I was pretty close you you were literally starting this when Like one person was in here Thank you, we play it Bowie He wants to get down, but scared of Joe We want to get down These are just the paints that I had left over from what we did earlier today And then I just Then just go for it create some puddles Also for what it's worth I'm not using a pillow paint on three of these because I'm out. I'm just using my colors That I've left over pouring medium pouring medium Which is three parts deep base to one part Polycrylic and then you add your color. I had no pillows on those so I tried to like fill it in Some have just left over Some of his that yeah We get to it real quick y'all Look at this y'all So Little bitty trigger right here and look just remember how clean this looks you guys I'm gonna put a TD fam sticker right here. I Wish you would put a dot or let it slide down to here and Then just push it do one push just kind of back and forth. It's a blower. It's like a desktop keyboard duster That is y'all this is just paint. This is just acrylic paint with acrylic paint. Yeah, we're probably a From Amazon we'll probably put some resin over this.  So and we've been doing it for the past three hours Did all these Like we went a little crazy And these are all almost we almost fainted doing these We even did a geode we did a couple ornaments be did what is this sorcery called Anyways, we want to do a quick video to show you our new toy to which I will link in The description box in our Amazon account. It's 40 for is the brand Now Yeah, so yeah This was a short video tell them what the mixing medium and stuff was okay So the mixing medium you want to it's three parts of the a deep base. So basically Let me show you here Deep base is going to be Okay, so this is valspar. There are different ones. You do not want them to tent this so when you go buy it at Lowe's or Home Depot You want to make sure that it's high gloss enamel and that it's either a base C a deep base also level three or Base three Okay It's high gloss interior plus exterior. Okay. This is the stuff that you mix your colors in Yes, so you want to first mix three parts of this to one part Of the water the min wax water-based polycrylic the clear gloss Okay So you're gonna you're gonna first mix that and of course you can double and triple your recipe watch your legs So, I mean, you know like today I made I think you know Six to two so you could do whatever you you need to do on that and then um You get that all mixed and then you pour it out of your cups and things like that and then that's when you want to add your paints um I know that in two paints you want to just like about three different sports on youtube or um Is it the uh color art primary elements are awesome for this? I mean, oh my gosh, they they're beautiful So you could try that too and then um, let's see what else so that's just the paint um, and then you have your whole other recipe basically for um your cell activator and Do we want to go through the cell activator real quick or if you want, okay? They're here. Okay. We want it if they need to okay, so on the cell activator Let me see if I can because I want to make sure that I I've got the recipe right for you guys. Okay, so You guys are you gonna put that thing on the on our amazon thing? Yeah, yeah, she is now here if y'all want a screenshot this this might be the easiest thing to do actually We'll pause it. This is the pouring medium Are you guys just pause it and then uh take a uh screenshot of that a little closer maybe and then The cell activator Uh, there's all kinds of stuff in there. There is There you go. So it's kind of a it's kind of a you know A lengthy process as you'll see because it took us like forever to do the mixing and stuff But it's so worth it because you saw jeff point out everything That we created today and I mean they're just absolutely stunning So just to you know shout out to tanny anderson to Canella Is it circa? Sorry if I'm butchering her name And um erica hues So and I'm sure there's a there's a lot more people that are doing this technique. This is the shelly art technique Is what I guess it's been named after that we're just having fun and creating our own Our own stuff There you go And if you guys want some of these ornaments, uh, duty Has some so you guys hit up duty for these ornaments Look at that how fun is that? Oh and one more thing definitely check out, um Canella's um I want it's youtube video 131. She goes through all this. She's so good at explaining everything. They're incredible And so tanny anderson too, um just you know search shelly and it spelled s h What it el e e so it's kind of spelled a little differently, but that's what you want to look up and um You'll find I'm gonna say a pale imitation of shelly Sheely she lee A pale what I don't know. Oh, that's okay Imitation well, you know what this is our actual this is my second time to try this and this is atd's first time to try this So, you know, there's always room for progress and everything that we do.    How do you turn this off? All right, that's pretty much all we wanted to show you guys was this little Fun deal and you could most likely use this with resin too just heat up the resin a little bit and Then there is no more no more fainting No more spitting in your resin That's pretty much it Chris him he can say whatever he wants whoever this person is This is maybe you should take she leaves class Where is that? Where is that? Let's go It's all mine. We can go take that person's class She's an incredible artist. I don't mind at all. You know as a matter of fact, I was thinking about it Sounds like he might he might be a professional. I'm not sure Chris him or she or who? It's um shelly and she she's I guess developed this this uh pouring medium and this whole technique and she does I mean her work is incredible. It really is. Yeah Well, like I said, this is our first time today with just doing some coasters and a couple a couple small uh What are these little 10 inch rounds? I think they're a lot of fun Construction of criticism is it gonna hurt anybody? Holly, I don't mind at all I don't know.  We had fun today. We we uh, we're trying We started out doing acrylic pours and Then got into resin and now this is a little bit different and it's a lot of fun All right, we're gonna go we got to go get some grub.  We will see you tomorrow. Bye


Hey everybody, welcome back to Magic Orthodoxy. My name is David and this is a top 10. Hey, today we're going to look at the top 10 David Blaine decks. That's right. A lot of people have been asking for these top 10s and then also been asking for David Blaine decks and so I, you know, I wanted to kind of wait until I had a good top 10 list. I had a lot of copies of things, like multiple copies of White Lions and whatnot, but I wanted to make a good top 10 list and I think I got one. All right, so David Blaine, if you don't know David Blaine, he's actually, he was born David Blaine White. So his birthday is April 4th, 1973. Of course, he's an American magician, illusionist, endurance artist. He lives out in New York City. He's best known for his kind of like high profile feats of endurance and he's actually set and broken several world records. His very first TV special was called Street Magic and it had rave reviews. It was, it just, it was incredible. Pendulette called it the biggest breakthrough in television magic done in our lifetime. And what he did was he changed the perspective of television viewers when they watch a magic trick, you know, in the past, the camera has kind of danced around the magician and it's been, you know, focused on him and his dazzling assistance. But what Blaine did was he turned the camera on his audience. He changed the way magic is viewed and he focused just as much on the spectator and their reactions and now we see that everywhere in magic. The New York Times noted that David Blaine has taken the craft that's been around for hundreds of years and done something unique and fresh with it. And according to the New York Daily News, Blaine can lay claim to his own brand of wizardry. The magic he offers operates on an uncommonly personal level. And of course, if you've watched my top three magicians video, he is my favorite magician of all time. All right, so top 10 David Blaine decks. Let's go. Number 10, the Create Magic Deck from Microsoft. This is the holy grail for any David Blaine playing card collector. There was only 2015 of these ever made. They were never sold and they were given out to the interns who went to the 2014 Microsoft convention. This deck was created by expert playing cards and I really can't put this deck any higher on my list because I never opened it. All right, so number nine, eight and seven are all the learn magic decks. Number nine is the discover deck. Now the discover deck is blue. It is a blue classic split spades back design and it is a stripper deck. So if you don't know what a stripper deck is, it's a magical gaff deck. And each one of these learn magic decks, they all came with a little folded paper booklet that they also included some trick ideas and a dot com you could go to and learn more tricks. Number eight is the transformation deck. It is a red classic split spades back design and it is a Sven golly deck. Number seven is the mind reading deck. This is the black split spades classic back design and these are reader backs and now I'm going to show you this reader back up close and of course you know this is the ace of spades, right? The ace of spades. If I turn it over on the backside and show it to you, let's see if you can find the marking. It is probably my favorite, if not one of my very favorite reader backs of all time. Number six, the original split spades deck. Now the split spade represents David Blaine's logo, right? It's a spade but it's also a DB for David Blaine and it's all been designed by Mark Stutzman. Mark Stutzman, you're going to see his name on a lot of these tuck cases. He is David Blaine's go to guy for graphic design. The cards in this deck feature unique design details throughout including the DB split spade logo on the ace of spades, a caricature of David on the face of the king of spades which you're going to see on all the decks going forward too and now the famous Liar optical illusion card. Number five, the gator backs. The decks black on black foil stamped tuck case is embossed and finally detailed on both the inside and the outside. In fact the embossing pressure printing press type and direction of the cut were all carefully chosen by David himself. This deck was designed uncompromisingly for performance and style.  Number four, the 2017 red tour addition. Much like the classic white lions deck, very similar between the 2017 tour decks and the white lions deck but the back design, the lines on it, the line work is now much thicker. It also comes with new jokers, the new sword swallowing joker, new ad cards. It comes in my Monica stack and you get hidden card reveals. Number three, the silver split spades. The box on this features embossing silver foil stamping and the same soft paper used on the white lions series B tuck cases. The cards feature perfectly balanced metallic inks on both sides and they feel and handle better than any split spade deck, probably better than any David Blaine deck, probably better than any deck I've ever held. These cards feel great. They're designed uncompromisingly for performance and style. These are the best split spades ever. Number two, the black lions. This is my personal go-to deck at home. I have a brick of these. This is the deck I pull out every time I practice, every time I handle a deck of cards, I have a deck of black lions by my desk. Soft touch box features a two-tone black finish and silver foil stamping on top of a fully detailed quality emboss.  Each deck contains a number of hidden features, both on the tuck and the cards. And number one, the 2017 I tour edition. This deck was given out to the VIPs who were on his 2017 tour. This is also from expert playing cards. So interestingly enough, number 10 and number one both made by expert and they kind of look the same. The back to science, this could be the black version of create magic. I don't know, who knows. Black mat tuck with gold foil, classic, classic quartz. You also got the classic deal with the devil jokers.  This is what a back design for a signature David Blaine deck should look like. Alright, so that is my top 10. My top 10 David Blaine decks of all time. What did you think? Would you change the order? Did I miss a deck that is your favorite? Let us know in the comment section below. Thanks for your suggestions for doing these top 10s. I'll try to do more. I'll see you guys next time. Thanks. Bye.


Welcome. This is Pipeline Help Project Meeting. It is the 14th of April. Thanks for being here. So I think what we want to do is take on are there any questions that you may have first or topics that you wanted to raise? For me, a question was how has the experience been going through the the initial preparation steps? And have you have you found problems? Have you had things that we should discuss here while we're together? None for me. I was able to scan through the first five steps with no major issue. I know the challenge of having these working with blue ocean.  But yeah, I still I didn't get still the challenge I had was I didn't get enough resource material to help me work with the blue ocean. So that was like my major challenge. So yeah. Okay. Well, and there are there if you're interested in them, there are several maybe I should link to these Jenkins minute. Just let's see if I can find them. Yeah. So so the Jenkins minute video series was a series that was done some time ago that outlines various pieces of of blue ocean. So maybe that's one that you want to look you may want to refer to in case it helps it. Ultimately, I don't know that you really need it, Sophia, because just just having experienced that you've already got a lot of what you need that you've understood. Okay, there is such a thing as a pipeline. Here's how you would define one those those kinds of things. But if you are interested, let me paste a link to this. And then you can you can see those videos. And if I recall correctly, when you open one of them, I believe the others may be linked to it. So let's open it in YouTube and see if I'm right. No, I don't see the link. So I believe there's actually a playlist of these of these videos. So let me let me see if I can capture the playlist. And that way you've got the whole set of them. If you want to, they really are one or two minute video clips. So they're they're not a lot of effort to watch. And they can prompt, Oh, I could do that. Oh, I could do that without a lot of a lot of push ups without a lot of challenge for you. So let's see. See the Jenkins minute video series for examples. For me, at least they they were they're quite helpful in Oh, oh, I can do that. And oh, I can do this. And and those those kinds of ideas help me realize, Oh, I can do conditionals. I can do parallel stages. I can do things like that. So so hopefully that will help. Thank you very much. I appreciate it. And maybe let's see if I can. Maybe I can find the link now while we're all here together because I am quite sure that I've seen a Jenkins minute playlist. Mark, I actually just popped it into the chat. Oh, you do on the YouTube page. So I found the playlist links in the chat now. So that's available. Perfect. Thank you. Okay. So here is you. You are wonderful. Thank you very much. Okay. So I'm going to just put this in. We'll get that corrected in the document. That way, Sophia, you've got it and whoops, wrong one. We want to put it in the link. Very good. Okay. So what you'll see is over on the right here, there are nine different videos of Jenkins minute videos, each one truly one or two minutes long that talks about different features of of how to use Blue Ocean and how to use pipeline. Good. Any any other questions on that topic, Sophia, or topics that you'd like to ask about? None for now. I was able to create a pipeline for just one detail. And it's fun. I've not actually tried it with NodeJerys application. I actually just talked at I stopped at step seven. So yes, I was able to walk from one to seven on one myself. Excellent. Well, and and these these these in step eight are are actually quite a bit more complicated. They really take you through and a full end to end experience creating a Java application. This one or this one with NodeJS, if you're already familiar with Node, it actually you end up looking at a live site running on your own computer that is that is was built and created by a Jenkins process for you. So on port 3000 of your computer, you'll see you'll see a copy of the website visible and it's okay. It's a simple site, but the concept is, oh, wow, I've got Jenkins running and I've got Node running a website and I can see them both in my browser. Good. Excellent. Well, the other is if you find a problem here because you are you are bringing to us a potentially different platform than we may have originally developed the tutorials on. If you find a problem, raise a question in the Slack channels because you may actually have found a real problem that other users will be affected by. Okay.  Sometimes people think, oh, it must be me that's making the mistake. No, no, almost always. It's the documentation that's making the mistake, not you. Great. Okay. So now those steps are good to get you started. This piece is the piece that I think you may find interesting after you get through the pipeline work because building a Jenkins plug-in is real development work. It's fundamental development work and that fundamental development work will prepare you for the code changes you'll need to be proposing as you find places that need more pipeline help. So encourage you to get to this spot as soon as you can. Afi, did you have any questions that you wanted to raise? Yes. So I had questions about the pipeline. I also go to the step seven. So yeah, I just had questions regarding creating the pipeline and finding, but I realized that Kevin sent the playlist. So I quickly went to check it out and I go back to the core. So that was really helpful. I will complete the rest of the steps after this and then I would go to the next part for the plug-in. Great. Very, very good. Okay. Now for each of you, one of my worries is that some of these things are quite demanding of internet bandwidth. For example, when you downloaded the Jenkins war file, were you able to download it in less than an hour? For example, because it's 70 megabytes, so it's quite a large thing. Is your internet bandwidth fast enough there that you can actually download Jenkins and not have to wait an hour? Yeah, it was pretty fast. I think the only thing was installing because you could either install it as a domain and then there was also another option, which was not really recommended. So that was the only thing. But like the bandwidth, it was very, very fast. It wasn't really an issue. Okay, good. So in general, you're not terribly harmed by slow bandwidth. You've got very reasonable bandwidth. Good. And Sophia is the same true for you. Your bandwidth is generally okay. And we may have lost Sophia temporarily. Okay. Great. So, Afi, was there anything else that you wanted to ask around your pipeline experience or that you wanted to share with us? Okay. So with regards to pipeline experience, was that for Sophia for me? For you. Okay. So, regards to that, it was quite easy to follow. I remember being confused as to which, like, does this LTS, like the long-term support version and another version of something, knowing which one to choose, but I guess if you have prior dev experience, you like know which one to choose and then there's steps to follow. And I think the only thing, changes are made with more like mini typos. When you open documents, I saw it made an edit. I don't know what I did, but I am sure it's probably an edit. I didn't really have much more like problems. The only thing I think I'd love to add is, like, the path for the installation of Jenkins. Like, if you don't want to use the domain user, like, okay, so for, for example, Windows, right, if you are supposed to install it, you have to go through certain steps, like five or six steps. And you have to actually find out on Stack Overflow in order to do that. Because you could get certain errors, right? It has to do with testing credentials. Yes, that part. So I wanted to propose, like, to add it in, if that's okay, other steps so that, like, people do not really have to struggle. Very good. Yeah, so, so this, and in this, this set of instructions, I think I made a mistake here that rather than just saying, hey, follow the installing instructions, I should have said specifically that since it is a development environment, if you're on Windows, it is easiest to use the war file rather than, than the Windows installer. And now that's, that's contrary to most of our experience, right? Most of us know that on Windows, I should use a Windows installer. But because of this being a development environment where you're going to start it and stop it, destroy it and recreate it all the time, it's usually best rather than using the Windows installer that, that you're correct has these, these complicated questions that you have to answer in terms of doing a production deployment on Windows. The Windows installer want, recommends settings for a production server, right? It's, it's offering, you know, separate credentials, separate accounts. And, and those things are important if you were running this for a group of 10 people or 100. But, but for your development environment, it'll actually get in your way. So separate credentials, separate accounts, separate directories, and all those things can, can actually be a, can, can be at OPS, can be an impediment, can slow things down. So was that, was that clear enough for you? Did you have a question there and why I'm suggesting that it would have been better if I'd advised you, hey, use the war file? Okay, it was actually resolved. I actually found like a way out. So that was something that I just wanted to add to the documents in case someone wanted to use a route that I used. So I didn't have to go through this same process again. Yes. Good, very good. And, and we would love to have that submission. Thanks very much. That would be great. Great. Okay. So now have either of you had a chance to look at the snippet generator yet? This is one that's quite important. And if you're okay, I wanted to take some time today to demonstrate it. And I was going to use the demonstration today just to highlight the kinds of problems you'll be helping us solve. So if the two of you are okay with that while we're recording, I'm going to, I'm going to take you through this, this experience and, and show you how bad some of the things are. And as we look at how bad they are, you're going to understand, oh, there's a lot for me to help improve in this area. Would you be okay if I did that as a demonstration? I would love that. Yes, that's totally fine. I'll love that too. Great. So I've got a, I've got a little Jenkins server that I run at home here. Oh, except it's offline. Well, that's not nice. Let's use the other one that's online. Okay. Here's my nice little Jenkins server that's online. And in this, there are, among other things, some jobs that use pipeline. So in this case, the get client plugin has a pipeline job in it that builds its master branch. Okay, this job then is, if I look at it's how it runs, I can see here's an example. If I click this one, and look at replay, it'll show me what it would run. And what it would run is this pipeline definition. And that is using these other things down here, etc, etc. Very, very, very elegant thing that it does, that I only wrote this very little bit of code up at the top and some other really smart people provided all the things I needed. Now, if I need to make changes to this, or if I'm creating a new job, for instance, I'm creating a brand new pipeline, I might do that by saying new item, a pipeline, and we're going to make it a pipeline. And soon I'm going to get to some hints down here. Here, I'm just going to have it for the for the short term, do a very simple little pipeline definition. All right, now I save that I've created this, it's not a terribly useful pipeline, we know it's not, it's going to tell us, hello world in the console output. Well, that didn't help very much. However, when I start, when I go back to edit that, to configure it, right below this script section is this hyperlink here pipeline syntax. And this pipeline syntax is the helper that will let me find ways to express the other things I want to do. So maybe I want, okay, I would like to check out some code from git. So I'm going to say checkout. And I want to use git and the thing I want to check out is I'm going to actually check out the git client plug-in source code. And I'm just going through this filling in the form. And here it's saying, okay, are there any additional things? I click this generate pipeline script button. And it tells me what I paste in. So now I go back here to this, this thing, paste it in. And I now have a working pipeline that's going to do a checkout. Now it's a lot easier for me to read if I do these kind of things. So what I just did is said, hey, I got hints by clicking the usual way I would define a Jenkins job. And it then shows me what I paste in here. Now when I save this and build it, it's going to first say hello world. And then after it says hello world, it's going to do the checkout. And so you'll see here, I got all the checkout. It did a whole bunch of work for me that just by my adding that checkout that I pasted in here with this little syntax helper. Now the challenge though is that I can now get help on these things. So I can, for instance, get help here that tells me what to do, get help here. That help is great. But if I go looking for help on the Jenkins site. So let's go to the Jenkins documentation site here. And I'm going to look for the pipeline help. Let's see how about checkout, SCM. That was the step I used. And now here is this online help page that is about this same thing that I just did. You remember I used checkout. But notice the amount of information that's here. Okay, maybe I know I've got to look here at get SCM. And there's a bunch of online help here. But when I look at other examples in this thing, it will have much less helpful information. It doesn't tell me. So for bizarre, an interesting UNIX based, typically UNIX based SCM system, it doesn't tell me hardly anything. Or if I look at the build step, this is sort of the the really glaring example. Oops, wrong one. Pipeline build step. This one, you'll see this long list of things that can be called. These are parameters. And now I read one and it says, oh, okay, run. That's all that it tells me. It's got a name, an ID, and a description, but no mention of what those things mean or how to use them or why you would use them. So this kind of, wow, why doesn't this help me more is where we want your help is you're going to discover exactly those kinds of things and say, hey, I can provide much better help than is already there by understanding this thing in the context of the pipeline and providing changes to the plugins that provide these things by giving them more help and more online information about them. Questions so far. Sorry to be scary and frightening, terrifying. It's by plugins. Is it the one on the other page that lists down like, for example, dot net Java plugins? Are those the plugins you're referring to? They are. Yes, that's correct. So Jenkins is extended by plugins. So here's the plugin site and, and for instance, that plugin that I used to do the checkout, it was a Git plugin. So I used this Git plugin to do checkout. And, and that is just implemented as a plugin. So this build step, if you, when you see this, this page, it has this nice helpful link right here, right below every one of these steps, it says view this plugin on the plugin site. So I can click that and here it takes me to, okay, now I want you to watch this. Let's go back. You see all of this material. And yet when we go forward, that's the total documentation for that plugin. That's not nearly enough, right? There's a lot more that we want that should be described there that will guide people and help them. So, so we know we've got a lot to do to do a better job of describing how to use, how to use these pipeline steps more effectively. So, Afi, did that answer your question? What's a plugin? Great. Okay. So, so here I was doing using using the syntax, the snippet generator and, and this, the things that I showed you here of using the snippet generator is already something that many users don't realize is available to them. So one of the important things that you'll do as you're helping add new pipeline help steps, as adding new new, adding pipeline help two steps, is you will recommend regularly that they use the snippet generator to help them. Because what we get is we get frequently complaints from users that they were reading this detailed document trying to figure out what to do instead of just going to the snippet generator and letting it help them. So they were, they were thinking, oh, I have to read this thing that looks like a programmer's reference manual, when instead what they can do is use the snippet generator and let it help them. As an example, let's take, let's take this add badge thing that's being offered right now. So if I look for add badge, here's the online help for add badge. Now, I confess there's an awful lot of add badge icon is a string, text is a string. There is no description anywhere here that tells you why you would add add a badge, how adding a badge would help you, what the meaning of the link is, what the meaning, but if I do that same thing here, okay, I want to add a badge that is, I'm going to be lazy, I'm going to add an info badge. The text should say info and the ID is some info, let's actually, let's do it this way, an info badge and an ID for badge. So there's, there's what I paste back into my pipeline. Okay, let's go back and do that. It's the same simple process. I'm going to paste this in there. And I'm going to put the badge right after I do the checkout. Okay, so first let's see where we're at. Here we are. Remember how this page looks, I'm going to do a build now. And it built, oh, look at this, see that little I, there's my info badge that I just added. And when I click it, it says, so again, I added that, but nowhere in that material did it suggest why you might, what you might do with an info badge or an error badge. And, and so one of the things you're, the two of you are going to help us, help us with is you're going to help us better help users as they learn, oh, I can do this with this thing. And so here we go. Let's do something really scary like H one, a large heading. This is going to be completely out of place. And, and we should all be ashamed of me for doing something in a recorded place like this, but we're going to do it just for fun. So I'm going to add another, another badge and this is going to make the page look terrible because it just put a large heading right there. All right. So, so that, but, but that's the kind of thing that we can do here. But we need to get that message to people who are, who are defining these pipelines. And right now, when they look at pipeline syntax help for badge, they get no help whatsoever. So what you might do is say, look, I'm going to go, you open up this plugin and this is the plugin. My goal is to add help to this plugin. And, and that's, that's a great goal because there are lots of ways that this plugin could be helped. Does that, does that be, does that give you a little better overview of, of where we're going with the pipeline help steps project? Yeah. So, so now the reason why we put this build the Jenkins plugin step into your starting, into your starting experience is because in order to submit a good pull request, for example, to the badge plugin, you're actually going to need to check out the badge plugin and build it. And you'll compile it locally on your computer and you'll use it in your Jenkins installation and you'll experiment with it there.  And having done that, then you'll be ready to submit a pull request that we can yet then use to discuss and see, hey, is how's that doing. So that's why this build a Jenkins plugin step is in there is because you're going to need this when we get into doing the project. And similarly, this task on modify existing pipeline help is, is a specific step. It shows you, hey, let's take exactly this thing. In this case, the example takes you through a specific plugin and you make a change to it and prove that you can see the change in your Jenkins installation. Fair enough. Yeah. Excellent. Any, any other questions for today? So those, the second step for this was Apache, right? I was wondering if you could just run it using some or quite a year. So the second step was to install your patch and even and sorry, I missed the last part of your question. So you wonder if and then I missed the last part due to some audio breakup. Okay. So I was wondering if you could just run it with the XAMP, like XAMP, or this is quite different because I went like through the steps and put it in my like my directory and all that. But I wasn't getting the desired outputs. I decided to like try again today, but an alternative is to run it with some like Apache. Ah, I see. Okay. I see what you're asking. So, so this, this thing is actually a build tool that happens to be provided by the Apache foundation. So it's not actually an Apache web server. Oh, okay. Okay. Okay. So I remember seeing Maven like when using Java, like in IntelliJ, you build with Maven, but I just wanted to be sure so that I didn't do anything wrong. Yeah. Yeah. No, you definitely did not. And so when you're in IntelliJ, this, this should be well behaved. The in, in this case, I had you do it outside of IntelliJ because sometimes IntelliJ makes things a little more complicated. So once we're sure that you've got it working inside or outside IntelliJ, then certainly you're welcome to, to work with it inside IntelliJ, or NetBeans, or Eclipse, any of the IDEs. Yeah. And IntelliJ is an excellent choice, very good choice. Thank you. Any other questions? I wonder maybe if, maybe what I should do is give you some links to see if I've got recordings from past sessions that we did last year, because that might help you. Then again, maybe not. I mean, truthfully, the most valuable thing is just take your time and go through these steps, because as you go through the steps, you'll, you'll find questions that matter to you, and we can then discuss those questions and, and get your answers to them. Okay. That's, that's great. So in case of anything, when building the Jenkins plugin, we'll put it inside the Sheikot Africa Slack channel here, so that people, you could reach out and then. Exactly. That's the perfect place to ask the questions, and we will happily, happily give you answers there. Absolutely. Um, Mark, I wanted to ask regarding the Jenkins pipeline help, you were, you gave an example for instance for the batch, and it's just really helpful. So you, in the documentation, there are actually no examples in the documentation, so I didn't know. Um, are we including something like example or probably just describing um, add in the description, or I really, um, wait a minute. Good question. So, so there is a strong preference for examples, because examples help the users, they like to cut and paste. So here in, in, let's, let me use a plugin that has some examples so that we can talk through why users care so much about examples. That's a, it's a very good question. So let's, this one, for instance, the get plugin starts with, oh, we're going to talk about some examples, how you use credentials binding, how do you use get credentials to perform a get operation. And so what this provides is an example that a user can cut and paste, and this example should work for them. So they, they will need to put in their credentials ID, but and if they've got a get tool, their get tool name, and then it will just work. And they like that very much, or if we go further on, we should see examples like, let's see if we can find it, check out SCM. Yeah, here we go. So for example, this is a usable sample to highlight, how can I do a checkout? And this thing up here at the top is my video that I recorded. So this one right here was my video recorded showing them how to use the pipeline syntax generator. So to the question, do we want to include examples? Absolutely. If we possibly can, people, one of the, one of the big complaints about Jenkins that I receive regularly about the Jenkins documentation is, hey, it doesn't have enough examples.  And I apologize if, if they're, they're indelicate or maybe even offensive, but they're targeted at me and others who have tried to write documentation. I'm going to show these to you. So these are the, these are comments we've collected since 2017. So four or five years now. And now let's, let's read what they say. Okay. So for instance, would be nice if the parameters had an explanation as to what they do, add a description of what each option does specifically. Okay. Tell us what the object returns. Many options are not documented. Parameters, usage should have at least one example like fail on error. This is a very, some better examples would be good. So asking for examples is the single most common request in this collection of people's feedback. So, so did that answer your question, Sophia? Oh, Afi, go ahead. You had raised your hand. Yeah, so I just saw the question I asked on rule 1273 about the local security policy. I just saw it there. Yeah, I just saw it. Exactly. Okay. So, so now does that, isn't that okay on the one hand that's terrifying because somebody else had exactly the same problem you had? Right. And, and so, so this is a great excuse for us to say, you know what, I, I could help this by describing that. Yeah. Thank you. So, so, yeah, this, this feedback, now there are times there are times this feedback is filled with expletives or profanity or people being very angry. And so please don't be offended by what you read read here. I just have to warn you in advance. Sometimes people have, by the time they give us feedback on this, they are very angry and they, they're expressing things like, could you not do this following thing? And so just, just don't, don't panic. It's anonymous feedback. We have no way to know who wrote it. We're fine with that. And, and if they sometimes get very grumpy with us, we, that's okay. We wish, we wish it were different, but we'll, we'll, we'll take their grumpiness and not worry too much. So, but, but the request for examples is, is the most common request in this list. And, and you'll notice the number of rows. Yes, there are 1200. Now almost 1300 items of feedback provided by users over the course of the last five years that we've captured. So, so there are lots of things we can improve here. See, it's occasionally we do get some that say very helpful, but most of the feedback is, is no, you're not being helpful. Give me more examples. Did that answer your question? Yeah, it does. Thank you. And hopefully not offend and not terrify. There are plenty of, plenty of places where we have opportunities to improve. Yeah. So this one, for instance, what are the return values from build step? This was one of the, the types of things that inspired this whole project of pipeline help. Because if you look in the, as you see in the documentation here, it uses the pipeline build step. And the reason it does that is because the pipeline build step is the, the one that has the most requests for give me more examples. And I think I can actually understand why, because when I'm using the build step, this, this again is lots of fun when I'm using the build step. So I'm going to go to the syntax generator here, and I'm going to choose build. And now, when I look at, oh, that's interesting. What can I do with this? How can I, how can it help me? And I look at the help. And now if I go looking at this step, or even the step reference here, this is where I get this terrifying list of an enormous number of things, most of which are woefully inadequate in their description. Sorry, what was that, Sophia? Oh, I think most of them are not at prep for. Right. Exactly. The, the, okay. I know there's a thing called agent parameter, but I have no idea what the name means or how, what the value means or how that affects anything. Right. Yes, there's a thing called a Boolean parameter that has a name and a value. Okay. But then what? So, so it's, it's that sort of thing. So if we say, how, how do I use this? When do I use this? Lots and lots of people ask, give me better help than better, better help and better guidance. Okay. And now, okay, here's a lot of help actually on wait for completion. So that's good. But then, okay, now what do I do with that? And so, yes, lots of, lots and lots of ways to improve. Any other questions or concerns? Actually, this is not really partaking to or what is causing. So I say, I started learning mid like got the opportunity. I took a Jenkins beginner's course. So I was actually used to the conventional UI, then I was I introduced myself to Blue Ocean just like two days ago. And trust me, it's a part of me prefer the conventional UI. Blue Ocean is beautiful, is very fine, but sometimes it's very difficult to navigate around it. So I just wanted to find out how, how often do you use it and how are you able to like switch from the conventional UI to Blue Ocean? Excellent, excellent. So I use Blue Ocean when I need to visualize a pipeline. I don't use it other than that. That is the primary use model. So I typically won't go into this interface. I typically open up an exact build and click open Blue Ocean, because I want to see this view. Everything else, I exit out back to the classic UI for this. So Sophia, your experience matches my behavior. There are places where I need to see that visualization. I'm going to open one now. Let's look at one where it's really important for me to see that. So I'm going to go to the ci.jenkins.io process that builds the Docker images. And here, if I look at the console log, if you look at this table view, it's, wow, that's huge. What's going on there? And it's very hard to visualize what's happening there. But if I open Blue Ocean, I can actually understand what's happening here, because I can visualize, oh, here it's testing Alma Linux running Java 11. And if I want to see the log, I click that, and then I scroll down here and I can read through the various steps that were used in testing Alma Linux. So in this case, Blue Ocean is very, very helpful. But if I want to see what's the next job or what's the most recent status for five or six jobs, I do it all from the classic, from the standard user interface. So your experience matches mine, and I think it matches most Jenkins users. Blue Ocean's primary use is to help me visualize pipelines. Everything else, it's nice that it does, but its primary purpose is to help me visualize pipelines. This is beautiful. I'm going to say that I actually love the visualizations because aside seeing how everything builds, I get to see like, from step, like one step to another, I get to see how things run. So I actually love the visualization. Absolutely. And that is very helpful, right? It's good for us to know, let's go grab one that's probably building now, because it takes a nice long, oh, nope, it's not building now. I was going to try to grab this one, because when it runs, it spends four hours running. We'll just start it building and let it run. But there are all sorts of, oh, I know, here's one. We can use a plug-in that I maintain, because it actually builds and runs pretty quickly. So my mistake, we want to be on Jenkins here. We need to go here. Okay, so here's this plug-in that I maintain. I'm going to build it, and what we can do while it's starting its build is let's go look at the other one. It shows me, Blue Ocean shows, hey, this thing tests on Linux running Java 11, on Linux running Java 17 with a newer version of Jenkins and on Windows. And now if I click this arrow to go to the next one, I can see how it's starting its run, and it's queued up to do work. So that, again, is really helpful for me. But if I need to do more detailed look, or for instance, if I want to see whether test failures, I'll usually just come here and look at the summary page, because it tells me things quickly and easily. So does that answer your question? It does, actually. Thank you. And congratulations on very rapidly getting to the same use model the rest of us have reached. So well done. That's great. Thank you. I think that covered all the topics that were on my mind. Any other topics for either of you? None for me. Yeah, at the moment, everything is touched on. So we'll just proceed with the other steps. This whole walkthrough just reminds me of Stache Blue and Jenkins running your program with the pipelines and seeing how everything builds. I've had a lot of experience today with that. So just trying to fix and see the trace logs, because I was having build fields, and this is just interesting. Right. And we hope that this will be helpful for you in your career, right? That this is not just for the Jenkins project, but this will help you as you go on as a developer further. So that's a great combination. We love it when open source helps, when we help open source and open source helps us. It's a great mix. So thanks very much. So in terms of our next meeting is this time okay for you? I know that, oh dear, that Nafisa would like to meet with us and she's not available after Dark. She's not available after sunset. So would it work for the two of you if we were to do this earlier in the day? Or do we need to do it this late in the evening for your time? Okay. So what time do you propose? If we could meet two or three hours earlier, would that be workable for you? Or is that? It'll be four to five or three to four, right? Hey, sorry, that's my time. That's GMT, TTC. Sophie, what about you? That'd be okay for you. Yes, that'll be okay for me. So if we moved it, and let me double check, I'm going to stop sharing my screen so I can check my work calendar as well, just a minute. Okay. All right, so because if we were to move this three hours earlier, one, so one, two, three, yeah, three hours, three hours earlier, maybe even better would be as much as four hours earlier. Is four hours earlier workable for the two of you? Is that too close to the end of your actual working day? It's actually before for me, but I can definitely create time, it's no problem. Well, so let's, if three hours earlier works good for you, let's do three hours earlier then. That way, because three, what time is it locally for you when it's three hours earlier from this? So that would be 3.30, 3.30 p.m. Oh, okay. Sorry for Sophie, it's before 3.30, right? Yeah. Is she right? Okay, good. So that's definitely, definitely prior to sunset. I mean, so that's great. So let's go three hours earlier. Kevin, does that work okay for you? That'll work for me, no problem. Great. So I will take the action to move us three hours earlier, and that way we can have Nafisa there as well, and we'll go forward. Excellent. And now if you find this is getting in the way of your working day, don't be shy. Say, hey, Mark, we need to be later. That's okay. I understand that we've got jobs and we want to be sure we meet our employer's needs, not just open source projects. Okay. Okay. All right, thank you. Thank you.


Hello, hello! Welcome back to my YouTube channel. Today we will be talking about orientation. Orientation is the core of our method. What is orientation in our method? It is the relative, you see this yellow marked part. This text comes from the Oxford dictionary and orientation can have different meanings. For example, the action of orienting someone or something relative to the points of a compass or other specified positions. That is what our method is about, the relative position or direction of something and that something is in our case a structure, a monument, an ancient monument. And when we examine the orientations of ancient monuments in large quantities, we have discovered some amazing things. For example, in this yellow marked part it says, using the orientation of a building to capture energy from the sun. That is of course true, it is also very limited. The orientation, the exact cardinal orientation of a building can also be used to research time because time and movements of the sun is sort of the same. When time goes by, the sun moves and if you have a proper cardinally oriented building you can measure time with this. One of the best examples of measuring time by using the sun is Yantar Mantar in Jaipur in India. And this part contains a lot of different instruments, monuments, buildings to measure time and it's very interesting. What is also interesting is to notice that this park is cardinally oriented and of course it is cardinally oriented because the builders are very aware of the movements of the sun and the positioning of their buildings and the positioning of their whole park and therefore it is cardinally oriented and it is also interesting to notice that the rest of the city surrounding Yantar Mantar is non-cardinally oriented. It is oriented in an arbitrary way to a magnetic pole or to geographical surrounding. Enough said about this, we go to a very interesting research done by Jeff Boeing. I recommend to check out his website. Jeff Boeing has done a lot of research to orientation of major cities around the world. Here you see from Bangkok down to Warsaw. It goes in alphabetical order and you see for example Beijing is cardinally oriented and I will explain later why Beijing is cardinally oriented around what it is cardinally oriented and that is very interesting to notice. We are the first to understand why a city is oriented around ancient buildings in the same orientation.  We haven't examined all the cities and why they are oriented in the way they are because it's just too much work. But for example, Mexico City is clockwise oriented and it is clockwise oriented around ancient structures. Ancient structures had a lot of influence on the orientation of Mexico City. For example, cities like Berlin and London and Moscow and Rome, Rio de Janeiro, Seoul are a little bit chaotical oriented. There's not really a strong pattern to discover but when we go to the new world, to the United States, we suddenly see something totally different happening. In a new world, a rational world, a large country, a lot of space, there is no reason to orient a city, a structure, non-carnally and you see this clearly and it goes from Atlanta to Buffalo, Chicago, Cleveland, Dallas, Denver, Detroit, Houston, Las Vegas, Los Angeles, Miami, Minneapolis, Orlando, Phoenix, Portland, Sacramento, San Francisco, Seattle, Tampa and Washington. They are all without exception, mainly currently oriented and the question is why? Why is this the case? And I believe that answer is quite simple because if you are new in a very, very large country and there is hardly anything to orient yourself to, that is why the new settlers oriented themselves to the Cardinals, to North, South, East and West, in which direction do you go in a large country? Do you go East or do you go West or North or South? And there are just a few examples of non-carnal alignment. For example, Charlotte. Charlotte is a big, big mess and some other cities like Philadelphia or St. Louis were oriented by using a compass because if you look back in time, at the time Philadelphia was founded, the magnetic North Pole was at approximately that direction. So it's clear that this is the reason why Philadelphia is oriented by using a compass. For example, Manhattan has this typical clockwise orientation because the founders didn't want to spoil space. So it's best to build the grid in the direction of the narrow island. It's a logical choice. So that is why Manhattan is one of the few examples of non-carnal orientation. This is a very interesting video that I captured while browsing through Google Earth and you'll see the typical cardinal orientation of the whole grid. Every plot, every little city, every road, boundaries, borders, everything is currently oriented. Of course, there are a few exceptions. It's very interesting to browse through these different areas of the United States. When a country is built from scratch, it is logical, it is currently oriented. In our research, a structure and monument can only have 45 degrees clockwise orientation freedom and 45 degrees counterclockwise orientation freedom. And you'll see this here in this short animation and this is what we used in our research. You see three structures A, B and C. B is ambiguously oriented. The researcher has decided to pick out the stairs as the main feature and then look at which angle it is oriented to north and it is 60 degrees, but 60 degrees is ambiguous. It's ambiguous orientation. And then the correct orientation is C. It is 30 degrees clockwise. What a researcher would do is to make the stairs the main feature of the building and then look at which direction it is oriented. But that is a mistake because it contains an assumption and when this assumption is done once, it's okay. But when it's done many times in big data researchers, it pollutes just worthiness of such research. And if we do what we do in large quantities, you'll see this map. We have examined almost 400 ancient structures on the eastern hemisphere. You see there the locations and we have measured their orientation as well, of course. They are massively counterclockwise oriented. And if we measure the contemporary structures in all these countries, which we did in another research, you will see there are as much structures counterclockwise oriented as they are clockwise oriented and they level out to zero. So they are collectively oriented to our current geographic north pole. But when we do the same research with ancient structures, they are massively counterclockwise oriented and not just a bit counterclockwise oriented. They are counterclockwise oriented at minus 20 degrees, which is huge. And when we go to the western hemisphere, we have almost 550 ancient structures in our database on the western hemisphere. We see the same happening as on the eastern hemisphere, but in the other direction, they are massively clockwise oriented. And when we do the same research in these areas to contemporary buildings, it is the same story. They are as much clockwise oriented as counterclockwise oriented. So contemporary buildings are pointed on average collectively to our current current system, to our current geographic pole. I have made a video before about this. When you take all the contemporary structures, ancient structures like Giza or White House or Vatican or and so on and so on, Taj Mahal, and you align their northward extension over the globe, they form a large node at the north pole. And this way you find our current geographic pole. So here's a Chinese pyramid. It is currently oriented, not all of course, but this one is. Their northward extension runs over the north pole, but we still don't know where the north pole is. It's somewhere on this line. For that, we need a second structure. We go to Giza. It is also currently oriented. We draw a northward extension line there it goes. This line also runs over the geographic pole and runs over geographic pole because Giza is currently oriented. And the crosspoint of these two lines, that is the geographic north pole, the spin axis. And this is how you find our current geographic pole. It's a mathematical method to find our geographic pole. And where the spin axis exactly is, it is there at this crosspoint. It goes very deep when we do this with ancient monuments all around the world. Great, great discovery. Here you see the Forbidden City in Beijing. It is the oldest structure in the city and the rest of the city is oriented around this ancient core. And that is why the city of Beijing is currently, mainly, currently oriented. And the further away you go from the core of the city, from this Forbidden City, the more article it becomes. This way you can discover that cities, contemporary cities, are oriented around ancient cores. And then we go to Mexico. We're looking at Mexico City and Mexico City is clockwise oriented. And the orientation of the neighboring structures, contemporary structures, is oriented in the same way as the ancient pyramid is. Very interesting. Very, very interesting. Why is this? Because it starts with this ancient structure and then erode along it another building, another building. And so it grows slowly around these ancient cores. And there are probably many more ancient foundations in Mexico City. But no one knows about newer structures are probably built upon this ancient core, ancient foundation. And you see again, the whole city grid is oriented clockwise to a very ancient pole.  Yes, the pyramid of Colula. There's even a church. The Spanish conquistadores build a church on top of this pyramid. But this pyramid is clockwise oriented to an ancient pole, by the way. And the whole city, neighboring this pyramid, is also oriented in the same way you see it clearly. So this is what influenced the orientation of contemporary cities.  But the neighboring contemporary city is also oriented in the same way. So you can see that ancient monuments influence contemporary orientation. And we are the first to be aware about this in our research. Very, very interesting.   It is counterclockwise oriented also to an ancient pole. But you see that this whole area around is agriculture plots, buildings, roads. Many of them are oriented in the same way. So this is how you can see how ancient structures influence contemporary orientation. This is how it happens. This is why areas are oriented in the way they are. And I want to thank you for watching for your attention. Bye, bye.


And I think the other thing that I have learned over the period of I guess five years is the ability to build teacher capacity. And I believe you do that by building a great community of teachers. Normally our courses are between 26 and 30 high school teachers and many of them are social studies teachers. Some are special ed teachers. Some are English language learning learners. Is their focus. So really to know who your teachers are some of them are what we call CINY schools who are schools in need of improvement. I would say one third of the teachers come from schools in need of improvement. But I know a lot of the Manhattan schools and many of them work with underprepared students whether they are from schools in need of improvement or not classified as such. So I think it's important to build a community of learners. So I always make certain that the teachers are able to communicate with one another by email and I work a lot in group sort of activities during the class to make certain that they get to interact with people that they don't know. And it tends that teachers once I sort of hook them in they come for other courses which is great and sometimes you get to know over a period of time what people's strengths are. So I have learned to tap into those teachers and sometimes I give them a portion I see where they could fit in in a particular course. I like to give the teachers an opportunity to become leaders to be able to shine in front of their colleagues and I find that the community of teachers that we have or the community of learners that we have they're so supportive of one another. It's really terrific to watch. So careful planning and building a good team that you know we're all together on this. We have the same goal and the idea of allowing the teachers to become leaders allowing them to show how they can shine and teach their colleagues.