FOSDEM 2015: Go Lightning Talks

Video in TIB AV-Portal: FOSDEM 2015: Go Lightning Talks

Formal Metadata

FOSDEM 2015: Go Lightning Talks
The Go community on Go
Alternative Title
Go - Lightning Talks
Title of Series
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Release Date
Production Year

Content Metadata

Subject Area
Point (geometry) Server (computing) Presentation of a group Confidence interval INTEGRAL State of matter Multiplication sign Connectivity (graph theory) Execution unit Student's t-test Client (computing) Metadata Neuroinformatik Revision control Medical imaging Core dump Videoconferencing Mathematical optimization Physical system Task (computing) Graph (mathematics) Interface (computing) Forcing (mathematics) Gender Graph (mathematics) State of matter Content (media) Data storage device System call Subject indexing Word Hash function Logic Query language Video game Hill differential equation Right angle
Web page Building Implementation Computer file Divisor INTEGRAL Multiplication sign 1 (number) Mereology Attribute grammar Neuroinformatik Product (business) Web 2.0 Medical imaging Moving average Software testing Endliche Modelltheorie Error message Form (programming) Area Graph (mathematics) Key (cryptography) Block (periodic table) Keyboard shortcut Projective plane Content (media) Data storage device Code Instance (computer science) Density of states Flow separation Subject indexing Word Arithmetic mean Software Blog Point cloud Configuration space Text editor Family Window
Complex (psychology) INTEGRAL State of matter System administrator Multiplication sign Set (mathematics) Port scanner Proper map Computer programming Derivation (linguistics) Estimator Personal digital assistant File system Endliche Modelltheorie Scripting language Mapping Moment (mathematics) Data storage device Flow separation Band matrix Type theory Process (computing) Befehlsprozessor Repository (publishing) Duality (mathematics) Hard disk drive Website Software testing Remote procedure call Asynchronous Transfer Mode Laptop Implementation Backup Functional (mathematics) Service (economics) Computer file Virtual machine Ultraviolet photoelectron spectroscopy Control flow Coprocessor Theory 2 (number) Revision control Computer hardware Software testing Data structure Traffic reporting Fingerprint Task (computing) Addition Key (cryptography) Directory service Cartesian coordinate system Limit (category theory) File Transfer Protocol Database normalization Uniform resource locator Personal digital assistant Password Musical ensemble Local ring
Code Multiplication sign Bit rate Computer programming Heegaard splitting Computer configuration Repository (publishing) Encryption Endliche Modelltheorie Curvature Resource allocation Identity management Software developer Computer file Moment (mathematics) Data storage device Front and back ends Type theory Process (computing) Hash function Repository (publishing) Hill differential equation Quicksort Spontaneous symmetry breaking Slide rule Backup Implementation Server (computing) Computer file Divisor Password Directory service Data storage device Field (computer science) Metadata Template (C++) Number Attribute grammar 2 (number) Revision control Inclusion map Internet forum Gastropod shell Software testing Data structure Backup Mathematical optimization Default (computer science) Multiplication Demo (music) Content (media) Line (geometry) Directory service Timestamp File Transfer Protocol Uniform resource locator Network topology Password Speech synthesis Local ring
Group action Implementation Context awareness Server (computing) Pay television Service (economics) Code 1 (number) Coma Berenices Mass Mereology Diameter Computer programming Theory Thomas Kuhn Formal language Duality (mathematics) Bit rate Internetworking Profil (magazine) Different (Kate Ryan album) Cuboid Communications protocol Information Key (cryptography) Code Planning Computer network Bit Line (geometry) Control flow Evolute Benchmark Diameter Particle system Message passing Radius Software Integrated development environment Repository (publishing) Blog Order (biology) Charge carrier Data center Right angle Finite-state machine Communications protocol
Point (geometry) Server (computing) Building Computer file Code Multiplication sign Range (statistics) Set (mathematics) Water vapor Mass Client (computing) Mereology Data dictionary Disk read-and-write head Proper map Computer programming Formal language Bit rate Different (Kate Ryan album) Semiconductor memory Operator (mathematics) Software testing Data structure Task (computing) Area Mapping Reflection (mathematics) Binary code Cartesian coordinate system Benchmark System call Diameter Subject indexing Type theory Message passing Word Order (biology) Right angle Finite-state machine Communications protocol Pole (complex analysis) Reading (process) Library (computing)
Group action Context awareness Word Arm Personal digital assistant Codierung <Programmierung> Program slicing Variance Integer Codierung <Programmierung> Series (mathematics)
Point (geometry) Complex (psychology) Computer file Code Multiplication sign Maxima and minima Set (mathematics) Bit Field (computer science) Software bug Neuroinformatik Product (business) Radio-frequency identification String (computer science) Data structure Physical system Condition number Parsing Mapping Demo (music) Information Computer file Code Line (geometry) System call Degree (graph theory) Type theory Word Invariant (mathematics) Process (computing) Personal digital assistant String (computer science) Optics Website Right angle Problemorientierte Programmiersprache Summierbarkeit Library (computing)
Word Multiplication sign Source code Website Mass
Touchscreen Group action Building Distribution (mathematics) View (database) Food energy Computer programming Connected space Orbit 2 (number) Semiconductor memory Ideal (ethics) Video game Self-organization Endliche Modelltheorie Figurate number Information security Window Physical system Library (computing)
Logical constant Demon Group action Computer file State of matter Code Correspondence (mathematics) Line (geometry) Mereology Sequence Computer programming Population density Angle Logic Histology Source code Video game Software testing Damping Escape character Office suite Window Library (computing) Physical system
Revision control Group action ASCII Moment (mathematics) Source code Speech synthesis Species Escape character Mereology Sequence Computer programming Window
Point (geometry) Functional (mathematics) Code Execution unit Set (mathematics) Open set Rule of inference Internetworking Semiconductor memory Operator (mathematics) Endliche Modelltheorie Data conversion Error message Capability Maturity Model Multiplication Touchscreen Information Interface (computing) Projective plane Physical law Stress (mechanics) Electronic mailing list Bit System call Type theory Process (computing) Kernel (computing) Repository (publishing) Window Active contour model
Point (geometry) Revision control Curvature Googol Image resolution Mobile Web Physical law Game theory Theory
Dataflow Slide rule Building Functional (mathematics) Mobile app Code Java applet Multiplication sign Mobile Web Event horizon Graph coloring Computer programming Touch typing Physical system Mobile Web Texture mapping Touchscreen Mapping Information Forcing (mathematics) Floating point Type theory Process (computing) Configuration space Right angle Library (computing) Row (database)
Point (geometry) Android (robot) Mobile app Mereology Fault-tolerant system Event horizon Computer programming Number Word Frequency Different (Kate Ryan album) Touch typing Reduction of order Physical system Texture mapping Touchscreen Projective plane Keyboard shortcut Binary code Data storage device Complete metric space Sequence Band matrix Type theory Process (computing) Event horizon Repository (publishing) Touch typing Game theory Object (grammar) Freezing Library (computing)
Slide rule Context awareness Mobile app Building Range (statistics) Sound effect Frame problem Software bug Number Medical imaging Process (computing) Spherical cap Internetworking Touch typing Circle Quicksort Endliche Modelltheorie Resultant Library (computing)
Point (geometry) Group action Functional (mathematics) Clique-width Length Multiplication sign View (database) Correspondence (mathematics) Connectivity (graph theory) Adaptive behavior Translation (relic) Function (mathematics) Disk read-and-write head Food energy Number Medical imaging Mathematics Programmschleife Roundness (object) Well-formed formula Computer configuration Program slicing Source code Cuboid Circle Data structure Position operator God Form (programming) Physical system Rotation Link (knot theory) Bit Line (geometry) Contingency table Sequence Frame problem Arithmetic mean Radius Loop (music) Angle Summierbarkeit Metric system Writing Library (computing)
Google App Engine
Point (geometry) Mobile app Group action System call Service (economics) Code State of matter Multiplication sign Decision theory Direction (geometry) Source code Solid geometry Event horizon Code Theory Formal language Neuroinformatik Fluid statics Web service Latent heat Causality Googol IBM RPG Mathematical optimization Email Dependent and independent variables Information Server (computing) Web page Sampling (statistics) Plastikkarte Maxima and minima Mereology Instance (computer science) Line (geometry) Cartesian coordinate system Sequence Connected space Word Process (computing) Personal digital assistant Website Video game Library (computing)
Laptop Implementation Proxy server Observational study Structural load Multiplication sign System administrator Bit rate Client (computing) Code Subset Number Medical imaging Different (Kate Ryan album) Semiconductor memory Googol Analogy Videoconferencing Summierbarkeit Task (computing) Injektivität Algorithm Dependent and independent variables Cellular automaton Code Sound effect Measurement Connected space Word Befehlsprozessor Normal (geometry) Collision Figurate number Freezing
Ocean current Point (geometry) Game controller Mobile app User interface Divisor Multiplication sign 1 (number) Code Order of magnitude Metadata Number Formal language Programmer (hardware) Software testing Endliche Modelltheorie Tunis Source code Time zone Inheritance (object-oriented programming) Instance (computer science) Line (geometry) Cartesian coordinate system Web application Type theory Befehlsprozessor Sample (statistics) Library (computing)
Data management Email Scaling (geometry) Observational study Googol Electronic mailing list Parameter (computer programming) Endliche Modelltheorie Mereology Row (database)
Arm Demo (music) Eigenvalues and eigenvectors Code Cryptosystem Multiplication sign Execution unit Bit Streaming media Open set Mereology Cryptography Web 2.0 Web service Hybrid computer Blog Quicksort Flux
Context awareness Presentation of a group User interface Transportation theory (mathematics) State of matter Code Logarithm Plotter Multiplication sign Workstation <Musikinstrument> 1 (number) Set (mathematics) Client (computing) Parameter (computer programming) Formal language Front and back ends Uniform resource locator Web service CAN bus Set (mathematics) Encryption Symmetric-key algorithm Data conversion Information security Physical system Algorithm Arm Computer file Digital object identifier Public-key cryptography Arithmetic mean Message passing Vector space Telecommunication output Website Hill differential equation Software testing Pattern language Quicksort Figurate number Simulation Alpha (investment) Laptop Spacetime Web page Server (computing) Service (economics) Computer file Software developer Dependent and independent variables Transport Layer Security Field (computer science) Number Crash (computing) Term (mathematics) Hybrid computer Maß <Mathematik> Standard deviation Dependent and independent variables Key (cryptography) Information Server (computing) Content (media) Database Cartesian coordinate system Cryptography Template (C++) Hypercube Punched card Pell's equation Error message Personal digital assistant String (computer science) Internet forum Video game Key (cryptography) Library (computing)
check the this and tell 1 and then tell 1 day was but and so as some of you may know Commissioner words tossing channels like some content we've talked about it extensively with Brad last year for them so I invite you to check out this the video if you have time afterward I'm still going to a quick recap of 1 it is so you know what you have to think about the main goes of Chemische our house that you should be able to integrate anywhere because you understand confidences onto only take into account the room tally things in Amazon but also in all where you want the the 2nd point is that you should be able to downplay anything for yielding dining without worrying what kind of find it is how it has to be organized it is done that and you know for it you if I right and then we want to have the good and found the large model and with somewhere indexing and search so that when it's incoming starts easy for you to define and they work with and as it is the of course we have a bunch of clients to interact with when you I some government to tools do interface and cultures clients select some other servers that are standalone and can interact with it the the main components the core layers of can store all these 3 components we have that would think about and we have a as the large of data and then it would serve system on top of all that and 1st makes me want to rub serve as you from the expected a storage which in which there are some like more chunk of data that no more than 6 in device and you don't care about metadata it's just your data you wrote it up like this and then undergo side about surveillance arrangements images just implements you just need to implement those methods interfaces federal Systat enriched the truck and then interval that you have of course I they can address for your content by me the show and hash of of graph and the advantages of working of this and blog river to address above like that it's it makes it very easy to think you don't have to worry about any emerging logic gender that at a higher level of and it's easy of course to check for corruption integrity and you can you can quite easily I should mention that as soon as long as you're able to implement those interfaces on you can do it on the back and say can have about 7 running on summary on your understand voluntarily things as well and that's what we've done and then you home you we have this task in the matrimonial unit so all the graphs there are in utero but content this it's going content in moving right was something new dating and you want to be able to reference yourcontent acts like this is late natives versions so what we use in this specific which which we use as an anchor which is called upon and we model the mutations by issuing some claims which target this common and at the end of the day you take all the claims which target this staminodes and you have the state of the you know the talent at a given point in time and almost permanent and things they object design and that's all we model ownership everything that you have 2 kids in differ is yours on about and no 1 else of course candidate descriptors access the and so then we have a search system and of that which is basically 1st 2 index everything started cheat on and so it it's a it's a going to face of gets set and fine as usual which gives you an unitary and sensory as long as you can implement this this methods on any back-end bicycle whatever it gives you an indexer that you can apply for free In chemistry and that works without search which is a system of high-level queries and describe requests which also of course has finished in the that you can work which so that's it for the readout time and now I'm going to so come a life what we've done in the past year on chemist so the 1st thing is that we included on the importance we have we can import like dataset treated force traffic data now a much better way to mentioned we have a publisher at stand-alone sound we have lots of time and use was you improvements in on the small CLI tools of thing from the fact that and then explain afterwards we used up a lot more calls we have a student who of course and we have this new shiny tilted applied directly chemist on go through compute and in and of course the town of but fixes optimizations immediate a lot of things so the importers we had them for a while but no they're like where they have a clear sky now and in their most stable and they can run automatically empirically so you don't have to worry about signing them so data from because that whatever can be bought in your can sound and the this data nice now that's been around in you know when you we have a ton of stuff about the web do and not going enumerate because a subtree point of this presentation i can quickly show you if you and she snapshots and you know how you can 6 that thing so
pursuant to me that this is the basic and explains that you have you have visited Jiminy on the left that which you can do other things here's how you
do a search on our search by on the top for example this is of the images that were tagged I go this is the consonant
you this since we have a new attributes in assuring JavaScript's saying can change everything on your palinode directly from the when you I this is that review of this year about everything about the content
this is like classic when the ice that you can select all your thing and then you you can last time then we delete them or whatever
and the you of course and this is the the status of your salary so they can see all the things going on and you can even restored 1 this is more like a stage this is good we
don't care and all of images OK we
have also a bunch of tools and 1 can enrich that just to show them they all near and so we have this new think were blocked by that is mainly done by false and it's basically a new blocks our implementation that you put on top of any other graph 7 that we have and which gives you were a more efficient political error because you get much this much faster reads unless thinking because all the blogs that seems to be should be logically together because they belong to the same value they're part of this same of the rearranged together into larger 16 in about blogs it's basically a 5 so then you can string them all at once when your what you want to retrieve a file where so this strain that much faster than if you had to say Fourier rottenness storage and the other part is like his morr news several of small blocks the ones that you would access frequently and you don't want to have to fetch inside of the pipe and as an index that you can refer and so as I mentioned we're using Doctor of model allows us to you you know run all all test inside of doctors and I have to have a nice across but this excetera new computing and in it in area have of integration this they're building Andrade inside the Trade occasionally we have Our release images and involved and they are can this time image that we use to deploy on the complete and dine with chorus this too of course we hired you for a and when that attempts to make you to do a small you know how this sounds non-shared network goats with meaning and Final to type on this keyboard so we have this Chinese form here which shows you that you should create a new window In computer and new without project and you can see the pricing the trap and your answer so you previously created interstate thinking yeah you out saying with you yeah so I'm trying to type like if you the fifties yeah the gonna answer any faster like funny this is a battery venue words you can choose and so on where you been deployed of stuff on the B 1 because I'm cheating and you should you hinges instances where and you can try and apply now it will last a full of course with the usual of dance the permissions editor right the and and is not going because this is your account the the 1st nonsense so rather than having family in the of products of course and this is in part because it's not my FIL account so there's not much more we can show that this point and as you want it creates 1 real quick that's and it works the and then you get the web UI that I showed you basically and you can where you get a sexist page where the phone explanation about how to tweak your is for instance if you want to this it's already ready like you you want to maybe issue new too because we creating the TLS subsidies value of course so maybe you don't trust us so we expand you how to remove them and add new ones then and added an SSH key to access your instance from anywhere you can do it from the clouds interface that you personally from anywhere this kind of configuration stuff and yeah that's about it the thoughts and the main and I and unknown and I will be talking about a factor for them lying in his clients in about a year and let me see if this works better what do
you think and you do it this is the background of the and
some of the theory you know it is something wrong and and the the In the end it right so now have and on and on and talk that research is that solution is also the the and in this few OK those are the question we all asking yourself is no way another backup program so I'm and tuning gonna just this is my use case I have a shared directory my home dual and that's succeeded by 140 K files and 40 K directories that's quite Eugen I would like to do backups and it must be easy because otherwise I'm tended to skip it and and rather lazy member state and it should be fast and there are several limitations I'm willing to accept for example CPU hottest bandwidth or the band was to start vocation that's OK for me but uh latency and efficiency is not an acceptable and the other thing is that most people the 1 back up they want restore and I mean that's it's really important for me so this is a citation from the uh the uh the admin then on back ups and there is quite some truths in there and so I would like to verify my back ups and that should be automatic uh and for a test that tests it restores possible and that should be I'm regularly tested and it shouldn't we need my intervention and it should run automatically adjust to your report back if restorers possible or not because 1 is not possible and I have to fix it and I'd like to be it secured so that's a integrity is protected confidentiality is protected so and I'm trusting my my local machine but not necessarily the backup location where I'm pushing my files to because there might be an administrator that so I would like to see what pictures I take something like that and so I would like to encrypt and sign all these and and I would like to use the proper key derivation function choose as central their script in this case on to derive AS keys from a password on and I would like to not have any overly complex data structures because in the in the in the in the disaster case wanting to restore or something and then there is a bargain program I would like to be able to get my files out of there without the original program so it should be as simple as possible and and it should be efficient and in this case there is some features in there that's I implemented with rest take it should say yeah every snapshot should be a full back up I would like to not just be not have to distinguish between incremental and full backups and I would like to only safe the relevant data that has been changed since the last backup and I would don't want to store doubly K data but I would like to maybe that we include additional redundancies data afterwards and the old back and should be removed efficiently does something for example that map hasn't implemented up-to-date they're recommending changing the back application dignity so our old things time out and that's not acceptable for me and for the storage of the repository are at the moment implementers local file system and remote and and remote in this case means S FTP don't need to know Michelle on the other hand but you have to have a minus FTP access over there and then the repository my designers and only 1 except when you purge all backups so this is no problem when you have for example several service pushing into the same repository and at the same time you don't get the optimal indeed defecation but so that's not necessary but nothing breaks if that happens and the threat model because I'm working as a penetration test uh in my daytime job and that it's very important for me local machine is trusted but the repository location probably is not so I would like to detect manipulation and even something like the your faulty RAM or from the hard disk on the remote site or something like that and that on several layers I mean when I cannot protect against is an administrator on the other ends needing my files that's something I can protect against would I would like to be notified of some filed a missing and yet the features are implementing goal of this obviously and it's already very fast we'll see that later and it does that application with of defined chunking very similar to what what can we sort does and I've I've looked at that but I chose another all over them that's I think is better suited for this task that uses revving fingerprints and they had to read a paper by wrapping of which is taken as type on a typewriter and there's a scanned version of the PDF so that it was very hard to read but an excellent papers should giving you should read it and then I'm using a s encounter mode and using H. Macke was shot to end as scripts and then add some new tests test huge at the moment implemented in batch and because I would like to have a 2nd language besides go for that and but this might change another time and of the set of Wikinews integration so with where with lack so every push to they could have ripple is yeah is automatically build and tested is running and at the moment and so license under the Beastie 2 calls license so it's free suffer I mean the user this is my use case from the beginning of the talk ice 170 K file at 1 of 40 K files 40 K directories and so on this is so example was running on my my laptop here it's a rather old think that some but not so much RAM but so at least I 5 processor with the highest hardware estimation and then training a repertories is really easy you just say rustic minus R and then we will do that when you find should be put on say in its and asking for the passwords the initial back up this so is this 1 scans for 16 seconds and it
takes 9 seconds and on 9 minutes and 1 2nd to 0 yeah I write everything down to the to the repository location and it does did defecation and signing an encryption everything in there that for a 2nd back up you can yeah give some kind of a blueprint of the first 1 you can specify the chart to commit ID for the snapshot Over at the last line you can see 5 9 1 1 and you can give that as a as a template for the 2nd run and you can see that it scans for 16 seconds and the 2nd back up just takes so just about 2 minutes and that's not really optimized at the moment is just here is that the of our workers work and the numbers 1st ascended stand the amount of data that has to be backed up and then there's the first one is the current speech and then yeah I wouldn't fit considered it went on and showing it to you on at the moment there and for the repository I'm trying to use kind storage so everything is referenced by the shot to a hash of its plain text content that's very similar again to can be sort and for small fires and saving them for big files of models and half a make and splitting them with CDC and save the chance and for directories and everything uh regarding metadata I'm just using Jason dopamine documents which are compressed by example at the end of afterwards encrypted and so this data structures are really easy is the rough repository structure on on the left and all the ideas are shot to ashes and they are just shopping for the 1st 6 bytes or something like that and so you can see there's a snapshot that's adjacent document that's referencing a tree and the idea is to plaintext hash the SID is a starch hash after encryption and and the tree contains a subtree and so the test file there and so some references what what content in which older is there I'm status quo is it works and it's this should not be used for real data yet but because I'm not really sure that's it's does what this what it says on the on the outside so it needs more testing I would like to presented to you please have a look at it I mean the refers to a structure might change and options really that's and this is the right structure but uh there's already of Virgil field included so when I'm doing a new revision than yeah it's version 2 of the repository something like that and implemented actually our and local storage NSF to be so but yeah there's so much room and for development is I think it can go much faster and thinking about a factor of 1 and a half maybe 2 maybe even more and like to ask you supports and of yeah excess and back-up slide http so for example starting rustic on server process somewhere and having an HTTP server serving the files that are in the repository and I'd like to include more repository times for example FTP HTTP S 3 and so on and I would like to at least for Linux supports extended attributes like a c l and so on because this kind of stuff seem to be missing from all the other backup programs and that shouldn't be so hard to include in the Jason of file the metadata or something like that and I would like to include lice shells so you can type in multiple commands so a quick demo but that's can you read that it's OK to so I'm just going to create a repository that's within its it's asked for the password or so that's it and afterwords I can back up for example a subdirectory for the sake of demonstration so this is a 1 and a half cake something like that and you can see is pretty fast because this is the storage as a September the 10th of this for me so this is just reading and encrypting and writing is basically final so we are and then you know you can see in 10 seconds so it should finish and I have many ideas where this so this can be improved to go even faster and I'm not says the snapshot has been saved under this idea and I can give him this idea as a as a temp lates and I'm then it just say that all everything's fine and you have some some commands like for example you can help the the you can list a snapshots and on and can restore member OK that's it thank you if we have time for questions that on of identity any questions what you have in mind this optimization of for example the the rolling take some code for tracking it has to look at every bites that's was what I was talking about with with Brad and and at the moment it's it works and is semi optimized but I think with with more knowledge how how go allocates things and you can look at that and make it even faster because at the moment I'm getting on my hard for and getting 100 so 30 megabyte per 2nd so the throughput something like that's in 1 French and then I'm rose small C implementation and that was without optimization and so affected choose the faster so you can even with this egoism inauthentic lingered in and and that should improve a lot if you trust the the system because of the added to at the moment for a backup about so referencing uh of makeup for from the time before then everything is a scanned and deduct and so on and so for the 2nd the for the 2nd back up I'm trusting the time stands at the moment but there is a feature request that you can for example minus minus chick data or something that so that the data is red against don't have to trust
from time stamps in the the the the of of the have and yet this just forum this just for display and on the other hand when there is a conflict any and the the hash doesn't work so when you for example when you have 2 snapshots yep yep so in and all of the I think that this was the default thank a the in thank you you for it and to all and this is
what we of
the the to look
at what it happened right
in the theory that badly was here to about uh you're doing what the Internet or a bad thing vertical yet hello ominous Alex and if you're in a work for this company called send 1 . com and I send 1 we do a broadband equipment so good been for mobile networks for fixed networks for Wi-Fi networks so we're basically on the other side of most people here in this room like I believe most people here in the business of running stuffing datacenters servers services and I'm on the other side I'm running like stuff full up where people come from to the network so all of your phones when you're going when you connected to the to your mobile network in accessing the internet so you passing through a lot of different equipments and this is all we do my company so I'll talk a little bit about this implementation of of the diameter protocol which is very popular in this environment and I'll tell you where it is used in in how it how this is used in there how did in goal as part of my learning of the language up so there is a respect for this 2 years ago I decided to learn go after rather than a blog posts from our own body or something was likened there's something of language decided to learn the language and as part of my learning of the language I decided I like 4 months later to write an implementation of this particle could is something that we use in almost every day at a company so I just opened the RFC stutter when decoding got it working my goal was to have a message rate and this particle similar to the stuff that I was seen from vendors like 5 to 10 thousand masters per 2nd they do really good was like 10 thousand to 20 thousand messages per 2nd so I decided to write an implementation of this Protocol so where's this protocol really reuse this is part of the Treaty BP's backs so everyone that is running access networks mostly the carriers they have the equipment in the network that speaks diameter so this is an evolution of the radius protocol right use for accounting use for of a bunch of other stuff so these equipment like we have for example part the subscription profile repository that in the carrier where your profile it's so basically what is your plan what is the speed that you get them your phone in what is a recorder that that all lives in there all these equipment they talk to each other via diameter In real-time also but the 2nd 1 the C R F is the 1 that gets that information when you get a new pp context you you unlock your phone the antennas are sending masters 3 at r and c down to the SK off the p Gatorade and those are generating diameter 2 of some of the equipment there down the line which are these ones so basically what the US the S P I will send a message via them the PCR and the P. Sara apple install a role in the PC E F which is the thing that we produce that we build this little baby here so it's really this is the B C E Os this runs in Lyon in in the network so basically all of the traffic goes through this equipment and this is so what is actually doing billing for you what is actually applying your profile in doing all that and this is all over diameter but the PC E. F. is that equipment that I just showed you and there's also the OCS which is doing all I'm charging so as you browse the internet it's consuming from your code and the way this works as like as you browse the internet the P C E F the nose or profile is sending them a messages to the old CS to take bites from your credits right to to take from your accounting for the reason that this whole thing worse this is part of the 2 D Pepys back in this is why some carriers today can do like all of your what's up traffic is free is not charged because the PC African recognizer traffic and said that this is what's up in will charge you in deals yes in a specific reading group which is free of charge so this is why you have like in South America is really popular some someplace that you can buy from the carrier axis for only Facebook and e-mail some people care about anything else and is pretty cheap so this is these agreements are doing these things and it's all over diameter so up I decided to run implementation go as part of my learning so this is my 1st attempt to write the diameter particle in I got it really fast I was expecting like In the 510 thousand masses per 2nd my 1st attempt this is like 2 years ago and they got like 25 thousand masses per 2nd so this started to get more interesting I did this in my basement I have chew boxes in their true I 5 just sending messages from 1 to the other these messages they look like this so I have a captured here so this is the 1st message that is sent from 1 equipment to the order to acknowledge the capabilities so for example they have enlarging holes the lodging realm and all that so these messages that they have have ATP similar to radius key value pairs with all all the information so this was a benchmark all of my choose goal programs sending messages to each other right so that that was my 1st attempt and when I was reading this
back was like well as I was learning goal Hubley we'd like data structures robbery of binary data into my data structures so I just decided to use binary read binary right and then a little after that I learned that it was actually using reflection that and out to be really slow so when I got rid of that I got so much better rates which are really unexpected for the types of it could that I was working for those guys even the more expensive was the right in the range of 40 thousand masses per 2nd was like while my little point Goal program here is already much faster than that in that basically was just getting rid of reflection in that the end up using what 0 I should be using that it took no I had to learn all this stuff you know just let reading from the big engines writing directly not using binary read and write to read or write stuff into my data structures so after all this I learned even more if you can look at the dates when I render so so 1 2013 at about 14 and by the end of the year was like already writing goal every single day just become like my main language to go and then I've got the some or cleanups I added a signal pole as other stuff and I got some really good rates now so this is still running in their servers in my basement and now I can get almost a million masses per 2nd with this little point plementation of this fact so but what I wanted to talk about today is like you know in 5 minutes just to give you a heads up if Europe still learning goal it's better to read all the documentation before start writing code right because sometimes as you can see like I started with something really simple the worked for what I needed was like 25 thousand masses per 2nd but you know a year later as I learn more about the language and how to do things properly like and it got much better so I added like some up some lock-free dictionary lookups this then the masses you have like dictionaries which are usually XML files were 8 April call a sub proper of the them is implemented so 1 of the things that is implemented in diameter is like charging applications so you have an entire dictionary with a command in water they going those comments so in order to run diameter you have to actually have a dictionary past that dictionary and then as you read a them a message from the wire you have to the some dictionary lookups to pass the message right in those pictures are actually dynamic you can create your own in UK roll out your obligation the so it took me a while to learn all this but that book tools actually helped me a lot so as I was running this step of been always running benchmarks and a bunch of tests you know from the beginning I roll all the tasks they crude are all all the benchmarks they could and I was always measuring what is that what is fast what is not about what I'm doing and then I just learned like you know reading messages is much slower than writing messages so have these are the areas you can see here that you know these was that the cold of the ATP is a really really fast but to read an entire message into the dictionary lookups and all that stuff is much slower rate but it is also much lower then writing a message to the wire but you know because of use these tools from the beginning I can actually see the difference ever was changing parts of my internal API so I could see the differences so when I spotted this was like 20 thousand now a nanoseconds per operation and then went down to 7 in the reflection of this in the overall message between might might poet programs got much better so again right tests right benchmarks keep an eye on them all the time as much as again this is not a really really popular protocol so you don't see this every day if you're not in this business of white in the access networks in what's next here is like a part of this back is like a CTP we don't have this single yet and I don't know if we're going to have this single there's actually a fork of the entire of of the 1st at a library that adds SET p to the net package but I decided to not use that and also the state machines of the diameter in this back they defined some state machines from when the equipments connect to each other what messages they exchange adjust the betting the call Renato have this in my package and this is slightly becoming the stuff that we put in the equipment so this was if you have any questions just let me know read if I'll use of these word of this is an XML file that at the beginning of when you run the program the 1st them up all the memory and I keep I index them all the ideas of few maps because sometimes you want to look up for an ATP-binding by name sometimes you want to look up for NADP by colds is actly I passed them all create all the indexes and as a reader messages so the API for running the client and the server is busy building that they should be sold you know you do your diameter handle funk and then listen answer very
similar so it's really easy to use but alright that's it thank you like if the in the the you the
and the and of the the the you know what and I have here and that it was the the the most and right now the words ways so that the variance is what groups so does it work of the work at this yeah you hominid in his it so all I know it's argue about how the encoding undergo days in our in general have but actually and how many of you have used go in arms OK so the context is there's no such thing get not going on but instead what we have is that we have integer integer bats and basically the find bad which is an integer some kind of integers or by 2 whatever and basically you end up having a series of constance it 142 divided 1 half and I did this and I was like a kid at school now I want to encode something that has a slice of we days in this case and I tried to print it and again this
and I'm occurs at this point is that really like is not really useful for me but then I read the specs and I'd I'd have a longer talk about this but basically you have to use a disin marshaller it said really interface that allows you to specify the way of a given diet is Marshall integers so I just added this which just basically taken an amount which value of that they have there was a corresponding string and then I run it and
now in words and I'm happy and then I realized that I have to write that go by myself for every single time and then a happy anymore so was upon the brown is that this code is very boring so boring that a computer should do it not you so what I did was exactly that so that cogeneration that died road is busy day I'll of how many of you how many of you have seen this common call Stringer OK so basically I just copy pasted Stringer and modified and as I changed the way I've been angry like well it's a pretty complex complex from I want to have something really simple even though I was not a faster than really care about that and what I did was I parser code I I do extraction and so I extract what were the value that I want to to generate and so on then actually generate the code and at the end I formatted which turned out to be super easy because go from to the library so the passing another leading into the jails but basically you get a bunch of files and extract information from it and you end up passing things now the thing is that I just passing is not enough because you also need you may be using things from all the packages so you actually need to use go types that will allow you to know exactly what type use uh any fire so of having a map that basically again see what that is this thing and it does get that which is exactly what then actually extracting the values turns out to be a little bit difficult because In this example the diet pill you have 3 values Austrian possible in ascertaining if so Austrian what time is it words obviously still of paracetamol what judges this well you have to remember what was the died that you were defined before because the the there's no died this back-and-forth like optical and now the last 1 is acetaminophen is equal equals plus animal OK was by this animal now you have to and that dream my every remembering what's the type of these is given in the fire so that's when built that such attempts by the way if you know that in general as they see in need for personal you have to ask for acetaminophen I learned that 1 they and then the i to generate decoding to generate the code basically all the previous process what he's doing is feeling that struck them about have a comment that I will use to say hey the why this while our bond modify this well this has been generated with this command just run it again the n I then used text and plates so embeds I get that most of you have used it's another great so that's the breeds exactly as anything but without any skating and turns out to be perfect for what I wanted to that my could basically looks like this package like its name as OPEC's names missing nodes FIL there in the structure and then for every single site in the that's the values of not I just go and generate a Marshall Jason and then for that for every dive and then the case has for every single value for the diver generate the and that little languages if you have that constant then generates the exactly same thing with the double got on the sets which turns out to be a string of then that that so it generates the scope for the for the weak base which is not specially beautiful but I don't care and that the funny thing yeah the need and even need to read it's undetermined tainted s-allele demo and so hear how my field ago which is what I showed before bill would go the so I have an 9 and made it prints sound and through bills made to go build in Iran it it was a friend 0 0 1 nite they do the Jason there's diet equals FIL and and go below In around again might just provided In general the code just the sum nonetheless there is that since this is so easy like an integrated with go generates into degree would go generate adjustment to outback come in there that it that everything you need do those 1 they'll think you see there's a blank line 2 of the 3 in the that come and still that's because otherwise there could be other during under the condition which is free and so after careful that and the last thing is I actually saw someone doing various which and assured it's a very good idea but basically since the days announcement of the there is you to go generate this you want 1 1 the command to run soldiers to go get on my tool and then a run which works and if it's a good idea what we know about a good i was saying I don't have it yeah that yeah anyway not really not sure its invariance but anyway to showed again say they do not go generates it will just the exactly same thing same pre-generated that abilities in so go any works the so it's a good have and you can use it against the way it's done and you can use it for a kid at that that in if you find any bugs just bombing thank you be if b the this the you all the we do not use product systems of the of the of the of the and you know the of of the the right of this
1 is the the work of on the story is most of the time and the the following the assigned to the whole and in the and the and have go and and that it was goes to the the thing you really have the relational data on the web site of the region in here you see on the you may use it and the time on that and I
think that there is no and 1 of the things you don't
and here
and there are a lot of things you have to you
and I and the 2nd thing that you can find the mass of the people in the audience differently and and so the plan and and and the words in the beginning and all lined up and all the the that the
is the right thing to and so on so I workers company building embedded system but the distribution over Belgium to energy monitoring the company is called the the my and 1 of the things we you do do this and get this age connections to orbits in the view so we use basically by setting up a reversed all so we call this the way you do we set up a connection to a server so that they can log in you and well so that the the people will be and so you problems with this we need to support those organizations to this good for you need to be told more seconds and his portable so I won't have different users and so uh the main goal was new here because there's always a going Windows who the the the this and don't want any dependencies that you get with the program through the use of the connection on a memory stick figure and the and so on and after some consideration growth seems like an ideal to because multi-platform support if sold dependency problem by this the compiling the that the group that was a stage library which is often not the library is also very often and it's a very cool so what do you what do you think this is the thing that's most popular like that companies use so why not so was the day life in the and this this the other 2 security models on
so it worked worked on the U mentation is pretty simple just a using this stage uh library and you run from 1st and on Windows my idea of you would like
this so much good that this is not supported and the escape sequences something I would not expect so since my goal was to make a run on of course you can fix this somehow so an angle this was actually pretty easy to do the yeah so all of
your in resources have recently we through them capture density the sequences and goal corresponding windows the equals so that we can you think that the whole system terrible I life and so so the group can think but of you and sure that enough test you have OK and the officer some looking around the phones this thing and z constant scrutiny or that other people have the same problems as the um which that's exactly what I need but it's a it's a kind of a demon so it's runs in the background it listens for connections and it's a big dependencies so you have to offer users to install its and its and the 1st idea I had was maybe it's a library can link to its and I can just use its um but it's basically a big C file with every logic in there it's like 22 thousand to 2 thousand lines of code so far all the states and stuff so nosy land nice so let's rebuild as so what I did is just made a goal for part of the C program and starts everything from scratch out actually copy-pasting growth and just adapting it to Google we and to the and uh well I guess all this or
that can be binding to do with the more you just here to can have like the species and I was like I had so uh and this is the most work good the the I want to see my
moment of data and so you can
see the non-working version here and basically the I going to make it to the in the that the in the Mrs. the 2nd part the a the you the they go so now I've changed it to
register and and so we know it's on the of limestone a speech session actually deployed acting through so to do but the so now make here and American that's the although there so just to show it works if it works the so works and I can even do like gold and it even those like every strange ascii escape sequence to clear things and and if so how did I do this and pretty easily so 1 of the goals also had I want this to work on when those but I didn't once all the crazy and ANSI escape sequence detection insights programs that also had to run on Linux so I wanted to keep the program I was going to use small and if people on Windows where the use it's so be it and FIL group can yes the fact
that it very of so yeah this
this basically what I want to go it's it's just 1 function and this converts and this is the function that calls this is the thing that happens on Linux so the beauty of go interfaces again just all sets and I and return and writer and everything all the magic happens in between and this is what happens on Windows and you had so uh basically can see of the list and I really no something Sundance and using this process so if you go all the way down and I also learns that you can have in this model open of journal so users Cisco also a maturity of anyone who is familiar with them and made 1 problem find contours was uh um that um goal as new um union type so a lot of these new actually 1 of these operations there'll or kernel calls and windows that use the union died and that was something I had some trouble figuring out how do I get this to work so there used to be a little C code inside of this fall and I managed to get rid of it all so I'm pretty proud of that um and thank you when you think about its interface type is also a union died and that is basically what this here so there's a further info which is a special character that can be boasts unique taxes and the normal it's this character so use this then this function which is goal scream before in full which is a very um need its function because that is actually the thing that's clear screens when you restore fetus strange thing going up and down that uses the union so what I did is just the interface and it works which is pretty surprising so I think I I thought it was a good idea to share this with a world you can use interfaces as union diets I don't don't know if you look for it on the internet you don't really finds all information about this to the this yeah um I know if you're familiar with union but this so basically interface is gene just algal um I don't know what this type is can be multiple things um and that's also basically where units and there's a lot of talking on the Internet about its goal doesn't have a union types there is even a big repository where they try to do think that unions does um you here the the yes and well it seems to be an error said I don't know how it works but it seems to more it it and maybe the the projects that 1 the the the rule of war thing you with the projects that you can show what is inside your stress can actually solve this and probably it will work because basically what you false to the windows if he feels is appointed to district so if that works then it's probably just the same in memory and so will probably reserve the biggest thing that's point to be in here which is the unit cost shirt just 16 bits so it works it that the and questioned and in the end thank you to the laws and the for 1 in so the thing itself what
it would be the best value represented by the practices of what people the the and also to that you know it was directly the you want to use the law of the it was clear that all of the point here is the theory of mind and the quality and and this and and try to get it to you in millimoles on the also where the theory that all you want to think of the great thinkers of this 3rd and the 4th the people around the you
know as oral what is this what's missing here while mirroring of
the original version of the book and to the curvature of the holiday and you might not like that so all the things and this is all wrong because of something because the resolution of the problem in the presence of the end of the game is it and the projected taking him to
some of our there on the
really plants because because it's late and you was something far no yeah there's a slide of OK and rows of go on and so I gave a talk recently of often go conference in New York and was recorded I think I watched it could be terrible but that contains all the all of the all the main information on a given day a lot more detail also wanna say you can build apps today in go fall and it's hard because the build system complicated and I really just so drop you and and let you work it out whatever modified you need but you can do it and there's 2 ways you can do it 1 ways you can build a library that you can the news from job and I we have a tool that are given a go past it present generates Java API for you we need to use it directly as J. Elias S'wigra those things others the configuration is just all you useful touched appear and are in use them up and the right you program job which is not what great but could be very useful if you have a large body of code you ownership From this over all in here and I suspect that is the main way people using the sentence itself so primary motivation to getting the of gold and others is all the way of doing things we just write your entire up and go up and what you see on-screen here is map as the but nicely hide anything offspring of cheating but it it's not a very interesting out of what it does is it makes the screen and draws a frame rate in the corner but that's what it does so you can see here we main function where we start and we fall into this app active this part of mobile positive which does a whole bunch of terrible things don't that our including setting up draw function which gets calls all of C times a 2nd after the draw functions flow and it starts doing some of the old stuff we have a little OpenGeo Roberts a very simple 1 that exposes Evangelia's to which is the thing you can actually rely on using a and roads force years 3 but are only 10 % from sports event is that maybe 1 day so are more user clear color we set to red it's an RGB a set up 0 1 0 floating-point then we clear the screen all we separate the that and that forces remakes of red and we have these little debug package to draw the frame rate the comet actually uses free type good drawn what texture mappable of school at nonsense that no 1 ever wants to think about how so works and kind of fun thing I really works like this and the so this is a a dollar that have so the down back this as well so if you compile locally if you just go get the packages and used on a on a Mac are you can know that you can pretend it's an requests confined from so no example very similar to me now I'm using up the event package which comes in for the trip so of this reduces another our function which of handles touch events and all those years when gets vendor just principle and if we run this'll program knowing a blue
screen because I think there's no number Europe until of US so enough we click and drag around screen you see a bunch of movements coming up also in emulating touch events with the mouse which is a great because you can use 1 of them but it's sold out so that works that is also a selects an X X 11 back and said you cannot know which this whole thing so you can kind is those and when Nigel people's grace of so you can start writing perhaps in go up but that's basically all you have to work with so this cup is kind of it's kind of a little work up but you could imagine running a game and it's entirely possible of and you have to sort out the build system which is not easy out but we could make it easier must plan . 5 4 going to give you tools which souls is problems for you are pretty sure we can do this up at least for the native apps we can do this up for anything we're trying to build a library to be used up by a job project where the problems of trying to interface our you go project with the job project which would be possible if everyone but those is 1 way of doing job on an wrote it turns out there are many and so this is X a kind of a tricky problem so a problem 1 about sold by 1 . 5 will always be able tell you at least 1 way you could do it of William all indicate library supports so everything you can see in red indicate that should be available as package some have go from all users of all that up to get a little work on the bindings for go in the job of our we were not going to get the complete type system not dealt with in a given novel of that that you can build a practical package easily and we're going to have the beginnings of Iowa support are contributors to really quite amazing knowledge of n-dimensional it's kind of tricky because all have is a dollar not harmful which we can build apps with i have an app on an iPhone and bring with me because he does demands of the problem was that is our starting and the end of February of the App Store will require you to ship and 64 binary up to ship out and we probably 1 of down on 64 ready for 1 . 5 given that we would have Linux on 64 already so of 1 suspect in reducible women have something usable shortly after 1 . 5 and I will have a lot of thought repository somewhere you can play with 2 1 . 6 the labs with some very excited I was supported by consider thought the most useful part of this project you can write a library and go you can use it up on your Android devices are and you can use longer I was cries and on a certain you can keep the same physical moving around up the so we Democratic bring with me is of this exact program running on on on on on on on all locked eyes and so the method is his pack is designed to hide away the 0 the Android I was differences which is of which there are a lot of so after that of monitors libraries of probably probably like motion sensors of 1 . 5 given we have among the freeze period up work in a simplified UIC games also edematous a bunch in the Gotham go talk and this is basically like a 2 D sprite library animation library as part of this the composition layer which causes incredibly complex and going to be a lot of work are we have the beginnings of that so you can you can take you can take a little a sheet of textures and you can map an arbitrarily on the screen and all this is OpenGeo on the hood and you can use affine transforms to play some until relatively straightforward go and all those under the Treaty of all that is size on the played with my have them and then you can use to try them out but that's it but if of president's yes are you mention to use the number in the library by looking at this from the end of the yes so the same tool I'll be generate you objects C minus and we may we may even have the ready by 1 . 5 of because hundreds working right now is on the use of that that's that's part of the point is given as piece of go I can generate job 1 is more objective see what all of them so the yes yes a it differently as possible so we have thought about it but it's a sequential within the bandwidth to work on it was in this analysis and but I would love someone else to what I want to build something of itself any
other questions for so that yes the goal so I think of what it is designed only for helping helping
you debug app design this was not in the building does not last because it turns out of the kinds of user kind of you while I was you want the desktop and otherwise completely different so that you could only use it for getting a job context from range of the touch of a library would be very awkward used for mouse because you want now spot was all sorts of things
so it is very much on the role of mood
usable and I'll fix bugs people wanted was meant as many models and also in using opportunities in between the paper that in on the image of the women in his experience yes I think it's from around the world and array of of how it got going and so and so have on it and is that if are think that you have only the most of the on 5 prime
and I think goes slide is the boring so made the little changed it and it's like it but it and it is the same for all given here the number background for you so what is this thing I cannot pronounce since then accused to school parking the Greek there and it's a really like 0 the animation device such to you rotates and you get like uh you get to a small movie and it was like that essentially is this you have like in this kind of circle and you have different frames for each circle for each in in in place for circle so you get that the and you should get like and results like this if you got it and you look like for only for small frame so you have the the illusion of an animation so what we want to do of course is that is to get the caps a which is an animated gif from the internet and uh to make something like this which is essentially the uh kind of like a then is the scope you can bake you can print this out and cut it with scissors and you could get like the the exactly the same what kind of effect so I know how I did this is a desired I was using here I use the images on the image library from this and go and um and then show you how how
I did it considered the In the back then so again the so I mentioned some of my course on math skills here uh geometry and as so you just open the final there is a nice finger which is called give me called all his actually takes an animated GIF and it divides it into inter-frame so you can get each image in a slice so we have a slice of all the images Virginia so what they did is that and I got no I get the 1st image and I tried to find which 1 is like the uh the width of a or B height which is the biggest and this is my by the this is where I'm gonna put their being is because what we want is to take each image and drop it at the end of so that in the end we get like adaptation that offer features of each image so um obviously we need to know how big a is how big is it is it is it is again in the box where it could be the rotated image and we have like currently we have a slice length and then obviously uh that the circle length is gonna be how many images we have and all these boxes and because we have a circle length we can find out the radius is this amazing formula um circle length of divided by 2 by his views on the radius so given the radius so that we take care we take a point wearing and put inside the generated the image so this is going to be the circle origin and once we did that we are we take we need to find out the angle of rotation for each image is are essentially have this is what I'm doing here and then there is an output image so we have a like a new energy image and then you have like uh the box but it is a boxer to to generate the uh all its internal structure and then for each for each image in a sequence and we calculate the the position a for for the boxes like like what where exactly is this Bob going to be in our generated be generated image was going you 1 here 1 year and so 1 across a circle so this is God's complemented the and uh we rotate this image using the as being uh library called graphics the this some this year and there because in the in the standard libraries no rotates a function and I don't know how it works so we have to have an action but does uh and uh what it takes to bake some optional for an angle uh so essentially rotated by right given angle for a bit the dust that he does liquor metrics translation I don't know what's formula that it uses for about and and the end you get uh get the drawl uh you can draw this this image is rotated the image in the correct position so finally once you draw each frame in the generated the image you all to to now to the Aegean and you get the the round thing with gaps or whatever you want to animate essentially the best thing to do it is take uh gifts which has a uh a loop to it so essentially the 1st frame corresponds to the last frame of the image so you get like a rotation is times like trust region so there's a there's a nite the made the friend uh which is called the perfect loops there a lot of for animated GIFs with these kinds of different give swept have like a continuously Michigan contains will be so that's it that's a very simple of the very simple sleep at uh home how we can do your own and is the scope and and I am going to show you how it for the
protection look like because I have amazing uh had so if you if you if you took the in my head but not with the same here and here this is all being here in the lack the that the the in your visual cortex all a lot of work in the form of q you don't need to write something about contingency and you would so this is what I actually do here because all the human the yeah this you should you should I mean depends on how fast you know you only so how far from the the the challenge but you can also movement this of of the and this is should you want to find out more about is the system and the old for within the schools and there are there is the mean of all the components of the and I want to I want you to have we have option status of line and that's the 1st thing I want to come in and this is the sum of the tools and that you will lose your the you change the the number of the of a client-server over now in the this was in this what do you thank the we so the ones and
I think that the at the end of the sentence the that and looking at it the end of 1st
the that French so no the calculated from the the thank you
yeah and and no doubt about the going and about 1 hello everyone and I don't down tied to be quick and loud uh visualize your hand is you know what the Google App Engine is while everyone this was your hand is you don't know what good but good happens in is 1 person OK I tried to be very very clear so 1 person and so this is the cerebellum stance
app engine is Platform-as-a-Service so you give a card and it will the code specifically web services so this it'd be in it's it'd be out and you can wipe your of your code either I'm going to knowledge the experience going by some and so really you would think that you can uh lighting go because you can set up and deploy application with the fast with that so 1 of the main pull niceties for me for my seeds of developing gene is about the provisioning here I mean auto-scaling if your traffic looks like that and your poor reasoning is the fixed and schools don't like that you won't be allowed to on the spike and this is bad so you can add more money and it's very expensive but we that you can go rows of by and the school some kind of syllable to the website talks about all your your website and you on the on the event on there a mixed bag and that is that that
so uh that you that engine instances of your application z is on it all started on the occasion of the kind of 2 to response to your optimal traffic theory but you could be a request that come from the world it goes through 1 of the instances it can be any 1 of instances that's why it's very important so instance the the state less the and then the there is it perfect some that things about us the value of the services that are provided by Google bicycle infrastructure unless of course are in number of specific cases you know In stance is not you that all sources of fossil quest for example these are all the sources of use of all the cash no request at all and is very fast and also if it's a static kill firelighters yes and CSS it should be and that it should be flagged as in you know in your application so it will be on the value of the yen like uh static 5 self on also distributed and very fast and he has no cause for your abandoned instance because you from the processing you that all the nodes so there's a very nice feature called it's catch you get some point usually go Computer go has it should appear with both with the appropriate thing to be hit has bombs for that that the catch then it would be cached and subsequent similar harm to request we have that kind of response like you from a city and I can say about that is that we would and also we should doing some kind of a clothing downloading former Google local so and you have some kind of direct connection it's also no longer going on and the rest of the time of course that you could be goes to only instance ask of them in so that the star which is sequence they devices for some kind of information and the effective of feudalism and MS unless the that values the men cash which is very very fast that's falls amid the global infrastructure of of up and using their way out hide voice this of course of more complicated inside and you are so what of solid usually when young and when your request takes 600 ms to our sponsors that is not great uh we can't say because of all of the LPC because of that back you would and you can use apps that thing go underlined by someone who's to sees the foot of and decide if you can do better I highly or command to to all of you which 1 tools to use up engine to look at the talk by David high-performance apps we go on happens in and I to from this talk these uh these with a follows here you are the bad the request because it will take for 100 ms to Paul says because of a few FEC codes so um you can cut that in half by distilling somewhat like I need to send a confirmation e-mail about that action well maybe I can do that later asked Jose ACT theory Bones and usually for vector and if you do catching I mean for example uh you out of fall of access to the that the all this you can make that so there's only 1 access to us the same thing and get the same way on uh much bigger he's here you have same and the minimum 70 ms that's another that I was sponsored i've than the founder of the of the beginning and now that the thing that food prices is available in the little vesicles solids basically the same features as well as that but you don't have to install inducing and it what we got less than a language decided to use I skip that to about about life illusions our I will go provide the light well is to access this and that and the bottom line is that the same for all the words is because uh vh the as let's libraries available container because of the language so it's nothing to do with that uh only because it has been implemented and later on mappings in OK I get some sample absent 1 is a fortune teller can show you like the move and
if I get some connectivity which is not contained yeah
yeah I actually implemented also as we live and implementation so as to compile as video so cells Fulton telling in going tonight we you will get news it's analog and some undergo coming goes to that study you might see the light you will get you will get 11 this OK so far
fewer and a few figures uh I said that some of best it's not based on the use of things uh 18 thousand requests and leads to an increasing waited for a long and varied users create the things it tells you to in Asia 2 in your 2 in the US so we can get a latency of about 1 felt the release guns as Mozillians available that the Republicans so that means sonified like a 100 million for measure by my by my injectables client side and there's not a huge difference between their presence on images is on the at and loved know OK let's give them and those all interesting for many will require some CPU walk and someone you it's 1 uh intensive I give you a bunch of numbers about those numbers and the number of can be and you drag and the problem is please please find 2 subsets having the same some and it's not freezing and then you can look that up on the Google codes and from 2012 and is a nice algorithm which a which is a long effects fats and put them in in the last lap and when collision farms you solve the problem so subset politically around here are the potato and exhibited but they don't some for was is 2 thousand 743 follows this solves the sampled problem all right so for the CPU and memory intensive task uh what does it give I was quite surprised to see that when I was deserve to problem solve well on my laptop and PHP is actually the fastest the germline go by the same and by phone is very very slow I could not answer you'll be fine admins so that's why we have to when I won the same mongolism online on engine the we can see that some I'll go response generalize the fastest 3 times as fast as girl and PHP and Python because of the constant too much minimally too much CPU and there are 0 so there's a compound words alone I don't know if the it's normal because it's quite an intensive task but it's a shame that observe auto-scaling goes and a on doesn't catch on that node so it doesn't waste from the Nemo most of the request and that failing and I guess
everybody knows dewclaws food does know was people is a few people and my households on who does not know what the is it's an excellent tool to bend to and to measure in how you know prevent them from the ICA definition of that and FIL 35 % of the time in my goal programmer was spent the waiting now I think it has lapsed and so % of the time was spent their inheriting 1 the 1 them numbers so I could make some enforcement and I got a very nice a speed that's I could be that the buyer for the for the effect of OK it moves away all the web applications are more like a business application when you move you display some nice said until you get some data mining the innovative by and you you you've memcached 2 guys that so for this kind of application as a means the and good answer about quite fast by bison using this lower value 1 order of magnitude almost learn I I did not have the time to implement same PHP because the PHP does not have the nite in the light will to access the dentist of so instead I would have had to on some FTC goes and I didn't know delete so if and the in your company should decide to choose the good or PHP or python you will have the same deal about we I spend some time to to white some FEC codes because of the narrative library is about so why you would just shows go on App Engine because you can and it's way you set that was made available by Google and the currents that are very fast you can have that problem with Stella pulls for ones with a lot of liabilities you can think of to a faulty 50 succumbs to learn to stop and that's the way you before that you don't have that we go programs and if you have a course of the native control go Itten's antennas is and the tuning is very good because you want to to the verb and test on your look at home you type the graphs of and you want to be carried line you died go people and it was a really nice but of course you won't get a phenomenon phenomenon speedups fully aware that because of the zone that on see usually isn't dominated by the instance itself also of CPU of CPU cost of the down here there are many many other factors 5 for example in my lab test and the hiding in interictal in as you know it was 10 times the um uh steel wells US just because the instances happened to be in the US and so on and so that was the fact that if you if you are already very efficient in general and he had been based on I wouldn't fully commands a switch but of course if you like you go and you want to to choose go do it because it's a very good idea and also you can mix and languages with modernist nothing prevent you from having 1 model of still have to go on and there's a 1 in general and the idea of pSp Wheeler nicely intellect
Room thank the 1st and the the point of this of this you all metadata
it is necessary that the this is the part that is the size the of the year after and that was the only 1 here and you know all the and the ground so it it takes this that is that is the of the you use all the various studies in the mail can was the only of is that it's the Little will not we have a size or understood did you have the best of both of both worlds between the compute engine and I things in in the management and those of so you have 0 to scaling icing and what I mean I use the model scaling includes you incomplete engine and it works and I thought it was visiting unmanaged again that maybe that's not the of the yeah 1 of the things that I is new the the the the the least is the work going on this and also the of the 1st and the parameters of it is not this is just a couple of years this 1 will be
for forward again in a the and if it's not on the list and I really the recording so they much honestly say it from the middle I'm just going on the other then you want thank you and
the uh was used in the I know what it's it's uh it's still factor from the last 1 I did was and you can do In the around small so this the reaction here in a minute it can I scaling and you you know that this because
it works but not
much uh and and the little easier you all well now I don't know only am I really sensitive well yes um so this is possibly going to be a bit of an incoherent ramble because I have this is sort of this is about code today I was the last couple days lighting food told my colleague will make an eigenvalue insecurity millions of our hybrid cryptography and most about research work on these we can't it's doing baby because it's very very quick to build up cryptosystem using because Open SSL finding and z because I'm really much more known for my go these days have money the which is that we so it's sort of the contrastive quite nice to not cup something unit that shared crypton in the web in bed so and to yeah flight up this morning after I'd been out last nite Canyon king with some people it occurred to me with that the time to learn how the cypher streams stuff flux so this stuff users with 1 small part as so am this is the uh this is my with crypto demo is actually the stuff I'm gonna talk about and I will actually figure out my blog and then the code just sit there and you build a C have to list based web services that happen to just like the critic arm and because I like to blunt things because it's part of how I
am I getting on was advising these nasty to book which aspires to be about guy the people said the 1st chapters really tripped of a few minor because it's 60 pages of how world and encryptor this is down always say over TLS um over UTP and things like that I mean basically it teaches you that go is a really good language to mark we could and it looks so um so that's it that's the plug on yeah can't get get to that and that and show him a somebody's readable under which you wish but I wanna talk about because um idea that like an hour and a half's sleep since um Friday as um which may not be such they so on the 1st going to really nice language to like web services in micro-services um most of the mean I I know if I'm doing you have done with stuff in the past 5 you need something maybe like Sinatra and in fact that this work is sort of a very distant outgrowth from a system of HSBC a couple of years ago which is a two-factor encrypted database sonata front-end um 96 and so not to give you very very simple so CSL allows you to just basically have a couple of methods they get called from you've got this way that I was expecting because this is the 1st time I've ever bothered to check they could be saddened I've never bothered writing what's in that stuff before and is expected to be somewhat more painful and I I discovered this is cricket ability and then when I was building with Sinatra maybe and after was a huge shock however and I have to use once will cheat I'm not actually using the standard library safety CP standard we need to understand that which is affecting fast give me label style you lies a must either the people who think that they want to have medics matches in here there well they were variable is that they've been check against may get things this is how your life actually space work according to our seats and we can automatically you know from what you elect and basically here I got an application allows me to registered user I'm a user is able to register they want to do this and then they are able to store files you will have come into the interstitial in in India to hide the creator of the set and I could be in the context of the state but can this that that is the belief that I have a little flattered swelling and time um so please forgive me um yeah this is that the ones at the interest so in this industry and basically we ask our server with a simple tasty to be get could you please give a public key now you can do this with TLS TLS basically giving you hypercube take for for a base giving you know control of hybrid cryptic because you do this public plot find it handshake then you tell each other what algorithms you're using and then he spoken AST normally and st actually used too most to the on trick but it's all in a single tunnel you can't coupling as a lot of stuff we do exactly quite important field to the couple um for reason of going to state the patent pending and this is awful I've patents spending on patterns as I Sunderland because the truth of a some kind of arms hashing material up to the kind of uh let's
see so I got this and that nothing is certain can happen in crashes um I basically got the still conversations going on the client but the thing that's the client so that's let's say we basically have the same conversation the client asks for the public key it registers user this actually means that that the server creates a random user like give back to announced a cryptographically secure abandoned be number stuff which is great because security through obscurity is the best way to get it unintelligible HAS the items in the back to the server and were going to communicate from then on using that AST whenever we send any large binary stuff and that will be the big watching about is this something I figure had the so in this conversation we go through we gonna use status we can get that and that's actually dissenting cryptid on Y so that's quite simple because the light is that individual greed and to know that said you again what kind of in long but so we lost this said this information about itself that it could because of the patterns we go and we created some stuff that I'm compressed file the uh and not to that we created and stuff and then we come down here notice that has been these these down contact lenses everything of latitude so I now seeking at a place like as you can see this is actually it is I use to identify this is a standard URI parameter that's because this is actually a resource this is how it should actually be done if you gonna do rest this is a resource if you want to access to user that is the user you would you gets inputs imposed against that and if you're going to use a post is because you want a service station back in processing and he'll put it to you like to go to resource to replace the existing 1 with this stuff is dating easy to do and pretty much every RESTful library on the planet gets it well just doesn't follow any of the other people so here we're getting back to user status as a set that site created online we to critique it as we perceive it with a symmetric key that we gave to the which is no such Patriot-creating but it can be useful kind of exciting things OK 2 minutes that's fine said the if the there's lots of stuff in here that's actually interesting have based but is 1 really fascinating thing as a say this is this is the idea that struck me at 5 o'clock this morning and led to refactor that made us think we wouldn't have any actually carried told at 1 itself at lunchtime and and that's the fact that we got me signed history what it basically means is we can take anything that's of ITER and we can wrap it up in a criticized and just by lighting to it we can automatically have the content in cricket fullest so in that case is 1 the lovely things about the standard library is the fact is so much of it is written in terms of readers and writers so it's literally just like having a crypto me to where you plug it this 1 caveat so this is 1 thing I can't figure that the most standard way in which we will weaken when we are doing in cryptic communications normally we have a thing called the initialization vector without which we can't actually do Africa this is something you can send around so the public doesn't matter it doesn't compromise UK but normally we stick this the front of the message before we send a message is used by the transporter the way in which the cypher library seems to work it seems to complete Checkoway away anything it's already gone down the lighter because I'm using hated response like it's and basically dystopian using an automatically incretin which is amazing good fun but it seems to check my 16 bytes survive away I have to go ahead get past until I can get past this what actually happens is I stick my find out my final gets transferred perfectly fine encryption what get stored differently I honestly packet gets sent back encrypted online and in garbage cans help because having the the IT so apart from that I would say that this is cite the streams of fantastic In this so fantastic of almost tempted pulled into the which doesn't have the concept of present and His releasing the necessary is really my life means and very late this code its own get help but I will be fiction above it seems that the go-ahead fix it basically shows you have to RESTful style service where you are in charge of lucrative where you can change your keys on the fly and if I it is I these things users but really did nodes every identifies a node in the notes face the I find pictures something like can um and I think something like 16 bytes or something is the node space so you don't really have to worry about getting rid of things I did invited with him have applied who 36 dollars whenever the bio like chapter 2 which will be about this stuff yeah the thank you and then you know and
of the data and so on so the next year maybe 1 of the the unit and