Saturday, December 26, 2015
2015
Sunday, November 1, 2015
Catching up on lost time
Saturday, October 31, 2015
Camping finally
Auckland
Saturday, October 17, 2015
Windy Welly!
This is probably one of the most relaxed Sundays I've had in a long time, which is funny as I am working the longest hours I ever have, but now my weekends are actually feeling like weekends. They are fun and relaxing! Mixing up some running or riding when I feel like it!
Anyways, we have been getting out and about a bit, exploring this amazing city, a lot of the time with our dog! So I thought I should update my blog with some pics :-) Enjoy!
Thursday, September 10, 2015
Looking back a year and a half
Life tells us we have to do these responsible things in order to be "successful",but man, these so called life goals made me freaking unhappy! If you're hating it, go out and make something cool happen. Do something that re-inspires you to live again; something that makes hobbies fun; something that makes getting up each day exciting. I forgot what that was like for a year, to be truly happy. I now realise that the life I was living was not a prerequisite of growing up, of being "successful".
Falling into a monotonous life of bills and pay slips doesn't really sound inspiring to anyone...I hope; it is just too often that we think it is the right thing to do, but maybe it isn't? Maybe it is often for lack of anything else better to do, or lack of motivation to go and do something amazing! But remember, you only live once, it may as we'll be fun!
Friday, August 21, 2015
Ngaio, Our New Home
Our place is nice, it has an amazing view over a beautiful housed valley, with a backdrop of some amazing mountains, in which are some amazing trails to run on!
It really is so beautiful here. Within a 10 minute run we can be on the most amazing trails I've ever run on, with beautiful streams and forests to entertain while running or walking the dog.
We have some great neighbours and it is relatively easy for us to get to work. I drive sometimes, and other times I ride, when weather permits. It is a tiny commute for Kate to work at the moment which is nice. We have also ended up halfway between Welly City Centre and Lower Hutt. This is great as Lower Hutt has nice markets and food shops, whereas if you lived in the city you are stuck with supermarkets and higher food prices.
Work is amazing. It is so inspiring to be working somewhere challenging and with such amazing people. I am learning so much and can't believe it's already been 3 weeks of work. The next year is going to pass quickly!
Anyways, that's enough, but I'll finish with some pics from some recent walks around Ngaio. Enjoy!
Wednesday, August 5, 2015
Random daily dribble....
Monday, August 3, 2015
Commute Time....Blog Time
Saturday, August 1, 2015
Custom MPxCommand
I built a command that searches the dependencyGraph for a given node type. You specify the node type to search for and the direction to search in. YOu then call it just as though it is another maya command. So rad as this can now be built into my code as if it were just part of maya.
So my command is: findConnectedNodeType. You call it like:
node = cmds.findConnectedNodeType('blendColors','up')
The return value is either False or the found node name. The command looks through the upstream dependencyGraph until the first instance of that node is found. It then stops the iteration and returns the node name.
Cool stuff I learnt.
To return from a MPxCommand you must use the public function of MPxCommand setResult.
self.setResult(return value goes here)
This comes at the end of the doIt() function.
Enumerators are also making a bit more sense now that I am using them more. For example I had to use MItDependencyGraph. You can specify the direction to search, up or down stream. The help docs show this for the direction.
MItDependencyGraph ( MObject & rootNode,
MPlug & rootPlug,
MIteratorType & infoObject,
Direction direction = kDownstream,
Traversal traversal = kDepthFirst,
Level level = kNodeLevel,
MStatus * ReturnStatus = NULL
)
and this:
enum Direction
Direction within the DG relative to root Node or Plug.
A bit cryptic at first if you arent familiar with how to read this. So To insert this correctly into the MItDependencyGraph class call you need to do this.
OpenMaya.MItDependencyGraph(OpenMaya.MItDependencyGraph.kDownstream)
So because this enumerator is a child of the class MItDependencyGraph , it must be specified in context of this class hierarchy. (OpenMaya.MItDependencyGraph). You can then set any number of the enum options that the help displays, in this case kDownstream or kUpstream and the class call will know to look for that enum if you set it (you don't have to specify anything and maya will use the default)
Ok. Hope that is a bit clearer than mud. Till next time.
Friday, July 31, 2015
Thats what lifes about....
Thursday, July 30, 2015
Stretch Node Maya API Plugin Comparisons
Stretch Node Python API Plugin demo from Tim Forbes on Vimeo.
Test stretch node plugin using matrix connections rather than channel connections. This video compares two test plugins briefly. One plugin using Matrix connections, the other using Transform channel connections. This is a test purely to look at different types of data handling and how I can use Mayas API to simplify node graphs for common rigging techniques.
Wellington - our new home
However NZ has been really nice to us. I get this feeling, unlike in Australia, that everyone isn't out to screw you. It just seems a bit fairer here. This may be due to the smaller population, there's still a bit more personal care. I've found companies here really helpful and transparent, at least more so than their counterparts in Australia.
Anyways, we found a nice house. After being scared that we wouldn't find a dog friendly property, we really hit the rental market hard and got offered a few properties. In the end w chose the on that felt right, and in the end it ended up being perfect to split the difference between my work and Kates work! Some things just work out right.
We are now going through the painful task of finding a used car. I hate looking for cars. Anyways, we'll get there, but it is growing tiresome sifting through all the crap on trademe.
Kate has started working and is absolutely loving it which is just the best news, and we have been catching up with good friends from Vancouver which has been really nice.
What an life change Clooney has gone through! 8 months ago he was in a cage, no where to go. Fat forward 8 months and he's getting lots of walks and now has his own Wellington registration number. We have really given him a second look at life and it is just beautiful to have him around. Although he now associated plastic bags with walks (we always grab a few to collect his business). So now every time I grab an apple from a bag, he gets all excited and thinks it's time to go and starts whining, so that lucky dog is getting walked A LOT!
I start at Weta next Monday and am so excited. It's going to be so amazing to be part of a team that is creating such amazing work. I am feeling very inspired and pumped to create some amazing work.
Wednesday, July 29, 2015
Maya API Matrix Research
Build a locator. Move it somewhere other than the origin (origin is fine but the data would just read 0.0,0.0,0.0. I wanted something in there as it makes it easier to verify that the data is returning correctly.
I then started writing some API code that would:
#get the active selection
#loop through selected nodes and for each node
#find the plug for the matrix attribute
#get that plug as matrix data
#extract the transformation data
#print the x,y and z coordinates.
I chose this test as that is exactly what is going on in my stretch node. In the node the .matrix attr is connected into the node, and from that plug I try to retrieve the x,y and z position. However it is returning incorrectly.
So the code in my Maya test scene is working, so the error must be in the creation of the node attribute, or the way in which I extract the data from the data block. Anyways, here is the code I used to the the t.x,t.y and t.z of a selected object from the matrix plug. I hope you find it useful.
import maya.OpenMaya as OpenMaya
dagPathFn = OpenMaya.MDagPath()
#get active selection
mSelList = OpenMaya.MSelectionList()
OpenMaya.MGlobal.getActiveSelectionList(mSelList)
selItr = OpenMaya.MItSelectionList(mSelList)
#iterate through selection and get the world space positon from the matrix plug
while not selItr.isDone():
selItr.getDagPath(dagPathFn)
nObj = dagPathFn.node()
#we got the node from the dagPathFn#now we get the dependency node
objDepNodeFn = OpenMaya.MFnDependencyNode(nObj)
#find the .matrix plug
mxPlug = objDepNodeFn.findPlug('matrix')
print mxPlug.name()
print objDepNodeFn.name()
#get plug as MObject which we will attach MFnMatrixData to.
mxObj = mxPlug.asMObject()
mxDataFn = OpenMaya.MFnMatrixData(mxObj)
#query the transformation, returns MTransformationMatrix
trfnMX = mxDataFn.transformation()
#get the translate in world space
v = trfnMX.getTranslation(OpenMaya.MSpace.kWorld)
#print it out!
print v.x,v.y,v.z
selItr.next()
Positon From Matrix
startMXDataH = block.inputValue(stretchNodeMX.aStartMX).asMatrix()
Now this was not playing nce with me. As I went further down the track I was not getting the correct information returned.
So here's what I have..I'll delve deeper tomorrow...
def compute(self,plug,block):
#method 1
#get matrix and translate from finding the dependency node and working from there
#returns the correct t.x,t.y and t.z
#-12.0540640814 5.6978884254 7.7806477623
sNode = self.thisMObject()
plugArray = OpenMaya.MPlugArray()
depNodeFn = OpenMaya.MFnDependencyNode(sNode)
startPlug = depNodeFn.findPlug(stretchNodeMX.aStartMX)
startPlug.connectedTo(plugArray,True,False)
stObjMx = OpenMaya.MMatrix()
if plugArray.length()>0:
for i in range(0,plugArray.length()):
stObj = plugArray[i].node()
stDagNodeFn = OpenMaya.MFnDagNode(stObj)
stObjMx = stDagNodeFn.transformationMatrix()
stP = OpenMaya.MTransformationMatrix(stObjMx)
vec = stP.getTranslation(OpenMaya.MSpace.kWorld)
print vec.x,vec.y,vec.z
#method 2
#get the matrix data from the input plug and work from there
#returns the incorrrect t.x,t.y and t.z
#5.26354424712e-315 0.0 0.0078125
startMXDataH = block.inputValue(stretchNodeMX.aStartMX)
startMX = startMXDataH.asMatrix()
#just print the "translate" parts of the matrix - does not return what I'd expect.
print startMX(0,0),startMX(0,1),startMX(0,2)
#method 3
#returns the incorrrect t.x,t.y and t.z
#0.0 5.26354424712e-315 0.0
#get the transformation matrix to query the translation from there. Once again it returns the incorrect imformation
mxData = OpenMaya.MFnMatrixData()
mxData.create(startMX)
stPTransformationMatrix = mxData.transformation()
stPTranslation = stPTransformationMatrix.getTranslation(OpenMaya.MSpace.kWorld)
print stPTranslation.x,stPTranslation.y,stPTranslation.z
block.setClean(plug)
Obviously something's going screwy with my coding here, and my use of the API. But anyways, it's all about digging through it and working out whats wrong...to be continued tomorrow. Something's going wrong with either my creation of the matrix attribute and the kind of data there..but I'm pretty sure thats good. So it must be in the way I am querying the data from the dataBlock...hmmm.
TBC...
Tuesday, July 28, 2015
Stretch Node
The node is really very easy to write, and the longest part of it is actually setting up the attributes on the node and how they affect each other. Once you have a template for a MPxNode you can just copy and paste it as a starting point. However it is always nice to write this out and make sure you understand it rather than just copying and pasting it.
So this stretch node has 3 inputs. the startPoint and endPoint, as well as a length attribute which the user sets to the length at which stretching will start. There are then two outputs. Distance, which just returns the distance between the two in points at any given time (useful for determining the point at which stretching will occur), and the main output which outputs the final stretch value which will generally get piped into the scaleX of the necessary joints.
What awesome things did I learn when writing this plugin. The attribute that enables MPoint to return the distance between two points.
posA = OpenMaya.MVector()
posB = OpenMaya.MVector()
p0 = OpenMaya.MPoint(posA)
p1 = OpenMaya.MPoint(posB)
distance = p0.distanceTo(p1)#returns double
Next awesome thing.In the initialize() function we call this:
plugin = OpenMayaMPx.MFnPlugin(obj,'Tim Forbes','0.0','Any')
We then register the plugin type. Now this is different depending on what plugin you are creating, and will require different input data. Somewhere to get caught out, especially if you copy your template from a OpenMayaMPx.MPxCommand type plugin...like I did :p
The differences here are below:
OpenMayaMPx.MPxCommand will be plugin.registerCommand('command name', creator)
The command only requires the command name and the creator function, however the node requires a few extra things as seen below.
OpenMayaMPx.MPxCommand will be plugin.registerNode('stretchNode', stretchNode.kPluginNodeId,creator,initialize)
Because we are creating a node that will be connected to the dependency graph we need a unique node ID, we need the node name, the creator function and also the initialize function. The initialize function is where all the node attributes are added. The creator function is where our pointer is created to access the plugin within maya.
The unique Node Id is created using the inbuilt maya function: kPluginNodeId = OpenMaya.MTypeId(0x00000882)
For home use I have generated an arbitrary ID, however in production you would want to make sure you used an ID that would not clash with in house node IDs.Currently I built the node to take on the translates of the two input points. This was for ease of building and proof of concept. My next version will take wither the world matrix or transforms, thus making the node more adaptable to different rigging scenarios. Anyway, I built this node into a rig and you can view it working below.
Stretch Node from Tim Forbes on Vimeo.
Maya Python API Stretch Node
Next Up. Add in matrix connections to the StretchNode. Following that I'm going to make a MPxCommand plugin that traverses the dependency graph to find connected skin clusters. This will be useful in a convoluted node graph if you need to manupulate the skin cluster in a specific way, or really any specific node I guess:-)
Monday, July 27, 2015
Interesting Things with the Maya Python Api
So I was writing a default dependency node template. As I am writing this I am trying to understand why each of the pieces of a node are there, and what they do. Each time I need to use a piece of code, I will refer to the API guide and understand where the command or attribute had come from and how it is returning the data.
The interesting one I just came accross was when working with a MFnNumericAttribute class. I was using this in the initialize() function where the different attributes are built for the dependency node.
What I found was when I came to set the attribute to keyable, storable etc, I could not find any information relating to these attributes in the documentation for MFnNumericAttribute. This is where I realised that these attributes were being inherited from the parent class, MFnAttribute. So by creating a MFnNumericAtribute, I had access to all the attributes associated with this command, but I also had access to everything above. So:
nAttr = OpenMaya.MFnNumericAttribute()
nAttr.create('longName','shortName',OpenMaya.MFnNumericData)
#now you can access attributes from MFnAttribute
nAttr.setKeyable(True)
#or attributes from MFnNumericAttribute
nAttr.setMin(1.0)
Ok I know this is super novice. But one thing I realised when I was starting to learn, is these little things can really help learn how to read the documentation, and I couldn't find that info anywhere out there, a lot of it was assumed knowledge. That being said, to find the information for yourself means that you will always remember it and understand how to apply that same knowledge to different scenarios.
Once I'm done with my default node template I'll bang it up here. Cheers.
Learning the Maya Python API
I think that a time comes when you realise it is time to learn some things. Coding is like learning a language. Without the right mindset or need, it is very difficult. But when offered a good practical reason to learn, new concepts and knowledge seem to be learnt a lot more fluidly. I feel this is where I am now. My python coding has got to a certain point in Maya, and I now see a use for the power that I can harness through the API. Although slow, I am picking it up a lot better than last time I started reading the API.
I find one of the biggest things is realising how to read the help docs, and being able to read the C++ documentation and convert it to python. This will prove useful when delving into C++. For the moment I am learning the Maya Python API so I can focus on learning the API toolset, and not have to worry so much about syntax. Once I have that sorted I will start moving accross to C++.
For the time being my goal is to work though David Goulds Maya Programming Books, and as I do so to build some simple nodes and commands that package up some commonly used rigging node graphs that I often build.
Keep checking back for my progress.
Sunday, July 26, 2015
The road to recovery!
In a few weeks we move to our new home! The commute to work is about 13kms. My plan is to be running that a few times a week in a couple of months. like I said, baby steps, but the will is there and I know I'll get there. I just need to be smart about it!
First Days In Wellington
Last night we had pizza and beers at our pad with Nick and Emma. Some more friends from Vancouver. It is so good to catch up with our friends that we made when we were overseas. It's like we never left!
Having Clooney here has been a blessing. It has really forced us to get outside. We have been walking him a lot and he has been charming everyone. We took him on a big walk through the Botanic Gardens last night, and then he just chilled like a good old dog when Nick and Emma came over for dinner! Funnily enough, he is such a pleasant dog, he has been getting loads of comments while walking around the city. Everyone loves him :-)
Saturday, July 25, 2015
Interesting Blog Written By My Uncle!
Life is good and I am blessed to be leading the life I am. Check the article below.
My nephew just got a job with Weta
Creature TD Reel
Tim Forbes Creature TD Reel 2015 from Tim Forbes on Vimeo.
My latest Creature TD reel with my favorite work. Latest additions to the reel are Chappie and TMNT. I hope to add some more updated personal work soon.
Big props to all the crew at Image Engine for the amazing work.
Music By Arcade Fire. "Sprawl 1" from album "The Suburbs".
Friday, July 24, 2015
Moving To Wellington
Needless to say, that 4.5 weeks was brutally busy, but as Kate and I always do, we smashed it out and got everything done. I worked up to the friday (3 days before we left), which made it difficult to do a lot, so my weekends and after work hours got really busy, but it was fun and finally gave me something to do!
What helped....well, Go Box helped for storing our stuff. Pretty much Go Box delivers a shipping container to your door. You fill it with your stuff (see 3D Tetris Post), then they take it away. Filling that box sucked. I think I am looking forward to unpacking it even more. Gum Tree helped a lot. The amount of shit we sold / gave away is amazing. The saying "One mans trash is another mans treasure" is truly accurate. I feel sorry for the dude that took our lawn mower. That bad boy weighed about a tonne and would have cost a boat load to ditch. We stashed a shitty old clam babies bath on the footpath...it was gone in like 10 mins???
We smashed the cleaning, got the house looking gleaming and employed Toop and Toop to rent our beautiful house. They were onto it and found a tenant within a week of advertising it!
The last few nights in our house were spent on a blow up matress. We had to stay with the house as Clooney needed somewhere to stay up until his departure (about 5 hours after us) on Monday the 20th. So we vacated on the 20th at 3am to the airport and left Clooney in the backyard. Kates parents then came down to make sure that Dogtainers Adelaide picked him up at 9am and took him on his merry way. We arrived in Wellington later on the 20th, after some delays and running to the plane in Melbourne due to a huge delay due to iced up planes...yes, iced up planes in Melbs!
Koa from Weta was there to pick us up, hook us up with a car, take us to the phone dealership to get sim cards and then drop us to our accom. Clooney flew on Tues the 21st, spent the night in Auckland and then arrived in Wellington on Wed the 22nd in the afternoon to a relieved Kate. He's loving it and I don't think he misses Adelaide.
Now we have found a place and are searching for a car. I have another week off and Kate starts on Monday. It has been a hectic week and we have seen a lot of Wellington while looking for housing. This city rocks! It is so beautiful and vibrant. It feels way bigger than the population leads you to believe. I'm now eagerly awaiting starting at Weta. I am so pumped to do some amazing work and to work with an amazing team.
There have been some stressful times, but we are so stoked to be here. So far the move has been so worthwhile and has broken us out of a rut that we had got into in Adelaide. Good times!
Lizzy Hawker-Runner
Wednesday, July 15, 2015
On the road to recovery.
3d tetris!
Monday, July 6, 2015
Still Injured
Beginning of a new era.
Wednesday, July 1, 2015
End of an era
Monday, June 22, 2015
Journeys and Adventures!
Sunday, June 21, 2015
SA trail running mt crawford challenge
Thursday, June 18, 2015
Blender....broken!
Why?
Monday, June 15, 2015
Giving Something Back
Subaru GL Wagon 1992
Train Time - Blog Time
Friday, June 12, 2015
Week Off...
Wednesday, June 10, 2015
Team Bloke
Friday, June 5, 2015
Waiting!
List!
Update: Done two of them :-)
Thursday, June 4, 2015
The train station
Sunday, May 31, 2015
Reflection
Thursday, May 28, 2015
Injury strikes again.
Since writing the first few paragraphs of this post, I have been back to the physio to discover that it is not an adductor strain, but tendonosis of the adductor origin tendon. Not good as it is a very difficult place to treat and to minimise use, as you use it a bit every time you walk.
I can however continue swimming, so the next few weeks of recovery is going to mix swimming and some vital core and functional strength work. Hopefully with being smart I can still get back on track for the Yurebilla trail 56km, but unfortunately Adelaide Marathon will be off again :-(
For more info:http://physioworks.com.au/injuries-conditions-1/adductor-tendinopathy
Friday, May 22, 2015
Killer New Shoes...
Next on the list were new road shoes. My current and beloved Saucony Verratas are getting worn after a lot of miles of Iron Man training. I don't 100% need them now, but seeming the Verratas have been discontinued I figured it would be best to find a new shoe to ease into while the Verratas still have some life rather than just get a new shoe and go for it without any transition period.
Off to the Running Company Unley store to see what they had on offer. A quick gait analysis showed me my first video recording ever of my foot strike. I was really happy other than a bit of foot crossover which caused an injury a few years ago, it was looking good.
I tried on a lot of shoes. First the trail shoes. I tried the Saucony trail shoe, Salamon SLab, Nike and I think that's it. The Nike felt horrible, like the was a big cylindrical air bag running down the centre of my foot. The Saucony felt good, but I think the reason I liked it was because they felt very similar to my Verratas. The S Labs felt great. After jumping between shoes a few times I chose the SLabs because they just felt more stable than the Sauconys. The Sauconys just felt a bit high and floppy. Potential ankle rolling material so I decided against them.
Now the road shoes. I have been running recently in a 3mm heel to toe drop trail shoe (Inov8 Trail Roc something) and the 0mm hel to toe Verrata. So I specifically wanted something in this ball park. The Slab met these requirements for the trail shoe, but funnily enough it was hard to get a road shoe in this realm that wasn't a racing flat. I specifically wanted a marathon shoe and wasn't super enthusiastic about running a marathon./..or training for a marathon, in racing flats.
Bring on the Hoka One One. TBC....
Monday, May 18, 2015
Chambers Gully Challenge 10km
The race left from Chambers Gully Road at Waterfall Gully Road. The first 3kms are all uphill, the first km being a steady grind, and the next 2km being a hard calf burning ascent. Not so steep that I had to walk, but very close to. As I was running this steep section I was concerned about how Kate would be feeling. Not only was this unlike anything she had ever run...ever, but the air was cold and I was aware she hadn't brought her asthma medication.
It's interesting running a race like this. Only 10kms. I ran 27 kms last week, descending this exact trail. I knew how steep it was but you never really appreciate it until you run up it!
At the top of this grind, the next 5 kms is a beautifully flowy trail called the Wine Shanty Trail. It meanders along the contour of the ridge, providing a nice even running surface and beautiful scenery through Sclerophyll forest. At the end of this 5kms, is the final 2kms which is once again a steep climb to the summit. Given it was a race you always push yourself a bit harder, and I hit the summit in 51mins, about 9 mins faster than I normally run it. The second I hit the top I turned around and ran down to meet Kate.
She was doing really well given her absolute lack of race preparation. I met her as she was about to start the final 2km ascent. I ran it with her, her calves were burning but she persevered and smashed it in 1hr4mins I think. Obviously I was super proud of her achievement and laughed at the fact that she just rocks up and runs a steep as trail race with almost no trail running experience.
This race taught me a lot about trail running. I felt like a total newbie compared to road racing. I have no issues with pacing myself for a road race, however on the trails I had no idea how to tackle the race. Also 10kms is super short for me and I haven't been training for short bursts, and especially not short bursts with this kind of steepness. t also taught me to pay attention. First tail race, first wrong turn! I started chatting to someone and zoned out and once they backed off I continued to run my usual route. Next thing I heard someone yelling at me, I turned around to realise I had overshot the turn off by about 100 meters, and luckily someone had seen me before I went out of sight. I quickly turned around and when I caught up to the other competitor thanked them greatly. That could have really ruined my race!
In the end Kate finished with a 3rd place for her age group, very proud :-) All in all a fun race and I think it has inspired Kate to get out on the trails a bit more.
Sunday, May 10, 2015
Friday, May 8, 2015
Running, Trail Running, Yurebilla Trail, Buffalo Stampede
A bit over a year ago I was ramping back up from an injury that I sustained in the Victoria, BC, Marathon. I learnt a lot from this injury. Don't force speed. I always end up injured. Instead I am now focusing on running because I like it, not because I want to go fast. I am running a lot of miles and speed will slowly come with experience. I'm not pout to prove anything, but what I do want to achieve is to be able to just run for as long as I like.
This is a goal as I love running everywhere I go. It is such an amazing way to spend time with friends, meet new people and see a lot more than if you walked! For example, I could run the Yurebilla Trail in one day. If you walk it, you need to allocate 3 days.
Aside from loving running, I am also living Trail Running. Being out in the hills I just forget that I am running. The views are beautiful and ever changing. The air is fresh. It is a perfect time for meditation, delving deep into your mind and investigating all sorts of interesting thoughts or just finding a total point of clarity in which your mind is empty, free from the weights that we impose upon ourselves in this hectic life.
Running has inspired me to take on a few different challenges in the coming year. These two events will pose a new challenge and replace the challenge that Iron Man presented itself. The first is the Yurebilla Trail 56km. This race will take me the length of the Yurebilla Trail in hopefully 8ish hours.
The second is the Buffalo Stampede. A 76km Ultra that will take me and hopefully my great buddy from Colorado, Ty, from Bright to the top of Mt Buffalo and back to Bright in who knows how long. Since talking about this with Ty I have been so pumped. Running with buddies is amazing, but running with buddies that share a passion for being outdoors and running as much as we both do will be a once in a lifetime opportunity! The 76kms has a LOT of elevation gain and is going to be a great physical and mental challenge for us both, and it is going to be really interesting running together and seeing how comradeship helps pull us through the hard times of the race!
I guess this blog post is a random dribble of why running makes me stoked! I'm just so pumped right now that I had to write something!
Get out there and get running! It's awesome. Till next time, happy running!
Greenbelt Half Marathon
By race day, Sam has signed me up for a 1hr24min race through a coaching app that I am testing, so game on! This little spark set me a new goal. If I raced this it would be a PB. I woke to a beautiful day. Crystal clear blue skies. No wind. Amazing autumn day, perfect day for a run.
The race started at 8am at Athlestone Primary School and headed to the river Torrens and then down the Linear Park trail and into the city. Sam and I had previously discussed our goal pace, and in the end we ran together, talking endlessly about events and training. We stuck to our goal pace and time flew by.
With 5 or so kms to go we managed to open up as we had preserved the legs by not going out too hard and shaved a few more secs off our avg pace. We finished with 1:24:44, Sam crossing the line about a meter ahead of me. I can't remember my old half marathon PB, but I think this shaved off about 3mins. I was super stoked to have set a PB in a race that I wasn't planning on running until 4 days ago. A good re introduction to speed work and a good basis to my Marathon training.
The rest of the ARC killed it, with PBs all around! We backed up a solid race effort with brunch at "The Deli" with the whole crew! Amazing eggs! It's been really great running with the ARC again and meeting a lot of great like minded people. The group is so cool and Kate and I have really found that we are getting pushed, but also making some great new friends!
Till next time, happy running!