text:
/*
 * CThread.cc
 *
 *  Created on: Mar 4, 2013
 *      Author: yaowei
 */

#include "worker_threads.h"
#include "master_thread.h"
#include "global_settings.h"
#include "logic_opt.h"
#include "redis_conn_pool.h"
#include "../../public/utils.h"
#include "../../public/user_interface_defines.h"
#include "../../public/message.h"
#include "../../util/http_client.h"
#include "json_opt.h"
#include "user_alive.h"

#define ITEMS_PER_ALLOC 64

int CWorkerThread::init_count_ = 0;
std::vector<LIBEVENT_THREAD*> CWorkerThread::vec_libevent_thread_;
pthread_mutex_t    CWorkerThread::init_lock_ = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t  CWorkerThread::init_cond_ = PTHREAD_COND_INITIALIZER;
pthread_mutex_t CWorkerThread::cqi_freelist_lock = PTHREAD_MUTEX_INITIALIZER;
CQ_ITEM *  CWorkerThread::cqi_freelist = NULL;

/*
 * Free list management for connections.
 */
boost::mutex CWorkerThread::mutex_;
std::vector<conn*> CWorkerThread::vec_freeconn_;
int CWorkerThread::freetotal_ = 0;
int CWorkerThread::freecurr_ = 0;

int CWorkerThread::last_thread = -1;
        CRedisOpt* CWorkerThread::redisOpt_ptr_ = new CRedisOpt();

CWorkerThread::CWorkerThread()
{
}

CWorkerThread::~CWorkerThread()
{
    utils::SafeDelete(redisOpt_ptr_);
}

bool CWorkerThread::InitThread(struct event_base* main_base)
{
    /* Free list management for connections.*/
    conn_init();

    /* Initializes worker threads */
    LOG4CXX_INFO(g_logger, "Initializes worker threads.");

    for(unsigned int i=0; i<utils::G<CGlobalSettings>().thread_num_; ++i)
    {
        LIBEVENT_THREAD* libevent_thread_ptr = new LIBEVENT_THREAD;

        /* Initializes per worker-thread with master-thread communicate pipe*/
        int fds[2];
        if (pipe(fds) != 0)
        {
            LOG4CXX_ERROR(g_logger, "CThread::InitThread:Can't create notify pipe");
            return false;
        }
        libevent_thread_ptr->notify_receive_fd = fds[0];
        libevent_thread_ptr->notify_send_fd       = fds[1];

        if(!SetupThread(libevent_thread_ptr))
        {
            utils::SafeDelete(libevent_thread_ptr);
            LOG4CXX_ERROR(g_logger, "CThread::InitThread:SetupThread failed.");
            return false;
        }

        vec_libevent_thread_.push_back(libevent_thread_ptr);
    }

    /* Create threads after we've done all the libevent setup. */
    LOG4CXX_INFO(g_logger, "Create threads after we've done all the libevent setup.");

    for (unsigned int i = 0; i < utils::G<CGlobalSettings>().thread_num_; i++)
    {
        CreateWorker(WorkerLibevent, vec_libevent_thread_.at(i));
    }

     /* Wait for all the threads to set themselves up before returning. */
    WaitForThreadRegistration(utils::G<CGlobalSettings>().thread_num_);

    return true;
}

bool CWorkerThread::SetupThread(LIBEVENT_THREAD* me)
{
    me->base = event_base_new();
    assert(me != NULL);

    /* Listen for notifications from other threads by pipe */
    me->notify_event = *event_new(me->base, me->notify_receive_fd, EV_READ|EV_PERSIST, ThreadLibeventProcess, (void*)me);
    assert(&me->notify_event != NULL);

    if (event_add(&me->notify_event, NULL) == -1)
    {
        int error_code = EVUTIL_SOCKET_ERROR();
        LOG4CXX_ERROR(g_logger, "CWorkerThread::SetupThread:event_add errorCode = " << error_code
                                << ", description = " << evutil_socket_error_to_string(error_code));
        return false;
    }

    /* Initializes worker-threads new_conn_queue */
    me->new_conn_queue = new conn_queue;
    if (me->new_conn_queue == NULL)
    {
        perror("Failed to allocate memory for connection queue");
        return false;
    }
    ConnQueueInit(me->new_conn_queue);

    return true;
}

void CWorkerThread::ThreadLibeventProcess(int fd, short event, void* arg)
{

    LIBEVENT_THREAD *libevent_thread_ptr = static_cast<LIBEVENT_THREAD*>(arg);
    assert(libevent_thread_ptr != NULL);

    /* read from master-thread had write, a byte represents a connection */
    char buf[1];
    if (read(fd, buf, 1) != 1)
    {
        LOG4CXX_ERROR(g_logger, "CWorkerThread::ThreadLibeventProcess:Can't read from libevent pipe.");
        return;
    }

    //将主线程塞到队列中的连接pop出来
    CQ_ITEM *item;
    item = ConnQueuePop(libevent_thread_ptr->new_conn_queue);

    if (NULL != item)
    {
        //初始化新连接,注册事件监听
        conn* c = conn_new(item, libevent_thread_ptr);
        if(NULL == c)
        {
            LOG4CXX_ERROR(g_logger, "CWorkerThread::ThreadLibeventProcess:Can't listen for events on sfd = " << item->sfd);
            close(item->sfd);
        }

        //回收item
        ConnQueueItemFree(item);
    }
}

conn* CWorkerThread::conn_new(const CQ_ITEM* item, LIBEVENT_THREAD* libevent_thread_ptr)
{
    conn* c = conn_from_freelist();
    if(NULL == c)
    {
        c = new conn[1];
        if(NULL == c)
        {
            LOG4CXX_ERROR(g_logger, "CWorkerThread::conn_new:new conn error.");
            return NULL;
        }

        try
        {
            c->rBuf = new char[DATA_BUFFER_SIZE];
            c->wBuf = new char[DATA_BUFFER_SIZE];
        }
        catch(std::bad_alloc &)
        {
            conn_free(c);
            LOG4CXX_ERROR(g_logger, "CWorkerThread::conn_new:new buf error.");
            return NULL;
        }
    }

    c->sfd     = item->sfd;
    c->id   = item->id;
    c->rlen = 0;
    c->wlen = 0;
    c->isVerify = true;
    c->thread = libevent_thread_ptr;
    c->is_online = false;

    int flag = EV_READ | EV_PERSIST;
    struct bufferevent *client_tcp_event = bufferevent_socket_new(libevent_thread_ptr->base, c->sfd, BEV_OPT_CLOSE_ON_FREE);
    if(NULL == client_tcp_event)
    {
        if(!conn_add_to_freelist(c))
        {
            conn_free(c);
        }
        int error_code = EVUTIL_SOCKET_ERROR();
        LOG4CXX_ERROR(g_logger, "CWorkerThread::conn_new:bufferevent_socket_new errorCode = " << error_code
                                 << ", description = " << evutil_socket_error_to_string(error_code));

        return NULL;
    }

    bufferevent_setcb(client_tcp_event, ClientTcpReadCb, NULL, ClientTcpErrorCb, (void*)c);

    struct timeval heartbeat_sec;
    heartbeat_sec.tv_sec = utils::G<CGlobalSettings>().client_heartbeat_timeout_;
    heartbeat_sec.tv_usec= 0;
    LOG4CXX_TRACE(g_logger, "client heartbeat timeout " << heartbeat_sec.tv_sec);
    bufferevent_set_timeouts(client_tcp_event, &heartbeat_sec, NULL);

    bufferevent_enable(client_tcp_event, flag);

    return c;
}

void CWorkerThread::ClientTcpReadCb(struct bufferevent *bev, void *arg)
{
    conn* c = static_cast<conn*>(arg);
    assert(c != NULL);

    LOG4CXX_TRACE(g_logger, "CWorkerThread::ClientTcpReadCb in.");

    int recv_size = 0;
    if ((recv_size = bufferevent_read(bev, c->rBuf + c->rlen, DATA_BUFFER_SIZE-c->rlen)) > 0)
    {
        c->rlen = c->rlen + recv_size;
        //进行token校验,不满足校验条件的为恶意连接,直接关闭
        if(c->rlen >= TOKEN_LENGTH && c->isVerify == false)
        {
            c->isVerify = true;
            std::string str_verify(c->rBuf, TOKEN_LENGTH);
            if(str_verify.compare(std::string(TOKEN_STR)) != 0)
            {
                LOG4CXX_WARN(g_logger, "CWorkerThread::ClientTcpReadCb DDOS. str = " << str_verify);
                conn_close(c, bev);
                return;
            }
            else
            {
                c->rlen = c->rlen - TOKEN_LENGTH;
                memmove(c->rBuf, c->rBuf + TOKEN_LENGTH, c->rlen);
            }
        }
    }

    std::string str_recv(c->rBuf, c->rlen);
    if (utils::FindCRLF(str_recv))
    {
        /* 有可能同时收到多条信息 */
        std::vector<std::string> vec_str;
        utils::SplitData(str_recv, CRLF, vec_str);

        for (unsigned int i = 0; i < vec_str.size(); ++i)
        {
            CLogicOpt logicOpt(c);
            logicOpt.StartLogicOpt(vec_str.at(i));
        }

        int len = str_recv.find_last_of(CRLF) + 1;
        memmove(c->rBuf, c->rBuf + len, DATA_BUFFER_SIZE - len);
        c->rlen = c->rlen - len;
    }

    return;
}

void CWorkerThread::ClientTcpErrorCb(struct bufferevent *bev, short event, void *arg)
{
    conn* c = static_cast<conn*>(arg);
    int sfd = bufferevent_getfd(bev);

    LOG4CXX_INFO(g_logger, "CWorkerThread::ClientTcpErrorCb INFO, guid = " << c->guid);
    if (event & BEV_EVENT_TIMEOUT)
    {
        LOG4CXX_WARN(g_logger, "CWorkerThread::ClientTcpErrorCb:BEV_EVENT_TIMEOUT. guid = " << c->guid);
    }
    else if (event & BEV_EVENT_EOF)
    {
        LOG4CXX_WARN(g_logger, "CWorkerThread::ClientTcpErrorCb:BEV_EVENT_EOF. guid = " << c->guid);
    }
    else if (event & BEV_EVENT_ERROR)
    {
        int error_code = EVUTIL_SOCKET_ERROR();
        LOG4CXX_WARN(g_logger, "CWorkerThread::ClientTcpErrorCb:BEV_EVENT_ERROR some other errorCode = " << error_code
                                << ", description = " << evutil_socket_error_to_string(error_code)
                                << ", guid = " << c->guid);
    }

    CMasterThread::map_csfd_id_.erase(sfd);

    if (c->is_online)
    {
        // 清理redis数据
        CLogicOpt::RemoveGuidFdFromCache(c->guid);
    }

    if (c->is_online && !(event & BEV_EVENT_EOF))
    {
        // 通知用户心跳异常
        CJsonOpt json_opt;
        int mid = g_http_client_mid++;
        string msg_info = json_opt.JsonJoinUserLogout(mid, c->guid);
        string url = utils::G<CGlobalSettings>().httpserver_url_;
        SendMsg send_msg(url, msg_info);
        g_http_client->SubmitMsg(send_msg);
    }

    // 清理工作
    c->is_online = false;
    string temp;
    c->guid.swap(temp);

    conn_close(c, bev);
}

void CWorkerThread::CreateWorker(void *(*func)(void *), void *arg)
{
    pthread_t thread;
    pthread_attr_t attr;
    int ret;

    pthread_attr_init(&attr);

    if ((ret = pthread_create(&thread, &attr, func, arg)) != 0)
    {
        LOG4CXX_FATAL(g_logger, "CWorkerThread::CreateWorker:Can't create thread:" << strerror(ret));
        exit(1);
    }
}

void *CWorkerThread::WorkerLibevent(void *arg)
{
    LIBEVENT_THREAD *me = static_cast<LIBEVENT_THREAD *>(arg);

    me->thread_id = pthread_self();

    //LOG4CXX_TRACE(g_logger, "CWorkerThread::WorkerLibevent:WorkThread id = " << me->thread_id << " has start..." << me->base);

    RegisterThreadInitialized();

    event_base_dispatch(me->base);

    return NULL;
}

/*
 * Dispatches a new connection to another thread. This is only ever called
 * from the main thread, either during initialization  or because
 * of an incoming connection.
 */
void CWorkerThread::DispatchSfdToWorker(int sfd, int id)
{
    CQ_ITEM *item = ConnQueueItemNew();

    /* RR */
    int tid = (last_thread + 1) % utils::G<CGlobalSettings>().thread_num_;
    LIBEVENT_THREAD *thread = vec_libevent_thread_.at(tid);
    last_thread = tid;

    item->sfd = sfd;
    item->id  = id;

    //LOG4CXX_TRACE(g_logger,  "CWorkerThread::DispatchSfdToWorker:dispatch threadId = " << thread->thread_id);

    ConnQueuePush(thread->new_conn_queue, item);

    char buf[1];
    buf[0] = 'c';
    if (write(thread->notify_send_fd, buf, 1) != 1)
    {
        LOG4CXX_WARN(g_logger, "CWorkerThread::DispatchSfdToWorker:Writing to thread notify pipe");
    }
}

void CWorkerThread::RegisterThreadInitialized(void)
{
    pthread_mutex_lock(&init_lock_);
    init_count_++;
    if(init_count_ == int(utils::G<CGlobalSettings>().thread_num_))
    {
        pthread_cond_signal(&init_cond_);
    }
    pthread_mutex_unlock(&init_lock_);
}

void CWorkerThread::WaitForThreadRegistration(int nthreads)
{
    pthread_mutex_lock(&init_lock_);
    pthread_cond_wait(&init_cond_, &init_lock_);
    pthread_mutex_unlock(&init_lock_);
}

/*
 * Initializes a connection queue.
 */
void CWorkerThread::ConnQueueInit(CQ *cq)
{
    pthread_mutex_init(&cq->lock, NULL);
    pthread_cond_init(&cq->cond, NULL);
    cq->head = NULL;
    cq->tail = NULL;
}

/*
 * Returns a fresh connection queue item.
 */
CQ_ITEM * CWorkerThread::ConnQueueItemNew(void)
{
    CQ_ITEM *item = NULL;

    pthread_mutex_lock(&cqi_freelist_lock);
    if (cqi_freelist)
    {
        item = cqi_freelist;
        cqi_freelist = item->next;
    }
    pthread_mutex_unlock(&cqi_freelist_lock);

    if (NULL == item)
    {
        /* Allocate a bunch of items at once to reduce fragmentation */
        item = new CQ_ITEM[ITEMS_PER_ALLOC];
        if (NULL == item)
            return NULL;

        /*
         * Link together all the new items except the first one,
         * (which we'll return to the caller) for placement on the freelist.
         */
        for (int i = 2; i < ITEMS_PER_ALLOC; i++)
            item[i - 1].next = &item[i];

        pthread_mutex_lock(&cqi_freelist_lock);
        item[ITEMS_PER_ALLOC - 1].next = cqi_freelist;
        cqi_freelist = &item[1];
        pthread_mutex_unlock(&cqi_freelist_lock);
    }

    return item;
}

/*
 * Adds an item to a connection queue.
 */
void CWorkerThread::ConnQueuePush(CQ *cq, CQ_ITEM *item)
{
    item->next = NULL;

    pthread_mutex_lock(&cq->lock);
    if (NULL == cq->tail)
        cq->head = item;
    else
        cq->tail->next = item;
    cq->tail = item;
    pthread_cond_signal(&cq->cond);
    pthread_mutex_unlock(&cq->lock);
}

/*
 * Looks for an item on a connection queue, but doesn't block if there isn't one.
 * Returns the item, or NULL if no item is available
 */
CQ_ITEM* CWorkerThread::ConnQueuePop(CQ *cq)
{
    CQ_ITEM *item;

    pthread_mutex_lock(&cq->lock);
    item = cq->head;
    if (NULL != item)
    {
        cq->head = item->next;
        if (NULL == cq->head)
            cq->tail = NULL;
    }
    pthread_mutex_unlock(&cq->lock);

    return item;
}

/*
 * Frees a connection queue item (adds it to the freelist.)
 */
void CWorkerThread::ConnQueueItemFree(CQ_ITEM *item)
{
    pthread_mutex_lock(&cqi_freelist_lock);
    item->next = cqi_freelist;
    cqi_freelist = item;
    pthread_mutex_unlock(&cqi_freelist_lock);
}

/*
 * Free list management for connections.
 */
void CWorkerThread::conn_init(void)
{
    freetotal_ = 200;
    freecurr_ = 0;

    vec_freeconn_.resize(freetotal_);
}

/*
 * Returns a connection from the freelist, if any.
 */
conn * CWorkerThread::conn_from_freelist()
{
    conn *c = NULL;

    boost::mutex::scoped_lock Lock(mutex_);
    if (freecurr_ > 0)
    {
        c = vec_freeconn_.at(--freecurr_);
    }

    return c;
}

/*
 * Adds a connection to the freelist. true = success.
 */
bool CWorkerThread::conn_add_to_freelist(conn *c)
{
    bool ret = false;
    boost::mutex::scoped_lock Lock(mutex_);
    if (freecurr_ < freetotal_)
    {
        vec_freeconn_.at(freecurr_++) = c;
        ret = true;
    }
    else
    {
        /* 增大连接内存池队列 */
        size_t newsize = freetotal_ * 2;
        vec_freeconn_.resize(newsize);
        freetotal_ = newsize;
        vec_freeconn_.at(freecurr_++) = c;
        ret = true;
    }

    return ret;
}

/*
 * Frees a connection.
 */
void CWorkerThread::conn_free(conn *c)
{
    if (c)
    {
        utils::SafeDeleteArray(c->rBuf);
        utils::SafeDeleteArray(c->wBuf);
        utils::SafeDelete(c);
    }
}

void CWorkerThread::conn_close(conn *c, struct bufferevent *bev)
{
    assert(c != NULL);

    /* delete the event, the socket and the conn */
    bufferevent_free(bev);

    LOG4CXX_TRACE(g_logger, "CWorkerThread::conn_close sfd = " << c->sfd);

    /* if the connection has big buffers, just free it */
    if (!conn_add_to_freelist(c))
    {
        conn_free(c);
    }

    return;
}


text:
Tag Archives: Wythall & Hollywood 10k
July 12, 2018 by Andy Yu
Would 888 bring me luck?
For previous years' races, please click below:
This was my sixth outing at this race, making it the most attended event from my personal running history.
A common trend in 2018 will be remembered for weather conditions wreaking havoc on race plans. In March, it was snow and freezing temperatures. In June and July, it's record-breaking warmth. Here's a little fun-fact for you readers: only 20% of the energy we use in running goes towards motion; the remaining 80% is expended as waste heat. This is obviously welcome in cooler conditions as it's free central heating, but in warmer conditions, it's a double-whammy energy cost as we use precious calories to also shift the unwanted heat that we generate from running.
The recent warm Wilmslow Half Marathon left me feeling well conditioned to the heat and I was pretty confident a fresh 10k PB was mine for the taking; after all, this was my PB course from 2016 until only a few months ago! Rather than get greedy and potentially blow-up, I had my sights set on a very modest finish of only 38:30, with a slower first 5k and a faster second 5k to better suit my racing style.
Arriving at race HQ with Lis, Dave and Simon in tow, it was good to see the race in rude health. This was the first iteration with chip timing and by the organisers' own admission, they'd also outgrown the previous registration room to spread out more widely across the venue. I collected bib number "888". Ahead of time, the organisers invited people to pick bib numbers of their choice from a certain range; 171 was unavailable to 10k runners, so I went with "888", which is considered very auspicious in Chinese culture. The logic is the Mandarin or Cantonese pronunciation of "8" sounds like the word to strike it rich. By contrast, "4" is considered very unlucky because it sounds like death. Would the bib bring me luck or only misfortune?
There were many familiar faces dotted around the place as is typical for a race that borders upon several local running club stomping grounds.
Simon and I split from Dave to complete our own warm-up. Whereas I normally like to cover 2 miles before a 5k up to the half marathon, the heat was incredibly noticeable at only 08:30, prompting me to chop it down to just a mile. Staying cool became the new goal!
With chip timing in place, there was no need to pitch up on the start line like in years' past, but I guess old habits die hard. Huddled together, the air was thick with anticipation or perhaps it was just the humidity?
Even at 09:15, the mercury had already reached 22°C and with nary a cloud in the sky. Off the line, I could already tell I was working harder than I wanted to be. One could almost cut through the air with a knife as it entered my lungs, and my legs were heavy despite a lighter second half to the taper week. Most of my peers hared off into the distance, but as tempting as it was to go with them, self-preservation for the first half was the aim of the game; an average of 3:50 per km was the target to allow for the above said modest 38:30 PB.
Shortly after turning the first corner, everybody almost came to a standstill when a flatbed truck, with what looked like a cement mixer on the back, partially blocked the route and prevented the lead vehicle from going any further! Cries of, "Keep right," filled the air as we tried our best to nimbly pass the blockade. I spoke with the 5k winner after the event, who ended up making a wrong-turn with no lead vehicle and fewer marshals on hand, many having relocated temporarily to get the flatbed truck cleared off.
The first km came in as expected at 3:51, though it still didn't feel as easy it should have for the opening split of a 10km, especially when I purposely held back…
The dreaded second km signalled the first of two not-insignificant climbs on the course. This was my opportunity to draw a little closer to the groups that had formed ahead of me, especially as I hugged the racing line of the course, though by consequence ended up running clear of any shade on offer. 4:14 popped out, whereas I'd targeted closer to 4:05; it was at this point that I decided chasing a firm time was no longer sensible in such conditions and I withdrew to largely running by feel.
Over the brow of the hill came the instant relief of the fast downhill stretch all the way to the Phoenix complex. It took a little while, but my legs began turning over more quickly to capitalise on the descent. Even with gravity on my side, I could still only manage to push out a 3:55 split, confirming my thoughts that a scaled back effort would pay dividends in the second half. Average pace hovered at 3:59 per km, so it was still uncertain if I could even break 40 minutes on such a warm morning!
A number of years ago, I was interviewed for runABC Midlands and I waxed lyrical about this particular race. One stand out feature is the gentleman with a hosepipe to cool runners as they pass the Rose Bank Stores & Saddlery premises. "Full blast, please," were my words as I neared him, to which he kindly obliged to give me a thorough drenching. Ah, bliss! A momentary lapse in concentration from the relief meant I only had enough time to target the final cup of water from the nearby volunteers. Guess what… We both fumbled it! "Shit," I cursed. Thankfully, a chap behind had grabbed a spare in time and handed it over – my saviour! Down the hatch it all went until the next scheduled water stop within the Phoenix complex.
As I entered the Phoenix premises, exiting was Damian Cartland, giving me a cheer in the process. 4km came in at 3:52, so the pace was finally starting to come to me.
On the approach to halfway, I finally caught Barry Fallon. Without even looking back, he knew it was me. Like a Bond villain, he mused, "I was wondering when I would encounter you, Andy." It must've been my cadence, because Barry wasn't the first and won't be the last to recognise me from my pitter-patter footstrike. I told him to focus on reeling the lead woman in (she turned out to be a 5k runner), who remained just 10m or so ahead of us.
A little further on was Lis waiting for me with a par-frozen bottle of water. Whilst in years past, such a bit of assistance was a welcome nice-to-have, this year it became an essential. Cracking the bottle open, I glugged some of the refreshingly cool water down for immediate relief. I offered it to Barry and the others in the vicinity, though there were no takers, so I poured the remnants over myself. Right away, I felt super-charged from the cold water and I was able to power on to halfway, netting a 3:57 km and a 19:51 5k split.
As several runners made their way towards the finish for the end of the 5k race, I veered left for another lap. This was the first time in all the years I'd run this race where I looked longingly at those finishing the 5k in envy – the warmth changed everything. I also found myself running solo, with Barry's group behind me and Andy Piddington way off into the distance.
Unexpectedly, a sudden rush of strength enveloped me. The effort, in spite of running alone felt manageable. I would even go as far as saying the fifth and sixth km were the most comfortable of the entire race! 6km clocked in for 3:57, remaining steady.
Turning for the climb once more, I steeled myself to graft. Andy Piddington was still ahead, but his margin on me had decreased slightly from before. I repeatedly told myself that each step I could close on him was additional time chipped away to get under 40 minutes, which was still not a guarantee at this point with only 3:58 average pace on my Garmin and the knowledge that the course measured slightly long from past experience. Slowly, I worked my way up to Andy; neither of us had ever met before, but we both knew of each other and shared some pleasantries. 7km came in at 4:06 to be, annoyingly, just a second outside of my 4:05 best. One year, I will get under 4:00 for the exclusively uphill km…
I continued to stick with Andy for some company, hoping that he'd take advantage of the descent and push the pace on. Ahead of us was a pair, clearly working together to drive onwards. Whilst our pace did rise, I wasn't satisfied it was fast enough so I went it alone and broke off from Andy partway through the split for 3:50.
Passing the man with the hosepipe once again, I made the same request for a full blast once more. Grabbing a cup of water was faultless on the second occasion.
Gradually, I drew closer to the two runners in front of me. Bad timing struck as I wasn't fast enough to get clear of them before the switchback in the Phoenix complex, and nor did I want to purposely slow to avoid clattering into them. With mere metres remaining and without a single word from me, they both parted for me to run through and be first at the switchback! I thanked them both as I tried my best to navigate around the cone with my Titanic-esque turning circle. There really isn't an elegant method on this part of the course, due to the narrow path and the lack of anything physical to swing around. 9km came in at 3:45.
Hot, hot, hot at the 2018 Wythall Hollywood 10k – photo by Lis Yu
Exiting Phoenix, I knew I had fewer than 4 minutes to tolerate before I could stop. Barry and Dave were on the other side of the road, both receiving cheers from me to keep plugging away. I began encountering lapped runners and a bicycle paramedic who insisted on incessantly getting in my way, just as I wanted to up my tempo. In the distance by no more than 100m was somebody in a white t-shirt, who became my final target to try and pull in; I was reasonably confident I had enough gears to shift up to in my pursuit before running out of road. Lis continued to lend her support, providing a few brief moments of welcome distraction as the effort notched upwards. As I closed in on the finish, I came to the realisation that the guy I tried to chase down had also increased his pace for the gap between us to be frustratingly maintained.
With fewer than 200m remaining, I kicked in the hope he had no response. Whereas he took the wider line around a straggling 5k runner, a small enough gap on the race line remained for me to creep past her in a bid to close the precious few metres. I received a few cheers from the Kings Heath Running club volunteers on hand for a welcome boost. Sadly, this also alerted the runner to how close I was to keep the pressure applied in his kick for the line, beating me to it by just one or two steps!
Despite this being easily in my top 3 warmest races, I finished feeling not too shabby at all – I guess that's the result of me capping the first half's effort. I finished in 17th place with chip time coming to 39:21, which I was pretty pleased with in light of the conditions and how my peers fared. runbritain rewarded me with a handy -0.7 performance based on the 2.2 condition score (1.0 would be considered average conditions for those of you unfamiliar with runbritain's handicap system).
Thankful for no hosepipe ban! Photo by Neil Croxford
I caught up with Damian afterwards, sharing my revised race strategy of basic survival before I sat down in a makeshift shower to cool down.
I'm confident I would have achieved a PB that morning under cooler temperatures, though I'm serene about the outcome. The heat easily cost me by about a minute, so here's hoping the upcoming flat Magor 10k is much cooler, otherwise that's it for my spring-summer season.
Depending on how things go, I may be a no-show at the 2019 10th anniversary race due to potentially racing at the Swansea Half Marathon. Without the clash, I'd be there in a heartbeat – it's such a good event!
Posted in Races.	Tagged 10k, race, Strava, Wythall & Hollywood 10k
This week's running – 19th to 25th of June 2017
June 26, 2017 by Andy Yu
A week of two halves!
Week 7 of the 22 week marathon schedule.
If you have a particular route that you cover time and time again, but in only one direction, I suggest you give it a shot in the opposite direction. I did just that on Monday's 5k recovery run, and it was quite remarkable how different it felt. The route suddenly felt new again; I noticed new details on houses I'd passed dozens of times before, climbs became descents, and so forth.
Elevation-wise, running the reverse route felt slightly more challenging, where formerly shorter, sharper climbs had been traded in for more gradual, longer upward drags.
10 miles with 4 at marathon pace
With the amped up heat and humidity, I opted to break the 10 miles down into a separate warm-up, 4 miles at pace, and warm-down. I wanted the spirit of the prescribed run, whilst diluting it just enough to make it achievable.
Part-way into the first mile at marathon pace, I noticed how much more effort it was taking in the tricky conditions, so I slotted in an additional 10 second buffer to make it more manageable. The adjustment felt about right, allowing all 4 miles to each sneak in at under 7 minutes.
Unsurprisingly, the canal was especially busy. Along with another runner and 4 guys walking, we all failed miserably as we attempted a 6 way pass, though were in good spirits afterwards as we all apologised profusely to each other for the en-masse clattering!
I always find run-commutes in warm and humid conditions particularly challenging. Wearing a bag on my back means I'm continuously sweating for lack of airflow, and running at a slower recovery pace means I'm spending longer on the activity. Factor in a rushed departure from the office and less than ideal hydration over the afternoon, and the result was a pretty messy 5 miles.
Adapting to the heat is entirely trainable. An online buddy of mine from hot and humid Atlanta in the US recently returned to London, where the 10° drop in temperature for him allowed for some pretty stellar training runs, whilst Blighty began suffering with our relative 10° increase.
Wanting a change from slogging it out on the canal towpath, I decided to re-utilise some of the route I adopted last year whilst there were closures between the university and Selly Oak to install new stairs and bike ramps.
Indeed, sometimes a change is as good as a rest. In spite of the undulating second half, the change of scenery served as a pretty good stimulus and kept things interesting on this staple weekly medium-long run. Also positive was the fact that I didn't have to detour half a mile away from home with the goal of bulking out the distance – something I will try to adopt moving forward, especially for the monstrous 20+ mile runs.
For the full run-down of this ever-present race on my calendar, please click here.
Despite it being a light week on my schedule, I still clocked up just 200m shy of 40 miles in total and feel no worse for it. I would like to be in a position so that most of my light weeks end up close to 40 miles, with more dramatic cutbacks utilised sparingly where absolutely necessary. Conversely, I've planned for my biggest weeks to just hit 60 miles, and all other weeks in the middle to hover around 50 miles.
The outcome at the Wythall Hollywood 10k was rather pleasing, where there was a real possibility of it not coming to fruition in the days prior, such is how out of touch I was with 10k pace; my lactate threshold has always been my weakness, so I'm frequently conscious not to ignore it completely. I have one more 10k race as part of the marathon schedule in late July; if things continue to track well, I think a 39:15 is a realistic prospect on the pancake flat course, so long as the weather plays ball!
This coming week is another unusual one, featuring the novelty race that is the Birmingham Black Country Half Marathon, to be completed with Dave. The plan is for us to cover the race at our respective marathon paces for some benchmarking to see just where we're at.
Posted in This week.	Tagged race, Strava, training, Wythall & Hollywood 10k
Fifth outing at this no longer well-kept secret of a 10k – photo by Lis Yu
Covering the recent Aldridge 10k at marathon pace felt like the right thing to do at the time, but the race felt somewhat hollow and unsatisfying. I'd worked hard over the years to get to a sub-40 10k performance, and last year looked like the first time where such a finish time was unlikely to trouble me except on the most hilly of routes.
By comparison, the Wythall Hollywood 10k carries a much gentler profile, even with its two 1km long climbs over 2 laps. Last year was the first time I ran sub-40 on the route, also sharing the joint-honour as my 10k PB course (the other race is the Magor Marsh 10k). With this week technically classed as my cutback week, a sub-40 performance would dovetail nicely as a lactate threshold session to try and widen my arsenal of paces. Darryll Thomas, whom I first met at the race three years ago, also wanted a sub-40 performance, and so the goal was set!
There's a lot going for this race and I can't stress enough how much there is going for it. It seemed others have also finally caught on to it, because it looked like there was a new attendance record at almost a thousand based on bib numbers – perhaps this will persuade the organisers to give chip timing a shot next year, which really is the only thing that lets the race down, especially for those caught up in the middle or back of the pack.
Bib collected from race HQ, I recognised sizable representation from BRAT, Bournville Harriers and Kings Heath Running Club, with a couple of other clubs also in attendance.
Arriving slightly later than originally planned for, I made a beeline to get my warm-up in, which probably could have been at least another 0.5 miles longer in an ideal world. Nonetheless, I breathed a sigh of relief to have gotten all of my pre-race admin completed with a little time to spare to catch-up with a few local faces I recognised. However, there was still no sign of Darryll Thomas…
It was time to assemble on the start line and with just minutes to spare, Darryll finally appeared for our joint-venture to share the sub-40 effort. We noticed we'd somehow positioned ourselves behind several kids, so a wide berth off the line was factored in. "3-2-1" and the beginning of circa-40 minutes of lactate threshold hell had begun…
We both settled into race pace early on and commented that we would reel plenty of people in who had taken off at what was more likely their 5k pace. Confusingly, this may have actually held true for those in the much smaller 5k race. I pointed out a couple of faces to Darryll who we likely wanted to keep an eye on as ability barometers that typically aligned closely to us; worryingly, Barry Fallon had built up quite a lead of some 200m in a matter of minutes, so he was off the radar, though a Bournville Harrier that's always a couple of steps ahead of me at all distances continued to track closely. 1km came in at 3:58 to be precisely on target.
The course throws a lengthy climb in, lasting a little over a km and needing to be tackled twice. Darryll and I both commented that attendance was noticeably up on previous years, where we'd historically finished in the 41 to 42 minute range to find ourselves running in no-man's land. On this occasion, there were plenty of people around us with positions often chopping and changing. Whereas we'd agreed for me to do the heavy lifting on climbs, Darryll kept pace with me for much of the ascent, with the split slowing to 4:10 and staying firmly to plan.
Our plan had us taking advantage of the high-speed downhill section after the climb to recover some of the damage, and to also buffer a little time for the second lap. Darryll took the reins and paved much of the way on the descent, with me in tow. With a 3k split of 3:50, we were back on target and eased off slightly for some recovery.
The ever-present chap with his hosepipe was once again on the scene to cool us runners down. The sight of him and access to multiple water stops got me thinking that, despite the total 2km of climbing, the course is conducive to fast times. Athletes are able to better manage the heat of racing, with several people and me citing the course as home to their 10k PBs. I've run much flatter 10k races historically, but as single lap events with a single water station, it becomes much harder to continue red-lining when you're overheating at just halfway.
One of the kids from the 5k race was able to stick with us, and regardless of the very wide and traffic-free route, decided he needed to run through the two of us. "Out of the way," he said, precociously! In no rush of our own on this steady split, we parted and allowed him through, only for us to overtake him as we exited the Phoenix complex. 4km clocked in for 3:51 for more time in the bank.
I spotted Paul Harris spectating, rather than running this year, for a welcome morale boost. Shortly afterwards on the bridge, I had Lis hand me a bottle of water as she does every year – another one of those little things that allows this race to be faster than its profile would normally allow. Unlike most years, the bottle needed to thaw out a bit more because there wasn't much water to be had from it! A few sips between Darryll and me didn't allow much left to be thrown over our heads, so it was fortunate that we weren't running in the amped up temperatures from a week prior. 5km came in at 3:58 for the split and 19:46 at halfway.
The Bournville Harrier I'd pointed out was narrowly drifting away, such was the level of his ability relative to ours. Barry, however, loomed ever closer with each step. 6k registered 4:03 for some definite slow-down, likely due to the undulations from the country lane.
Turning the corner for the second approach of the climb, I took the lead whilst Darryll and a Leamington Spa Strider, who'd remained with us thus far, sat in behind me. I'd reeled Barry in and gave him some encouragement to latch on to our group, but it was to no avail. His ambitious first half had come back to bite him, though I was still confident he could break 40 minutes with a re-focused final 3km. The climb had definitely knocked some of the wind from our sails the second time around, producing a 7k split of 4:14 and 4 seconds down compared to lap 1.
We took advantage once more of the near-2km long descent, with Darryll moving into position and taking the lead, whilst I followed to gain some recovery. The climb had taken a little more out of me than anticipated, and even with running downhill, I couldn't get my legs to turnover any quicker. The 8k split also slowed a tad to 3:54, though still within acceptable limits.
Passing my man with the hosepipe, I requested an absolute drenching, which instantly freshened me up for the remainder of the race. Entering the Phoenix complex for the final time, I continued to bring up the rear of our three man pack before moving back into the lead. The 9k split produced 3:51 to match perfectly with lap 1.
I switched up my Garmin to elapsed time and began giving real time updates. As I called out, "36 minutes" a little on from 9k, a whole host of runners all crept out of nowhere to surprise me, Darryll and the Leamington Spa Strider! Renewed interest in a sub-40 finish? Hiding in nearby bushes and skipping out a lap like I used to at school cross-country? Who knows…
Final 500m of the Wythall Hollywood 10k 2017 – photo by Lis Yu
Passing Paul and Lis once again, I was spurred on to begin wrapping up the race. I continued to give minute by minute time updates as I led the charge back to race HQ and the finish. My legs had recovered from earlier and I found myself able to open up my stride and push on. Returning to race HQ, I was cheered on by a few kids, shouting out my race number, and also Cannon Hill parkrunner, David Carruthers, stood on the final corner. There was no need for a mad sprint as I knew I was on the right side of 40 minutes!
Here's the Strava data for the race.
Coming back in with 39:42, that was possibly the most comfortable end to a sub-40 10k I've ever experienced. I caught my breath back within seconds as I got to see a flurry of runners crossing the line, including Darryll for 39:43.
Mission accomplished – photo by Lis Yu
The two of us are pretty damn pleased with the performances, after very little respective work at lactate threshold pace outside of parkruns and maybe the odd session. As I keep reiterating to myself, this season is all about one almighty goal, so I'm about where I want to be concerning 10k pace. If I'm feeling a little sharper by the time of the Magor Marsh 10k in late July, I may see if something in the region of 39:15 is possible.
Congratulations go out to Alex Mold for another second place podium finish in the women's race, and Steve Dunsby for another 3rd place podium finish in the men's race.
A 5k warm-down rounded off a pretty satisfying day, with not nearly as much suffering at lactate threshold as originally envisaged!
Posted in Races.	Tagged 10k, races, Strava, Wythall & Hollywood 10k
Do I qualify as an ever-present at this race yet?
After the recent Aldridge 10k serving as both a race sharpener and ability barometer, I went into this year's Wythall Hollywood 10k with the goal of producing a sub-39 PB. Honestly speaking, such a time should have happened last year, but hey-ho.
Continuing the last fortnight's trend, I once again roped Dave and Simon in to try and expand their racing horizons to what's available locally. Lis also joined us as our pit crew, providing valuable baggage support.
My interview in Run ABC Midlands
Rocking up at race HQ and collecting our bibs, the lady that checked me in thanked me for helping to publicise the race via an interview I gave for the free to obtain Run ABC Midlands magazine a number of months ago.
The race has grown in popularity over the last few years, especially amongst local clubs with strong attendance this year from BRAT, Kings Heath, Bournville, Swifts and Kingfisher Harriers. This boded well for me as somebody trying to limit any damage from running in no-man's land.
Stood in the starting grid, I was in good company with many faster and familiar faces. It was time to get my game face on; 3:53 per km/6:15 per mile were the targets with complete buy in, unlike Aldridge's half-hearted attempt.
The start wasn't as fast as I was anticipating and allowed me to tail Ed Barlow and Huw Jones for the first few hundred metres. I was cautious not to get too caught up in their pace, seeing as I wanted to cover a steady opening 5k to get me to halfway as quickly as possible with minimal distress; 10k pace across the 10k distance is my Achilles heel, after all!
I ended up in a small group consisting of three or four guys and we clocked our first km at 3:55, so pretty much where I wanted to be pace-wise. In the distance, I could see a few faces I knew I was faster than over 5k and 10k and shuddered to think what the second half of their races would feel like.
The first of two 1km long climbs was soon upon us. I willingly dropped down by a gear to stay with the group, where the next bunch of runners were a little too far to reel in so early on. Last year's race saw me apply too much effort to maintain 10k pace on the climbs, leaving me unable to fully take advantage of the descent on the other side due to accumulated fatigue. The wind kicked up on occasion, so the group also provided some valuable shelter to draft behind! When the climb was finally over, the 2km marker also appeared for a 4:12 split.
What goes up must come down – the descent had never looked more welcoming. The guys in my group jockeyed for position from time to time; one chap and I crept away as the others appeared quite settled at their pace. I didn't realise it at the time, but Dave revealed after the race that he was never too far away for much of the first lap, opting to latch on to the faster pace due to a lack of fellow runners to work with at his original target.
In my interview with Run ABC Midlands, I highlighted one of my favourite features of this race being the bloke with his garden hose on the descent to spray down runners for some brief refreshment. He didn't disappoint, blasting me whilst cheering me on with, "Good work, 911!" 3km was back on first half pace of 3:54.
Curious as to what the runner side by side with me was looking for from the race, I broke the silence. He revealed he ran 41 minutes a year ago, but had crucially turned out a 39:30 at the Aldridge 10k two weeks ago. Agreeing that our abilities appeared well matched, we struck a temporary alliance to dispel any potential for running alone.
As runners, we're like lemmings and all likely just follow the runner immediately in front. Entering the Phoenix complex, those ahead of us ran on to the pavement; due to where the marshals were stood, their body language suggested the pavement was the line to follow, though they quickly alerted us to the error of our way. It was too late and we'd already made it to the awkward switchback. I joked that the course tends to come up a touch long, so we were just reclaiming part of the distance back! 4km was very nippy for 3:46, thanks to no elevation gain, only loss.
Our march continued and I shared with my sidekick that I planned to press on from halfway for a faster second 5k. He agreed he'd do his best to stay with me but promised nothing. We passed Lis, who gave us a cheer and handed me a bottle of water so that I could avoid having to drink from a plastic cup. 5km clocked in with 3:54, producing a first half of 19:41 to be pretty much exactly what I wanted and planned for.
I kicked on and my temporary partner soon became a pursuer, and eventually disappeared from view behind me. The field thinned out, leaving only a couple of scattered 10k runners ahead of me. True to my word, the pace certainly picked up and I cranked out a 3:48 6th km split.
Turning left for the climb, I focused myself to temper that fine line between covering the ascent as quickly as possible without pushing myself too hard and blowing up to kingdom come. With each step I took, I drew closer to the two guys in front. My first victim was a Bournville Harrier that I recognised by face from Cannon Hill Parkrun. The next was impressively dressed in just a cotton t-shirt and shorts, with just his phone for pace feedback – there was nothing fancy about his getup at all, yet he was on for a solid 39:XX performance at the pace he covered the course at. A quick utterance of some encouragement to keep him going and onwards I continued.
Curious as to what my heart rate was, I toggled a few screens on my Garmin and saw "47% of max". My heart rate monitor had slipped a few inches to sit at the bottom of my ribcage, to explain the FUBARd data. And I was hoping to get some lactate threshold feedback, too!
Looking ahead into the distance for my next target, I could see the first female 10k runner I'd encountered all race. It turned out to be Sian Khan, who I ran part of Arrow Valley Parkrun with a number of weeks ago. The next batch of runners were too far off in the distance and would require a concerted effort over several minutes to reach; my only chance to keep the pace going was to convince Sian to stay with me. She initially declined and urged me to go on, but I eventually persuaded her to work with me to get the climb over and done with. Teeth firmly gritted, we fought gravity and won; our prizes were the sweet, sweet descent on the other side and a 4:04 7th km.
A few more words of encouragement and Sian pulled up alongside me to run shoulder-to-shoulder, strides in perfect unison. We estimated the next guy ahead was some 20 to 30 seconds away as we maximised the gains to be had by running downhill. The chap with the garden hose was a welcome-relief for some momentary cool-down as we pulled out a 3:41 split; such a km split wouldn't look unusual in one of my fast 5k runs, so I knew I was on to something quite sizable over 10k.
As we neared the Phoenix complex, I sensed Sian was beginning to tire once more as she began slipping backwards by a step or two. I eased off the pace ever so slightly to allow her to latch on, but it was no use and she moved to fall in line behind me. "Stay with me! A little over a km left!" was all I could snatch in the knowledge that I was close to my limit, if I wasn't there already. I took the correct line the second time through Phoenix and my thoughts all these years were confirmed: the organisers 100% extend the switchback for the second lap, which seems wholly unnecessary considering the race comes up some 30 to 40m long ever since they moved the finish line further inside race HQ. Sian had fallen behind by some 5 to 10 seconds over what seemed like only 200m; I gave her a cheer that was only right, considering she helped me produce some of my fastest splits of the race only minutes earlier. The penultimate km, unsurprisingly, slowed a touch to 3:45, which was still within tolerance of what I'd want to see during one of my own fast 5k performances.
I began to come into contact with some of the 5k race backmarkers, using them as soft interim targets to chase down.
In my own personal hell – photo by Lis Yu
Lis appeared, offering encouragement and telling me to kick on; she didn't have to tell me twice as the rocket underneath me was already lit! Only a few hundred metres separated me from a new 10k PB, but just ahead were more 5k backmarkers, running several people abreast. Also quickly closing in on me was the barrier that separated the 5k and 10k races; a quick side step left and I scooted past the last of the 5k runners and continued my kick for the finish. The cheers from the spectators got louder, so I went faster, making their cheers grow louder again; on and on the circle went!
Firmly back in race HQ, I was pleased to see the organisers had done away with the barriers and with only a clear straight ahead of me, I emptied the tank and charged for the line with my face summing up all the torture I was going through. 10m… Done. 5m… Done. Finish line reached.
Everything inside me was tight and on fire. The balls of my feet were covered in hot spots and potential blisters from the pace pick-up of the second half. I let out a few cries that would have put Tarzan to shame and dropped on my hands and knees for some stability. From where Steve Dunsby and Huw Jones were stood, they remarked that it looked like I was kissing the ground – hey, if it works for Mo Farah, it's got to work for us mere mortals too, right?
Sian and the cotton t-shirt guy passed through the finish funnel and congratulated me on a race well run, and I reciprocated with some handshakes whilst unable to speak.
In the finish line confusion, I'd forgotten to check what I had crossed the line with. Had I done enough to go under 39 minutes, or was I too optimistic and had I even managed to PB at all? Turned out I'd managed to blow the PB doors apart and was rewarded with a 38:45 for my efforts, equating to a 31 second improvement over the 10k distance and a massive 1 minute 17 second boost to my course best.
Me, Dave and Simon at the 2016 Wythall Hollywood 10k – photo by Lis Yu
How did the others get on? Dave hit his target of going under 40 minutes for the first time in almost two years. Simon PBd and went under 45 minutes for the first time.
This race has given me the much needed nod that chasing after a 38:15 10k at the pancake flat Magor Marsh in several weeks won't be a suicide mission! Not a single person overtook me from 4km onwards and I feel I got the pacing strategy just right, using the first half as transport to get me to the second half.
Enough distraction for one week and it's back on the marathon training schedule I go!
Posted in Races.	Tagged 10k, PB, race, Strava, Wythall & Hollywood 10k
This week's running – 6th to 12th of July 2015
Not much in common between Hollywood in the USA and Hollywood in the UK
This week was all about gearing up for the Wythall Hollywood 10k.
It's not often I praise a headwind for being present, but it was most certainly welcome given how humid it was outdoors.
Any of you ever see strange things when out for a run? I ran past a guy sat on a bench wearing a Venetian style mask with a baseball bat in his hands – I kid you not!
5x 800m at 5k pace
After Saturday's stellar track session, I was well and truly fired up for this. Problem was a raging headwind would hit me on the final 400m of each out rep, with little to no benefit on the return rep…
Even without the force of nature against me, it was noticeable how much more effort was required to run 800m at Edgbaston Reservoir versus the track; the former always made me feel much closer to my limit than the latter.
Pretty happy with the splits, but I do feel they could have been more precise.
I have one more 5x 800m session planned for next week and then it's go-time at Wolverhampton Parkrun!
Here's the Garmin data for the session.
The 5x 800m sesh really did a number on me and as such, this recovery run was purposely slower than normal. Thankfully the 17mph gusts of wind were behind me, too!
7 miles – Hagley Road
I really didn't fancy heading onto the canal towpath. I was warm, lethargic and figured the droves of fair-weather folks would only annoy me further. Instead, I opted to head out to Bearwood and back via Broad Street and Hagley Road.
The last time I recall running this route was waaay back in April sometime. I purposely kept the out portion easy and I saw little point in pushing the pace until I began to perk up.
Channelling my inner-Fonz – photo by Geoff Hughes
With a race the day afterwards, I wanted to stay fairly conservative and decided upon the first 4k at sub-20 pace and then would ramp things up in the final km if I felt good.
It had been almost three weeks since the last time I had run at Cannon Hill, and only my third outing on the revised course. It really was good to catch-up with various folks – I think it was April since I last saw Jeremy for instance. Humorously, both Simon and Dunsby were wearing vests after ridiculing me for most of the year for seemingly only wearing vests come rain or shine.
Lis and I also learned that around 80 or so folks didn't get the memo that there was no Parkrun at Cannon Hill last week and turned up anyway. Jeremy could be forgiven because he hadn't attended in months, but there were apparently regulars who were present only the week prior who mistakenly showed up!
Also, Lis and I had plenty of folks asking if we had gotten married yet. As of today when this entry goes live (Sunday 12th of July), there are exactly four weeks to go, so there you have it, chaps and chapesses!
I opted not to run 300m at 5k pace, deciding that the first 4k of the run would ease me in.
Once in the run, I stuck with Nigel and Alex for much of the first half. The lack of 300m warm-up hit me and it took at least 2k for me to get comfortable with the 3:59/km pace. Once warmed-up, I started encouraging folks around me including a kid that always seems to go out hard at faster than sub-20 pace, but fades dramatically in the middle.
Exiting the triangle, I began ramping the pace up and surged pretty much to the end. I surprised myself with a 19:28 and then started to worry about the Wythall Hollywood 10k the following day. Oops… Here's the Garmin data for the run.
Only time I'll ever find myself running alongside these two speedsters! Photo by Geoff Hughes
Post-run, Dunsby introduced me to the Orlando Corea. Over the years, I've seen his name in various results but had no idea who he actually was. And Cannon Hill Parkrun is kinda like that, where I recognise so many people by face but have no clue what their names are unless I've found myself next to them in the results etc.
Unfortunately, there were no results to be had due to a timing failure and instead, everybody was issued a 59:59 finish by default. Gutting for anybody that put themselves on the line to run a PB that morning. Hope there are no technical failures at Wolverhampton Parkrun next week when I go for a 5k PB attempt… *Gulp*
Wythall Hollywood 10k
Onwards to this week's entry from Mark Remy's The Runner's Rule Book that I'm sure many of us can relate to:
Race photos never look good
(Unless you're the guy from the ridiculously photogenic guy meme from a few years ago!)
And I mean never.
Bradd Pitt could show up at the start of a marathon completely rested, tanned, toned, massaged, hydrated, and professionally styled, and by the time the race photographer snapped him at mile 13, he would… well, he would probably look pretty good. He is Brad Pitt, after all.
But the photos of Brad Pitt, when he finally saw them, would look horrible. In the photos, Brad would look like a badly dehydrated Quasimodo having a seizure. This is the magic of race photography. If the folks who sold race photos were smart, they'd charge people not to send prints of their pics.
That said, should you order some of these race photos anyway? Absolutely. And the bigger, the better.
Posted in This week.	Tagged Cannon Hill Parkrun, Garmin, intervals, speedwork, training, Wythall & Hollywood 10k
Another year, another Wythall Hollywood 10k medal and bib
For the 2013, 2014 and 2016 races, please click the following:
Third time the organisers have laid on a 10k version of this race, and my third appearance. Read on to find out what happens when Andy goes to Hollywood (lame, I know…)
I've only ever run this race in its 10k guise, but have known about its 5k version for a number of years. Its popularity really shot up with the introduction of a 10k option, and I guess that's due to the likes of Parkrun claiming their stake on 5k events – others I've spoken to also share this view.
It's usually sweltering whenever this race takes place, but doubles up as a good source of heat training in the process. Unusually this year, conditions were grey and cool to be pretty optimal for faster times; despite this, I was still offered the choice of downgrading from the 10k to 5k, much like in 2013's scorchtastic event.
The race doesn't boast the fastest of 10k courses out there, mainly due to the 1km of incline that needs to be tackled twice. Granted, there is a long descent on the other side, but most of us never truly do the ups or the downs justice. With this in mind, I didn't want to set anybody's world alight and simply aimed to dip under 40 minutes with as little distress as possible. No real rhyme or reason involved; sub-40 just looks good on paper! This would call for a minute's improvement on the 2014 race and with little to no 10k specific prep in the last couple of weeks…
Lis and I rocked up at race HQ and bumped into Ed Barlow in the car park. I shared that I felt like I was truly in 40:15 shape on the Wythall Hollywood course, but Ed reckoned I could go sub-40, referring to my much better shape than a year ago when I could only scrape 40:58.
Race bib collected, I bumped into Paul Harris, another Cannon Hill Parkrun regular and we had a chat about his chance encounter with Paula Radcliffe the previous week along the canal towpath. Other familiar faces present included Ben Clarke, along with many others from Kings Heath Running Club and Bournville Harriers.
What's nice about the Wythall Hollywood 10k and 5k is the size and location of the event; both allow for a decent warm-up beforehand without much planning required. The surrounding roads were quiet even though they had not yet been officially closed to allow for a stress-free build up.
Mile jog and 300m effort done, I ventured back inside to grab Lis and we began loitering by the start line. It was there that we were forced to endure a dodgy techno version of Human League's "Don't you want me" that accompanied the mass warm-up taking place at race HQ. A Birchfield Harrier also shared in our disgust of the butchering of an 80s classic. Speaking with the Birchfield Harrier further, I quickly learned that Simon and I had both competed at the farcical Worcester City Half Marathon last summer. He too was aiming for a sub-40 finish so there were likely to be a fair few gunning for the time out there.
Anybody suffer from vertigo? Photo by Lis Morgan
Soon, the rest of the field made their way over to the start line, marked out ingeniously by flour. Interestingly, the organisers shared that the UKA official wanted to sit-in on the pre-race tour of the course so any fears of a short course were quickly dispelled (should have taken note of this in my pacing strategy). Bang on at 09:15, we were released into the wilds of the surrounding countryside.
With the 10k and 5k races taking place at the same time, there were plenty in the opening scrum but things quickly settled down and groups formed. Chris Callow, a KHRC member and fellow Cannon Hill Parkrun regular caught up to me and revealed he too sought after a sub-40 finish; we ended up sticking together, trading positions every once in a while.
Turning left on to Packhorse Lane, the pace nosedived by a good 15 seconds or so. I found myself at the front of my group but with a sizable gap to make it to the pack ahead; I decided to stick with my group and would let those ahead come to me instead over the duration of the first lap. In spite of the cool conditions, there were awkward gusts of wind that seemed to hit from all sides. As the race progressed and the field thinned out, there were few people to hide behind and take shelter from – such is the disadvantage of smaller races.
On the other side of the climb, I was shagged. My breathing was erratic and I was on the cusp of working too hard for the first half of the race. My legs lacked any freshness or zip, most likely due to the enthusiastic Parkrun the day before. I eased off the gas on the descent when I really should have taken more control of the distress. I'm perfectly fine with suffering through fast 5ks, and fast half marathons can be eased into, but 10ks are just a constant barrage of discomfort pretty much all the way from start to finish when run properly.
Entering the Phoenix business park, the awkward switchback slowed things down further. The turn was incredibly tight and there wasn't much room to go wide to maintain speed either.
Almost at halfway – photo by Lis Morgan
Lis was stood between 4k and 5k with a bottle of ice-cold water – something she's done for me every year at this race. It's simply so much easier drinking from a bottle than it is trying to grab a cup, spilling it everywhere and then accidentally waterboard yourself by choking on the water!
I managed to pull away from my group on the home straight of the first lap and decided to try and make it to the next group. Time-wise, I was down by 8 seconds or so on target, so I'd managed to undo some of the damage from the 1k climb earlier.
I was reeling runners in and claimed the scalps of a couple of Bournville Harriers and a BRAT. One elusive Bournville Harrier remained in the distance regardless of what I threw in to try and catch him – he turned out to be the same chap that got me back on track during my recent Cannon Hill course PB.
The 1k climb on the second lap was a solo affair with nobody around me at all to work with. A shocking 4:20 split stuck its tongue out at me – I was well and truly haemorrhaging time and the Garmin further revealed a 36 second deficit on target. I kinda lost hope of a sub-40 finish and moved over to my B target of 40:15 along with some much needed recovery on the descent.
I audibly groaned a few times from the suffer-fest. A Dudley Kingswinford member pulled up alongside me and gave me some encouragement to "dig deep". I tucked in behind him for some shelter from the wind and things instantly felt much calmer. In hindsight, those few minutes of tranquillity probably did me more harm than good in the long run…
We passed by the lady on the water station, this time impressively dual-wielding cups of water with both hands. The guy with the hosepipe gave me a good drenching and a cheer – he's been there every year. With only 2k left to go, I began to wind the pace up in an attempt to get closer to a sub-40 finish again. I tried to get the DK club runner to stay with me but he was already redlining and pushed me on. The descent had done its job of recovery and I managed to find second wind for a strong entry into and exit out of the Phoenix complex.
Form deteriorated in the last couple hundred metres… Photo by Lis Morgan
With just 1k remaining, I mustered what was left for an aggressive final assault on the course. Conveniently, the organisers placed a clock next to the 9k marker, which happened to read 36:15 as I ran past. All of a sudden, sub-40 was possibly back on. A 3:45 1k split was certainly achievable, but in between the finish and me was a 3m climb along with the awkward twists and turns to get back into race HQ for the finish. Once over the Hollywood Bypass, I had Lis spurring me on to kick. A couple of stragglers finishing up their 5k, or entering the second lap of the 10k, drifted into my path and required sudden evasive manoeuvres to avoid – not easy when you're charging down the home straight on tired and unsteady legs.
I hung right, then left, then right again and I was back at race HQ. I caught a glimpse of Khalid Malik, who had finished his 5k whilst in the midst of fasting for Ramadan – truly impressive stuff. A female voice cheered me on by name, whom I unfortunately did not catch sight of (very sorry). I had to evade one more 5k runner who seemed unsure of which line she wanted to run, so I ended up running wide around her for the finish. The clock was on 39:55 and I still had a couple of metres to go. "WHATEVER YOU'RE GOING TO DO, DO IT NOW!!!" I screamed at myself inside my head. I closed my eyes and charged for the line, legs at full tilt…
Pain. Lungs on fire. Quads and hamstrings tight. Here's the Garmin data for this race.
I scooted off to the side of the finish chute and lowered myself down on one knee for a moment or three. I screamed a few times – something I seem to be doing with much greater regularity of late… The Bournville Harrier that proved so elusive to catch came over to help me up, and I duly shook his hand in the process.
Just shy of a sub-40 finish at the Wythall Hollywood 10k 2015
I looked at my Garmin and 40:01:26 stared back at me. "Damn it!" I cursed to myself. I'm sure I could have found an extra 2 seconds somewhere out on the course, and hence my earlier comment about easing off just a little too much when I came into contact with the DK club runner on the descent. Still, a reasonably substantial course PB.
The chap with the medals was placing them around finishers' necks; I simply asked for mine in my hand so that I could duck out of the funnel and lean against something.
Simon and I have unknowingly faced off a couple of times at races – photo by Lis Morgan
The DK runner and Simon Rhodes came through shortly afterwards. I gave the DK runner a knowing nod because he seemed like he was in a rush to get out of there, but Simon was keen to talk. A very nice guy he was and it seemed we'd actually had many more close encounters than first thought at a number of races over the years.
Soggy and cold after the Wythall Hollywood 10k 2015 – photo by Lis Morgan
Lis and Ben Clarke caught up to me just as the heavens opened up to soak everyone in the process. Moving inside, we bumped into Paul Harris and Dave Johnson, also taking shelter from the rain. We ended up having a good old natter with Ben, who explained the timing failure at Cannon Hill Parkrun in more detail (he wasn't to blame!) Just as we decided to leave, some volunteers came over to offer us a king's ransom in leftover cookies and bananas – the perfect end to any race surely?
I've not had a near miss of a target like this since the saga of trying to go sub-20 over the 5k distance (20:00 on the nose on one occasion). I made the schoolboy error of not factoring in for additional distance and in this case, that 20 – 30m extra equated to about 4 seconds.
There are some positives, though. In 2013, I ran 42:28 and then improved by 90 seconds in 2014 with 40:58. The pattern of improvement, whilst beginning to tail off, still continues with almost a minute's difference this year. 40:01 on a less than ideal course bodes very well for the flat as a pancake Magor Marsh 10k in two weeks; I'm praying that it's a legal course because I'm running out of opportunities this year to produce a respectable 10k time that's in line with my current ability.
Sticking with trends, I continued that of poor race preparation where I never seem to enter this event with the best of intentions. 2014 involved pigging out on too much meat the day before and also breaking in new racing flats during the event. This year saw me blast out a 19:28 at Cannon Hill Parkrun the day prior (slow up to 4k, and then a 3:40 final k).
All said and done, I'm pretty happy with the outcome. Let the training continue!
Posted in Races.	Tagged 10k, 2015, Garmin, race, Wythall & Hollywood 10k
July 6, 2014 by Andy Yu
Look at all the Bournville Harriers!
For the 2013 and 2015 races, please click the following:
Continuing my season of races, today took me back to the delightful Wythall Hollywood 10k. Last year's inaugural running of the 10k race (2x laps of the 5k course) granted a massive 25 seconds PB for me, so read on to find out how I fared in the 2014 outing.
A day-trip to Manchester with Lis, Iain and Elsa probably wasn't the greatest pre-race prep I could have undertaken. Nor would the immense protein-athon at Red's True BBQ qualify as adequate pre-race nutrition (it was damn good, mind). Oh yeah, you can also add a random alarm going off in the neighbourhood during the middle of the night for 20 minutes+ to my list of pre-race faux pas. I am currently near my limit in terms of hard, quality training and regular racing. Mentally and physically, I'm fried and really need a true recovery week – something I was much more disciplined about during marathon training but seems to have gone out the window this summer, much like last year.
Going into the race, I decided to make use of my new pair of Adidas Adios Boost I had received as Cannon Hill's Parkrunner of the month (collected from Manchester, hence why we were there). I've broken out new shoes before at races, only to then score PBs and this wasn't an A-race for me so any risks were fairly low. Before a half marathon or a marathon – no freaking way!
After collecting my bib from registration, a club runner approached me and asked if I was, "the guy with the blog?" I replied with, "I'm a guy with a blog", to try and sound him out a bit further and just in case he was genuinely referring to somebody else. It turned out he had searched for a report or review of last year's Wythall Hollywood 10k and ended up here! If you're a reader and ever see me out training or at a race, do come over and say "hello" – it's always good to meet fellow runners. Anywho, Darryll Thomas was the mystery runner's name and he belonged to Bromsgrove & Redditch AC – here's your shout-out! We had a chat about how the recent London Marathon had really dulled our legs in terms of speed and gave little else back in return. What was rather funny was a reference and connection to last year's race and review – Darryll was the guy that had "died" crossing the line! Small world or what?
Out in the race HQ yard, I bumped into a fair few of the Kings Heath Running Club contingent, including Sean Whan, Barbara Partridge and Steve Wilson. The club was really out en masse and easily eclipsed the next largest club by 2 to 1. Speaking of which, the next largest club in attendance was Bournville Harriers, including a guest-appearance by Suz West. Lis and I had a catch-up with Suz and her marathon antics including the prestige of securing a GFA place for the 2015 London Marathon. With only 20 minutes or so before we were due to start running, I excused myself for a 1 mile warm-up on the closing stages of the course (felt pretty rubbish, but hey-ho).
If you look closely, you can see Suz, Paul and me
It was nearly time for the race to begin, so I made my way over to the startline. I love small, local races because it's less of a bunfight to get closer to the front for a prime PB attempt position. Feeling great? Promote yourself a bit nearer to the line. Feeling shite? Put yourself a bit further back with no fuss. Now if only Wythall Hollywood's race committee would put chip timing in place, it'd be a near-perfect; even if they had to add a couple of quid on to each entry, I'd pay that for timing accuracy and speed of results turnaround (last year's week-long wait for results really was too much). Shortly after the briefing, we runners were released into the wild to carve out our 5k and 10k destinies.
The first few hundred metres made for possibly the cleanest race start for me, ever. I saw Darryll shooting off into the distance at a very nice clip; definitely sub-40 target pace since I was hovering around 4:02/km at that point. I also clocked Steve Wilson ahead of me by about 20m, looking very strong, so I tried to keep him in my sights at all times. I felt OK in the first km, but my legs were definitely heavy and lacked that zip that I normally have before a tapered race. The Adios Boosts on my feet also felt pretty good; definitely heavier than my normal Flyknit Racers but there was a nice responsiveness to them – a longer distance race shoe for sure.
The second km with the incline hit me. I was able to pass runners but I did feel like I was working too hard for the effort. Unlike last year's scorcher, I couldn't use the excuse of a warm day for a poor result. As always, I found myself running on my own to follow the shortest line on the course – all of those extra steps to run wide make a difference when your PBs are down to mere seconds! Upon reaching the peak of the summit, I breathed a sigh of relief at a chance to recover slightly on the downhill. I really should get some downhill training in place some day to really help me take advantage, rather than losing time going up and down.
The next 2km were largely forgettable, with the highlight being a hosepipe offering some mist spray for weary runners.
Entering the Phoenix complex, I could see Darryll was just exiting for a good 50 – 60 second lead on me. Turning the corner, I was pleased to see the race organisers had kept to their word of shortening this stretch of the course to compensate for the movement of the finish line – now situated inside race HQ (about 40-50m further if my man-maths were accurate). Running out of the complex, I sank my Isogel to set me up to do it all again for the second lap.
400m or so before returning to the start area, I had Lis waiting with an ice-cold bottle of Nectar Fuel. I purposely chose to chuck the water offered so far on the course over my head, so the Nectar was a welcome thirst quencher. Approaching lap 2, the group I ran with split up so that those running the 5k race could finish and 10k runners were asked to remain left, leaving me with only one other person to immediately run with.
Steve was still 15m or so ahead of me and served as a good target to try and lock on to. Once we began our second lap climb, I was able to steadily reel him in before I was able to overtake at near enough the exact same spot as last year's race for an odd sensation of déjà vu. Steve spurred me on with a few words of encouragement, which really pushed me to get the climb over and done with. My next targets were a chap in a black vest and a female Kenilworth Runner. They were maybe 25m away and just slightly too far to try and actively shrink the gap between us, so I continued to just remain steady and bide my time.
I was now running in no-man's land with nobody behind for 10 seconds or so. Passing by the chap with the hosepipe, he remarked, "You're still looking good, 552", which made me look down at my own bib to double check that he was talking about me. Despite his kind words, I felt pretty dreadful. My breathing was all over the place and a recently healed blister had reformed on my right foot. The weight of the Adios Boosts was now definitely more pronounced and I was longing for my light as a feather Flyknit Racers. With all the wrong that was happening, I convinced myself to try and lift the pace with just 2km left to go. I shortened my stride to bring my cadence up and continued my campaign towards the finish.
Entering the Phoenix complex for the second time, I again saw Darryll exiting but I had managed to close the gap slightly by maybe 10 seconds – progress is progress! I was aghast to see that the race organisers had now extended the U-turn part of the course; "I thought this part was shorter" I quizzed the marshall, who jokingly replied with, "Everybody's asked me that so far". The U-turn had managed to slow the Kenilworth Runner and bloke down by a touch and both were now within spitting distance. Exiting the complex, I managed to bring them both even closer by running a cleaner line.
Form went to shit towards the end…
On the approach to the final corner, the Kenilworth girl managed to break away from the bloke she had so diligently followed for the entire race, creating a rough 2 second gap for herself. I saw Lis who was frantically shouting that I was within sight of a PB if I kicked, so that I did to overtake the Kenilworth girl in one swift move. I could hear heavy breathing behind and a guy in a blue t-shirt had followed me with a kick to also overtake the Kenilworth girl. I reacted with another surge of my own to put some distance between us to take me into the final straight towards the finish line.
The road was clear ahead apart from a marshal shouting out orders for 10k runners to stay to the left and 5k runners to go right. Just before the spot where last year's finish line was, another marshal then said for finishers to go to the right and then follow the funnel towards the line. This was just really messy, I thought; do you want us to go left or right? The first marshal should have just told all finishing runners to stay to the right to enter the funnel. I had to do a quick swerve to the right, then left to enter the funnel. One last 20m sprint took me past one of the remaining 5k runners and the line for a season's best of 40:57.
As per usual, I was incredibly unsteady on my feet and once I'd exited the finish area, I had to lie down on my back for a moment. Darryll came over for a short catch-up, himself only 15 seconds ahead we think. I also caught a few words with the Kenilworth girl and black vest bloke, thanking them for staying so consistent in the second lap. Once I'd completely caught my breath, I went over to the finish funnel just in time to cheer Suz through.
Most people I'd spoken to afterwards were not successful in their PB attempts, which I'm not surprised by. The course is not well suited to PBs, with a beefy stretch of incline and an awkward U-turn that both need to be hit twice. Lis asked me if I would run it again – I most likely will because it's pretty cheap to enter and convenient to get to. Like independent retailers, small local races also need the support of runners to keep going after all. The Wythall Hollywood 10k also serves as a nice benchmark race to gauge my progress, where I'm now a whole 1.5 minutes faster than this time last year on the same course. If I can pull out a similar performance leap at September's Cardiff 10k then that highly sought after sub-40 10k will finally be mine.
I'm going to take a few days off from running to give myself a break over the next week. I don't have another race until the end of the month at the Magor Marsh, which should be a PB if I can crank out an effort like today on the almost pancake flat route (same course as the Race for Wildlife 10k). The journey to a 10k finish time beginning with 39:XX continues…
Click here for the Garmin data for this race.
Posted in Races.	Tagged 10k, Bournville Harriers, Garmin, Kings Heath Running Club, race, Wythall & Hollywood 10k
Not all medals are equal – some hurt a lot more
Today's race was always a bit of an unknown quantity; I was unfamiliar with the course apart from knowing that it undulates and the organisers had never laid on a 10k before. It turned out that today's 5k and 10k races would be run side by side, which could have gotten messy…
I took it easy-ish at Cannon Hill Parkrun yesterday, choosing to run at 10k race pace. Paula Radcliffe was in the park for an interview and photo shoot with Runners World, ahead of her commentating duties at this weekend's athletics at Alexander Stadium. It's not everyday you have a world record holder spectate your Saturday jog around the park!
All smiles at the start line
Today, Lis and I arrived at the packed race venue. There was a real community feel about the event, with plenty of locals out to support or participate. There were also plenty of clubs in attendance with too many to name here. I collected my race bib and proceeded to do my 1-mile warm-up. The heat at 08:45 continued to rise, giving me a bad feeling about the race ahead; this was officially the hottest race I had ever competed in by about 10 degrees. Lis and I made our way to the start line where people soon assembled; the organisers made a request that faster runners head to the front (no chip timing) but nobody took them up on the offer. After a welcome speech by a local official, we were released on the sound of the air-horn.
There was a malfunction with the start sign
I found my race pace very quickly, with people all around me zooming off into the distance. Using Marathon Talk's tide analogy, I knew a few of these folks would come back to me later in the race for me to overtake them. The crowds started to thin out after the first 2k which allowed me to take an optimised racing line; everybody else seemed desperate to hang on to the left-hand kerb of the closed roads, even if that meant running further than the officially measured 10k distance.
Target pace was 6:45 per mile
There were several water stations on the course due to the warm conditions. I will never get the hang of grabbing a cup of water from somebody's hand without crushing it, so not much water for Andy… Thankfully, I planned for this and I had Lis waiting at roughly 4.5k with a frozen bottle of water for me. I was also carrying an Isogel for a burst of sugar in the second half.
Clubs well represented at Wythall Hollywood 10k 2013
The course undulated and my hill training continued to do me well tackling the inclines, but I now realise I need to work on my downhill technique. I tend to ease off the pace ever so slightly, believing that the descent will give me a few seconds for free when really it should feel the same as going uphill in terms of effort.
After an annoying out and back hairpin, I approached the spot where Lis was waiting for me with my water. Thankfully, the water had begun to defrost and was now refreshingly ice cold, going down my throat and over my head an absolute treat!
I knew the second lap would be difficult due to lack of runners at my pace. Two older guys I was running with were starting to struggle and I overtook them going into 6k. There was a guy just in front of me listening to music that was always just out of reach. I almost caught up to him at one stage but due to some sloppy marshalling, I had no idea which way I was supposed to go and the gap widened again.
By this stage, the Virtual Partner on my Garmin had reported I was 55 seconds off pace for a 42:00 minute finish, so I reverted to Plan B where I just wanted to PB by any margin. The time to beat was 42:53 so it would be close…
No idea what's going on with my right hand…
The 8k marker came and went and I'm almost certain there was no 9k marker. I saw Lis and looking at my watch, I was at around 40:xx so I knew I had the chance of a PB, so long as I upped the pace. I could see the finish in the distance, confirming with a marshal to stay to the right. The guy listening to music had crossed the line and the nearest guy behind me was at least 30 seconds away, so I knew all the crowd's cheers were all for me. Not wanting to disappoint, I kicked with 200m left to go and sprinted as hard as I could, pumping my arms and legs to get me to the finish line.
I crossed the line, stopped my watch and keeled over for a fresh 10k PB of 42:28. The marshal at the finish declared, "We have another one that's died crossing the line!" The guy in front of me grabbed my hand and pulled me up, congratulating me on a good race; I composed myself and told him he raced really well, too, always just slightly ahead of me. The local official that started the race gave me my medal; other goodies on offer were bananas, malted milk biscuits and water. I found a quiet spot on the ground to call my own and sat down to cool-off, leaving a huge puddle of sweat before Lis found me.
A new 10k PB of 42:28
It was a pretty enjoyable race with an easier profile compared to the recent Aldridge 10k and Caerphilly 10k. With a cooler day, it could be a potential PB course for some. The only major improvement I would add is the use of chip timing; other local 10k races in the West Midlands of a similar size use it, making for a more accurate and faster results turnaround.
Given the relative ease of getting to the race, I'd dare say I'll be back again next year!
EDIT – According to the official results, I finished 17th out of 213 10k runners making it into the top 8%.
For those interested, here's the Garmin Connect data.
Posted in Races.	Tagged 10k, Cannon Hill Parkrun, Garmin, pacing, Paula Radcliffe, PB, race, Wythall & Hollywood 10k
The road to recovery and future races
It's Thursday after the London Marathon and my legs are feeling loads better today, with only mild hamstring tightness and bruised feet as remnants of Sunday's race.
Yesterday, I went with Lis on a training run around the Cannon Hill Parkrun course. She did remarkably well, maintaining good mid-foot strike form and even finished with a kick. I'm proud that she's finally gone outdoors to run and she found the experience to be positive, mentioning the ability to go faster and the fresh air as major advantages of running outside. This is all in preparation for her Race for Live event coming up in May at Walsall Arboretum. Of course, this will require a bit of Parkrun tourism from me the day before to reccy the course.
I love racing and having a target to work towards is what keeps me going. I always enter more races immediately after completing one, and it's been difficult not to press the "Enter now" button to enter a marathon for next year.
Lis and I made a deal over dinner the other night where I promised I would not enter another marathon until I can hit a sub-1:30 half marathon. This would be getting into the realms of good club runner territory and for context, would equate to a 19:26 5k, a 40:22 10k or a 3:09:22 marathon. The irony of this is that hitting a sub-1:30 half marathon target would also mean a good shot at a male good for age marathon, requiring a time better than 3:10:00. A good for age time means a near guaranteed entry into the London Marathon and many other highly sought after races around the world, which is obviously better than waiting for that fateful day in late September when you find out whether you're in or out.
Whilst we're on the topic of good for age places, Suz West, the lady I finished the London Marathon with, was only 29 seconds away from a female good for age time of 3:50:00. I feel slightly guilty because I may or may not have been the cause of her missing this target; if she had never run with me, would she have beaten 3:50? As you can see, the women's good for age criteria is much more generous than the men's. With the correct training, I'd hazard a guess that most sub-23 minute female Parkrunners would be able to meet that time on a less congested marathon course, which means a good for age place for at least the next two years.
Anywho, for some racing instant gratification, I decided to enter two 10k races last night: the Wythall & Hollywood 10k and the Cardiff 10k.
The Wythall & Hollywood race is a very small scale, local event and I'm not expecting more than 200 runners. This is the first year where they've organised a 10k, which is simply 2x laps of the 5k course that's now in its 4th year. The roads are completely closed off and looking at last year's 5k results, I should place in the top 20 runners, with a good number finishing at around my 5k average.
The Cardiff 10k is a favourite of mine, after running it last year. The course is pretty much flat and takes in parts of the Cardiff Half Marathon and Cardiff Parkrun. Due to a poorly planned toilet visit, I found myself too far towards the back and had to fight my way through to get a good spot. I was never knowingly overtaken and with a good starting position, I should be able to hit my target of a sub-42 minute 10k by September.
The remainder of my spring and summer will be mostly dedicated to gaining speed. I know I have endurance but looking at the way my body is composed right now, I look like I'm built for 10k and half marathons. I lack more serious muscle to really drive in 5k and I personally think I'm slightly too bulky to efficiently run marathons.
Finally, I'm saddened by Dave going on a temporary hiatus from Parkrun. We both agree that we're so closely matched right now that we're capable of a lot more together than on our own; our half marathons are further evidence of this. Hopefully he'll keep his legs ticking over during his break for our next, eagerly awaited, smackdown.
Posted in Miscellaneous.	Tagged 10k, Cardiff 10k, half marathon, marathon, Parkrun, recovery, speedwork, Wythall & Hollywood 10k

redpajama_set_name: RedPajamaCommonCrawl


The Martha Stewart Show | Food E.
Hello sister. That is so cool that you got to be on the show. Congrats! The cookies looked and sounded delicious. Did Martha give you any stock tips? haha jk. See you this weekend.
What a great experience for you, not to mention that you got to eat freshly baked cookies.
I love her cookie cookbook, which as I recall you bought for me.
sounds and looks like a good time was had by all. i will be expecting cookies (many cookies) at the usual "exchange" site. chocolate is always good for starters.


text:
Your semi-regular reminder: Chris Christie is a) a hardcore conservative and b) a jerk
by Kathleen Geier
I grew up in New Jersey, in the part of the state that this jokey map refers to as "Christie Country." So when it comes to the media's love affair with Chris Christie, and the way he seems to give some Democratic plutocrats a thrill up their leg, I am especially appalled. Believe me, I know that from which I speak, and Christie is about as conservative as you can get and still get elected governor in that state. But since his brand of conservativism is culturally and stylistically distinct from the kind we so often see in the Southern conservatives that dominate Republican, and American, politics, a lot people labor under the delusion that he's a moderate. He isn't.
I can understand Republicans' infatuation with Christie. To conservative dweebs like George Will and David Brooks, Christie is sort of like a theme park version of a white ethnic. He shares those pundits' nightmarish politics, especially the slavish devotion to servicing economic elites, but scores fake populist points with his unslick appearance and tell-it-like it is Jersey-ness. In this context, the fact that Christie is a nasty bully is a feature, not a bug. He's a thug, but they think of him as "their" thug. Honestly, I think the guy's size and his affinity for tracksuits may have them confused, and on some level they mistake him for Tony Soprano. For a lot of conservatives, white ethnics like Christie are their version of the white Negro.
But conservative infatuation with Christie at least makes ideological sense. What in the world is the Democrats' excuse? There are some Republicans that those centrist Democrat dudes adore that I don't — Michael Bloomberg, for example. Yet though Bloomberg's economic and education policies seriously put me off my feed, at least he's supportive of reproductive choice and same-sex marriage, and his gun control PAC is doing real, positive good.
But Christie? For every occasionally decent gesture (such as his response to Islamophobic critics who attacked him for appointing a Muslim judge), there tend to be at least a half dozen other acts that are fairly heinous. Here are a few: Christie is resolutely anti-choice, has vetoed funding for Planned Parenthood and equal pay for women, has inflicted devastating budget cuts that have shredded the state's safety net, and has rewarded political allies with sweetheart no-bid contracts.
And what kind of "moderate" would turn down billions of dollars in free federal money for a much-needed train tunnel to New York City? Every time I visit Jersey and sit in traffic in the Lincoln tunnel, I think of this. The icing on the cake is that the tunnel money amounted, in the midst of an historic recession, to the biggest public works project in the nation.
Anyway, the reason I'm reviewing the man's political history today is that this week brought yet more proof that Chris Christie is no moderate. While the rest of blue America was celebrating the Supreme Court's historic same-sex marriage ruling, Chris Christie attacked it. He called it a "bad decision," "just another example of judicial supremacy," and "incredibly insulting."
That's boilerplate Republican rhetoric, sure. But for most Republican elected officials, such statements are all but mandatory, because they reflect the views of the constituency which elected them. This is not so with Christie, however. Last year, he vetoed a same sex marriage bill, in spite of the fact that 62 percent of New Jersey voters approve of gay marriage. Even my senior citizen, devout Catholic, extremely conservative New Jersey parents (back in the day, they were Goldwaterites) don't care much about gay marriage one way or the other anymore. So for Christie, his homophobia does seem like it's truly a matter of conviction.
History will put those public figures who opposed same sex marriage in the same noxious moral category as the racist Southern gargoyles (Bull Connor, Lester Maddox, and the like) who opposed civil rights. Governor Christie has once again made it clear which side he is on, and unlike so many of his ilk, he lacks the excuse of political expediency. Sometimes what you see really is what you get.
UPDATE: I'm just seeing this story: on Friday, Christie vetoed a bill that would have enacted one of the most important provisions of President Obama's health care reform: expanded Medicaid coverage. I'm saddened by this, and also, frankly, surprised. In what political universe could this be described as the action of a moderate? Even I didn't think Christie would go this far.
Kathleen Geier
Kathleen Geier is a writer and public policy researcher who lives in Chicago. She blogs at Inequality Matters. Find her on Twitter: @Kathy_Gee


Our team of highly trained Technical Consultants come from a variety of engineering backgrounds. Their experience is largely Naval based and ranges from time served on small craft right through to Aircraft carriers. Their main areas of expertise are in marine, nuclear, weapon and communications engineering, however they also have extensive knowledge in project management and logistical engineering. Due to this level of experience a number of our consultants have been awarded membership to professional organisations. We are able to offer this high level of technical support not only at our head office (Bath) but also from our remote offices in Portsmouth, Plymouth, Glasgow and Edinburgh.


What purpose and passion do you have?
There aren't many entrepreneurial men who spend their days in a pinstripe suit and their spare time climbing the world's highest summits – all while using their business to do good. Deri Llewellyn-Davies has been a committed adventurer for the past ten years. Having climbed five of the world's highest seven mountains, completed the infamous Marathon des sables across the desert and the Epic Ironman, he also happens to be a best-selling author of Life's Great Adventure and winner of the 2013 Global Angel Award for putting his compassion into action, volunteering his time, energy, skills and money to do good.
Deri at Everest base camp wearing pieces from the Tengri Warrior collection: Gloves, Beanie, handknitted Pixane sweater.
Deri's mission to take on Everest was part of a dream and ten years of planning to achieve. His goal was both a personal challenge and a social one: aiming to help the Sherpa community which in 2014 suffered a tragic loss of 18 men. With Neal Laughton leading the team, they attempted to set the world-record for the highest-altitude black-tie dinner party, raising funds to support Community Action Nepal.
We were delighted when Deri agreed to field test our everyday sweaters, beanies, gloves and socks in one of the world's most challenging environments – Mount Everest.
While taking on Everest, the team was caught in the midst of Nepal's recent deadly earthquake. "Man plans, God laughs," says Deri. One can prepare as well as one can but nature will have the final say on the outcome. Listen to his amazing and humble account of how he survived this epic natural disaster.
What adventures have your passions and purpose taken you on? Let us know @HouseofTengri on Twitter.
Pembs TV interviewed the strategy man on his recent adventure of surviving Everest during the Nepal earthquake. The Strategy Man is the #1 Bestselling author of BGI Strategy on a Page. He is the acclaimed expert on business strategy for business owners in the UK.
Deri attempted to set the world-record for the highest-altitude black-tie dinner party, raising funds to support Community Action Nepal.
He is WEARING THE BASIC BEANIE FROM THE TENGRI WARRIOR COLLECTION. © TENGRI LTD. PHOTO CREDIT: DERI Llewellyn-Davies.
Slideshow photos of Everest climb by Jon Maguire. © Tengri Ltd.