I thought this season was kinda weak. Almost like they needed more guidance from the book that is yet to be finished. Having said that it's definitely set up for a big next season.
i never read the books so i don't have that perspective. I liked this season because it ended with all of the big players in position, ready to possibly get "all of the power".
emphasis: ~2 mi sprint, submax jumps
06/27/2016Bio: Morninglast night's sleep: ~8 hours
last night fell asleep: ~5:30 AM
wakeup = 1:30 PM
bw = 149
morning resting heart rate = didn't measure
soreness = none!
aches = left ankle slightly
injuries = none!
standing desk (when on computer): none
feel = good
water = alot
Food2 PM
- beet + tart cherry juice
- banana
- green tea
- 2 x wheat bread with peanut butter
Food5 PM
- green tea
Session: Evening8 PM
- shoes: xc 700 v3
run: 2.02 mi in 12m35s
- splits: 5:59, 6:26
- 12 minute test: 1.94 mi (0.02 mi from tying PR)
submax jumps:
- ~1 hour
- sooooo many people are at this basketball court now, it's insane.. the court i grew up playing on. has 3 full courts. the entire place is just jam packed.. almost as if there's even 2 games going on, on the same court, sometimes.. kids just going nuts. lmao
- mostly ~10'4-10'5
- felt good though
run: 1.15 mi in 7m50s
- mile 1: 6:37
- happy with that actually
- ran to another court for fun, to get in a few more jumps
jumps:
- ~10 each, mostly 10'4's
run: 1.23 mi in 8m51s
- mile 1: 7:11
- was going to go further but just cut it
Food10:30 PM
- 2% milk
- big bowl of cherries, blueberries, watermelon
- green tea
Food4:30 AM
- english muffin with butter
- orange juice
- some crackers
- banana
feel pretty good.
absolutely ridiculous amount of coding today .. but.. in major refactor mode.. cleaning up a ton of stuff.. also super happy with this technique i figured out, for example in one of my functions:
getThreadPostPack_ByThreadPostM :: Maybe StandardParams -> UserId -> Entity ThreadPost -> HandlerErrorEff ThreadPostPackResponse
getThreadPostPack_ByThreadPostM m_sp user_id thread_post@(Entity thread_post_id ThreadPost{..}) = do
lr <- runEitherT $ do
thread_post_user <- isT $ getUserM user_id threadPostUserId
thread_post_stat <- isT $ getThreadPostStatM user_id thread_post_id
thread_post_like <- isT $ getLike_ByThreadPostIdM user_id thread_post_id
-- thread_post_star <- getThreadPostStar_ByThreadPostM user_id thread_post
user_perms_by_thread_post <- lift $ userPermissions_ByThreadPostIdM user_id (entityKey thread_post)
m_org <- isT $ getWithOrganizationM (lookupSpBool m_sp spWithOrganization) user_id threadPostOrgId
m_forum <- isT $ getWithForumM (lookupSpBool m_sp spWithForum) user_id threadPostForumId
m_board <- isT $ getWithBoardM (lookupSpBool m_sp spWithBoard) user_id threadPostBoardId
m_thread <- isT $ getWithThreadM (lookupSpBool m_sp spWithThread) user_id threadPostThreadId
pure (thread_post_user
,thread_post_stat
,thread_post_like
,user_perms_by_thread_post
,m_org
,m_forum
,m_board
,m_thread)
rehtie lr left $
\(thread_post_user, thread_post_stat, thread_post_like, user_perms_by_thread_post, m_org, m_forum, m_board, m_thread) -> do
right $ ThreadPostPackResponse {
threadPostPackResponseThreadPost = threadPostToResponse thread_post,
threadPostPackResponseThreadPostId = keyToInt64 thread_post_id,
threadPostPackResponseUser = userToSanitizedResponse thread_post_user,
threadPostPackResponseUserId = entityKeyToInt64 thread_post_user,
threadPostPackResponseStat = thread_post_stat,
threadPostPackResponseLike = fmap likeToResponse thread_post_like,
threadPostPackResponseStar = Nothing,
threadPostPackResponseWithOrganization = fmap organizationToResponse m_org,
threadPostPackResponseWithForum = fmap forumToResponse m_forum,
threadPostPackResponseWithBoard = fmap boardToResponse m_board,
threadPostPackResponseWithThread = fmap threadToResponse m_thread,
threadPostPackResponsePermissions = user_perms_by_thread_post
}
it won't make any sense to anyone probably.. but it's pretty dope.. all of those isT's are actually escape hatches for errors.. so if any of those trigger, the whole function aborts and returns an error to the caller, which in most cases will return an HTTP error to the user of the api etc.. so it turns out to be fairly elegant imho.
refactoring a ton of stuff because i encountered a few lame bugs (which i knew would eventually pop up) because of how i was handling query paramaters in urls. so, still not done, probably going to take (all of today already) and all of tomorrow to get the code running again.. but, very happy with the changes i'm making right now.
pc!