I'm Bob Walker, I'm the project manager for the Maglev Project at Gemstone with me on the stage today is Alan Otis, principal engineer and we're going to go kind of in reverse order to the folks that were just before us. I'm going to talk a little bit about status and then turn it over to Alan for much more technical dialogue. You know I've been thinking recently about the evolution of object-oriented languages that's taken place over the last couple of decades and it started dawning on me that there's really been no analogous evolution in storage mechanisms. You know it's in 20 years ago 30 years ago you'd be writing your code in procedural languages and you'd be writing to read data from you know tape or a vSAM file or a relational database into a flat basically explicitly defined record layout where you had to define you know every single type, every single length you know count all the bytes and it all had to fit in that place. Well quite a long time has passed and we are still doing that with our objects. The tabular schema of the relational database fit merged quite nicely with the idea of you know explicitly defined areas of memory really pretty easy mapping but as object-oriented software has evolved it's it just doesn't quite fit anymore. You know you need to go get the state from the relational database and assemble your objects out of it and if something's changed and it needs to be written back to the database well you've got to kind of deconstruct that and push it back to the database and what has that led to? Well that's led to mapping frameworks and mapping frameworks have been around probably as long as object-oriented programming has been around and you know there are plenty of them there are some very popular ones today that do the job you know fairly effectively from what I understand although you know mapping frameworks don't come without issues there's there's a whole spectrum of them you there's code complexity somewhere there's additional CPU overhead as a result of the mapping that has to be done there are constraints of having to force fit your object graph into fundamentally a tabular structure and there are issues around translating relational associations into object aggregations I mean there there's a whole litany of these things. Now no matter how deeply hidden or pushed down in a mapping framework the actual mapping mechanisms are there's still a fundamental mismatch between the object model and relational schema it's still there and it impacts the way that you think about designing your classes the way you design your applications no way around it so why do we continue down this road well for one there's a lot of relational data out there and the need for mapping to and from it isn't going to go away anytime soon right once somebody once told to me data sticks where it's thrown so it's the truth but what if you could use a pure persistence by reachability model instead and do away with any need at all to flatten out your Ruby instances and stick them away in a database you know just dispense with the mapping layer completely you can if you use maglev maglev gives Ruby the ability to transparently cache and store potentially huge complex graphs of objects without the constraints of OR mapping in maglev your classes define your model pure and simple the model is the scheme of the application no need to you know create any kind of n-ary mappings of any kind if you just don't have to do that you don't have to define cardinalities associations you don't have to think about that ever you know unless of course you you well jumping out at our point what this gives you is less complexity less code you have to maintain and it gives you the freedom to think in a purely object modeling frame of mind without having to pay any attention whatsoever to you know is this really going to map well into my relational database and for you know for for relatively small object models no problem if you get into something that's hugely complex graph of objects that's where the mapping into relational database really starts to become painful when you start having to you know custom right you know outer joins in this sort of thing to reconstitute object graph so with maglev you can continue to use your object relational mapping frameworks to access legacy data it's not required you know of course we understand in a heterogeneous a world of data there's going to be a lot of places you might get your data from you might do a W get you might look it up from an old v-sam file you know who knows now part of our vision of course is that anything written in ruby will run on maglev and that includes your mapping frameworks now if they include see it might be a little bit longer but we're working on that and you'll be able to use access your relational databases from a maglev application just as you would in any ruby application so that's kind of my spiel on our mapping in maglev I want to move into giving a status of where we are today we've made a lot of progress since we last spoke to the community at large the persistence of ruby objects is working very very well you know it should the underlying technology has had it working well for for quite some time we've been mostly focused over the last three months on getting the kernel and core libraries implemented and implemented correctly because we really feel that if we have that done right the standard library will really start to fall into place now I'm sure there will be issues along the way but nonetheless that's that's the approach we're taking we've also been doing a lot of work Alan has in particular has been doing a lot of work I'm making sure the virtual machine and the bytecodes are correct and that we're parsing and compiling bytecodes that are executing you know by the criteria of the ruby specifications microbenchmark execution time remains stable we certainly haven't lost any ground on the microbenchmarks we're in some cases a little bit faster than we were say four six months ago these are due to optimizations that are being made you know the low hanging fruit along the way we haven't sat down and done a thorough performance optimization pass you know it's just not the right time in the development cycle to do that there are still a number of unknowns in front of us and we will do that at some point we are starting on the standard library and as I said earlier if we feel we feel we've got the core library implementation done right a lot of the standard libraries should just run theoretically we'll find out how are we going to know if it's done right well ruby spec right ruby spec tests are going to tell us if we're behaving the way we should if we're erroring out or if we're failing some of the specs and we've been running those really continuously and back in august I started tracking our progress on this and the one and only slide that I have here is you said the down page down key is this one now remember these are uh uh the core and language we haven't started on library yet so back in august this is where we were we were passing 1809 you know it was an achievement at the time it was great 1809 of the expectations a number of them erroring out because we're still getting our error error we're still starting to throw the right errors in the right places some of them we're bubbling up out of the underlying technology and coming out as something different than what the spec would expect but the specs have been tremendously useful in guiding us to where we need to do things in september you can see we took a pretty good jump up in terms of what we're passing in october you know yet again a pretty good jump and the goal is you know there's something like 15800 and change expectations I think currently in the the core and the language suite and it's not that we are failing to run those it's that what we are running against is a more outdated version than what's current up on the ruby spec project one of the key things we'll be working on as soon as we get back next week is is taking care of that so that we've got you know the current version of m spec and the current versions of ruby specs running right now next slide so we're not there yet of course but we've made I think tremendous progress in the kernel and the core implementation we're continuing continuing in that direction we're totally committed to adhering to the specs and you know hope to start feeding into that process as as our core and kernel stuff gets more mature now over the next few months we'll be completing the core libraries and filling out the standard libraries we've got a design effort underway to determine what the usage model for the persistent domains should look like to a ruby programmer and we are you know soliciting opinions from a lot of different people and I'd be really interested in hearing your thoughts on what you would expect from a ruby object persistence basically the way it works right now is you can bind any kind of object into a class variable let's say a collection of some kind and you can stick all your instances in there and anything that they can reach will be persisted in the repository by reachability you go in and dereference to one of those guys and you commit it it's garbage it's really pretty simple let's see we have we need to start adding in support for deployment and migrations and you know tools for for use of the product so we still have a ways to go then the news today that I'd like to deliver is that we are very close to having an early alpha release and we are going to give it to you know a fairly small group of people who are a interested in and you know be kind of have some insight into what we're doing we'd like to give it out to everybody but you know our bandwidth is kind of limited if we did that it would be so overwhelmed by responding to everybody that that it would be kind of hard to to get our regular work done however there will as we go forward and start to widen the scope of access to this will widen will open up an alpha release to a much broader audience will open up a beta release in even larger audience and you know somewhere in that timeframe will have all of the Ruby sources available you know for check out via get repository and we will need to work out how you know we feed that back into our our own processes but you know once this is out there you'll be able to code in in the Ruby code that we've written your Ruby code that we've borrowed the small talk code if you care to dig into that it'll all be there where you'll be able to see it I think I've already gone over time so let me let me close out by saying there's still a couple of other things we we're going to start soon establishing a channel for communication with community we've been so focused on just sort of getting this thing ramped up that we haven't been able to pay a lot of attention to that and we have a lot of work to do around things like Ruby gems and rails I mean that's still a ways off but you know fundamentally we're focusing on the core language and getting the language and the libraries implemented and in such a way that you can you know use Ruby object persistence you know outside of the rails environment rails will take a little bit longer anyway with that I think I've gone over my time so I'd like to introduce Alan our principal engineer and thank you all very much so is this working okay I hope the microphone so I'm going to talk a little bit today about Maglev's execution technology as you may know we started with our with gemstones mature small talk product which includes both a small talk vm and object persistence and we've taken the strategy of compiling small talk to or compiling ruby to small talk byte codes and adding new byte codes as needed and we we're reusing quite a bit of the small talk class library but in a controlled way so that unless it's explicitly coded in a kernel method that you're transitioning from ruby to small talk you won't actually inherit all the small talk methods automatically so what does object persistence look like we have a a maglev vm here and you can have many vm's on a given repository we consider the disk objects to be the repository and there's a shared memory cache so that multiple vm's can share you know disk ios basically what does that mean to the programmer basically the very simplest model you might have for persistence use case would be to have a top level instance of hash which is persistent which is actually the way the small talk persistence looks there's a very top level hash which has reserved object identifier to always keep it alive and that's committed when the database is initially built and then you can add objects to that hash and if you say commit the objects reachable from your added entries will become persistent so if you were to access some element of that hash the objects on disk would get brought into the shared memory cache if the if the disk pages would get brought in if they weren't already in and then the objects would be copied out of disk pages selectively into the object memory so this is a copy on read design so that a persistent object will be in memory where it can have a memory address and look very similar to a temporary object so then if you create some new objects and make some of them reachable from your persistent objects the objects you modify over in the persistent area will be put in a dirty list for you automatically by the vm and those dirty objects will be transitively closed to basically make the new objects also go to disk and that's sort of how the object persistence works now the rest of the talk is mostly going to be about the execution technology and so fundamentally we're getting our speed from the mature small talk vm and what makes a small talk vm fast is that it's basically executing very simple bytecode operations and those are simple enough that you can make them fast so the return from method bytecode for example assuming you're running with our native code generator is for machine instructions the message send if you're coming through a part of a message where you've a part of a method where you've executed once before and so the cache for that send has been loaded a message send with a first level cache hit is 20 machine instructions now that send is after you've already pushed the receiver in arguments it's a stack based machine so you've pushed the receiver in arguments and then the actual send bytecode is what gets you 20 machine instructions so 20 machine instructions then gets you to the first instruction in the method that you're invoking we're also trying to keep memory footprint small we have a good compact and garbage collector and we're trying to minimize the number and size of objects and make the bytecodes match the language now how does ruby compare to small talk to for someone who's you know a vm implementer well there are fortunately quite a few similarities we there's no strict typing in either language there's the dynamic message lookup you can add and remove methods to a class dynamically strings and arrays are variable size objects the gemstone dialect of small talk has strings and arrays directly variable size they're both essentially single inheritance as opposed to c++ they have exception handling blocks and fairly similar base classes now what are some of the differences probably the biggest difference is ruby has variable number of method arguments whereas small talk each method declares a fixed number of arguments there are keywords like break next redo and retry and small talk doesn't believe in the notion of a go-to now small talk does does support return from inside of a method or block that returns from the home context so that's similar still ruby has the notion of the super keyword but it's somewhat restricted whereas in small talk super is very is basically the same as self except for where the lookup starts that was kind of a surprise to a small talk programmer like myself the difference there ruby has modules and small talk is more just a straight inheritance hierarchy and ruby has what we think what we call dynamic instance variables whereas small talk the instance variables are fixed at the time the class is defined we'll talk a bit about how we deal with that small talk has behavior as a common super class of both class and meta class and all three of these are you know first class access to the programmer and ruby only has class so we've had to do some work in that area now what do I mean by small talk super being different well this is an example of a class env and we're using an instance of this env class to implement the global object uppercase env so we decided to just make it a subclass of hash since it's supposed to basically have a hash like protocol so I did this and then I went off to implement basically the instance of lowercase env is going to have as its elements a cache of all of the elements from the programs environment so if you say at colon I want to first look in the cache values and if it's not there do a get env call to the operating system to see if maybe it is there and then refresh the cache and so to accomplish that this is small talk code here I do a super at which says look in this instance of env using the square bracket accessor essentially if it's not there then do the operating system call and this is a small talk primitive method here if I got something non-nil return that otherwise I'm going to update the receiver of this at colon and what I want to do is send at put to super but you can't really do that in Ruby so I had to write this method in small talk and what about our compilation technology currently for the alpha release and prior to this point we've been using an MRI 1.8.6 vm running as a a parse server process and we're using the parse tree gem and so over an HTTP connection we request the file to be compiled and get back a string containing all the s expressions and that then gets comes into the maglev vm and we'll talk about what happens next so in the maglev vm we send an HTTP request to the MRI vm specifying a path to this our ruby file or possibly a string for an evaluation we get back the s expressions that goes through a small talk s expressions parser stage which produces a tree of an ast tree in small talk object memory we then go through some more small talk code which produces an IR tree and this IR tree is the same tree that is produced by our small talk parser the small talk parser is actually written in C which is how we bootstrap the whole system and then we have a bytecode generator written in C that generates instances of this gs n method class which is our small talk compiled method class and then on demand we can turn those gs n methods into machine code with a very simple native code generator so what does the bytecode generator which is this stage here what does it do it's doing some very simple bytecode optimizations based on the stack machine concept you know if you're pushing the same we're trying to take push pop or pop push sequences and convert them to store loads to reduce memory references removing branching directions deleting unreachable code we take method and block temporaries from wherever they're declared and move them to the innermost block possible to reduce up level accesses and we delete some unreference temporaries so all the decisions about where a method temporary is going to live are done here and we'll get to these variable context things in a minute so we have two execution modes in our vm there's an interpreted mode which is executing bytecodes using a hand coded assembly language interpreter we actually write our interpreters in m4 for partial portability so it's not too hard to you know move them between cpu's and as it turns out you're only using a very small percentage of the real assembly language instruction set for a stack machine maybe you know 10 or 15 percent and the the interpreter supports both breakpointing and single stepping for the purposes of debuggers our native code system so an execution is either all in interpreted mode or all in native code we don't do mixed mode execution so the native code would be generated on demand the first time a method is invoked um so what do we do with the native code we translate each bytecode to machine code and it's a very simple code generator no inlining and it has a one register stop top of cache state machine complicated bytecodes would be jumping to uh shared codes that uh we call stubs that are emitted when the native code generator is initialized or they may call into c uh primitives written in c within the vm the native code gets us two to three times improvement over the interpreter uh you know it's not a tremendous amount and like i said we're not doing any fancy inlining or anything but the main message here is that for ruby people building new ruby vms it's not strictly necessary to have native code to get pretty decent performance if you get the bytecodes right so what does a message send uh look like um as i mentioned small talk has fixed arguments to each message send and we want to try to keep it that way for performance so except for a call or yield sent to a block all of our ruby message sends are actually fixed number of arguments um so for example in a small talk if you're sending at put to an object then you're looking during the method look up for the symbol at put and because of the way small talk selectors or mess method names are work you know there's no ambiguity ambiguity about how many uh arguments there are so the mess the method look up infrastructure in the vm can just do an identity compare on symbols to figure out if it's got the right key in a method dictionary that also makes the method the caches for the method look up very easy to implement because you really only need you know two words a symbol that or you know really you only need a you know in a lot of the caches you only need one word for the key which is the symbol uh so how do we do the ruby variable number of arguments well we have what are called bridge methods and we started off a while back and we did an analysis of the small talk seaside web framework and discovered that 98% of the methods in that framework have three or fewer arguments 95% have two or less so we're compiling all uh ruby message sends to conform to a maximum message message signature of three fixed arguments an array and an optional block which gets you like 16 possible variations and yes that may cause a lot of extra methods to be generated but first of all most of them are very small and in our system the unused methods can live on disk where they won't occupy memory in production um so what does a ruby message send look like so here we have a class which is defining a store method uh and that store method will have as its signature colon star so we create an instance of that class and then uh this is and then we want to call store with one argument this store will have the signature store colon and so at runtime that will resolve to the store colon bridge method which will push the first argument on the stack push a nil to match the required second argument and then invoke the actual store method um so here's a three argument invocation so the bridge method there will throw away the third argument and then invoke the actual method and uh if we create an array and then invoke that the bridge method for stores star will take the first element out of that array and pass it to the declared argument b and so forth and the the uh the design here is that if you know the basic method message sends are fast enough the extra layer of the bridge method will be reasonable and not cause too much performance degradation and what about uh method contexts uh you heard from the rabbinius uh team how they're doing method contexts and rvm is a little bit different in that we don't actually have method context objects uh with basically the machine views each method as having a stack frame and we take a stack memory comes from an mmapped memory region with a guard page at either end that's protected for no access with mmap so by doing that we can we can implement stack overflow with a seg v handler and not have to do any stack overflow checking in the byte codes um we do have things called variable contexts which hold the argument the the temporaries for example in a method which might be referenced from within a block they'll the variable context will also hold copies of method arguments that might be referenced from within a block uh the variable contexts are normal objects living in normal object memory and just normal garbage collection and they're created and accessed by special byte codes so that the decision about where the method temp is going to live uh is done by the byte code generator and this design for example supports seaside continuations today and uh so we fully expect it'll support ruby continuations also um how about our object memory uh well it's it's also allocated with mmap we're not using the sea heap and on linux and solaris there's this flight mmap called map no reserved which means you can allocate say 100 megabytes of memory and the only the parts you actually use will be allocated out of real memory um apple a mac os 10 doesn't yet support this flag so we wish apple would support that it would make things more efficient uh the uh we have a generation scavenger with a card marking style remembered set uh and the right barrier for that kind of a remembered set is about seven instructions machine instruction so and the right barrier for member is if you're storing a reference into object a that is going to reference b and b is not a simple thing like a fixed num but it's a real object you have to make sure the garbage collector knows that a might reference a newer object um it turns out this right barrier is very you know important for performance once you get start to get the byte codes running fast then this can become a bottleneck if it's not uh fast enough uh so we have every so often if the generation scavenger hasn't made enough progress then we'll run the full compacting mark sweep and that will use mmap again to shrink the virtual address space uh within the overall memory our current design has a maximum temporary object memory of about one gigabyte per vm and this uh you know it's nowhere near as sophisticated as a garb it's not as sophisticated a garbage collector as the java collectors but for the you know several hundred object several hundred megabytes type object memory it's it's very competitive so our in the object memory we have a three word object header um and this is a 64 bit vm uh it doesn't run 32 bit uh so we have in there in the object header we have a class pointer one word worth of size information and format information and then a pointer possibly to a persistent object table entry or which will be null in a temporary object uh and we directly support variable size objects um so in small top there's this thing called become which lets you swap the identity of two objects and uh because we have to support become from our legacy uh that means we need to have this notion of forwarders and it turns out if we have these forwarders we can easily implement variable size objects so we've had variable size strings and arrays for a long time in small talk and we've carried that forward and the forward so if you have a string and it has to grow the original string gets turned into a forwarder the first a pointer slot in the body will then point to the larger implementation and then that gets collapsed by back to a single larger object by the garbage collector later on a special object so small talk has this notion of some classes defining special objects uh for example uh small talks notion of a fixed num is called small integer and that this is one of the things that gets uh performance in a small talk vm um so a fixed num is just one word within a containing object or within a stack frame and there's no actual load on the garbage collector when you create one and the way that's done is by tagging the object identifiers so down here you can see uh the way we so the bottom three bits in a 64 bit object identifier are a tag specifying what kind of an obstetrician pointer that is and I have that in the water there uh so you can have a memory pointer to a non-special object like a pointer to a string you can have the tag value one says what you have is an object identifier of a disk object now that disk object might or might not be in memory but if you go to fetch that instance variable the object manager will uh probe the pers the in memory table of persistent objects if the object's in memory it'll give the address back otherwise it'll fault the object in for you on demand so that's how some of the object faulting works or it could be a fixed num uh it could be something we call a small double or it could be a true true false or nil uh or an instance of the small top class called character these are distinguished further by higher higher bits within the object identifier uh we talked about variable size objects this is I believe a fair benefit because it reduces the memory footprint of of strings I mean if you don't have variable sized objects at the lowest level then a string or an array each is going to have to have two object headers probably which in our case would be an extra 24 bytes for that second header it also makes it easy for us to write c primitives for heavily used string and array methods so if you're coding inside of our subset of c that we use for writing primitives you can easily grow an object or just store into an object and have it automatically grow for you now how do we do the dynamic instance variables uh so here's a class that first of all when we're compiling a class you know everything between the first occurrence of the class and the closing end all of those instance variable references we will assign fixed offsets to and so that means each of those instance variables will cost one word in the body of an instance so we've compiled the class uh so far and we've created our first instance of it and then stored invoke this setter method then we extend the class with some more methods which uh references another instance we hadn't seen before this instance variable store will be a dynamic store and basically what we're going to do is we're going to grow that variable size object and for the dynamic inst far we'll put in a key value pair after the last fixed inst far so uh assuming you don't have very many dynamic inst far in an instance usually we'll just do a sequential search for the appropriate key either symbol which is the name of that inst far on a lookup if we don't find the key then we'll create a new and a new pair on the store if we had an object with a large number of you know very large number of dynamic inst fars we could we could sort that uh array of pairs so that we could at least do a binary search for finding an inst far now what is a small double it's a it's a subclass of float and this is the way it's going to look in ruby um and if you say uh if you send name to an instance of small double we may just return float to you to try and sort of hide the existence of that class but basically instances are special objects and they're a c uh 8 byte float minus 3 bits of exponent so if you have a numeric operation that would a return of float but the exponent was is within uh 10 to the plus or minus 38 roughly we're going to return a small double and save the overhead of creating a full object so all the numeric floating point primitives will deal can handle interchangeably small doubles and floats and we're just building off the already existing uh small talk numeric classes here um so reusing small talk code um we've renamed some classes in ruby for example and really other than minor changes to the methods we don't have to do very much for those other classes we've subclassed off existing small talk classes which lets us reuse existing code so for example hash we've made a subclass of an already existing small talk uh key value dictionary class and we only had to add about you know 250 lines of small talk and 250 lines of ruby and i think we have most of hash implemented with that um now we added something to our small talk vm called message environments so if you think of a class as having a method dictionary we change that method dictionary to be an array of method dictionaries and the the environment environment number is an index into that array so if you're doing a message send from small talk which is environment zero you're not going to see any ruby methods by mistake similarly if we're running in ruby we're only going to see what was stored into those environment one method dictionaries so we're trying to present a pure ruby view to the ruby programmer and not have small talk stuff leak into the ruby environment unexpectedly so if you ask a ruby class what methods it implements you'll only see the ruby methods now if you think about hash one of the things it has to do is um well i'm jumping ahead so in order to call from ruby into the small talk implementation we have this primitive keyword uh that we use during our bootstrap process so in hash we say primitive and this means i'm not going to generate bridge methods for it uh there's another variant that does generate bridge methods um and so we say the square bracket store accessor is going to map to the small talk method at put and since they both uh both take two arguments we don't need any bridge method um so this creates an entry in the environment one method dictionary with the key being square bracket equal it's actually square bracket bracket equal with two colons after it and then the value in that method dictionary will be the small talk compiled method so this particular entry is like a gateway from environment one to zero now once we're in small talk we're not going to going to inherit any ruby methods but sometimes we need to so for example in the uh so ruby hash here is the small talk name for the class hash um the hash function method wants to take a key figure out the hash function for that key and then do a modulo table size function um to figure out where to probe the hash table for that instance and so i need to send the hash method to the object but have invoke the ruby implementation of hash whatever that is so we added a small talk syntax extension uh at ruby colon which uh lets us say this particular send of hash will be sent to environment one and that's how from within small talk we call back to ruby um right now we're not expecting uh you know customers or application developers to be using this that much right now this is intended for our internal use but you know sophisticated customer could make use of it if they wanted to and that that's the end of the talk uh questions is there any sort of application story for that um so i would assume there must be right in terms of uh you mean the central stone server where the right there must be application for distribution distribution uh so the distribution for the in memory cache is that a cache like model where the object has exactly one hole uh so okay so let's go back to this slide uh each uh the shared memory cache is a shared memory segment on a machine spanning possibly multiple cores uh or multiple processors even on a you know an smp machine and any vm on that machine can take advantage of that cache we can also have another machine uh typically on a land uh that will have its own shared memory cache and that shared memory cache will uh piggyback on top of the cache that's on the primary server machine so we can have multiple layers of caches to support bigger than a single machine so the object read faulting would go you know from the disk into the closest cache and then potentially across a land connection to another cache and then each vm has its own private copy of object memory similar distribution uh the story for the disk well uh we do have some distribution product products in our small talk uh uh product we don't have i wouldn't say we have a you know a good transparent replication design yet for the ruby product that probably is still you know an exercise for future development i'd say that's something that's on a roadmap you know questions i guess he answered all of them wilson you got to have a question i know there's one there i was toying that he had to ask you what your future parser plans are uh well obviously we ask away we obviously don't want to don't want to run an MRI parserver forever uh all the performance of that is not as bad as you might think but um the uh one possibility uh is to try running the uh uh ryan davis's ruby parser written in parse in ruby uh once we can get our ruby uh you know compatibility up high enough we we hope that might be one possible approach given that given that is 3.0 parser was was kind of just released we haven't had a lot of time to really look at it yet but one one option is to run that parser um and then adjust our uh piece of the part of our code that's taking x expressions in would be adjusted um another possibility is to write a parser in small talk which would be a lot more work probably you you would definitely be able to see that um oh steal it oh steal it yeah well i don't know well you have to ask montee about the whole life of the small talk if the parser was written in small talk you'd have to be able to compile that small talk to whatever bike coaster vm rand to be able to use it but you say you didn't have replication but what's the story uh we can uh let's see we have uh i believe the customers well first of all we have transaction logs and so you can uh you can have a second system running in what we call warm standby mode continually reading transaction logs off the primary system we also have customers that are using operating system level disk replication rate of some sort or another to replicate the disk uh you know replicate the files on disk that we're managing basically you know rate 0 plus 1 if one of the disks fails you yank it out and it recovers if you take a power hit so this the the disk objects are all transactional with the transaction logs if the power fails the system will automatically replay everything up to the last committed transaction when it recovers well it's uh it's uh it's an isolated view model it's what we call so when you there's a begin transaction method and that gets you a stable view of all the objects in the system and it's basically uh you can do explicit object locking if you want to place a right lock or a read lock on an object uh but by default we're doing what we call optimistic concurrency controls when you go to the point of trying to commit we'll analyze changes since you began and if there are no conflicts let you commit and then update your view to current uh you get an exception back you have the opportunity for uh we have uh small talk code and classes that are called reduced conflicts you can write collection or dictionary classes that will automatically um like abort a selectively abort in addition to the dictionary and replay that using the current view right and and we we plan to expose some set of those to ruby you know really early on because obviously you need to have a you know some kind of reduced conflict map um to be able to have multiple acts multi-user access to it so if you don't use explicit lock locking then yes the reduced conflict is how you deal with the conflicts i mean if it's not feasible to replay then you'd have to abort and just reapply the operation from the beginning yes curious about what the proposed mechanisms are going to be for getting data out of the shared persistent storage and into say my enterprise data how do you bridge that will that be similar to the mechanism used by gemstone s well yeah i mean we do have object to relational uh mapping support in the small talk product i don't know that we've really uh just bob bob might want to talk about that i can i can talk to that a little bit um you know we will be supporting active records so if you're you know talking about needing to access uh you know relational data from a ruby environment uh you know you can certainly use active record to do that um you know there are a number of scenarios where you might say you want to pull in your your objects from your relational database and forever after you know keep them in maglev uh and then there's the other there's the round trip where or the other way you know the direction where you really do want to stick that stuff out as an extract into a large data warehouse or something like this um and i think either one of those is feasible the one thing that you really uh that kind of surprised me a little bit and looking at this some time ago is there is what really isn't an xa protocol in in ruby so you know when you get into two phase commit land um there's nothing in the language that i know of to date that would support that could answer your question to me it's it's an absolute requirement that that you know active record uh uh is supported or you know other other data mapping technology you know data mapper um and you know i would think that some of the folks that that write that code would be interested in um you know talking to us about how uh and we are interested in talking to them as well about how it fits into maglev and making sure that they run i mean it'll take a little bit of time but um you know absolutely like i said earlier there's a lot of relational data out there and you know we understand the need to access it wow okay well thank you very much for coming


Okay, we're back here live inside the cube. This is SiliconANGLE and Wikibon's exclusive coverage of OpenStack Summit 2013, Portland, Oregon. I'm John Furrier with SiliconANGLE. My co-host is Jeff Frick. This week, Dave Vellante is back East in Boston, holding down the fort. We're here with HP Roger Levy, who's the general manager of the public cloud of HP. Aussie HP aggressively getting in the cloud business, has been in the cloud business, invented the cloud. I worked for HP back in the days when they had the largest web presence and HP's history, Roger, is unmatched when it comes to the technology and has a lot of history. So, welcome to the cube. Well, thank you. So let's talk about the HP positioning in the cloud because there's a lot of talk about commodity cloud, infrastructure as a service, volume, when OpenStack is very attractive to enterprises because of the ability to get quick cloud construction and then build value around it. It's not about the hypervisor anymore. It's about the package or the operating system of the cloud or the data center. Do you agree with that statement and then how would you describe that world to that audience? What is this OpenStack? Well, I think really it's about the business outcomes. The technology, the technology, some technology's better than the others but really it's about what our customers want to do. They want to be able to get control of IT. They need to be able to have the agility of being time to value, time to market, time to revenue that they need. Being out with customers, their goal is I need to play a new service in five hours. Once the code's cut, once it's gone through testing, I need to be able to push a button, have it out worldwide in five hours. It's an interesting challenge. And there's a lot of elements issues too. So can you talk about some of the things that you guys see? I mean, because you guys have big requirements, big customers, big demands but sometimes the wrong version of Tomcat might be an issue or there's a different element elements and the ingredients of cloud is a lot of different layers of software. That could be a problem. What do you guys see there here and what do you guys bring to the table for cloud in that area? So, I mean, a big piece of that is essentially wetting the overall DevOps and automation capabilities into the cloud, both public cloud and private cloud. A lot of what we're doing is bringing that automation in, both internal to the cloud so that we can make sure that we have all the appropriate version control, all the appropriate different components that our customers need to consume and hold those constant but also provide the DevOps tooling for them to be able to deploy to the public cloud or to the private cloud and manage all those configuration, all of those issues themselves. I was in Boston last week talking to a CIO friend of mine. We met, watched a little bit of the NCAA games and had a lot of fun and we were talking about Moonshot which is right around the corner, it was prior to me going to New York for the Moonshot announcement and we talked about, he was a big HP customer, they have a lot of HP servers and he's going scale out. So, having an industry standard set of servers in the data center works but he also wants to do Hadoop in the cloud. He wants to go to the cloud. So, he's got some requirements that have to play with that scale out, some legacy software and some open source. Anybody wants to use the cloud and so for the folks that meet that kind of requirement which would be your customer set and maybe some new ones, could you share your vision for cloud services and what you guys are doing just to kind of get that out there. What is the vision for the public cloud for HP? So, let me first start with the vision for cloud overall from HP because really public cloud is one of the key factors in a much broader vision, much broader strategy. So, our strategy really is converge cloud which means having solutions for public, private as well as managed cloud that our customers can actually decide how they wish to deploy their workloads across the three and so our positioning is really hybrid. We have the concept of journey architect, cloud journey architect now that work with our customers, look at what their business outcomes are, look at what they want to do in terms of specific workloads and actually recommend the blend. What should go public? What could go private? What might be managed? I mean, do you want to really take care of your email yourself? We can do that as a managed service and put that entire strategy together. So, this hybrid aspect is critical to us which is also why OpenStack is critical to us. Having an overall software base, having an overall platform like OpenStack, open source, community based that will allow us to have portability, first of all among HP's own products which is certainly no small thing to achieve and we're there. And then to have portability with other cloud vendors for our customers because the last thing they want is to feel like they are locked in as they do in certain other cases. We get a lot of Twitter action here on theCUBE here. All right. So, the chef, you want to ask a question? Yeah, I was going to say, so you got great insight into customers because you guys have a lot of large enterprise customers and you said somebody who now wants to push out to production in five hours. What are you seeing from your customers or the types of applications or the types of new business challenges that here before we're not even possible to talk about that now with this type of technology are kind of the driving, kind of the tippy point of the arrow that are driving this inside these enterprises. That's a fantastic question. I mean, we're really seeing quite a range. A big piece, certainly analytics, business intelligence where customers want to be able to do fairly sophisticated, whether it's Hadoop, whether it's Vertica as data warehouse, whether it's autonomy. They want to be able to do very, very sophisticated analyses, but they don't necessarily want to make the investment in 1,000 extra servers hanging around. We're sort of the equivalent of, I'd like 1,000 servers in the next five minutes and take it back when I'm done. And that's really one of the great things we're seeing. But we're also seeing just a broad range of adoption. In some cases, great example, DreamWorks. Good customer of ours that we're working with with Panzura. For their overall rendering strategy, they use Panzura as a storage caching device. They have their own storage farm, which was built with HP, but for sort of the after product or mid-work, they can store that cost effectively back up on the public cloud, and not have to always have the maximum amount of storage they need and have that permanently within their estate. Then what about from a vertical point of view? Are there some who are kind of the not cutting-edge vertical customers that we would never think that are really starting to take advantage of some of this technology to move their business? We're seeing it all over. Media certainly is within the vanguard, and I think that's somewhat expected. But we're also seeing a range of companies. Everything from hardline manufacturing, which you would think would be sort of the last companies to move. They tend to be new build. They tend to be things like mobile app or inter-tiered web architectures where they need to get something up and running fast and they turn to the cloud. Excellent. So I have a question for you. I wanted to ask you anyway about your partnership with OpenStack and why you guys got involved. And obviously HP has a commitment to OpenStack. But before we got there, I got a question on Twitter. We've heard this before about some of the skeptics saying, oh, the big companies are coming in. Because OpenSource, a very fickle community, we know you guys, it's double-edged SOAR. It works really well and you can cut against you. So the question is, do you think the theory of OpenStack embraced by, we heard this before, same for IBM and Cisco, NHP as a cynical ploy to derail open standards? And where does AWS fit into the customer and or HP strategy? I mean, on Shadow IT is, you're seeing a lot of deployments of Amazon. Is there a place for AWS? So first is the cynical ploy to derail open standards. I don't think HP has that one, but certainly it was IBM and Cisco. There's been some discussion there. I want you to address that. No, no, it's a great question. I love conspiracy theory questions. Great for our media business. Always, always good. The reality is OpenStack is critical to us. Interoperability really being the cornerstone of what we need to achieve. And it's also a phenomenal selling point. I mean, actually before coming to HP, I was at a startup that was a major customer of one of those other big cloud providers. And I hated the fact that it was closed.  And OpenStack offers a lot of things. Interoperability is a key one, but transparency is another critical one. We have customers who love OpenStack as the base of a public cloud, because they can look at the code, they can work with our experts, they help to optimize and tune their workloads. Really hard to do with some other providers that's just not there. So I can understand people having some skepticism. The big guys are coming in. HP has been pretty multi-vendor for years. I mean, it's not really. We've been multi-vendor for years and quite frankly, given the support and given the activity, I mean, we have contributed tremendous numbers of lines of code to OpenStack where you continue to be highly active. I think that we've also proven that through our Linux days. And then the people that we have involved now, I mean, my past, I ran one of the large Linux distributions out there, the Cecil Linux distribution. So I'm bringing in all of that experience. So you know that world. You know that experience. You know that can cut both ways to open source community. Absolutely. But you know, what we see in the open source community and it's very fair is you get from the open source community what you contribute to the open source community. If you are a good community player, if you act in accordance with the appropriate ethics and rules of the community, you know, there's so much that you can take back from it. Yeah, I mean, look at Rackspace has really seen a great halo effect with this OpenStack initiative. AWS, is there a place for AWS within HP? Obviously that's a volume play, not a value play. I mean, HP is much more of a value proposition, value-based proposition around a converged cloud, but Amazon's cutting into the other price. Other than an example of don't be like them. Yeah, that's a... I can't take that as a no place for AWS in the HP strategy. No, but let's talk about volume and value, right?  And we had Dimitri Steliana, the chief architect of Nudge Networks and Mountain View who's doing SDN stuff, the networks connect the data centers. Absolutely. And that is a key element with SDN, you're seeing a lot of that. Those two worlds, that is hybrid cloud. So hybrid cloud is the delivery between on-premise data centers and the cloud. So, given that, okay, what do you see that market? Because those requirements are different. Amazon is a pure volume. You're pushing buttons, you're getting micro payments on hypervisor, spinning up virtualization. It's good, there's places for that.  Is that how you would describe it? Well, I would look at it as our view is being able to serve the enterprise, being able to take the enterprise experience from the data center and translating into the public cloud. That is implications on the technical level as implications on how you actually go and operate with customers, like, you know, we were talking about being transparent and actually helping them optimize workloads. And it really is a very different relationship model with our customers. You know, in terms of the other models, yeah, there are going to be VM vending machines, you know, putting your dime, get your VM, high volume, we will achieve cost effectiveness there as well. So you'll meet that, you'll meet and exceed that, so you have checked. If you look at what HP is doing, you know, you mentioned Moonshot, I'm really excited about Moonshot. You know, running data centers, running a public cloud. If I can take 10 racks of equipment, which costs me, you know, the average colo, 10 tiles, before you even put hardware in the colo, is about a half a million for the tile space, power and cooling. If I can take that down to a single with Moonshot. It's ridiculous. It's ridiculously awesome. I mean, this is a density, but the power savings. It's phenomenal. The numbers, Jim Godfrey was sharing the numbers, ridiculous numbers. Which is important, today on Twitter, Silicon Valley is being told to turn down the power. Turn down the power, it's all the hot.  They got to go to Mountain View to get power. Get good power, cheap power. This is one of the great advantages of doing a public cloud in a company like HP. But we have a top storage business. We have a top server business. We have a top networking business. We provide a tremendous amount of input and feedback back to them, work with them for the next generation of product that we can then bring back into the public cloud. So Amazon has had great success with developers, right? So can you talk about your strategy for getting those developers? Because DevOps really started kind of with, I originally called Amazon the junkyard dog of cloud where you can come in like a junkyard and get all your parts and put together the spare car and be driving around the road and do some stuff. But now they've really scaled up. They've really taken the operations out of the market. They've introduced a lot of new products and they're just rolling, right? So how do you guys, how are you going to compete against that and how do you get those developers on HP? Well, I think the great thing is we have a large, large number of developers that today currently use HP software products to do their job. And some of our new products, CSA, CDA, that really allow a smoother way to do DevOps. We're putting quite a big investment into that area. The way to basically get developers is to give them an environment that makes their lives easier, makes it, let them concentrate on doing what they do best, which is getting the code done and making it dead easy, dead simple, to basically be able to deploy, monitor, and maintain within the public cloud. And I think quite frankly, others have introduced some interesting new capabilities, but this is just the start. It's definitely not the finish. There's a lot of great stuff to come. What inning are we in? We just had the Peter Gamma's analogy on David Floyd. I think we just had the Star-Spangled Banner playing in the background. So, Rob, I have a question. HP is a big enterprise. And within kind of the eating your own dog food strategy, there's some interesting tales you could tell about how inside of HP, a division or a group is using the cloud strategy that's either being spearheaded by your group or is something your group's taken from. I mean, sure. What's going on inside the walls? We actually have a fairly large activity going on right now which is many of the products are sassifying. So to speak. Sassifying, I like that. Sassifying, so to speak. You know, I'm certainly not going to announce anything at the moment. You know, watch this space. We have Vertica, we have Autonomy, we have others out there. You can definitely expect you'll see them popping up in the public cloud pretty quickly. Great, great. We have one question from Ryan Cox on Twitter. Does HP have any plans for a developer laptop like Dell's Sputnik? Fantastic question, not my area of expertise. Yeah, so no comment. Not going to fall out of the cloud. Definitely. I heard they're spinning that out into a separate company. It's market so big. And it's a small market. I mean, Dell's got some kudos for that, but ultimately no one's rushing down buying Sputnik. No one's sort of rushing down there. And also you've got so many different choices right now in the end device area. So let's talk about HP software. I know you mentioned them briefly, because you're in the same building now, and cloud is now the software. Matt Morgan over there, I've been to a couple of those things. They have the Agile, I've been to Purdue a few times. Agile and DevOps is clearly the focus. HP's not known for the software powerhouse. They've bought Mercury Interactive and they've kind of hobbled along. And Dave Vellante was at the HP Summit Analyst Meeting and made a comment that he thinks the software group is the biggest opportunity for HP, for margin expansion overall, rising tide with the autonomy piece coming in and kind of bringing everything together. So with that, HP's not known for the software. Can you one either debate that, talk about it, or talk about what's happening within software so people can get a new Polaroid or Instagram picture in their head around what that looks like. I think the exciting thing is what's happening at software. So if you really look along the different dimensions, what's going on in analytics, the Vertica and Autonomy work, just absolutely fantastic products. Really excited about working with those teams to be able to eventually offer that in a very effective way as a service within the public cloud. The security space, things like tipping point, ArcSight, top notch security products. And by the way, we use those within the public cloud. One of the great things and one of the advantages is we are definitely, we talk about eating our own dog food, my boss Bill Vecti likes to talk about drinking our own champagne. These are fantastic products that we're deploying for ourselves. And then when you really get down to DevOps, the new CSA and CDA products are very specifically to address the whole new DevOps area. And very different mindset than the old approach to IT. This really is the new style. And you guys did announce just recently the first SaaS version of that product. Absolutely. Which is a major change over for HP, the SaaS application. I would expect to see the vast majority of software products in SaaS versions over some reasonable amount of time. We're going to ask Sar this question. I asked this question when I interviewed him in Germany at HP Discover. We got Donatelli's group, the enterprise group, which is converged infrastructure, software-led infrastructure. And we had a great moonshot announcement really impressed us. Especially just the revitalizing of Donatelli and Mark Potter, Jim Gontier. But they have other stuff. Cloud scaling is in their group. They have some cloud stuff in there. But you guys have a separate group that's the public cloud. And can you just connect the dots and explain just the internal accounting of where the cloud is? If you asked me this question a year ago, the answer would be very different. But right now, HP has done, I think, tremendous thing. We're a huge company, right? We're 300,000 plus people, lots of businesses, lots of individual products. So you mentioned SAR. SAR Glide now runs what we call Converge Cloud. Which is an overall coordinating and governance team for all of our cloud activities. If we truly want to be Converge Cloud, deliver a hybrid, we have to do some work to make that happen. You got to put that umbrella organization together. Exactly. So SAR's got the umbrella. He still has that. So he has architecture work, overall work with product management and coordinating roadmaps. As well as working with us on sales, go to market and marketing. Because a year ago, we were probably showing up at customers three different times, pitching three different things with three different stories and three different messages. And really confusing. Not a good business model. Not a good model. Now we have this console, the Cloud Journey Architect. We work together. We actually look at what is the best for the business outcome the customer wants to achieve. SAR's really been phenomenal to work with. We have joint work going on with our development teams. Really driving this large set of folks together to be one integrated team instead of three or four. And he'll be on tomorrow, one o'clock Wednesday. So if you're watching, want to hear him, we'll have SAR on tomorrow. And so you don't report into him. You're a peer of him? No, SAR and I both report to Bill Vecti. Okay, so you're the same boss. So you're on the same team. Absolutely. And SAR's office is all of about, oh, 40 feet away from mine. So. As they say, pass, shoot, score, right? So you guys do coordinate. But you're the GM. You have P and L responsibility for. Right, for public cloud. Public cloud. Okay, got it. And the private cloud fits in. So private cloud, we have our cloud system solution, which is out of enterprise group. And then we have our managed cloud solutions, which is out of our enterprise services group. Okay, great. So that's where SAR comes in. And SAR is the kind of the glue, the umbrella, sometimes the stick, you know, to put it all together. Yeah, well P and L also is a big stick at HP. I know that drives a lot of the action. Final question for you is the vision of HP. But I want you to, of the public cloud, I want you to put in context to OpenStack. So if you want to give two vision statements around, kind of where are you going from today?  You know, give away any secrets, but like just your, what the arc of HP cloud is going to look like public cloud and where OpenStack fits in? So let's start with the general vision and then we can fit OpenStack into it. General vision again is being the enterprise class public cloud. And that really to us means taking the expectations from what customers have today in the data center, how they operate in the data center, their expectations of relationship, their expectations of support and translating that into a public cloud experience. I mean, actually having, you know, people answer the phone when you call for questions and help, kind of novel these days. And we really need to do quite a bit on all fronts to make that happen. I mean, ranging from the technical of having, you know, ultra solid infrastructure, high reliability, high availability, integrating in security, but you know, from a total vision point of view, it really is going up the stack. It's above the infrastructure. It's providing all the platform based services, providing the DevOps. The vision of the cloud is to make it as simple as possible for our customers to build, deploy, maintain and scale their workloads. So when we interview you next year at the OpenStack Summit or maybe in the fall, but let's say next year, look back on your year, what are your key, you know, management, you know, top three priorities for the year as in terms of accomplishments or metrics you want to check the boxes on? How do you look at that? And if you say, I want to have a very successful year we did one, two and three, what would that be? Well, I mean, certainly we have some metrics around actual customer acquisition and revenue, which unfortunately we can't talk about or I've got to fill out lots of paperwork for the SEC, which I really don't want to have to do. Let's just say, you know, modest aggressive revenue goals. Let's say quite aggressive revenue and customer acquisition goals. So yeah, we don't need to talk about, but like in other accomplishments, you know, headcount, is it like facilities expansion, SLA? So I mean, facilities expansion certainly is one. We, you know, today are US based, we're going around the world. Also a great advantage of being part of HP our enterprise services team have built a series of phenomenal data centers around the world, which we're going to leverage. You know, I've just been looking at pictures of the Aurora data center in Australia, and you know, I'm one of those folks who like, you know, think data centers are sexy and this is a sexy data center, so I'm really looking. It's actually the most popular post on Wikibon when they did the data center pictures, just pictures, no actually text, just wires and data centers, it's just like. But you know, certainly greater international expansion and then going up the stack. So open stack, critical to us being able to provide absolute bedrock infrastructure, but also working within the other teams. We're working with Red Dwarf and we've introduced our own, you know, database as a service and other teams like that, but really go above into the platform services, the DevOps layer and start to provide that extra value adds to the feature and functionality. We have a very aggressive and very, I think intriguing roadmap and look forward to talking to you in six months time. Roger, we certainly love to have you on theCUBE and following HP, HP always competes on value that's something that you guys are known for as a company and looking forward to following you guys and keeping track of you guys, certainly see you tonight at your event. John Furrier with Jeff Frick and Roger Levy here at HP General Manager of the Public Cloud. Don't count HP, Star Spangled Banner is just starting in this cloud business, as we could say, maybe top of the first inning, Jeff, but we got it all here. Exclusive coverage from the open stack, some of this is still going to angles theCUBE. We'll be right back with our next guest after this short break.


All righty, it's time for an injury update. If you watched my last video You'll know that I've been struggling with an injury Over the last few weeks and months even if you follow me on Strava You'll know all the details about what I've been doing instead I've been doing aqua jogging swimming cycling elliptical all kinds of things other than running and A couple of days ago. I went to my physiotherapist to get the MRI results. I did an MRI scan Couple of weeks ago and the results are in and I want to share them with you today. Stay tuned So for those of you that didn't watch the last video, maybe don't know what's going on I'll give you guys a super quick recap. I Started getting pain in my left leg Lower leg in the fibula region a few months ago. It didn't go away. It was persistent It was never super bad, but it was persistent and it was the kind of pain that I didn't Recognize as tendon related or or muscle strain or something like that So I sort of thought could be bone Although a lot of the symptoms were not compatible actually with a bone injury a stress reaction or a stress fracture But because it was so persistent and some of the symptoms sort of pointed towards it being bone and I Thought you know could be a stress fracture, I guess and my physiotherapist She thought the same, you know, it's it was kind of weird But maybe it could be and she wanted to do a An MRI scan well actually we did an x-ray and it showed nothing but x-rays are not that reliable when it comes to diagnosing Stress reactions and stress fractures sometimes so we did an MRI scan I got the results and the results are in so Here's the big drum roll question answer and the answer is There's no stress fracture. There was no bone Pathology nothing wrong with the bone nothing wrong with the muscles nothing wrong with the tendons In fact, everything is in tip-top shape All right, so actually if you go follow me on straw life There's a link in the description you can find a post that I wrote there today Where I also posted a picture one of the pictures from the MRI not that that really tells us anything if you're an Expert on reading those pictures, but everything was in tip-top shape shape apparently So in a sense, that's good, right? It is good and it also means that I'm not, you know, super Calcium deficient or something like that or that I can't handle the load It seems my bones and tendons are quite able to handle the load So that leaves us with the question what is going on because if there's no bone issue no tendon issue no muscle issue Why do I have pain because I definitely do have pain? I've had you know at the worst It was like after a workout. I would have shooting pains off my leg like oh You know like Shooting pain going up here and and and it was really bad sometimes But most of time it was not that bad, but it was persistent as I said So What kind of pain is that? Well, we don't know right my physiotherapist speculated that of course, you know Maybe it's a vascular issue. I mean I do have varicose veins on my Right calf quite bad. Could it be a vascular issues? She sort of noticed that one of my veins protruded a little bit more on the left side Perhaps, you know something to look into if this other theory doesn't Work out but her other theory then was that it could be a nerve issue. Okay Right, we've eliminated muscles, tendons, bones There's the there's the vasculature and then there's the the nerves, right? There's not that much left So nerves perhaps there it's a nerve issue and she talked about something that I've never heard about before a new concept to me, which It's kind of weird when you think about it because I'm super geeky and obsessed about Anatomy and physiology and exercise and and I've actually never well I sort of remember now maybe having glanced across and come across this term a few times But I never looked into it.   I didn't know nerves. It makes sense, but I didn't know nerves were actually Mobile and inside the tissues and apparently what she said is that she did a mobility test on me She's sort of I was on my back and she pulled my leg up and and I was I Stressed it up like this right up and she pulled it pushed it backward and she said that I had You know below average It wasn't that bad, but it was below average below what she expected. I guess in terms of my mobility my range there You know, I reached a point where I was like, ah, that feels really weird and not good And she she said that that's actually more so than being a muscle in a tendon issue. It's actually my nerve kind of feelings tight As well as my my muscles and tendons, of course And she did a few different variations on that and and she confirmed that I was I needed to work on my mobility in general, but also my neural mobility so And I also should notice that my left leg was slightly worse than my right leg Which is interesting because my left leg is where the injury is or the pain comes from because I guess then there's not really an injury per se, but there's just persistent pain and so Yeah, so I've been researching neural mobility and you know, you come across things like neural flossing and neural glide and This whole idea that you know, the nerves sort of move within the tissues or maybe the tissues also move around the nerve and the idea is that I Don't think you cannot actually increase the length of your nerve. It's very inelastic, but it's Maybe you can I haven't I don't I'm not an expert on this topic yet. And but apparently, you know Perhaps there's it's a possible. I guess it's a kind of like a little bit I mean, it's it's not a hardcore science kind of thing where there's not there's not been that many studies Sort of confirming exactly how this works. It's a lot of the evidence is anecdotal at this point But there has been some studies showing some Benefit or some some truth to the whole concept, I guess but I don't know enough about it yet to really speak about it too much but My understanding is that and she's sort of hinted to this I think that perhaps there was an initial injury in the summer when I did a little bit too much too soon after Starting up again after my Achilles issues Maybe there was a little bit of an injury maybe some trauma to the tissues and there was perhaps some scar tissue development and that scar tissue is now sort of impinging on the nerve a little bit or In Basically causing it not to move as as well between the tissues so perhaps it's just that perhaps it's just that when I'm running and when I'm doing these things I I actually Sort of inflame this area a little bit and the nerve is irritated could be Who knows it could also be in a back issue. I guess I do have Schiattica pain sometimes especially when I'm driving for a long time. So there is an issue there It's quite common, of course to have these kind of nervous issues, especially Schiattica and so Yeah, I'm researching the topic and I'm doing these exercises like three times a day Just like moving through this neural flossing. That's what it's called They're sort of flossing the nerve through the tissues and so I'm just doing that I'm stretching more and I'm putting more of a focus on my stretching basically to to improve that mobility and the neural glide And that idea so that's the situation. I guess if it turns out this is the case then That's amazing because that means I can do something about it and I'm trying to do something about it now And even if it isn't I'm still learning because I probably do need mobility anyway, right? I am quite stiff which is you know to a certain extent good as a runner to be stiff But on the other hand you don't want to be too stiff and causing injury and not allowing your You know your running stride to be optimal so Yeah, I've got something to work on and I love that and I've actually been able to maintain my fitness quite well through the Aquajogging and swimming and everything so when I went out running for my first run, which by the way felt Amazing the other day. I've been out for two runs now just 15 minutes each Nothing beats running for me. It's just like it's a whole different universe of movement. I Like sport. I like fitness. Everything is fun in the fitness world almost but running is just a whole new another level because it's just so natural and Well, it just felt amazing to be out there. So What am I saying? Yeah, so I maintain my fitness very well with the aquajogging regime and the swimming and everything Actually, I feel like I haven't lost any aerobic cardiovascular fitness at all felt pretty much the same as when I Stopped running eight weeks ago But of course my load Tolerance is is what's actually decreased over eight weeks. I don't have any tolerance to load now So now I got to build it up very carefully. I don't want to get injured this time. So I'm being very conservative I'm gonna just build my mileage over the weeks week after week after week And we're looking at probably eight to ten weeks until I'm back to where I was this summer with about 50k per week So just gonna do it slowly this week is 10 kilometers this week next week 15 And we'll just solely slowly work our way up to 50 and then in the new year 2021 We'll probably start. Well, we'll definitely start building from there 50 up to 60 to 70. We'll work our way up probably back to a hundred by 2022 Okay, so we're gonna be careful. We're gonna focus once we find the right mileage bond We're gonna stay there for a little while and and maybe Hopefully do some races next spring. I'm thinking probably do a 10k and a half marathon Maybe a next spring and then the marathon will probably be the next fall actually because I won't be able to get my mileage up my Kilometrage up to sort of marathon level before then because of these Hiccups, I guess in my in my plan But I've learned a lot from the situation. I'm actually perfectly happy with it I'm cool because I I got to enjoy swimming. I'm still enjoying it I'll be supplementing my a little bit of running that I do now building up I'll keep doing all the aqua jogging in the swimming as long as the pools and the gyms stay open because it's kind of weird now It might close down. I hope not and So I'll keep that just to have volume in there and then I'll slowly sort of get to a point where I Do more and more of my training is running But I might even still continue doing aqua jogging long term because it's a great way to add some volume without impact Might be a good idea. So let's wrap it up No severe injury. I can go ahead and run. There shouldn't be an issue. I need to be careful building up I've learned a lot neural Mobility, okay, interesting concept. I'm gonna look into it more. I'm gonna do it every day and we're gonna see if it helps That's it. I don't know if I'm gonna travel this winter or not, but We'll see we'll see Thanks for watching. Thanks for following along. Please check out my coaching I have a link in the description if you're interested in a training plan custom training plan or anything like that and Follow me on Strava Instagram and of course subscribe to this channel. I'd love to have you with me here I'm gonna try to do more videos. I've been doing an extra part-time job on the side these days because I haven't been you know that heavily training and have some extra energy and To do other things and I need some extra cash basically. So I just did that And so I've been busy not making videos and I want to get back to videos. I really do. So I hope to be able to Get back into it now that I'm getting into my groove again and running and everything feels a little bit back to normal Hopefully and yeah, that's it Thanks for watching. Give it a like and I'll see you in the next video. Bye