use second one we notice that using the user and the stock ID did helped in our cross validation but the model was really overfitting orders and as I said before when you have features and your model is overfitting on it either you remove them or you apply some transformation because they will happen we apply some transformation and we come up with different SVD embeddings for those filters we also noticed this is the main target was evolving and as you can see there with there is a nice trend here and we tried to capture that


trend so we made two linear regression models we trained them on the the sessions and we extract those features from the linear models and we added those as filters in our light area also in order this is my last slide in order to to somehow overcome the cold side problem of the songs what we did is we created a judge Jason's in matrix of the last songs that each user has at recent two and so we took the last 30 songs of each user and we put a one in our matrix with those with two suns are in those last songs otherwise mr. zero and then

Gold is easy: Kaggle tips and tricks | by Chahhou Mohamed | Kaggle Days Dubai | Kaggle


we applied the nest video dot and use the evasion it did help in to overcome the called such problem because you cancel some new sound that have never been seen before it will be related to other songs that have been different by the users and the invasion will capture this kind of information and we end up again like we did in the two sigma approach by using five models by flight GPI models and we just use different subsets of features for each model and then we play together all the moments thank you for your


attention any questions I don't know if sorting so okay oh yeah I can Early's do you recommend any good like books or learning materials what like learning materials or books do you recommend for anymore I'm asked to give some recommendation about good materials I think that's Tagalog clear knocks on table discussion are the best materials when I started doing data science I learned everything from the cargo platform I didn't started by reading papers or reading books I start directly doing competitions and reading discussion and


Carols later on to travel they don't understand then I start reading papers scientific papers to to get more insights about why things are working or not you have a question can you talk a little bit more about what is the use of fitting base models for example linear or logistic regression and using them as in input to more sophisticated model so the question is in the last exam that I will show you why did I use the linear regression models and why I used them in my life GB model so because we had that trend of


the meaning of the targets that was clearly decreasing in time I should capture that trend and decision trees based models cannot capture this kind of trends so the ideal is to use a linear model to capture the Train and from those models was linear models I extracted as filters the slope for each user I captured the slot and the difference between the starting and the last value predicted by my linear regression model so this somehow is capturing the dynamic change of the user behavior but I cannot capture with


[Music] thank you all right my paper was fixed match which is just a cool recent method for doing semi-supervised learning yeah so overview of the paper it came out just last month from Google research and like the headline result here is that they were able to get 78 percent accuracy on CFR 10 using one labeled training example per class which is yeah it was not selected arbitrarily looks like let's make them look good a couple of caveats about the room I assure you the results are extremely impressive yes as

FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence-Covered by Adel Foda


I said semi-supervised learning we'll talk a little bit about that and and the way to achieve this is doing kind of quite a natural combination of two of two previously known methods which will which will describe so what is semi-supervised learning the motivation for semi-supervised learning is that labeling can there are situations where labeling is very expensive but raw data can be very cheap like for example if you're driving around with the video camera and the thing to understand about the semi-supervised learning is that it


is it is distinct from fuschia learning in the sense that you don't have few examples of the thing you have few labeled examples there still needs to be a whole bunch of unlabeled examples of the thing that you're looking for so for example in this diagram if the only examples of class white and class black that I have to learn from are these two then the classifier boundary that I learn is just this vertical line that's as good as any classifier boundary that I might come up but if I have a whole bunch of other labeled data available to


me I can use that to inform my learning of the classifier boundary because the this tribution of the unlabeled data suggests that there's actually some clusters inside this data set and I can I can use that to you know come up with a a classifier boundary that's better than the one that I would have come up with if I only have those labeled examples so that's the distinction between few shot and semi-supervised all right so the first method which is a method for semi-supervised learning that went into this paper is so-called pseudo labeling


so the point of pseudo labeling is that we've got a few labeled examples which we train some sort of weak model using the few labeled examples that we've got and then we start to use the weak model to make predictions on unlabeled data that we then treat as if they would have truth if the model is confident beyond the certain point so illustration I start off with my label examples one black one white and I've got all this unlabeled data now the hope is that if the model is trained using just these two data points it will be confident


enough about the data points that are in the facility that I don't have vicinity of the of the data points that I've got labeled to label those correctly and then those form part of our training set so in effect we can jump from here to here we can jump from here to here and then we can sort of we can sort of keep going and expand that and then hopefully you know we end up we end up jumping correctly throughout those unlabeled clusters and essentially labeling inside those now the risk here is confirmation bias because in real world like problems


the clusters between you know that the clusters that that's sort of defined the classes I'm not going to be this neatly separated right we're gonna have extremely high dimensional problems things that are in different classes are going to be are going to be close to are going to be closer to the points that we have labeled then of the things that are indeed corresponding classes and so on so so this is so this method runs into a problem that it does actually just label things incorrectly and then it keeps on learning from it's


incorrect labels that it's generated so what we're hoping to do is to add another element another method of learning from the unlabeled data so that we can improve our confidence without sort of without having to jump to data points that that would not be correctly labeled by pseudo label so the second method is this idea of consistency regularization now this says this says that if you have if you have an unlabeled data point and the model is confident about what that data point should be above a certain level we can


apply an augmentation to that data point so we can twist it around a little bit you know flip it change the colours invert you know just make it look different and the prediction that the model gives from those two versions of the data point ought to be the same so example if I have here a picture of a horse I can apply one random data augmentation to the picture and I can apply a second random data augmentation and then what I'm going to do is enforce that the model makes the same decision about this data point for both of those


augmentations and the effect of this is that the model can start to pick up things about the image that it might not otherwise have paid attention to so for instance if my augmentation number two crops out just the lower right part of this force then the model might be forced to pay attention to other regions of the image like the the hind legs and the tail in order to decide that this is in fact a horse whereas if I had if I had not done that other data augmentation it might have only focused on the head and always made that made


the decision on that basis so I'm sort of I'm applying two random augmentations in order to induce the model to look at look at different parts of the image to to learn what features are relevant for identifying horses alright so fixed match is going to combine these two ideas of pseudo labeling and consistency regularization so we start off with like a small label data set only a few data points we're going to do as much as much learning on that on that data set as possible and then we're going to go and pick some


samples out of the unlabeled data set and then we're going to follow first of all the consistency regularization process so we pick we pick we pick an image which is which is which is unlabeled we apply two augmentations to it what one week augmentation that kind of preserves the general sense of what the images and then a strong augmentation and then we ask the following question on the weak augmentation was the mole I'm very confident about what that image was meaning like it achieved let's say greater than eighty percent you know


greater than eighty percent confidence of that image was a horse and if so we're going to include that into our pseudo labeled set and then we're going to do the consistency regularization process whereby we enforce that the models predictions on the Augmented version of the data set on the Augmented version of the image becomes close to what we now treat as a true label for that image which means that we are sort of we're allowing it to we're allowing it to learn from from the unlabeled data set in the way I mentioned before which


is which is that you know this this strong augmentation might remove the part of the image that the model was paying attention to previously so that we are now forcing the model to have a more general understanding of what it means to be a horse yeah yeah Andy basically similar representations of augmentations I think for images the knowledge that a particular augmentation is also angle preserving it's very slow underappreciated well I feel like a lot of work in DNA ends right now is like finding sneaky ways reprieve alleged so


he's saying that like the fact that the fact that when we do a random augmentation the label should still be the same is like it's kind of like it's kind of alright let's see how this plays out so we start off with when we got one image in the labeled set so that's our label set this is the set of images on which the set of unlabeled images on which the model is confident enough above a certain threshold that it can say what they are to get the pseudo label and these are the pairs these are the training pairs that we're gonna that


we're going to train on for this step so training pairs we're just going to take the horse image augment it a little bit and then train our model so the model becomes a little bit better at or at recognizing horses fine nothing has you know nothing has changed significantly same labeled set there's still you know the model is still not confident enough to say that any other images an image of a horse so we just go and generate another augmentation and we keep on training but at a point the model will become confident enough about


some other image and it'll say you know what I believe with probability greater than tau that this other image which came from the unlabeled set is also horse so now we are able to do the consistency regularization process not only with the image that was in our labeled set but also with the image that was in the unlabeled set and this now allows the model to learn more about horses then it knew from that from that one unlabeled image like we started off with unlabeled image it had particular characteristics


now we've you know been able to add a second image and we can learn some different things that will hopefully allow us to jump to a third image and a fourth image and so on so yeah we just keep training for a bit and then the model becomes confident about the next image and you see like this process proceeds iteratively okay so results like I said are impressive what you can do with this so with forty labels they had an error rate of thirteen point eight one so like 86 percent accuracy and and and the error rate that I mentioned at the start of


twenty two percent with one labeled example per class that is derived by picking the best starting point for each of the classes so they went through all of they went through all of say far ten or there's actually papers on this and they found like the plain picture that is the most plain out of [Laughter] yeah yes that's how they got that if they're if they got a random one I think they got like 68 yeah all ten by way so that's the most cat that's how clean your labels have to be so first of all you know I mean they're showing this on


CFR ten which which we all know is perfectly labeled and in real in real life you know that doesn't generally hold completely agree like secondly this already has a chance of miss labeling things just on a time like even if your data set was perfectly labeled it's with it that would already be a probability that it goes in and miss label stuff so you know having incorrect labels in the first place would would add to that however since it's a semi supervised method the initial label data set is small so presumably it would be possible


to curate that thing and make it as correct as possible yeah I don't recall this cushon of that exact quite a bit of variance yeah I think that they do experiments but they pick like five random five random starting points and the variance can be like twenty percentage points of accuracy yeah well I guess you can pick a few random ones see how much variance there is in your specific domain and then you know our understanding is that it's not as bad as mix-match yep transfer learning I would suspect not because this is CFR 10


so I'm not sure yep I believe so yeah I'm not a however so I'm confident but yesterday the question was did I use transfer learning here I think transfer lying would probably defeat the purpose yeah yep all right let's so let's just get going so this idea of like the you know the most bird bird this is they refer to it as this prototypic allottee and they have they have some examples of what happens when you have a more and less prototypical training set so this is the one that we saw before that was as prototypical as as as could be found and


this one down the bottom here is the least prototypical and this is a curve of how the accuracy had the accuracy of the trained model went on each of those sets so it is strongly affected by the starting point so limitations as I mentioned before there's there's prototypic allottee I have kind of a question mark doesn't discuss in the paper but like class imbalance like you know if you have many more examples of one thing than of another which you know I've heard that that can happen I'm not entirely convinced like I think it would


[Music] yeah hello everybody my name is Daniel I work for a company called odd phone and we are here today to talk about efficient developers so the first thing that I want to do is define what we mean by efficient to be efficient means achieving maximum productivity without wasting resources and in our case as developers that resource is usually time which means to be efficient is to do things fast but this definition is missing one key element for us that we can see in this quote by Peter Drucker to be efficient is to do the things

Habits of Efficient Developers


right well to be effective is to do the right things so the be efficient is not that we have to be very very fast it's the things that we do we have to do them in a proper way so the decisions that we take today don't slow us down in the future now that we have this quote here you maybe wonder well what is more important to be efficient or to be effective obviously doesn't make any sense to go really really fast if you end up in the wrong place but equally if we know where we want to go but we never achieve that place it doesn't make sense

Habits of Efficient Developers


either in fact there is some synergy between to the between the two if you are efficient it means that you spend less time takes you less time to do things which means that you have more time in your hands to stop look around and make sure that you're going in the right direction so to be efficient allows you to be more effective now in this talk we are just going to focus on what it takes what it makes us efficient and we're going to stop stop talking about focus there are plenty of studies they tried to quantify what is the cost

Habits of Efficient Developers


of an interruption for us developers and it seems that the cost is around ten or fifteen minutes so every time that somebody comes and interrupts you it take us between ten and fifteen minutes to load the context reload the context of the tasks that we were doing to be able to be productive so it's fair amount to be efficient to minimize the number of interruptions that we get so we have long periods of time where we can focus on the task at hand there are basically two types of interruptions the ones that you control

Habits of Efficient Developers


and the ones that other people control the ones that you control this one's email notifications I probably the worst offenders if you think that that little pop-up doesn't nothing for your concentration the truth is that for your brain it looks more something like this you cannot just stop looking at it millions of years of evolution have made our brain really sensible to any unexpected movement mostly because the fear of being eaten so when that little pop-up shows up on your screen you have to focus on it you don't have an option so

Habits of Efficient Developers


efficient developers the first thing that they do they disable all notification not just email notifications but absolutely all notifications in fact you don't even want to see that little number with the number of in that the number of unread notifications on your screen because as soon as that little number changes your brain is going to pick up the change and you're going to start thinking about well what could send my an email or what do I need to do so you should always you can always deal with emails whenever you

Habits of Efficient Developers


want whenever you have the time nobody should expect that you'd reply immediately to their emails there are other means of of communication that are more appropriate if something is really really urgent emails are asynchronous and it's more efficient to deal with them in batches the only notification that you want to say is the one that tells you that you broke the build and please never be one of these guys that they type an email and they want to tell you just to make sure that you received an email this is

Habits of Efficient Developers


really really annoying and this brings us to the other types of interruptions they want that you don't control what can you do with somebody comes to your desk and interrupt your flow I know three possible options the first one is to wear some headphones really really big so when somebody comes you pretend that you didn't see him and you hope that he will just walk a row we'll walk away the second option is that you have a very good team late somebody like this guy somebody that is able to tackle any interruption before

Habits of Efficient Developers


it reaches the team the third option is to do peripheral grameen if you are doing pair programming when somebody comes to interrupt you what should happen is that one of the two developers in the pair so stand up walk away a couple of meters and deal with the interruption and when he's done he goes back to the other pair and that all the guy that was able to keep focus it works like a really fast cash to get him into a productive State a lot faster the additional benefit of pair programming is that because you have another

Habits of Efficient Developers


developer looking at what you are doing all the time you are not going to check the news or your phone or or your email as often so that peer pressure is just going to cause you to be more efficient I don't think I need to explain this right we all know this and I don't like to sound like your mom when she tells you to get your greens so let's move to the next one efficient developers just do one thing at a time and the reason is exactly the same why we hate interruptions yeah because of the context switches here we see that doing

Habits of Efficient Developers


the blue tasks after doing finis in the green tasks it just takes less time in fact it is not just that it takes less time when you try to do multiple things at the same time the quality of your work usually suffers we all know that the definition of multitasking is just screwing several things at the same time so you should always focus on one thing if you finish and then you move to the next task you may we are all going to spend thousands upon thousands of hours in front of your ID it's one of our main tools so you really need to know it

Habits of Efficient Developers


inside out because any efficiency that you can use in your IDE is going to be multiplied but those are thousands of hours that you are going to spend front of it yes basically need to know two things its functionality and its or cuts now just because you are sitting already in front of it for six hours a day it doesn't mean that you are going to master it to master your ID you have to make a conscious and deliberate effort to learn it to find what functionality you don't know about it you can't read the release notes you can

Habits of Efficient Developers


follow blogs or YouTube channels of people using it or you can just do pair programming when you do pair programming each of your partners is going to show you how they use the ID and it's going to show you functionality that you didn't know about or it's going to show you more efficient ways of doing some tasks also you can teach him your tips and tricks so you make the whole team more efficient I'm always surprised about the amount of manual work that with developers can put up with and I found it very paradoxical given that we

Habits of Efficient Developers


are paid to automate all these people's job manual work is not just slower to do but it's dull boring and it's error problem so I'll always wonder well why we keep doing it in one of the main reason is that we sometimes for God that we are developers and as developers we have this very rare and powerful skill that allow us to create an army of minions that will do as we say they will not complain it they never get tired and they do it really really fast and I think we don't use this skill often enough sometimes it may be because

Habits of Efficient Developers


we just end up with this kind of minions but that's a different talk just to make sure that these things I'm going to repeat it again you are developers you don't do things that a computer that your computer can do for you so efficient developers before starting any task they always think well can I write a program to do the task or at least to help me to do the task and I'm not just talking about automating some work that can take you hours I'm also talking about automating tasks that can take you five seconds but you

Habits of Efficient Developers


do several times a day and I am so talking about driving programs for one of tasks that you're never going to do again first because maybe is more efficient you can do it faster but second because I hope that writing programs is fun this is fun for me more finalists and doing things manually to write simple programs there is nothing like all good but she'll have been a developer for eighteen years and during those 18 years I have changed operating systems I have changed programming languages I have changed IDs I have changed my mind

Habits of Efficient Developers


up about all kinds of ideas and practices the only thing that has been constant during those 18 years has been bash so I want to show a little demo about what bash can do for you the beginning of picking off in the fall I didn't cope so let's say that your business manager tells you that some other some other team has created a program and that program is collecting news and he wants to know how many news per country we are we have so you jump into the box and the first thing that you are going to do is write a program this is a

Habits of Efficient Developers


program that is going to tell you how many news we have this is a program right from 4000 so now let's see what we have in one of those news so it seems that it's a piece of JSON right but kind of hard to read so we format it so we see here some news with an ID some social stats the site that we come from and we have here the country yeah so what we are going to do is write a little program to extract that country so country code quote single quote one single code okay let's see if that works yep so we see always make mouse here the

Habits of Efficient Developers


country so now let's try to extract it we start doing grab - oh we get something and now we want to get the whole line so so you don't get too lost here it is our result country and then we have the u.s. so what we are going to do is now split the line with a split line with a delimiter of quote and one day feel I think is the threat of the fourth is the fourth feel cool so well now what we have it's a program to strike the news they the country for news so we just want to do the same for all the news and now we just need to sort it and count it

Habits of Efficient Developers


this because we want to sort it again so we sit in order so we get that for this country there are around three thousand years but now that you have this program let's say that instead of the country we're interested on the side yeah we see there number of news per side but now your business manager comes inside like well I want to know what are the top three website for each country so we're just going to modify this program a little bit we grab country let's try for example I L and if I didn't get that wrong does that all the countries so we

Habits of Efficient Developers


just want we just want to sort them and take the top three that's it now we are going to format it so it all have chosen one line so now we have a program that for one given country it tell us the top three so we just need to do a for loop right we just need to find all the countries that we can get basically from our previous program and we just need to write a for loop for in this two we echo the name of the country and we finished the for-loop Papa Papa back instead of IL is the country that we want to know about and because this

Habits of Efficient Developers


is bash I need to quote quote quote quote unquote and it got something wrong did I miss anything mmm it's a new error site what what it doesn't matter so I'm going to then move to the next thing that is whenever you are writing a program you should always time limit the amount of time that you are expected to use on it this is a good example right because if I keep going I will spend the next 25 minutes just trying to get your work in so whenever you are trying to write a program or Eltham it a task the first thing that you should do it's time

Habits of Efficient Developers


limited and if after paint that time limit you are not able to finish it just move and do it things manually right now even if you think that that's a waste of time right I tried to for five minutes to get this thing working and it didn't get it well the truth is that you have learned a little bit that's not waste time that's invested time on you learning and getting better okay so whatever yep there is a nice table from a CD that tells you how much time you can expend to automate some tasks so have a look at

Habits of Efficient Developers


that and if we are talking about pro writing programs what you should always do it's about you will want about graphical user interfaces why because you cannot put a UI inside a for loop you guys don't compost they just live in their little world now I'm not saying that you should never use them because they are extremely useful when you are getting started when you are learning something new but once you are past that phase of beginner you we'll actually want to do more complex stuff and you guys just constrain what

Habits of Efficient Developers


you what you can do and if we're talking about a body in your eyes the first way that you want to avoid is your own applications you are right there is nothing less efficient than starting application clicking things around and filling up forms to know if you're featured the new feature is working or if you broke anything a part of making this a more efficient automated test also give us the give us the confidence to refactor and change code because it's going to catch bugs and bugs are the worst time waste of all first you need

Habits of Efficient Developers


to write that the bug then somebody has to review the back then you need to put the back into production and then by the time some user notice the bug you have gone through this massive context which because you probably wrote the bug several weeks ago and so even if you wrote the code that has debug the code is already alien for you and you have to dig into it and then you need to fix it you need to go review it you need to explain it to your boss you need to fill some JIRA issues and then you need to go again through all the

Habits of Efficient Developers


release process so bugs are just a big waste of thing but worse than a bug it's having the same bike twice right so whenever you go and fix a bug the first thing that you should do is write a test to prove that you are able to reproduce the bug you see it fail and then you fix it and the last thing that you want to avoid to do manually is setting up the development environment right this is not going to make it just more efficient but the whole team more efficient this is how distractions for any project that

Habits of Efficient Developers


I joined look like from my point of view and the only thing clear on them about them is they're going to they are not going to work maybe they are missing some step or they're not precise enough or maybe I will make some silly mistake when I try to follow them and the result is always the same two three four days of wasted time what you want to achieve its instructions as close as possible to this just one command and that one command should bring all the tools and configure them to be able to build run and test your application if you need a

Habits of Efficient Developers


database it should install the database and configure it and seed it with some data if you need any bill to maven NPM whatever it will download the correct version of maven and install it and configure any SDK that you need as you can see my tool of choice right now to do this it's docker compose which is part of the toker suite if you are not familiar with it it looks this an example and here we are think that our development environment in its three containers Postgres DP Redis DP and our own application this has multiple benefits

Habits of Efficient Developers


right first thing it takes use minutes for somebody new to get started but also if something stops working on your development environment you can just easily just wipe the whole thing and start again if there any change on the development environment you know share immediately with the whole team and these structures never get out of date also because docker is running things in isolated environments it means that if two projects that you're working on they use completely different versions of a database or a JD SDK well they're going

Habits of Efficient Developers


to be completely isolated so it doesn't bother one and the other and also because it's so easy to make changes it allows you it encourage you to experiment if you want to try a new JDK or SDK or a new version of the database just make the changes started and if you don't like it you just completely what the whole environment and the last section that we are going to talk about feedback doesn't matter what you were what you are working on you should always try to find the shortest and tightest feedback loop possible feedback is what it tell

Habits of Efficient Developers


us if we are going in the right direction feedback make us at the same time more efficient and more effective you want feedback often and early to make sure that you don't wander on the wrong path for too long with the consequent waste of time an energy if we talk about the benefits of automated test yeah we save time give us save it with it catches bugs allow us to the factor one is the best moment to try test well my opinion is before you start doing any coding if you're not familiar with the TDD workflow it's

Habits of Efficient Developers


basically this going to go really fast through it you first write one test and only one test you run it you see it fail you see it right and then just write enough code to make that test pass and then you refactor you clean up your code running the test just to make sure that you didn't break anything there are least four reasons why you want to use the this workflow the first one is the fast feed but that gives you as you are building the new feature to note that your code is doing what you spread it to do the second reason is

Habits of Efficient Developers


that if you truly believe that automated test saves you time you want that benefit as soon as possible as you are developing the new feature the third reason is organizational I have here years too many times the phrase I don't have time to write this or I'm not given the time to write this and for me just actually means that well I always write my code I finish my feature and once I finish my features when I do try my test and if there is any time pressure well you know I'm not going to I don't get time to write those tests and because

Habits of Efficient Developers


you don't write tests it means that you don't refactor your code because to refactor code you need a very good automated persuade and because you don't know factor code it means that your code starts to accumulate garbage and because your code starts to accumulate garbage it takes you a little more time to actually build new features and because it takes you more time to build features you get more time pressure and you add more time pressure so you have less time to write test closing a vicious circle cycle that always end up with the same

Habits of Efficient Developers


with us developers crying for our right and the four reason why you want to write your test first it's one of a mechanical reason because seen a test fail is the test that tests that the test test what is supposed to test or in simple words how do you know that your test doesn't have any bug if you write a test and you see it right there is a strong indication that is some piece of production code some logic that is not there if you write the test and you never say bread what you don't know if it is because you're ready

Habits of Efficient Developers


implemented a feature or because you forget on a certain in your test or the setup code is not correct now when you present this idea to a lot of people they always come up with this phrase I can't write a test first because I don't know what I'm going to build and this can mean different things it can mean that you don't understand what business is asking you to do right and in this case it's true you cannot write any test but you cannot write any production code either what you have to do is go back to business and ask for

Habits of Efficient Developers


clarification what do you want to do the other case is that you actually understand business and you're too early understand the logic that you need to build but you don't know if you are going to write one class or ten classes or if you are going to put an if statement or a switch or a factory factory factory you don't know what you're going to do right but you know understand the logic and you know understand the mechanics of the side effects so you know which database you are going to use you have juicy ten

Habits of Efficient Developers


thousand times already you know the table you know everything in all these cases you can actually run a test first but it's true that sometimes we actually don't know what how to do the side effects that we are asked for we for example maybe the logic for your new application functionality in its it needs to cause some restful endpoint to get some for exchange and you have never used it and you don't know the end point and you don't know what you need to give to it and you don't know what it's going to give you about or maybe you need to

Habits of Efficient Developers


consume some messages from a message queue and you have never done that so you don't know which libraries to use you don't know how they work in all those cases you don't really know what you need to what you are going to do there is always this face of exploration that we have in our in our job that is that we used to fill up those gaps to convert known side-effects into known side-effects and that's something that TDD doesn't help you with what you want to do it first read the documentation to see if you are able to

Habits of Efficient Developers


fill those gaps and the second thing you want to write a lot of little programs to test to play around with that technology for this the best tool that I know it's a rebel rebel stands for read eval print loop and it's just basically a fancy way of saying that you have like a common line interface inside your application starts off trying to explain it let's see it in action if it works this time so have already start an application with a rebel inside and what I'm going to do it from my IDE I'm going to connect to that rebel so let's say

Habits of Efficient Developers


that you didn't know how the plus function works so I'd write a piece of code in my IDE and I'm not should using a shortcut to send that piece of code to the application and the application tells me that 2 plus 3 is 5 yep so it writes the code on the top screen and I get the result on the bottom screen so as as I was saying this allows you to experiment with the library so maybe what happens if I pass three parameters seems to work what happens if I pass a very big number I get an exception what happens if I just pass

Habits of Efficient Developers


one parameter it works no parameters it works so this is just understanding how they are how the library works and this could be an HCP library messaging library some concurrency library your were just writing little programs and executing them to see what's the result let's do something slightly more fancy let's say that your business manager it tells you that you have to build a new feature and you know it some for exchange for that feature and one of your mates told you that there is a restful endpoint to do that and it gives

Habits of Efficient Developers


you the URL so we're all an HTP we make an estimate request and we see that we are getting some exception let try to format that sketched exception try/catch exception okay try it again so it tell us it's a 400 which means it's our fault and we see here somebody so what we are going to do is let's get the body okay that seems some piece of JSON so let's parse the JSON there it is so it seems that we're missing some date some query parameters query parameters yeah we get these change rates what happens if I pass all and older what happens if I

Habits of Efficient Developers


pass something in the future I'll still returns data that sorry to be worried what happens if I pass a string I get that error so what we are doing is proving how the real world works and how we are doing it we write a little program we run it we see the result so it's a very very fast feedback cycle now you may be when the world why don't you use something like postman to do this right it's just xdp restful must be postman well there's somebody feats of doing it like this way the first thing is you have a full language this is a

Habits of Efficient Developers


production language the one that they use in production which means that I can do four loops and if statements if I want to mix this data with something from the database well I know how to make database calls from the JVM and also if I now go and I grab this exploratory code inside a function this that you see here this is production code as you see it there is going to go to production I'm making the changes in the project this is not a different tool that then I need to get what I got from the tool and translated to Java or.net

Habits of Efficient Developers


or whatever you are using this is production code it's ready to go also because the repple is running inside your running application you can actually go and poke at the state you can look at the state of your running application and what we are doing here if you notice we are modifying or running application and we are doing all of this without having to compile or restart anything that's a very very quick feedback loop and I don't know if I mention it but we are connecting to this rebel through a socket and because we are connecting

Habits of Efficient Developers


through a circuit it means that we don't really need to be running this process in my local box it can be running tests or production so you could be suspecting modifying adding log statements into production code as without stopping the application this is extremely power powerful and you know with great power power comes great responsibility so use it with care the last thing that we are going to talk about it's code reviews code reviews tell us if the design of the code that we are doing if it fits the application

Habits of Efficient Developers


it allows other other one of your your teammates to tell you if you have any bugs and it also we can use it to share knowledge right it's a way of sharing knowledge so efficient developers want that code to be code review now there is something very truth behind code reviews when we are presented with this huge massive changes I don't know what your reaction but my reaction is something like oh my god yep when we get those but when we get small changes we are able to give useful feedback to the alpha of all the of the

Habits of Efficient Developers


change right because we are able to understand the change also even if you are very disciplined developer and you go through that really painful review process in my experience what does it happen when you go and tell the other like well you know I think your design is your no no no your sorry it's gonna improve your design or we could use a different library that will save us some time or some resources or whatever what usually happens tell whoever say like yeah I think you are right but you know I have already spent

Habits of Efficient Developers


like several days or weeks working on this and the end of the Sprint is tomorrow so even if I think you're right I don't think I'm going to have time to do your change what you're suggesting because it's going to take me several more days to do it also you know it's already working so let's do something different let's just commit the change as it is and we are going to ask the product owner to create a refactoring story I'm sure he will be delighted to put it on top of the priority queue I will know that those things never happen so you end up

Habits of Efficient Developers


again with words code that leads to this lower implemented feature with plaplapla blah blah blah so efficient developers they don't want just code reviews they want small and early code reviews so what they actually want discontinues co reviews this practice consists on on getting one of your teammates to sit just beside you and as you are implementing the future this this developer sitting beside you is going to suggest improvements on your code it's going to be catching bugs that you are doing and for their for the reviewer the

Habits of Efficient Developers


changes are really really small yeah as you type them he see those those changes and for you as the author you can get feedback even before you start writing any code additionally if for whatever reason you cannot able to finish the feature this other developer it's able to pick up that feature without any effort because he has been behind each of your decisions so you avoid those knowledge silos within the team also this this other developer can work as your personal stack overflow because maybe he has already found that

Habits of Efficient Developers


similar issue and he already knows how to fix it and sometimes you don't even need to ask the question because he sees what you are doing some people call also this program so that's all that I have very briefly focus master your ID your tools are both manual work and find yourself the fastest feedback loop possible and last words you should always find time to stop reflect on how you are working and never ever stop learning thank you very much thank you so much for your tips I will definitely start with the notifications

Habits of Efficient Developers


part tomorrow we got a lot of questions during your talk so let's start with the first one how do we balance avoiding interruption with work in small dynamic teams these need rapid feedback loops and frequent communication okay if your work is if your team is really small and if you are doing pair programming your team becomes tiny yeah and because the thing becomes tiny it means that that need of communication the number of not ages on day on the communication graph it just reduces so try to pair programming Thanks

Habits of Efficient Developers


where can we find your slides everybody wants Terry my laptop if somebody wants to grab my laptop the other can somebody come and pick up I would polish them in my personal blog that probably none of you great I don't know if they I will tweet it I will treat them now and would put them in in someplace that you can find it that would be great additionally there are recordings of all sessions so you can watch them later or sent the links to your colleagues another question how can we efficiently automate ourselves out of the job it

Habits of Efficient Developers


depends if you work for yourself that this is the best thing that you can do yeah this is it free money I think it's it depends on your ethics right if you can actually if you think that you can actually automate your work why not write you finish people that are using that tool or your business will be very thankful and you know we have plenty of jobs around the world so don't worry about your job there is a better world job working for you okay I think it's time for our last question what's the worst distraction for a

Habits of Efficient Developers


developer and it's it's like well why is it slick I don't think it is luck to be honest I think the worst distraction if you have a two-year-old that is knocking on your door and you work from home I think that worse but I don't think I'm a remote worker most of the advice that I give you it's when I was not a remote worker and we used to slack a lot and I just mute everybody but they know that is a really neat Mian they'd really need to reach me they know how to get hold of me so I don't know what we feel offended

Habits of Efficient Developers


In 2016, JAMA published research demonstrating the efficacy of a deep learning algorithm. We were able to train a deep learning neural network to recapitulate the majority decision of 7 or 8 US board certified ophthalmologists in the task of grading for a diabetic retinopathy. The type of deep learning algorithm used to detect diabetic retinopathy in that study is called a Convolutional Neural Network, or CNN. CNNs enable computer systems to analyze and classify data. When applied to images, CNNs can recognize that an image shows a dog rather than a cat.

Machine Learning For Medical Image Analysis - How It Works


They can recognize the dog whether it's a small part or a large part of the picture - size doesn't matter for this technique. It can also classify the dog by breed. CNN systems have also been developed to help clinicians do their work including selecting cellular elements on pathological slides, correctly identifying the spatial orientation of chest radiographs, and, as Dr. Peng mentioned, automatically grading retinal images for diabetic retinopathy. So let's open the deep learning black box to understand how this works.


First, a CNN is not one process. It's actually a complex network of interconnected processes, organized in layers. With each layer, the CNN can detect higher-level, more abstract features. When the CNN is identifying these features, it uses something called a filter. Here's how Larry Carin, one of the authors of a JAMA Guide to Statistics and Methods article on CNNs, describes a filter: So, we think about a medical image, a medical image in radiology or ophthalmology or dermatology is characterized by local structure,


could be textures, it could be edges, it could be curves, corners, etc. And what these filters are doing are constituting little miniature versions of each of these little building blocks. And the way that the CNN looks for these building blocks is the C in CNN, and it stands for convolution. It's a mathematical operation that looks pretty complex. But, actually, it's very simple. It's a very simple concept. It's kind of like you've got this filter, and you're walking to every part of the image, and you're just asking the question, how much does this image look like that filter?


Think of it like this: you have a drawing, that's the image, and you have a stencil, that's the filter. You take that stencil and pass that stencil over that drawing that you have, and as you do that you will see that some parts of the drawing become more visible than others as you do that, right? And that process of sliding that stencil across this drawing is essentially the process of convolution. Now that we've explained what a filter is and introduced the concept of convolution, let's use an analogy of written language to understand the relationship between the filters


and the hierarchical structure of the layers in a CNN. We will simplify the explanation by using an analogy. The analogy is a written document. In order to communicate through writing, we organize it as a series of paragraphs, which are composed of sentences, those sentences are composed of words, and the words of letters. So reading a document requires assessing the relationship of letters to one another in increasing layers of complexity, which is a kind of "deep" hierarchy, like the hierarchy in image analysis.


Continuing with our analogy, let's say we're looking for the phrase Ada Lovelace in a paragraph. Ada Lovelace was a mathematician and writer who lived in the 19th century. And she holds the honor of having published the very first algorithm intended to be used by a machine to perform calculations, which makes her the first ever computer programmer. In the first layer of the network, a CNN looks for the basic building blocks of an image. The basic building blocks of written language are letters. So in this analogy, the filters the CNN uses in the first layer would be letters.


Let's zoom in on the word "Ada." Here is what the convolution process would look like for the letter A. When the "A" filter overlies the letter "A" in the original image, the convolution output would generate a strong signal. This signal would then be mapped onto something called a feature map. The feature map represents how well elements in the image align with the filter. If something is there, the signal outputs white. If nothing is there, the signal outputs black. CNNs generate a feature map for every filter.


So in our analogy, there would be a feature map for every letter. These feature maps would then become the input for the second layer. In this layer, the CNN would spatially align and "stack" all those maps from the previous layer. This would allow the CNN to then look for short, specific sequences of letters in all the feature maps simultaneously. So the CNN would use a new set of filters to look for specific letters that are adjacent to one another in particular sequences. In our analogy, the second layer would look for places where the letters A, D,


and A are in sequence together making the word "ADA". It would also look for places where letters A, C, E, L, O and V are adjacent to one another using filters for LOVE and LACE. The output of the second layer would be the feature maps for those three sequences of letters. In other words, in those feature maps, strong signals would be present where the sequences ADA, LOVE and LACE are located in the original paragraph. In the third layer, the CNN would stack and align these three new maps and perform more convolutions-this time identifying


where longer words and groups of words are located. So the CNN could at this point identify where in the original paragraph the sequences of letters and words making the phrase "ADA LOVELACE" are located. In our analogy, we were looking for a phrase consisting of only two words. Had we been looking for a longer sentence or even a paragraph, the CNN would deal with the greater complexity by having more layers. We've omitted quite a few details about CNNs for simplicity, but this captures the essence of the model.


But what does this look like for actual images, like identifying diabetic retinopathy from an ocular photograph? Images are made out of pixels rather than letters. In a digital context, a pixel is the smallest, controllable unit of an image represented on a display. Each pixel is a representation of a tiny portion of the original image. Think about pixels like creating a drawing with dots where every dot has a color value and an intensity. The more dots used, the clearer the image becomes. The filters a CNN uses in that first layer are small squares of pixels that correspond


to things like textures, contrast between two colors, or edges. These are the image analysis-equivalents of the letters used in our analogy. And as a CNN goes up in the hierarchy, it looks for combinations of these filters, getting more and more complex with each layer. As the complexity increases, the CNN gets closer to identifying what it's looking for. So the specific features analyzed at each layer help put the whole thing together. So, for example, some of the earlier work showed that some layers tend to be better


at extracting, sort of like, edge-like information. Meaning that, for example, if you combine different kinds of horizontal edges, we might get a continuous line that resembles the retinal blood vessels. And as you combine more of those and start to encode more higher-level concepts such as, you know, is there a micro-aneurysm here, is there bleeding over here, is there other lesions in the image? And right at the very end is where these, after these multiple layers, the network will try to then condense all of that information down into a final prediction.


In this case, severe diabetic retinopathy. Developing a CNN to help identify diabetic retinopathy was motivated because many patients with diabetes are not getting screened frequently enough. We have to screen diabetic patients once a year or we should, and there are some barriers to getting that done. Some of it is just, you know, not having enough trained professionals to do that task. It's also not having that expertise available where the patient is. It's not that, you know, there aren't retina specialists


in a metropolitan city four hours away, it's that there isn't a retina specialist at your grocery store. And CNNs could facilitate the integration of diabetic retinopathy and other screening programs into primary care. But before that happens, more research, especially prospective clinical trials, are needed. The way we do approach these things is really the way that medicine usually works, which is to say, "let's do validations of the method again and again and again until we're sure, we're reasonably confident that it really works on many kinds of images,


in many settings for, you know, many different patient populations." And so from my perspective that's really at the end of the day what's most important: does it work on real patients and is it reliable? The excitement generated by early results has already spurred several research groups to look into the efficacy of CNNs in clinical practice, which could potentially finally get CNNs from the bench to the bedside. I think we're on the third or fourth technological revolution where neural networks are coming to the forefront,


and I really hope that this time we'll get it right. But there were failures in the past where people used the technology in suboptimal ways and we don' t want it to happen again. One has to make sure that we have appropriate and sufficient data for development, validation and testing, and that we're solving actual clinical problems. At the end of the day, one thing to take away is that even if, as a clinician, it can be hard to understand exactly how a CNN arrives at its diagnosis, it can still be a useful tool.


And this is similar to how many clinicians use other widely-adopted technologies. Consider antibodies: You know, as a clinician I may not know exactly where that part of an antibody kind of binds to, but I'm comfortable after looking at some of this clinical validation of using Lucentis, for example, for an injection, right. This is kind of like any new breakthrough technology: needs validation and needs transparency, but I think, you know, the medical community in general responds very well to new technologies that have been validated.


[Music] thank you very much hi to everybody my name is Jimmy Wynn and I am president of Bitcoin Association with me is Steve shatters who is the technical director of the Bitcoin SV node project which we'll explain as well as CTO of n chain the global leading research development and advisory firm and blockchain technologies we're here today that's about the coin SV and why it is the massively scaled blockchain to meet developer needs the answer to the question of what developers need is pretty simple but it's very profound big

Bitcoin SV:  The Massively Scaled Blockchain to Meet Developer Needs—Jimmy Nguyen & Steve Shadders


nor if there are two things for you to remember today it is big and power those two things in combination are what make Bitcoin SV what developers as well as big enterprises need you don't have to just take my word for it Crona verse is an eSports and gaming company in the United States which does a monetization platform which uses blockchain technology to create more transparent fair or gaming in the eSports world it has a game that's coming into open beta soon called crypto fights which is like Dungeons & Dragons and it allows players


to create avatars to compete against each other it recently announced through a blog post of know why it was leaving the etherium based engine token system to use Bitcoin sv as a blockchain for storing in-game items as well as many other uses and its CEO and founder Adam claim wrote in this blog post what we'll talk a lot about today he wrote we decided to leave because of problems with ethereal and what he explained is to get the presentation back what happened here is that he explained that he and his company were making the best


voice for their business and the decision to transition at be SPT was the result of their own research and development efforts they discovered that aetherium is a cassadee slow cannot scale it is expensive that proof of work is the only proven consensus mechanism and they lack confidence that proof of stink or delegated proof of state will work and aetherium choose windows scaling approaches are still experimental or whereas Bitcoin sve have already demonstrated the scaling ability they also summarize the benefits


of transitioning to Bitcoin SV that it can allow them to create a better item protocol with the SB it's faster and cheaper to conduct trades due to the efficiency of the BSB blockchain DSP is capable of handling millions of transactions without slowing down which is critical to development work and converse users will often be able to use more available features the engine is not capable of such as storing the 3d model of a virtual in-game item on the blockchain which is something that the etherium based moon system could not


provide so that is a great summary of what bitcoin was born to be Bitcoin people think is merely a payment system a way to transfer monetary value but in the name itself we really understand what bitcoin was supposed to be a combination of data bit and coin monetary value the fusion of both data and money in a ledger system a blockchain so that is why we've got a battle to preserve the original protocol of Bitcoin Bitcoin has not been allowed over the years to be what it was born to be it has been knitted in its baling


capability so people do not realize Bitcoin blockchain can power tokens and smart contracts and many of their advanced applications so the SV and Bitcoin stands for Satoshi vision because bitcoin sv is one of the heating chains Bitcoin but the only one which adheres the original design protocol and vision of the creator Satoshi Nakamoto to be both a peer-to-peer electronic cash system where you can send monetary value as well as the global empathized blotching for the world and today Steve and I are going to explain to you why


that's important for developers and why that means it is the blockchain for developers to learn build upon Bitcoin SV has four key pillars in our design which Steve has led with another developer named Daniel Connolly who is in Austria Austria a stable protocol a scalable blockchain at massive scale security as well as safe instant transactions today I want to focus on the first two of those pillars and explain to you why that makes such a big power advantage for developers let's talk first about a stable protocol and


it's not just any protocol but one with bitcoins original design in February of this year the team behind Bitcoin sve led a the latest upgrade and hard fork of the protocol which was called Genesis because it was designed to restore as much of bitcoins original design and protocol as possible that's because over the decade of bitcoins existance former protocol developers have changed a lot of bitcoins original design it had in it so much of the capabilities developers are looking for for many applications but those were changed those are


restored through the Genesis hard fork and there were many changes in it but the key things for developers to know are that we removed artificial limits that were previously imposed on the protocols such as block size and transaction and data capacity we restored the full original functionality of Bitcoin script the programming language which is used within the Bitcoin protocol and Steve is going to talk to you about that later in this presentation and what that means for developers and we also remove some detrimental changes that were made to


bitcoins protocol over the years such as Sun setting what's called Paita script cache which has created some significant privacy and security issues in Bitcoin and this was designed to restore bitcoins original power and then this is very important for you to know to keep the protocol stable satoshi nakamoto recognized this far back in bitcoins life all the way back in 2010 ten years ago writing at the time that the nature of Bitcoin is such that once version 0.1 was released the core design was set in stone for the


rest of its lifetime why is that important it's because as developers as well as people who might support big enterprises you need a stable protocol in order to have confidence to build applications I talk to a lot of companies as well as developers around the world who are looking for a blockchain to build on and the one thing they do not want is a constantly changing protocol because otherwise it makes it very difficult to commit your time to start an application or startup venture or your business if you're a big


company to launch an application on something where the protocol may change so our team has committed to keeping the protocol stable now that the original Bitcoin design has been restored in Bitcoin SV with a stable protocol we also want to unleash the massive scaling power of Bitcoin there have been battles for many years over whether or not the Bitcoin blockchain should scale because Bitcoin core and the BTC network kept the block size small its network is only capable of doing about three transactions a second or at maximum


seven transactions a second that will nowhere rival or compete with the payment networks of the world such as Visa which averaged 2,000 transactions a second or at peak periods 56,000 transactions a second our belief for Bitcoin sv is that the Bitcoin blockchain can have unbounded scaling there should not be limits placed upon its scaling capability by the protocol developers so that limit has been lifted and the network can scale to whatever competitive market forces require Steve and his team have been leading a lot of


technical improvements and testing to ensure that Bitcoin can scale this is critical because other competing networks such as the etherium Network have run into scaling problems which are very well known now Vitalik boo turin in august of last year acknowledged that the etherium blockchain was almost full last summer that has led many businesses as well as developers to stop developing applications on that chain and instead look for alternatives what's happening on Bitcoin sv well there is no limit on the block size anymore which means in


any given block there's no limit on the potential number of transactions or data that can be included there are practical limitations that are being improved constantly but we've seen world record blocks mined on Bitcoin SV that are not just one or two megabyte in size in May of this year two blocks over 300 megabytes in size or mind which each had over a million individual transactions that's great but we can still do much more as the technical improvements continue but it's scaling of this type that is necessary


to create a blockchain for developers to have applications that can power many many transactions our team also runs a scaling test Network which is continually testing the bounds of what's capable on the Bitcoin blockchain they've been mining blocks on the scaling test network that are 2.7 to 6 million transactions per block and if that's sustainable which we believe it is and more on the main net you're going to have theoretical throughput that exceeds 6,000 transactions a second and that's what as a developer you want to


see you don't want to spend your time building something if you cannot support large numbers of transactions it also means the capability to do micro transactions meaning payments or data where you're sending small amounts of money that are attached to the transaction and by small we mean even fractions of a u.s. set and that's possible because of the massive scaling we're seeing on other networks such as aetherium that there are periods of congestion where the fees that are required to send a transaction skyrocket they get high here for example


is from November of last year there was a headline noting that the etherium transaction fees were soaring to over 30 US dollars to send a single transaction which is far too high if you want to create tokens or smart contract systems or Internet of Things communications on a blockchain whereas on Bitcoin SV because our scaling is unbounded and block size is now not limited by the protocol transaction fees are not just really low they're very reliable they are not one cent tomorrow but 30 US dollars a week from now that is very


difficult for businesses to predict their fee system I just checked yesterday and to send a payment transaction on Bitcoin I see the average as of yesterday was less than one hundredths of one u.s. cent that means you can create business models and payment systems that do many many things and it allows us to be in vision what the Internet can be a new world where all of our online interactions and online activity can be monetized where you might actually have to pay a small amount of money to do things on the


internet but you can get paid back and we're seeing in our ecosystem developers who are creative creating applications where they are reinventing social media so for example to stop fraud and fake accounts on something like Twitter you have to actually pay to post a social media message or to reply and like but then someone pays you back in tiny amounts of Bitcoin sv2 your wallet in order to engage with your content to like it to reply to it models where people pay to store your identity or data on chain but then you as a consumer


or user can get paid by authorizing companies to access your data on the blockchain small amounts again a Bitcoin same thing for reinventing how we access media what if you had to pay per article to read online news as opposed to paying a monthly or annual subscription fee so these are the fascinating types of creative ideas that can be explored if you have a blockchain where it costs only 1/100 of a u.s. n to do any individual transaction you can change how our entire online activity occurs and it means we can move to a


world where everything is not just online as the internet allowed us to create but impossibility anything could be unchain your data our interaction on the internet such as web searches our e-commerce systems everything can be recorded tracked and monetize through the Bitcoin blockchain as a ledger that combines your data with monetary value that leads to this concept which we call the meta net a new more commercial Internet for all of us as individual users because we're able to monetize our individual activity and


data on the online environments there's a whole paradigm that's happening in Bitcoin sv where we're taking a look at the blockchain as a universal server where data websites and content can be hosted on chain and accessed via Internet browsers and applications from a blockchain there's a protocol that engines team has created which organizes the data structure over Bitcoin so that people can create applications and easily find data from the blockchain so here's an image of imagining the blocks on the right of the screen as the


blockchain allowing you to store data people creating search engines to access that data you as a developer to create applications that leverage that data and allow people as users to even manage their identity from the blockchain creating a new form of internet so with this concept and with this big power of the blockchain with a stable protocol and massive scaling what are we seeing that enterprises as well as particularly developers can build on the Bitcoin so an example which developers will appreciate is a company called coda with


some young entrepreneurs out of Australia they want a second hackathon we ran in the Bitcoin SV world and what they've created is an API marketplace for developers because it's hard if you're a developer when you create you know something unique and a software application it's hard to monetize it people put things on github and allow other developers to use it for free but what if you could get rewarded for your work so Coda's created a marketplace or as a developer you can upload your work and charge other people developers


companies businesses around the world to use your work product by paying you small amounts of Bitcoin SV for example for every API call or a very set number of API calls whatever business a revenue model you want to set which is possible because of the tiny tiny transaction fees that it costs to send and engage in transactions on Bitcoin SV another good example is a company out of South Korea a company called one store which runs one of the largest mobile app stores in South Korea one of its executive is a big believer in Bitcoin sv and they


created a mobile app called bus con which allows music artists to be able to be rewarded for their work as a fan you can download the mobile app you can view access listen to content such as music videos from your music artists that you like and then reward the music artist in a token called a touch token that is built on bitcoin sv and then the artist gets paid in small amounts of the coin SV tokens this has led as examples to a bright world of Bitcoin SV developer development happening across the world someone in Korea actually keeps a chart


of the known company's services projects that are on Bitcoin SP and right now there's over 400 that are known I'm sure there's even far more you can see here a chart with companies and services we won't have to talk about them all but it shows you the number that's happening around the world there's also resources for developers as Steve will tell you about and then also people are creating protocol layers to create the rule sets for all kinds of different functionality from smart contracts to tokens and it's really


expanding what is capable of being done on Bitcoin SV a company out of Spain called Han cash which runs one of the most popular wallets in the Bitcoin sed world has created hands cash connect it's an SDK which contains tool sets you could see here of six main functions instant payments encryption identity and login as examples to make it easy for developers and businesses to integrate bitcoin SV payments into any application whether it be a web-based mobile application even smart devices so these are the things that are available to


make it easier for you as a developer to start integrating bitcoin sv into almost anything you can imagine recently max then which is a company that provides a browser which is one of the most popular in the world in certain regions with over 670 million people having downloaded it as their default browser they announced the beta launch of a new version of their browser called Maxton 6 and it is the first Bitcoin s be powered browser what does that mean they're building a browser for this meta net world I mentioned where applications


and online activity are driven by the Bitcoin SP blockchain so in the future the browser will integrate very easily with bsv applications and you'll see here a variety of the things that they're already releasing on the top right corner of the screen you see something called blockchain ID manager VBox this is a tool system to allow you as a user to maintain your identity information on the blockchain so it's never deleted and allow you to log into applications across the internet from a single identity so you don't need for example to log


into applications using Google or Facebook as a lot of people do today you can have all of your identity stored in one place on the blockchain and the browser here is designed to specifically make it easier to log into applications across this new meta net world using a ID system that is managed on the blockchain they're also creating a browser that will allow ecommerce sites when you're shopping to easily integrate with your Bitcoin SP wallets you can easily pay as you see this example on the right side with both your identity


and Bitcoin from a wallet so Jeff Chen from Maxon who's the CEO summarized very well why we believe so much in Bitcoin sv4 development he said we want the Maxton browser to be the online application platform and users window to the exciting world of Bitcoin SV combined with the internet our goal is to make it so easy and seamless to use bsv applications that users do not even need to know that bsv is involved in the background consumers will just know that using an earning electronic cash from their online content data interactions


and activities this is the future of the internet and why we believe in bitcoin sv that summarizes well what we think is the future and what Steve will talk to you about next Bitcoin is more than just a payment system it is technology plumbing that may sound boring but it is the plumbing the infrastructure just like the Internet Protocol is that drove Internet growth that will allow the creation and development of many fascinating applications so that in the future consumers users will probably not even know that things they are using are


built on the Bitcoin blockchain it will work underneath invisibly to power worlds of data micro transactions and all of our future online activity so I'm going to turn it over to Steve shatters now to tell you a lot about what developers can look forward to using on between Thanksgiving just let me transition me everybody do I have the right screen on the right screen so someone will tell me in a moment by bank so here I want to talk to you a bit about some of the things that are possible on Bitcoin this week that don't


really fit the narrative of of what you could or should be able to do with a blockchain at the moment I'm twelve of the body screen around the wrong way your good nasty good now okay so in the in the very beginning of Bitcoin Satoshi Nakamoto designed a system that was very open and had very few limitations you yet included a not code that allowed you to push up to four gigabytes of data to to the stack in a single Bitcoin script in fact you could use that up code many times so there was no effective limit to


the amount of data that you put into into a transaction he made it very clear that Bitcoin was intended to scale and that the endgame for for miners was to be operating out of out of large data warehouses he also put an incredibly rich scripting language into into Bitcoin that made it very clear that bitcoin is not just about payments that the coin is about anything that you can imagine that that is possible by by using a turing-complete programming language but for a long time that's simply not been not been possible


because well to be honest a bunch of people decided that we just weren't allowed to do that Bitcoin every developers do not want to be the guardians or the gatekeepers that say what you can do on Bitcoin Bitcoin is it is a free market and it really depends on what makes sense what makes sense economically what makes sense in terms of improving people's user experience what makes sense in terms of improving people's lives is what will govern what what can and can't be done on Bitcoin so let's step into a few of the things that


are possible on Bitcoin that that don't fit the typical blockchain narrative so today we're going to talk about the three big big blocks big transactions and big scripts and I suppose I'm speaking to people here as a potential developers because I'm talking about the potential that can be unlocked as part of the developer experience and we'll start with big blocks but I make the point that big blocks are not something you should have to worry about we're just going to talk about big blocks because they are what enables you to to


do all of these things that that we've been told so long enough possible so firstly why big blocks matter well it goes to the structure of the network and in fact the structure of the network the Bitcoin network that was described by by Satoshi Nakamoto and it's actually very different to the way that most blockchain networks look and you'll see over on the left the title of this slide is minimal hardware required what I mean by that is that as a developer or a user of Bitcoin you shouldn't have to have a data center full of computing equipment


so that you can participate in the Bitcoin network you shouldn't even have to have a 200 gigabyte hard drive so that you can participate in the network by running the so-called full full node software what happens when when you have a world full of people that are trying to participate in a network on an equal footing like that is you develop a mesh network that starts to look a little bit like the diagram we have here this is a very small-scale imagining of that that the typical Bitcoin interaction if you consider the payment case is usually


between a customer and a merchant or a shop in in this case and let me show you how that works when you have a mesh type network on a that is typical of most block chains today the customer in the shop already has a connection to each other because you've gone to their website to say that you want to buy a thing or rum or your you're trying to pay them so the shop has already told you that you need to pay them but you know in a typical block chain today you need to transmit that that last message which is the actual transaction through


from customer to to merchants and and this is how it typically happens rather than sending it directly to the shop which would make sense because you've already got a connection to them you get the the cloud of of peers in the Bitcoin of the etherium or narrow networks whichever one it happens to be and your message in this case is the transaction bounces from box to box to box to box until it eventually pops out the other end now in a good day this will take 5 10 seconds on a bad day this can take potentially 30 seconds or


even minutes and if you're talking about a payment experience that's just not good enough because we are competing with with the payment experience that that 7 billion people are used to it or maybe not 7 billion people are used to to the pay wave type metropoliz experience but but we know that you can walk into a shop literally tap a card and within a fraction of a second the transaction is done so that's what we have to compete with and 5 seconds is even as it is it's just not good enough but by the reason we have this


configuration is simply because all of these nodes that you see on this on the screen right now are not actually economically incentivized to to run on well provisioned hardware everyone is told that everybody has to run a note of course you're not getting paid to run an ode so the costs associated with running running an ode or something that you're concerned about and that leads to this mesh kind of network configuration because the more connections you have with other people and the highest speed those connections


are the more traffic you're going to be sending and receiving and of course the port is going to cost you and that's a real concern if there's no revenue coming in but the way that the Bitcoin network was intended to be configured was that the people that are responsible for the connectivity are the miners themselves and the miners are the ones that actually get paid as a part of the operations with a Bitcoin network now consider for a moment project project into the future where transaction fees transaction volume is high enough that


just to pick an easy number to work with let's say there's six hundred thousand dollars worth of transactions fee revenue coming through every block every ten minutes now that sounds like a lot of money but break it down over millions and millions of transactions lots and lots of people paying a hundred to the cent each it's a lot of transactions but but I'll show you in a minute why why that actually becomes manageable so six hundred thousand dollars every ten minutes ten minutes is 600 seconds so that's a thousand dollars a second worth of


revenue that's coming through the system now if you're a minor and your network connections aren't up to scratch and you can't receive the transactions fast enough even if you're delayed by five seconds in receiving the transactions that everybody else is getting straight away that's five thousand dollars worth of revenue that you're not going to get when you find a block and that's just you know one block is the unit 10 minutes fan imagine that over the course of the year so my land miners are highly incentivized to spend money on


increasing a network connection capacity and they're very incentivized to be connected directly to all of the other miners so that they can all grab and Hoover up all of the the transactions that are coming into the network because each one of those transactions represents revenue and so what happens the network starts to reform itself into something that is much more like what satoshi nakamoto actually described in the early days of Bitcoin you see right there at the center these are nodes or otherwise known as miners they are the ones that


actually run the network operate the network they're the ones that are incentivized to have full copies of the blockchain the massive hard drives that are requires as as blocks get bigger and out on the edge those whites white circles there they're actually peers I don't call them nodes I call them peers but they're actually the users of the network and that can be people who want to make payments or that can be applications that can be very big applications that are serving millions of users they don't mean to see


everything that's going on in the Bitcoin network they need to be able to see the parts that consume them and they need to be connected to a very very fast backbone which is what the miners provide now I've only shown five mining nodes here but of course that number can vary quite significantly and I would expect it to be more but there's only room for so many circles on the page now remember back at the beginning of this animation I showed you the animation of this section I showed you the animation of the transaction floating from the


customer all the way through the network bouncing around and eventually getting to the the recipient which was the merchant so let's see how it actually happened is the way that Satoshi described because the very first version of Bitcoin included a feature called IP to IP which is the very definition of peer-to-peer it's appear with an IP address connecting to another peer with an IP address this is so subsequently been removed from Bitcoin that we are putting it back in so this is actually how a transaction is supposed to flow


customer and shop are already in touch with each other because they've decided to make a transaction and you know execute purchase of some goods or services etc so the customer sends the transaction directly to the shop makes sense because shop is the one that actually cares about getting the transaction confirmed so the shop takes responsibility for sending it out to the minor now the miners are all incredibly densely connected so instead of those five hops that we saw before let's see what happens this time bang immediately as


soon as it hits one minor it's after all of the others and so you've got incredibly low latency you you've actually got a speed of confirmation that some that can match the the competitors in the Fiat world and not only that but the the minor that you send it to and in fact you could send it to more than one if you want to can actually send you in response back and tell you the status of your transaction so we'll get further into that in a little bit and more talk about the merchant API but back to the the overarching topic I guess which is big


blocks it's being blocks that make this possible it's being blocks that drive that economic model that some that incentivize - to form this this backbone and this is just an example it's it's one of the blocks I think that Jimmy actually showed you before showing the 370 megabytes and 1.3 million transactions these are a couple of charts that show the trajectory of Bitcoin is for over the last 18 months on the top here this is actually a chart of the largest block in any 24-hour period the actual average it follows the


same trend but the number is obviously a bit lower it's it's still running at about double BTC and as far as I know is the largest of any of the block chains in the world but you can see that steady growth it's it's a logarithmic curve if this was a linear graph then it would be a much much steeper angle and probably wouldn't fit on the page but that capacity is there it's been demonstrated day in day out since since Bitcoin as we emerged onto the scene and down below again is the same graph but this time we're measuring the number of


transactions per block so it's growing and that keeps the between a sweet team on our toes of course because we've got to make sure that the software can all is supply as much capacity as there is demand for and we're fairly comfortable we're about a hundred times further in front than we need to be but it pays for us to always remain vigilant so why do big blocks matter for you well the fact that you can Democrat out of capacity is very important from a fee perspective because it's only when block chains run


out of capacity that you start to see huge spikes in fees there's not enough for everybody so people start bidding against each other and they start bidding the price of the transaction up that should never happen on a block chain there should be a market but the market is is there to determine how low fees can go not how high they can go and of course from a developer's point of view you don't want to be looking over your shoulder constantly and counting how many transactions your application is making and how many bytes are in each


transaction you might even want to be able to use many transactions in cases where you've traditionally been told that you have to use one imagine a large payment of a let's say $1,000 and you don't want it to be known to the whole world well something that you could do is break it up into 20 small completely separate transactions which is something that would be unthinkable on on for example BTC or aetherium because of those transaction fees so big transaction this has enabled all sorts of use cases that that have that are not


at all common on on block chains in general we'll just pick a couple out there bits to Gramma's sounds very much like Instagram and it's much like what you would think it is it's you know image images your own images thought unchanged whether SV is an archival service which i think is going to be very useful for researchers in 50 or 100 years time because whether data that's being put on chain is is immutable that can't be changed if anyone ever tries to use a fake version of that data it's trivial for anyone to prove and of course crypto


fights I guess the the more fun end of a patient development that you can hook into a blockchain for all to gain all sorts of benefits of immutability now this last example is a little bit drier but it's a really good example of why scale matters in terms of enabling use cases that otherwise would be impossible the HR day there is a big player in the USA a u.s. pharmaceutical industry they're addressing a specific problem the opioid crisis which is in the news pretty much every day in the United States it's killing a lot of people and they're


trialing a solution right now we then shown in fact for dealing with this prescription data in a non chain way now this is health records so of course there are privacy is paramount which whilst I won't go into all of the details because it would take too long but it shows that the privacy of on chain data is entirely possible but one of the key concerns that they have in looking at a block chain solution was capacity when this pilot is rolled out to a full scale solution they're expecting 3.2 million transactions per


day now how long would that take to process on various block chains with to scale limitations that they have well these are these are the rough numbers Bitcoin would take 44 days to process just one day's worth of transactions if they're iam quite a bit better but still they would need a time machine it's a little over two days right now Bitcoin SV can chew through that many in 32 minutes and with Tera node of course it will eat them all up you know in a single block so this last section is it is probably the part that's closest to


my heart because I have to admit I'm a bit of a script nerd the script is the the programming language built into Bitcoin for anyone who's familiar with the theory and you're probably familiar with solidity which is something that a theorem did incredibly well it's really easy to use programming language but when you think about Pro on on Bitcoin directly in script you probably think of something ugly and horrendous a little bit like this script is basically an assembly type language or a bytecode type language and in fact


aetherium has its own parallel to this the etherium virtual machine runs off bytecode which is very similar to Java bytecode and in fact for a lot of years you could you couldn't even make scripts like this because they were simply too long there were limitations imposed by by developers on by the Bitcoin developers on what you are allowed to put into scripts so all of the potential that's available here was was not available or not able to be used except maybe on a test net at home so this is what a theory of solidity looks like but


but it gets a little bit better than this of course the the potential for this is only just beginning to be unlocked something that we'll be talking about extensively I think in the Devcon will be the new IDE contract programming language s script there's others as well that's it there on the right and I put them side by side so you can compare and see how how similar it actually is to a theory of solidity this has been one of the most important things I think the Bitcoin sv2 address was the simple fact that the developer experience on on


aetherium was was so much better than it ever was on Bitcoin and they probably won't ever be any better on on BTC but on Bitcoin SV we've done something about that so a script is available is a BS code extension which is a probably one of the most popular IDs in the world right now and it's trivially easy to use and here's just an example of their documentation that shows how to do a rabbin signature which is one mechanism of digitally signing data in a transaction any arbitrary data ana script is not the only one there's also


the run platform there's the gear SV platform and at the upcoming Def Con I'll actually be previewing a little pet project of my own which I I expect would be added if anyone does or someone a slide similar to this in the future it might might be sitting there alongside it so I'm looking forward to sharing that so in terms of developer tools I've popped up this old simplified payment verification slide again that you would remember from near the beginning of this it's it's relevant because I just want to show you one of


the other tools that are available right now on BTC it's not that easy for a developer to even transmit transactions you need to implement the entire pierre-pierre protocol and you're missing a lot of potential functionality that is really important for example you can't find out what what transaction fee you need to attach to make sure your transaction will get accepted well we solved that problem with Bitcoin sv with an interface the likes of which almost every developer in the world has probably used and implemented before a


simple rest interface and it's a very simple API but it's run by miners and it allows you as a very user the user who wants to make a payment or a developer who wants to build an application to ask a miner directly how much fee what is it what exactly is the fee I need and can you send can I send you a transaction yes I can and can you tell me whether you've accepted the transaction or not it seems like such a simple thing that it's it's just not the impossible on on another blockchains and this is one of the first things that


we wanted to address with the point is free so of course there's a world of developer resources and again that will be covered more in more detail in the Devcon but just a couple I want to point out to you in fact I saw this in the chat earlier on someone someone mentioned the wiki wiki got Bitcoin s video it's a great resource for learning about Bitcoin from from the ground up it does have a bit of a technical focus of course but that it also tries on some of those pages to sort of really explain the general concepts of Bitcoin and


other resource I really is bsv devs which points to a lot of tools and developer tools and various other other bits of tooling as well as just some fun applications so I recommend checking that out and of course the part of the point here is to to speak to developers I would be remiss of me as an changed CTO not to throw in a plug here and say that we are growing we're by no means the only ones getting involved in Bitcoin o2b development is is a really interesting potential career path and was we be interested in talking


to two people who are a few than a few steps along the way through their learning experience there are many many other in companies who are operating one Bitcoin SV right now and I think there will be many many career opportunities going forward so I'll turn back over to to Jimmy to wrap up with some questions [Music] [Music] Jimmy I can't hear you were you muted by chance [Music] [Music] hi all sorry I was trying to sort out things let me just wrap up before we take questions by telling you about a few things that are coming up soon I


don't think we have a hackathon that's happening right now that goes for two months the competition period just started about a week ago and it ends August 18th it's our third Bitcoin sv hackathon so you can enter as a individual or as a team a lot of people like to participate as teams there's still plenty of time to sign up you have the opportunity to win up to a prize pool of a hundred thousand US dollars in Bitcoin SV for a first second and third prize the theme is to build applications that connect the world to one global blockchain because