Let us discuss some decision problems concerning regular language. What are decision problems? Decision problems are those computational problems, output is yes or no. You know many decision problems for example, given a graph is the graph connected. So, in decision problem there will be some input and output will be either yes or no. That is in that sense it is a decision problem we need to decide something. And in these problems today which we will look at the decision problems today the input is going to be a regular language. And we may ask certain questions for example, given a regular language does it satisfy certain property. Then the answer is yes or no that these are the kinds of questions that we will discuss. In fact, the most important decision problem concerning regular languages is that you are given two things a regular language L and a string W. And you are supposed to decide this question is the string W in the language. The answer is either yes or no. So, this is called language membership problem. We are asking whether the string W is a member of the language and that is what we need to decide. Now, our algorithm of course will depend on how we represent the regular language. And now you know regular languages can be represented can be given in several ways either in terms of a DFA or an NFA or an NFA with epsilon transitions or through a regular expression. So, therefore, we will have different algorithms depending on the way we would present the regular language. So, the first case is the simplest case. Let us take the simplest case that L is represented by a DFA say M. In other words what we are saying is that this language L is the language accepted by the DFA M. And now the problem boils down to your input is M and W. And you would like to know is W accepted by the DFA M. Let me say M is here. This algorithm is rather straight forward. You can see that what we can do our algorithm can just simulate the actions of a DFA. And what is that? It looks at the string W symbol by symbol starting from the leftmost symbol and it keeps track of the state in which the DFA is after scanning some prefix of the input W. And supposing at some point the DFA is in M as some state Q and the symbol next symbol in the input is small a. So, at some point of time the state is Q, the symbol is a and I know the next state is going to be whatever is b according to the transition function of the DFA. So, this part of the input is consumed the symbol of the input is consumed. Next state is p and this way we carry out the simulation till the string is over and at that time if the state is one of the final states of the machine M then the string is accepted. We give the answer yes it is in the language otherwise we say the string is not in the language and therefore the answer is no. It is therefore quite straight forward the algorithm for membership decision problem when the language is given as a DFA. What about if it is an NFA and here when I say NFA I do not let us say the NFAM does not have excellent transition. What you could do is first of all convert that NFA to an equivalent DFA and then use our old algorithm. But the problem with this is we know that if this NFA has n states the description of the NFA if it is part of the input then this n is a parameter is a size parameter is one of the parameters which determines the input size. Then the DFA can be can have two to the power n states. If we know that that it is possible for some NFAs that the corresponding DFA equivalent DFA will have exponentially many states. So in that case the algorithm just in converting the NFA to DFA is going to take exponential amount of time and the algorithm is not going to be efficient. But there is a way out you can have actually a polynomial time algorithm. But we do not in that case we do not convert the NFA to an equivalent DFA. Instead what we do is strategy that we use that we keep track of the set of states. The NFA can be in after reading some portion of the input. So in other words we keep track of the set of states m can be in. It means m is in some computational path of the other m is in this state and the computational path of the other m is in that state. We collect all those we keep track of this set of states as we scan the input string w symbol by symbol. Now let us see what it means. We understand because we have seen many NFAs the idea of acceptance and all this what are the set of states the machine can be in. So initially of course the if the machine is in its initial state. So this is the set of states the machine can be initially and suppose w is of the form a 1 a 2 a n. So w is an w is a string with n symbol. So right now the machine is in the state the set of states it is in q 0 and then when a comes we know which all states it can be after a 1. It is precisely the set of states given by the transition function delta q 0 a that will provide me with a set of states. These are the set of states the machine can be m can be here. Then a 2 will come and suppose this set of states is let me just give an example here p 1 p 2. Supposing these are the two states that results. So I see on a 2 from p 1 which all states the machine can be in again that is just consulting the transition function and similarly from p 2 on a 2 which all states the machine can be we take the union that is the set of states the machine can be after c a 1 and a 2 and this way you go on. Only thing is that this union taking can be done fairly efficiently what you can and this is a simple data structure idea that we can keep a bit bit vector right to indicate which all states are there in that set. So now this one's processing of one symbol therefore how much time would it take in general let us say this is a i the set of states the machine can be is bounded by in size by the number of states in m the n f a m. So supposing that number is s right and from so the machine is in set of states that size can be at most s and we have to look at each state in that set and look at on the next input symbol which all states the machine can be. So s into s so we require time s square let me write time required is s square in processing one symbol of the so and there are n symbols in the input w so that our algorithm what I just outlined is going to be order n a square remember as m is part of the input we know the number of states so this is polynomial in the size of the input. So this is also a polynomial time output what if m is n f a with epsilon transition so here we will do exactly the same thing per symbol we have to keep track of which all states the machine can be but remember now after we get the set of states the machine can be on scanning a particular symbol then we need to take the epsilon closure of each such state and then take their unions. So strategy better for this when I have epsilon transitions is right in the beginning to compute the epsilon closure of each state or n f a with epsilon transitions step one compute epsilon closure of each state and then we do exactly same thing at any given time after processing a number of symbols in the input I have a set of states the machine can be then the next symbol we take care of then we take the union of the whole idea that we take the union of the set of states for where the machine can be for each one of these and then in because of it is an n f a with epsilon transition then I take the epsilon closure of that set of states and that is the set of states the machine can be after scanning the next symbol and this way we go on right. So what is the time involved for step one we have again s states and to compute the epsilon closure which is basically recall which all states the mean the which are reachable from that state. So that means we only look at the transition diagram where the arts of the edges are labeled with epsilon. So it is really a reachability problem. So at most per state will require the size of the transition diagram which is s squared. So we need to do this for each state. So s cube this is the order but this is step one which is done only once step two you recall that we collect we are at any given time we have a set of states right and and and from each such that that set can be at most it can have at most s members for each I need to consult the transition diagram and then we take the union. So you know so that is again s square and then again to the same thing that is the old thing this part is same s square per symbol and then we need to take the epsilon closure of these but then now I have already pre done the epsilon closure of each state here. So it will be basically boiling down to taking union of certain states and that also can be done efficiently. So you can see overall it will be order s cube plus order n a square and so since n is usually length of the input is going to be larger than or or or put it this way this is the amount of time you are going to take is n a square plus s cube whatever is that whichever is bigger it does not matter. So this is roughly this is again this is therefore a polynomial time algorithm alright. So there is yet another representation for regular languages and that is regular expressions.  But remember the standard conversion that we gave this n f a will be with epsilon transmission and in the second state decide if w the input string is in the language accepted by the n f a m we know how to do it. And so it all depends on what is the size of the m in terms of the regular expression r and this if you look at that construction once more it becomes clear that the size of m is at most twice the size of the regular expression r. So therefore this construction of course we do it in polynomial time we know that how to do that and the machine m is not too large it is at most in the size of the regular expression the number of states the machine m would have is twice the number of symbols in the regular expression and that is why we said in a way that so let us say in fact this correct statement could be the number of states number of states of m is at most twice the size of r. So in other words this step one can be done in polynomial time and step two of course can be done in the polynomial time polynomial in the size of w and the size of m. But since the size of m is also polynomial with respect to the size of r this entire process also will be efficient. So what we have discussed so far is that that the membership problem we can be conclusion is the language the regular language decision can be done efficiently because we have a polynomial time algorithm in every case for every representation or for the or let me say now every representation for representation in terms of DFA NFA NFA plus epsilon transition or regular expression thus this problem is at least for regular languages can be done efficiently later on in this course we will see not only we will not be able to do in general for certain classes of automata that this problem which now appeared so simple in case of regular languages that not only we may not have efficient algorithm we may not have any algorithm at all this for example when we talk of Turing machine as a the automata which will see later on our next problem for decision our next decision problem will be we can we can ask this question for example given a regular language in terms of course some representation either a DFA or NFA NFA with epsilon or a regular expression about the size of the language for example you can see is the language empty is the language infinite and so on at least these questions we can ask. So let us consider this problem given a regular language L L M T now as we understand the language will be given in terms of either one of the automata DFA NFA or NFA with epsilon transitions or as a regular expression. So first consider the case when the regular language L is given in terms of one of the one automata so L is represented by a finite automaton. Now whatever be that finite automaton whether it is deterministic non deterministic or with epsilon transition when can you see such an automaton think of this that I have this automaton and there is some initial I mean there is this initial state and the number of final shifts clearly this automaton accepts some string if and only if there is some path from the initial state to one of these any one of these one or more of these final states. So that is clear right because see remember that through the transition diagram think of the transition diagram as a graph where this is a particular vertex let us say the start vertex and this transition diagram graph is a directed graph but we can always use any of the graph search algorithm DFA depth first search or breadth first search to find out all the vertices in the graph which of course correspond to states reachable from this initial state this particular vertex. Now it is very easy to see that m accepts or let me write it this way the language accepted by m is empty if and only if no final state is reachable initial. So basically this decision whether the language is empty if you give me that language in terms of a finite automaton the problem is really doing a reachability analysis of a graph and that we know can be done quite efficiently right essentially it means at most I need to traverse each age of the graph once and since there if there are any states there can be you know quadratic many edges therefore this problem can be done efficiently because we are solving a reachability problem what about L is given as a regular language regular expression L is represented as a say R the question we are asking here the language denoted by R does it contain at least some stream that is L R is L R empty this is the question we are asking. Now we can use our old strategy given this regular expression we can efficiently convert it to an equivalent NFA with epsilon transition and then we can use the idea that we had just mentioned see whether one of the final states of the NFA in fact NFA with epsilon transition our construction in our construction there will be exactly one final accepting state that is how the construction when so we have to just see whether this final state is reachable from the initial state of the ultimate NFA with epsilon transition that we define for the regular expression. However it can be done in another way let us say one method was convert R to Q L NFA with epsilon transition M L M is there is another method where we do not convert the regular expression R to an equivalent NFA with epsilon transition and the reason for discussing that is just it gives us another intuition about regular expressions the algorithm is not any more efficient because anyway this algorithm is efficient enough and the second method goes like this see we we can recursively define or let me use it we can inductively define the set of all regular expressions denoting the empty language phi and by now we know that this kind of inductive definition will be in terms of the inductive definition of regular expressions. So, that inductive definition is this there are base cases there are three base cases epsilon phi and symbol a epsilon base case. So, let me write it as base case if your regular expression R is either phi or epsilon or a then you know that this one denotes empty language and other two are not empty right this is by definition and now we can see this that suppose our regular expression is R 1 plus R 2 then it is quite clear that R denotes an empty language. So, let me say it this way that L R is L R is empty if and only both L R 1 and L R 2 R. So, this is fairly easy to see what is L of the language denoted by R when R is R 1 plus R 2 clearly in that case L R is union of the two languages denoted and if either of this is non-empty then of course, L R is not going to be empty. So, L R is going to be empty if and only both of these are empty.  Now, in this case so if R is R 1 R 2 so we are talking of concatenation then again it is fairly easy to see L R is empty if and only if any one of L R 1 or L R 2 is empty because if you concatenate the empty language with any language whatsoever the result is going to be empty language that we know. So, for this entire thing to be empty if either of this is empty then of course, the regular expression will denote the empty language on the other hand if none of them is empty then clearly if L R 1 and L R 2 both are not empty then clearly when we concatenate I will get some strings. So, L R is not going to be empty and finally, in this case we know that L R is not empty because L R will have at least epsilon therefore, you see all these three things together up in the after the base case what we have in effect is a recursive algorithm to decide whether a regular expression is empty or not. So, the input is a regular expression then you see whether it is of the form one of these forms or it is one of the base cases and then accordingly whichever is the form that it is if it is of the regular expression given as a one of the base case regular expressions then if it is given if the regular expression is this then answer yes it is empty these two cases answer no then depending on whatever is your regular expression otherwise if it is of the form R 1 plus R 2 then recursively decide L R the emptiness of R 1 and emptiness of R 2 and you can answer and similarly for the other in this case of course, the moment you see the regular expression is this form you can immediately say the regular expression denotes a non-empty language because it is at least epsilon. Now that we have seen efficient algorithms for deciding whether a regular language is empty or not we can use this to decide many other questions especially when the representation is in terms of DFA so let me give an example that given two DFA's M 1 M 2 is language accepted by M 1 is same as the language accepted by M 2. See the base one way we can do this is very simply that suppose so it is clearly like this that you take the language the machine M 1 and so let me say this is L 1 the language is L 1 for notational convenience what will this I think it is simpler to see in terms of supposing this is L 1 this is L 2 what we are looking for L 1 intersection with all those which are not in L 2. So, this is the part and L 1 complement L 1 complement intersection L 2 so all those strings of L 2 which are not in L 1 now see if both of these are empty then that means what that means L 1 is equal to L 2. So, you see the point is that because L 1 and L 2 are given to me by a DFA I can very easily constructed DFA we have seen this for this to accept this regular language as well as a DFA for this regular language and then a DFA for this entire language and then we can check whether that regular language denotes or accepts the empty language. So, we can see that this is the case if and only if L 1 is equal to L 1. So, given to me 2 DFA M 1 and M 2 then I can construct this language and then L M 1 is equal to L M 2 if and only if basically we are seeing there is no string which is accepted by M 1 and not accepted by M 2 as well as there is no string which is accepted by M 2 and not accepted by M 1. Therefore, in that case the two languages are equal and therefore the two machines accept precisely the same set of strings. So, similarly in a very similar manner you can actually you can see that I can decide like this this question also is L M 1 is a subset of L M 2 is L M 1 a strict subset of L M 2 all these questions once given to DFA they are very easy to decide because we can you know in this kind of way we can look at the equivalent and a DFA whose emptiness is going to decide such a thing. So, now let me just take another example just another example to illustrate this point that is. So, here I am just given one DFA M given a DFA M is L M sigma star that is it contains everything every string in the language well what will you what we can do that all what we can do is to you know let M dash be the DFA such that language accepted by M dash is sigma star and we just ask the old question is L M equal to L M dash this is very easy to define a DFA with which will accept all strings and then we are just taking whether these two DFA accept the precisely the same set of strings which is where we will use the previous idea algorithm and therefore, you can even decide this is another class of problems people are interested which is given a regular language I mean is it infinite does it have infinitely many in other words what we are asking is the language infinite and if we can decide that then of course we can decide given a language L whether it has finite that is it has only finitely many strings. Now, it can be done at least in two ways and one way actually is from our idea of pumping lemma I mean this is the although algorithmically it is not going to be very efficient, but let me let me write this out given a DFA M L M this language accepted by the DFA is infinite if and only if there is a string X in or X accepted by M such that the length of X is equal to L M dash X is greater than equal to N less than equal to 2 N where N is the number of states. So, this remembered M is a DFA and let us say it has N states and now let us look at it at least this that suppose you take a string we know that that any string is less than whose length is greater than equal to N the pumping lemma proof shows that and which is accepted by M such a string can be pumped infinite amount of times right and therefore each time I pump I will get a new string different from the previous strings. So, therefore just by pumping I can generate infinitely many strings from that one string. So, what this thing is telling me is that remember pumping lemma set for every string accepted by the machine M whose length is greater than or equal to the number of states. Now what this is saying is that left open that yes I am looking for a string whose length is greater than equal to N, but is there a bound within which I am guaranteed to find it if it is there and in fact this is the bound at most you need to go up to 2 N. Why because the value that you pump so let us see we had a long string bigger than 2 N which is accepted by the machine M then clearly if you recall the pumping lemma such a string there will be a particular v part now I will pump down on pumping down either I become I come into this range or I am still greater than 2 N and then I again I pumped out what is this idea why why that is coming because what we pump is at most of size N remember that the v part the size of v is less than equal to N. So, from a large string I can keep taking off chunks of N and then since that chunk can be of size N therefore I will get at least some string in this range. So, this shows that this lemma can be used so this can lemma can be used for an algorithm. So, what I can do given a DFA all I need to do is to look at its number of states that is N and then look at strings in this range and see whether any of these strings is accepted by the DFA. But clearly this is a exponential time algorithm because a string of size N how many strings are there of size N exponentially many and we would like to according to this naive algorithm you check each such string in this range whether that string is accepted by M accepted by M and so on. There is clearly if you think about there is a polynomial time algorithm and whose basic idea is this that if imagine this DFA and if there is of course for it to have some string there has to be a path from q 0 to 1 of the final states q f in the transition diagram graph. And now in this graph if there is a cycle then clearly you will be able to generate infinitely many strings through this and this idea is not just true of this idea that I am talking of that if I have a path from initial state to one of the final states and in that path there is a state on which there is a cycle that then the resultant language will be infinite. That idea is of course true even when the machine is an NF what about the case when the machine is an NFA with epsilon transitions all I have to make sure is that the cycle is does not consist only of epsilon edges. So, in other words what we are saying that if I if in an automaton there is a path from the initial state to one of the final states and in that path there is a vertex where there is a cycle which is not which does not consist only of epsilon edges. Remember our context for this graph is the directed transition diagram graph in that case that finite automaton will accept infinitely many strings and that is a necessary and sufficient condition. And using that idea we can have a polynomial time algorithm for deciding whether an automaton finite automaton whether it is DFA, NFA or NFA with epsilon transition whether it accepts infinitely many strings. So, therefore what we have done today is we have looked at some decision problems concerning regular languages and we have found not only that all these decision problems can be solved by an algorithm and these algorithms they to be quite efficient polynomial time and as we look at other classes of languages electron will see that in fact there will be many decision problems for which will not have any algorithm at all not to talk of efficient algorithms. So, in that sense or this class regular language class is a very nice class.


There are many enigmatic, giant ruins that can be found within Japan. Super megaliths, so old, a number of the largest have eroded away to a state of unrecognition. An archaeological site, which at the time of its life would have undoubtedly dwarfed nearly all other civilizations upon Earth, a civilization which far outstretches the modern urban sprawl of the Japanese coastlines. A lost, super-civilization responsible for the construction of numerous pyramids found throughout the landscape, some of which are said to lay beneath several meters of Earth, which has slowly consumed them over the millennia. Amongst these curious ruins are extremely perplexing, apparently sliced megalithic stones, pyramidal capstones, and also, like many places dotted around the world, legends of giants. One of the many things Japanese culture has become renowned for over the centuries is their ability to create swords, steel weapons of a far superior quality than their rivals, giving them an edge over their foes for many centuries. One must wonder, where did this advanced knowledge of sword-making come from? Was it mere ingenuity, or descended knowledge left by a far more superior, entirely different, and far larger race of people? Many sword-making technologies, which even to this day impress and perplex the many specialists who delve into the nature of this advanced metallurgy. Amongst these enigmatic and amazing swords is one in particular, one that for obvious reasons stands out from the rest. Known as the Norimitsu Odachi at over 12 feet in length and weighing nearly 15 kilograms in weight, this sword was masterfully created over 2,000 years ago, with no other intention than to be used by a warrior of gigantic proportions. The Norimitsu Odachi type of sword was one of the weapons of choice on the field of battle during the Nambokocho period. During this era and far before, these swords were rarely created for decoration purposes. The price of their construction, the time and care needed in creating just one single sword meant that most were indeed manufactured for the purpose of battle. Additionally, the cost of creating such an enormous sword would have been considerable. Was this enormous sword once used by an equally enormous warrior? Understandably, many have denied such explanations as a tangible possibility, yet regardless, a satisfactory explanation for the creation of such an amazing object remains to be seen. Most people are aware of the crystal skulls, the best of which hidden away within the Smithsonian. Perfectly carved from solid pieces of crystal, their origins, purpose, or indeed possible function remain a mystery. What many are not aware of, however, is the astonishing archaeological discoveries which have recently been made in Spain. A remarkable set of crystal weapons found within megalithic tombs at a site known as Valensina de la Concepci. Archaeologists investigating this site have uncovered a vast array of crystal arrowheads, an exquisite crystal dagger blade, along with a number of other artifacts. Found within an enormous megalithic structure, constructed out of large slabs of slate, the resting place of at least 25 once clearly very important individuals, along with their extraordinary smorgasbord of grave goods. Included within the finds was another mystifying number of shrouds, claws made of tens of thousands of perforated amber beads. Just how they managed to fashion these mysterious crystal weapons remains unclear. A number of investigators have remarked that great skill must have been required to produce these unique rock crystal weapons. The rock crystal dagger blade in particular was found in the upper level of the structure. Its morphology is not unheard of in the Iberian Peninsula, although, however, all the samples recorded anywhere else were made from flint and not crystal. Furthermore, and perhaps even more intriguing, is the fact that the crystal is of unknown origins. Detailed in thorough analysis being unable to successfully pinpoint the original whereabouts of this magnificent crystal. Given the technical skill and difficulties involved in creating the objects from such a material, rather than simple flint, their purpose, and indeed manufacture, has been a tough thing for academia to explain. However, it is unlikely that any funded academic would presume, like we can, that these highly advanced, perfectly manufactured weapons could in fact be far earlier artifacts, created by a civilization with far greater capabilities than those of known prehistory. Supporting this hypothesis is that, despite these objects being found relatively frequently within the burials of the 4th and 3rd millennia BC, crystal implements disappear from later funiary monuments within the early Bronze Age, a quote, truly striking development, researchers say. As it would seem, the use of this raw material as grave goods was almost entirely abandoned, end quote. The reason for this remains a mystery. However, is it possible, as mentioned, that these were merely a discovered relic of a bygone era, thus making their availability limited? This would therefore make it appear as though there was a sudden halt in their mysterious and unexplained manufacture. Well, all the while, in reality, the manufacturing of these objects occurred at a different time in our history. In 1921, a Neanderthals skull was discovered, 60 feet below the ground within Rhodesia. Upon examination, it has since been realized that the skull has been pierced by a high velocity projectile, such as a bullet to the left temple. An analysis has since shown that this injury occurred at the time of death and could not have been a stray bullet years afterwards. If true, and the source of the hole was indeed a bullet-like projectile, the implications are clearly profound. For how could a skull dated at over 150,000 years old have suffered such an injury? Modern academia states that these remains must be impossible, yet according to author René Norbergen, a German forensic authority from Berlin, quote, the cranial damage to Rhodesian man's skull could not have been caused by anything but a bullet, end quote. The rounded entry point of the wound also testifies to the great speed at which the projectile would have been travelling at the time of impact. However, if the find remained unique, it would have been easy for certain fields of study to disregard its existence as a mere freak of nature, a result of pure coincidence. Yet thankfully, and most intriguingly, Rhodesian man is not the only prehistoric skull which has been found to have suffered this peculiarity. A few thousand miles away, along the Lena River in Russia, a skull belonging to an awrock was later found, an extinct species of wild cattle that lived from 2 million to 4,000 years ago. But just like the Cabwe skull, aka Rhodesian man, the hole in the awrock's skull is missing radial cracks, evidence that would have been left by a spear, arrow, or any other low speed projectiles. Just how did these two beings meet their fate? Were they really shot by a firearm? If so, what type of firearm? Who had this capability 150,000 years ago? A time traveler? Or perhaps a hidden history here upon our planet? What do you think? Thanks for watching, and stay tuned for more. The Uffberts A group of medieval swords found within Europe dating between the 9th and 11th centuries, the blade faces are inlaid with the inscription Uffbert with a cross on either side. The word turns out to have been a Frankish personal name. It somehow has become the basis logo, a trademark of swords used by multiple bladesmiths for several centuries in their impressive attempts to make the hardest, most impressive swords of the era. About 100-170 Uffberts swords are known to exist, yet the origins of the name remain somewhat of an enigma. However, we dare to postulate that the name may have originated with this sword in particular. A sword which these bladesmiths may have been attempting to replicate and indeed figure out how it was made. A NOVA National Geographic documentary titled Secrets of the Viking Sword, which first aired in 2012, actually took a look at this enigmatic sword's metallurgical composition. The Uffberts sword has almost no slide content within its composition, and it has a carbon content three times that of other metals of the time. The Uffberts sword has been found to be a great addition in strengthening steel, creating a metal known as crucible steel, a critical discovery, something which made England famous some 800 years after this sword's creation. In the process of forging iron, the ore must be heated to 3,000 degrees Fahrenheit. This will bring the metal to a liquid molten state, allowing blacksmiths to reduce impurities called slag. However, medieval technology did not allow iron to be heated to such a high temperature, thus the slag was removed by pounding it out, a far less effective method. Modern blacksmith Richard Ferrer of Wisconsin spoke to NOVA about the difficulties of making such a sword. Ferrer is described in the documentary as one of the few people on the planet who has the skills needed to try to reproduce the Uffberts by hand. To do it right, it is the most complicated thing I know how to make, he said. He commented on how the Uffberts maker would have been regarded as possessing magical powers. To be able to make a weapon from dirt is a pretty powerful thing, he said. But to make a weapon at this time within history that could bend such without breaking, stay so sharp, and weigh so little, would be regarded as supernatural. Ferrer spent days of continuous painstaking work forging a similar sword. He used medieval technology, although it required highly unconventional ways, never before suspected or documented. The tiniest flaw or mistake, turning the sword into a piece of scrap metal. He declared his success at the end as more relief than joy. Who was the maker of this sword? How did they know how to make it? The mystery surrounding this out-of-place artifact persists to this day.


Does amp-human sodium bicarbonate lotion actually improve your cycling performance? Today, we're diving into the science to find out and I'll also be discussing oral sodium bicarbonate, better known as baking soda, and whether or not this everyday household item could make you a faster cyclist. Welcome back to another video. If you're a regular internet browser, you may have seen ads for a product called amp-human and in particular, the endorsement from Lance Armstrong. This stuff absolutely works. It's called amp-human. And I've tested it, it works amazing. Both teams in the Super Bowl last year used it. Both teams in the Stanley Cup this year used it. We have guys in this year's and last year's Tour de France using it. I'm telling you, it's a game changer. Well, clearly Lance knows what he's talking about when it comes to performance enhancing substances. I'll take five bottles. That's a topic that we aren't gonna get into, but what we will be discussing today is whether or not there's any science to support the use of topical sodium bicarbonate. Before I get into it, I wanna let you know that this is not a review video where I try the product and then tell you whether or not I thought it worked. We're gonna stay away from personal anecdotes and endorsements and primarily just stick to the research and see what the science has to say. This is important because some of the research on sodium bicarbonate suggests that there's a high individual variability, meaning that it may work well for me, but not for you or vice versa. So getting anyone's review of the product may not tell you a whole lot about how it will affect your performance. For those of you unfamiliar with amp-human's topical sodium bicarbonate product, here's the theory. Sodium bicarbonate, which is more commonly referred to as baking soda, has been used for decades as an ergogenic aid by buffering muscle acid production, which delays the onset of fatigue in athletes. However, gastrointestinal side effects limit the use of sodium bicarbonate. These GI issues make taking sodium bicarbonate a lot less practical because obviously you can't perform it your best with an upset stomach. This is where topical sodium bicarbonate comes in. Amp-human, which makes topical sodium bicarbonate, claims that by applying it to your skin, you can get the benefits of taking it orally without the negative side effects that it has on your gut. Great idea in theory, but what does the science have to say? Does it actually work in practice? Let's start by taking a look at the science on oral sodium bicarbonate because there has actually been a fair bit of research in this area. This study on sodium bicarbonate intake on high-intensity exercise performance took 13 subjects and tested repeated 20-meter running performance with and without prior ingestion of sodium bicarbonate. Blood pH was higher under the sodium bicarbonate condition and performance in the repeated 20-meter running test improved as well. They conclude that the results indicate a link between improved fatigue resistance during high-intensity intermittent exercise and a sodium bicarbonate-induced improved buffer capacity that may affect perceived exertion during intense intermittent exhaustive exercise. How applicable are these results to cycling? It's hard to say, but similar studies have been done on cyclists as well. For example, this study tested repeated cycling sprint ability after sodium bicarbonate ingestion. What they found was that sodium bicarbonate ingestion significantly increased total work compared to the control and placebo conditions and resulted in an elevated blood buffering capacity before exercise and throughout the protocol. However, it's important to note that the ingestion protocol used in this study increased GI distress among the participants. These studies all looked at the effects of sodium bicarbonate on sprint performance, but what about longer efforts? This study tested the effect of sodium bicarbonate on one-hour cycling performance in 10 well-trained cyclists. Each was tested in control, placebo, and experimental conditions and what they found was that significantly more work was completed when subjects consumed sodium bicarbonate than when they consumed a placebo or nothing at all. From the results of these studies, it may seem like popping baking soda right before your ride is a no-brainer. Dude, honestly, this is exactly what I've been waiting for. Something that I can buy cheap at the grocery store that isn't vegetables that will make me faster without training more. However, before you raid the baking aisle, there are some serious caveats that you should be aware of. As I've already mentioned, there's a high individual variability, so not everyone is gonna see the same results. Part of the reason for this may have to do with how well-trained you are. This 2012 meta-analysis looking at many studies on sodium bicarbonate and athletic performance found that the overall effect size of the influence of sodium bicarbonate on performance was moderate. However, it was significantly lower for specifically trained as opposed to recreationally trained participants.  This is ironic considering that this is the population that would consider something like this. Another consideration is that taking sodium bicarbonate with other ergogenic aids may diminish its effects. For example, this study tested taking sodium bicarbonate and caffeine together. Caffeine has been shown to have a beneficial effect on endurance performance, and sure enough, this study found that when ingested individually, both caffeine and sodium bicarbonate enhanced high-intensity cycling time trial performance in trained cyclists. However, the ergogenic effects of these two popular supplements was not additive, meaning that taking the two supplements together was not more effective than just taking one or the other individually. Similar results have been found when combining sodium bicarbonate and beta-alanine. Although the results from this study were a little more promising, they still didn't reach statistical significance when combining the two substances. And of course, let's not forget the gastrointestinal distress that's associated with sodium bicarbonate intake. This study on sodium bicarbonate and high-intensity cycling capacity came to the conclusion that sodium bicarbonate improved high-intensity cycling capacity, but only with the exclusion of participants experiencing GI discomfort. Differences in blood responses suggest that sodium bicarbonate may not be beneficial to all individuals. If you do decide to experiment with sodium bicarbonate, though, there are some measures that you can take to reduce GI discomfort. Research has shown that timing matters when taking sodium bicarbonate. Most research suggests taking it one to two hours before, but three hours before exercise seems to cause the least amount of GI issues as well as taking it with a high carbohydrate meal. The recommended starting dosage is between 0.2 and 0.4 grams per kilogram of body weight. And of course, be sure to try it in training before race day so you know how your body will react. That's the science on taking sodium bicarbonate orally. There's some potential benefits, but the results are variable and the risk of GI problems is high. I wouldn't recommend oral sodium bicarbonate for anybody doing long rides or races because GI issues are already commonplace in those events, and you want your gut to be working as well as it can. All right, let's get into why you probably clicked on this video. The products from Amp Human are significantly more expensive than your everyday baking soda, but perhaps it's worth the extra price if you can get the same performance benefits without the GI issues. Before I jump into the research, I wanna say that the science on topical sodium bicarbonate is extremely limited, mainly because it's such a new product. Most of it isn't peer reviewed and all of it is funded by Amp Human, so it needs to be taken with a grain of salt. With that, let's get into it. This study on topical sodium bicarbonate and exercise performance took 21 trained subjects and had them complete a variety of tests after applying bicarbonate or a placebo lotion. Higher lactate levels and other significant effects support the ability of this lotion to transdermally deliver sodium bicarbonate, but did this have an impact on performance? Well, there was a lower heart rate and rate of perceived exertion in the bicarbonate group, but only at the 15 minute mark in a one hour test. Significance was not reached when examining performance differences. So basically, no, topical sodium bicarbonate did not increase performance. And what's really telling is that this is a study that was funded by Amp Human that they post on their website to prove that their product works. I found it funny that they display this incredibly misleading graph that makes it look like heart rate was cut in half when using Amp Human. But then you realize that the graph starts at 175 beats per minute and only goes up to 181. And this data was only true for the 15 minute mark of a one hour time trial. Personally, this is not data that I would use to support my product. However, Amp does have a couple more studies with more favorable results. One of their claims is that the lotion relieves muscle soreness and they use this study to back up that claim. This study was done at the same time with the same participants as the other study. So one could say that it's really the same study and that Amp was just trying to make it look like they have more research than they actually do in the science section of the website, but that's neither here nor there. This study did find a significantly shorter recovery period from DOMS when using the lotion over the placebo after the high-intensity test, but not after the one hour time trial. When using Amp subjects had a 53% decrease in soreness from 24 to 48 hours after exercise, well, the control condition actually had an increase in soreness by 34%. These are certainly more promising results, but again, we have to keep in mind that this study was funded by Amp Human. This is the last study that Amp includes on their website that took eight volunteer cyclists and had them apply sodium bicarbonate lotion or a placebo before performing high-intensity intervals to exhaustion. The results were that the subjects performed an average of 13.6 intervals with the control and 17 intervals with the bicarbonate lotion. Again, promising results here, but this study isn't peer reviewed and was at the very least influenced by industry. All right, so what can we conclude here? Well, unfortunately, not a whole lot. There simply isn't enough science at this point to conclude whether or not sodium bicarbonate works or not. That doesn't mean that it doesn't work, it just means that more research needs to be done. There's certainly a reasonable probability that it might work considering the research on taking sodium bicarbonate orally. And there have been a lot of reports from notable athletes that it improved their performance. We have to keep in mind with personal anecdotes though that the placebo effect can be quite powerful, especially with a product like this. Thinking something works may be enough to make it so. Given that there's already a high variability of responses to sodium bicarbonate to begin with, you could probably get a whole range of responses when you ask people who've tried it, does it work or not. The only thing to do now, if you're still curious, would be to try it for yourself. And if you end up going faster, who cares whether it was the placebo or the lotion. At the end of the day, you're going faster, which is the end goal. All right guys, exciting announcement. I'm now selling Hypergain Beast Mode in cupcake scented lotion form. Does it work? Well, I'll just let the KOM Leaderboard answer that. Thanks for watching. I hope you guys found this information helpful. Be sure to subscribe and hit the bell notification so you don't miss any uploads. And if you like this video, be sure to give it a like and share it with your cycling friends. I'll see you in the next one.


Thank you very much. Can everybody hear me? All those people at the back checking your email. I just want to make sure you can ignore me nicely. Okay, so my name is Nicholas. I'm a recovering Python programmer. And I'm going to tell you the story of Mu, which is a code editor, which I've been involved in helping to write. I used to be a school teacher. That will become relevant as the talk progresses. And the Mu editor is, I guess, a further expression of my passion for all things educational. So what exactly is Mu? Well, as it says, Mu is a code editor for beginner programmers. And this talk is, I guess, a sort of a who, what, how, and why sort of a talk where I try and answer those four questions. And I'm going to, I guess, tell you some of the gory details as well about this story as well. So, first of all, who on earth needs yet another code editor? Well, Microbit did. So, if you're not aware, the Python Software Foundation were a partner with the BBC Microbit project. And I was involved in that. And one of the things that we needed to do was create a Python ID for a browser. And being the good software developer that I am, I hope, I went and asked the folks that were using this browser-based editor what they thought of it. And whilst they acknowledged that being able to use Python in the browser and getting MicroPython and things, working from that medium was kind of convenient. You just point a browser at a URL.  It was a bit of a pain in the neck because when you wanted to get the MicroPython on to the device, you had to click a button and download a thing, then work out where the thing was, and then drag it over to the thing, and then it goes syntax error at line 10. You have to go through the whole rigmarole. So, the Mew editor was born. This is a very simple code editor that complements the browser-based ID that I created for the Microbit project. Mew was itself a PSF contribution to that. Interestingly, nobody really asked the teachers or the students what they wanted, so this is something that I started to do as well. So, hey presto, once Sunday afternoon when I got all this feedback about browser-based editors and things, I asked myself, how hard can it be to write a code editor? You know?  Mew has since grown quite a lot since then. So, let's just think about this. Often tools for developing software are written by software developers for software developers. I want you to try and imagine what encountering these tools might feel like for a beginner programmer. By beginner, I mean not necessarily a child. It could be an adult who's coming to coding for the first time. The fact that you're laughing, and I've not even started my sentence, tells you a lot about what I'm about to tell you. There are two extremes, I guess. There's the Uber minimalist editor. This is Vim. I'm a Vim user, and I'm waving my arms like this. And to a beginner programmer, how does this look? Well, it's a big red danger button. There's only one thing, but what does it do? There's no feedback. It's hard to know how to engage with this. Let alone make it do anything useful. The alternative is the sort of maximalist approach.  Where do you type the code? What do all the buttons mean? What's all the information? This is information intimidation. I guess it's the sort of IDE version of a 747 flight deck. I think that might be the space shuttle or something like that. There's just buttons everywhere. Now, as power users, we either know all our Vim key bindings and I just saw Tiago's talk next door using the turtle model, and he was on fire. There was code flying all over the place, and it was a joy to watch. Tiago is obviously an expert BI user. Or your IDE has all the buttons and you know exactly intuitively what each of these things mean. You can make the code as you're typing it and things, but you're a beginner programmer and this is intimidating. What could we do? One way to overcome this problem is to simplify. But we have to ask ourselves what do we simplify? Some people simplify the code. How many of you are familiar with what's currently on the screen at the moment? That's actually less than I thought there would be. This is scratch which is a graphical programming language and what you do is you move blocks around and then when you click the play button the little cat goes on adventures. Like a turtle, he'll move forward and rotate 90 degrees or you can flip him or you can say if he's collided with this strawberry then make a squelch sound or something like that. That's simplifying coding though because I'm sure that many of you wouldn't want to write a website using scratch for instance or PyTorch or something like that. This feels to me like it's simplifying and that's a good thing. You can get basic core concepts of programming through to children in a wonderfully visual way loops and things like that but it's not the real thing. The reason I mentioned the real thing this is Alan Kay. How many of you have heard of Alan Kay? Okay, oh my gosh. So Alan Kay is sort of one of the gods of programming language design. He invented object-oriented programming basically. I read this quote from an interview a couple of years ago and the line I want to bring your attention to is at the end and this is his approach to trying to create tools for beginners. The idea is you never let the child do something that isn't the real thing but you have to work your ass off to figure out what the real thing is in the context of the way their minds are working at that development level. He also mentions other complicated skills that people have to pick up do similar sorts of things. He talks about sport, he talks about music which is something I'm passionate about and I've been on the receiving end of a music education. This really spoke to me. Is this a case of simplifying programming? Could we simplify the tools is the question that we're asking. Mu is a Python editor for beginners and it's the real thing. So what do I mean? What do folks need when they're beginner programmers? We took the rather unique step of actually collaborating with lots of beginners and teachers and asking them what they wanted as well as being programmers ourselves and we used our kind of sixth sense developer Spidey sense to go well do you know what they're asking for the moon on a stick and actually because we're professional developers we kind of know the trajectory where they're going and so perhaps we can help guide them we know where they are and we know where they're probably going to end up it's somewhere around here so how do we get them to where they need to be. So what we want to know is what exactly do we need to implement in an editor to help a beginner programmer access a real programming environment in a way that's not intimidating in some sense. Interestingly enough we all seem to have opinions about editors and I've been on the receiving end of all sorts of interesting feedback about Mu as a result of this it's not only just the VI versus Emax there's all sorts of interesting commentary about what should or shouldn't be in an editor but the important thing is that our focus isn't on us as developers or what does a developer want it's what does a beginner want so we're asking ourselves do we have the empathy to appreciate what our target user base needs and so what do we do we obsess over user feedback I regularly go into schools and I observe teachers teaching Python so this is a teacher doing perhaps the most teacherish thing you'll see all week pointing at a whiteboard that's had Mu projected on it and I go and observe lessons I watch beginner young beginner programmers try and struggle with Mu and we get to see what the bumps in the roads are and things like that and I also teach Python as well so I use Python with older beginner coders as well and this is what happened at the beginners day at your Python on Tuesday as well we were all using Mu like funny goofy cat games and web servers and things like that it was rather nice so we need to try and work out what are the real features that folks like this teacher and his students need well we need to meet these users halfway so I'm going to give you an example so this is the debugger it's halfway through running I'll tell you when it starts okay we're going to start again now okay so you can drop a breakpoint in I click debug it hits the breakpoint I can do simple things like step over notice there's only a few buttons these are the core things that a debugger actually does you've got a place that's not a new window so you're not losing your code running behind other things where you can type things in you've got some sort of inspector going on but it's really very simple you can step into other functions okay so you're getting these notions of how do I use a debugger in a visual graphical sort of a way okay so the important thing is that when you next go when you graduate from Mu to perhaps that second sort of editor with a graphical debugger you've got these concepts already from Mu Mu has only introduced these concepts with four buttons and they try to make it as clear and obvious as possible what these things do okay so this is maybe training wheels to borrow one of Dan Pope's phrases it's training wheels for the tools that we use for programming okay so you then go and use VS code or pie charm or whatever the latest kind of editor hotness is and that has a debugger in these sorts of concepts become familiar are already familiar and you've got the context the cultural context you need to be able to engage with those tools and then fly as a new developer so we do this a lot with all the different features that we have in Mu so we have simple versions of all sorts of different things where we try and make we try and make the buttons represent particular concepts like flash to a particular device or upload to a web server if they're writing a website things like that okay another thing that we do is that we try and meet our users halfway when it comes to language as well one of the things that I did whilst I was researching Mu was try and work out well we're in Europe we have lots of languages but Python is an English language programming language and how do say for example French teachers address this and the feedback that I got when I was in Paris speaking to a whole bunch of French teachers I mean French teachers of programming not teachers of the French language was that kids get that Python is English but there aren't that many keywords that they need to have to learn so if else if that sort of stuff it's not a problem but what they do have a problem with is the fact that the tools that they might be using are also all in English and they might not have the English literacy skills to be able to access those tools properly so we may be certain that the interface for Mu could be very easily translated you type a command the thing comes up you translate it into whatever languages you want and then you create a pull request for us and it comes back and so this is French I particularly like the French translation because all the well many of the words actually sound like the English equivalents but with a funny French accent the way they're spelt so it's not a debugger it's a debugger I also like the fact that to zoom in and to zoom out is zoom out and dis zoom out and this reminded me of my failed attempts at learning French as a student and you know in French they have e r verbs and i r verbs and r e verbs and it just got me thinking re ju zoom, tu zoom, il zoom nous zoomons, vous zoomez he's sort of doing all this sort of stuff anyway we have lots of different translations Chinese is quite popular because we have lots of users in China and so it's wonderful to see this as also a way to engage with the community of developers who are out there if you are a developer from somewhere and you want to contribute one of the first things that you could do is if your language has not been translated it has not been used to translate go make a translation for us if it has already then go check it as well I have to admit when I take these pull requests again borrowing from Dan Pope I kind of check a few of the google a few of the translations in google translate and if it's sort of approximately is what I was expecting then I go well that's probably alright because you know I'm not a Chinese or Urdu speaker or something like that okay so we do check okay so we meet our users halfway in terms of their accessibility needs as well and when I say accessibility I don't just mean language skills as well education is for everyone we can't exclude people from taking part in education it's not like you can say well programming it's just for the kids that are enthusiastic everybody should be given an opportunity to learn to program so our software should be inclusive and accessibility is the key to this now again part of the research from you involved working with the chap you're about to see I have a video for you he's called Ben and he's a software developer at the BBC but he is blind and some of the things that we've been doing is that we've been reaching out to communities of learners who might have in the UK we call them special educational needs which means that they might have some aspect of their life which means that accessibility to common regular educational resources is a bit of a challenge reaching out to these folks to actually ask them what would work it's important to give these users a voice I'm just going to play this video and if I can find my pointer and move the video back there's Ben and you get to learn all sorts of fascinating things that I as a software developer would never have even thought of and this is a great example of this it doesn't impact mew directly but this is a rather wonderful thing to learn from a blind developer we're working on me and this is a standard Windows machine that's running a screen reader called NBDA which is open source it's actually written in Python so it's fairly appropriate for this one I think it seems we're working on mew how about we run with you and we'll see what it's like so I haven't even used auto complete for you so I'll press enter OK why is it sounding what's going on there so that was talking so that doesn't actually sound that fast to me that sounds just a little bit faster than humans speech really wow so that just sounds probably sort of less than 20% faster than the speed that you're talking at then I feel to me don't you believe it so the point I'm trying to make is that if you ask your users or help them to tell their stories you'll learn all sorts of interesting things another interesting version of this story is that teachers when they are presenting when they're using things like idle or other professional programming languages and you've got people sat at the back of the class and they're losing attention and things like that and why is that? that's because they can't actually see the code on the screen so two of the buttons that we have well as you know in French they're zoomer and desumer we have zoom in and zoom out and these are used an awful lot as part of the sort of as well and the first time I showed this to a group of teachers and let's be honest here making things bigger and smaller is not a difficult thing to do with the GUI framework that I'll be talking about in a moment they were like how did you do that? because what they were used to was well you've got to go to edit then settings and then font size and then scroll down a bit and then you have to kind of guess what the numbers mean that might be oh no no no that's too big so that said break in five minutes okay so I'm going to speed up then so the important thing is that we've put our users at the centre of our development so how on earth did we build Mew well Mew actually is only 4,000 lines of Python it's a relatively small project it's a modal editor I'm a VI user so this allows us to simplify the user interface an awful lot we have 100% test coverage as well and we've tried to automate all the things so when we submit to master within about five minutes we have a windows installable an OS 10 installable and all that sort of stuff ready to go so the most interesting aspect I guess that you might be interested to hear about is what's it like doing cross-platform GUI so there are several options that we could use there's TK Inter it's simple and it comes with Python but it looks like it's from the 1990s which of course it is and it doesn't work with screen readers so the accessibility doesn't work DewX Windows is a cross-platform native looking GUI toolset but at the time we started Mew there was no Python 3 support and we actively maintained although this has now changed GTK well which one? 2 or 3 that kind of cross-platform but Raspberry Pi only supports GTK 2 and Raspberry Pi being an educational machine is something that we particularly wanted to target and it doesn't particularly look native on Windows and OS 10 it looks like a Linux application so we looked at PyCute again native looking cross-platform GUI with everything but the kitchen sink but again we have the Qt4 or Qt5 actually PyCute itself is a shim around the C API so it's kind of a non-pythonic API and it also includes Qt versions of absolutely everything like threading and so on and so forth so you could go the Python way or the Qt way so actually what we did is we made a Faustian bargain with PyCute why is it Faustian? Well PyCute unlocked lots of features so we could use the Qsintilla widget which is a very mature code at this time widget that we could use but it has a very complicated C API that honest I spend hours just trying to figure out what the documentation is going on a lot of experimentation there when we're trying to debug that it has a cross-platform look and feel but then teachers told us actually we wanted to look the same a neutral in all the different UIs that we use so that any of the resources that we create will work on OS 10 Windows and so on and so forth it needs to it has accessibility for all so it's got a good support for OS's built-in accessibility except the screen readers are brittle so it appears that certain screen readers do or don't depending on whether it's a Thursday or not so getting a screen reader to work it is hard we also get a cute console which gives us an IPython REPL as well thanks to Thomas Cliver for that but that starts to pull in IPython now and we're starting to get packaging creep as well so Mew is starting to get bigger and bigger and then of course we come to how do you package Mew I love this this was from the open spaces in Pycon US a couple of months ago packaging is great and fun and there are never any problems if only that with a case here's what we do for Windows we use something called Pinsys again by Thomas it's super simple and actually has the advantage of really working whereas other options didn't for various complicated reasons complicated because it would take two or three weeks to actually go through all the rigmarole of trying to work out why the damn thing didn't work now as 10 use Bware's briefcase again the same sort of thing happens if you're not aware of Bware they do some amazing work and Russell and all the others do an amazing job with that their documentation is fantastic for Linux just buy a Debbie and maintain her a beer or get him drunk over a curry or get a Fedora developer and get her to say yes to package this thing for you and it makes a long long time but it has the advantage if you have the upstream package in place then everything else eventually catches up and it filters in PyPI, Mew is installable through PIP that's the easiest way to get Mew installed on your computer in a virtual M if you are a Python developer and of course like I mentioned all the installers and everything are automatically built and continuous integration as well so why I've got two minutes left so why are we doing this so what we are trying to do is create a programming culture and I want to use a musical metaphor so a beginner is like this young lady with her violin was entertaining the local cats at some point Nicola Benedetti fiddle player didn't know how to play the violin and was entertaining the local cats so how do musicians get from this to this or this, this is Ali Beal he's a famous folk fiddle from Shetland that's terrible or maybe this getting a whole bunch of violinists to work together or how do we get that little girl to maybe just playing the fiddle in her local pub amateur kind of folk music or maybe, I don't know even this who knows the important thing about music is there are lots of different cultures going on and the violin is the tool that gets you into that particular culture and the violin allows you to find your level in that culture not many people end up being a concert violinist but rather a lot of people enjoy playing the fiddle in the pub when it's their local folk session so mu to me is sort of like a violinist like the instrument that we're helping people to come to not music but coding and then when they become competent at mu they can graduate away to pie charm or visual studio code or some of the other editors that you see out in the hallway it's a graduation process if you're using mu professionally you probably shouldn't be doing that and I'm the mu author and I'm telling you you shouldn't be doing that you should be using something professional so what are we doing? By making mu in a certain sort of a way by being explicitly open source we're demonstrating a certain sort of programming culture so this means that mu is also the means of passing on such a culture as well not only is it the tool that lets you code by the way that we develop mu we're demonstrating that culture too and that culture is open, collaborative supportive, all the things that we hope the piping community to be and then so is mu we take great pains of trying to be a welcoming community so my call to action this is my last slide you'll be relieved to hear is simply this education makes our future possible and what that future is depends on who turns up to provide an education or provides the tools for that education so my call to you is don't just sit there do something and that's what we're trying to do with mu that's it, the end, thank you very much thank you Nicholas we do have a couple of minutes for questions if you have any, there's microphones in the aisles hi, I heard you were talking about micro python if you're working on it yourself as well, if I heard correctly you are using micro python yourself yes, I use micro python I was just going to ask whether mu helps with deployment and remote debugging or is it not included in this deployment to micro python devices and debugging, remote debugging is it involved in mu? yes, so mu was originally created for the micro bit which was a micro python based device it also supports any circuit python based device, aid of fruit we make circuit python and provide a whole bunch of funky boards they contributed a large part of the circuit python mode so there's a micro bit mode there's a circuit python mode there's also an ESP mode which works in micro python on those chips as well but remember this is beginner focused so we make it easy for you to do those things but as a power python user you might go okay, I see how mu is doing it and I'm going to go back to V.I. or Emacs or PyCharm or whatever it is you're using super cool so there's less of a question more of a ask how do I get an editor like this in the browser that we can ship on mybinder.org so I obviously wrote the python editor for the micro bit project and that's browser based and it looks similar to mu because I fed a lot of the feedback I got about mu I fed back into the browser based thing so there are editors out there that are browser based one of the things that I would say is that connecting to the REPL, which is important aspect of learning life coding, being able to make things blink and so on in the micro python world anyway is hard because web browsers and USB serial and things, there is an API but it's quite flaky, I've managed to get it working on Chromium but not on Firefox but then it doesn't work on Chromium and blah blah blah blah so I think the state of the browser ecosystem is not mature enough yet to be able to go okay here's a beginner's IDE that we could then package using something like Electron or something like that thus making the packaging story a lot simpler I mean the problem with binder is lots of people use it for workshops and education but we give them like Jupiter textbooks or VS code and that's well, the professional tool and it would be great if we could have an editor but that download view is that it, thank you very much thanks Nicholas


Hello, my name is Miao Xun Li. We are a statistic genetics and bioinformatics lab at Center for Genomic Sciences, the University of Hong Kong. We are interested in methodological innovations in bioinformatics, statistics for genetic mapping of human diseases. In human rotation, we published an online two WKG SIG to facilitate axon sequencing studies of inherited disorders. WKG SIG inherited comprehensive functions about quality control, filtration, annotation, and prioritization from our previous KGG SIG. At the same time, it also has enough unique functions, including strategy-based analysis procedure to ease genetic research, disease target analysis procedure to help clinical diagnosis. Besides, it also has one stop shop of visualization and annotation for your interest sequence variance. We did a series of comparison between WKG SIG and two popular tools, WNOVA and VEP. As for the very basic gene future annotation, you can see WKG SIG can always annotate more important sequence variance in the axonic regions. In a pedigree of compound heterocyclic mutation, WKG SIG can produce a very short list of three variants from around 1.2 million sequence variants. In two pedigrees of dominant disease, again, WKG SIG produce very short list from over 1 million sequence variants. Compared to WNOVA and VEP, WKG SIG has more functions for quality control, disease inheritance-based filtration, knowledge-based prioritization. This may be the reason why CWKG SIG produced a shorter list than WNOVA and VEP in these three pedigrees. It's unstoppable trend that more and more user-friendly and powerful tools will be developed for molecular diagnosis in human gene X community. So we believe these tools will contribute a lot to the development of personalized medicine in the future. Hi, I'm Lin Jun Li. WKG SIG is a comprehensive analysis platform for causal variant discovery in axon sequencing study. It's equipped with very flexible parameter settings for quality control, genetic inheritance patterns, variant filtering, and long synonymous variant prioritization. Specifically, it can provide a strategy-based analysis according to different genetic patterns and the study design. Including linkage strategy, wrong of homozygous strategy, double-edged gene strategy, overlapping strategy, global mutation strategy, and candidate gene strategy. In addition, WKG SIG can perform disease-targeted analysis based on non-gene panel of investigation diseases. To run our WKG SIG strategy-based model, user only need input the VCSI and pedigree information, as well as the defined analysis strategy. In the disease-targeted model, user only need input the investigated disease name. After click the submission button, the WKG SIG can run the job in an efficient way. Importantly, WKG SIG provides interactive pages and comprehensive annotation to interpret analysis results. We believe our WKG SIG can greatly benefit users without enough computational skills to perform professional analysis on axon sequencing study.


3. Create a VPN server on your computer Go to Network and Sharing Center – Change Adapter Settings Press Alt button and select File – New Income and Connection Check the box next to the username to allow this user to access this computer and network. Other computers will connect here through VPN. In order to connect to the VPN server, open Settings, Network and Internet, VPN, add a VPN connection. When you open the Connection Settings menu, choose the VPN provider as Windows built-in. Connection Name – Any In this field, enter the IP address or name of the computer where the VPN server is connected. VPN Type – Automatic In the field User Name and Password, you should enter the name and password of the account which is active on the server computer. After that, click Save and you will see that a VPN connection is ready. 3. Create a VPN Server on your computer Go to Network and Sharing Center – Change Adapter Settings Press Alt button and select Save and you will see that a VPN server is connected to the network. In order to connect to the network, open Settings, Network and Internet. Click Save and you will see that a VPN server is connected to the network. In order to connect to the network, open Settings, Network and Internet.