A traumatic [read: wimpy] experience

This Monday I went to the doctor about my leg pain. She ruled out a stress fracture and said it was most likely a calf strain, but that the pain I describe could also point to deep vein thrombosis.

“I’ll just take a little blood so we can run a test.” She told me.

I froze like a deer in headlights in my chair. “Blood? Right…right now?”

“Yes, just to rule out the unlikely possibility of deep vein thrombosis.”

“Um yeah…is that blood from the finger or the vein?” (Not that it matters)

“Vein.” She says.

“How important is it to see if I have deep vein thrombosis?”

“I think it’s pretty important…”

After vehemently explaining to her that I literally pass out and go into panic mode when there is a needle near me she offered to give me a sedative. Yes please. Unfortunately the only sedative they had on hand was rectal – no thank you. So it took them a while to hunt around for the oral version and when the nurse finally walked up to me in the waiting room with a plastic cup holding half a tiny white pill I was so freaked out by what was to come that it took all of my willpower to not run out of the office – or limp out of the office, in my case. I was then told that I’m allowed to go outside and get a coffee or something while the sedative takes effect. By the time I waddled back to the doctor half an hour later I was in an unfocused daze…but still – a freaked out unfocused daze.

I think if I had so much as glanced at the needle when the nurse sat me down in the evil looking blood-drawing chair I would have gotten sick right there. Fortunately I managed to look away as she attempted to distract me by asking me about my job. It felt like an hour, but in reality after the disgusting prick in the crook of my arm the whole thing was over much faster than I expected. If it lasted any longer I probably would have blacked out, since the room was already spinning and I felt the blood draining from…well, it seemed to be draining from everywhere.

Before I knew it she was taping a cotton ball to my inner elbow. It’s not the pain that freaks me out, see, it’s the idea of a needle going into my skin…my arm gets uncomfortable just thinking about it now.

I was warned that I’d be drowsy for a couple of hours until the sedative wore off. This was not the case. I felt like a drugged up turtle for the entire day, had to go home early, and collapsed as soon as my face managed to find my bed.

Apparently in Sweden, when it comes to doctors, no news is good news. So when I didn’t get a call telling me that have DVT yesterday I just took it as “You don’t have DVT, yay!”. Unfortunately my leg is not feeling any better…it’s going to be a long and frustrating road to recovery. A snail’s pace, one might say.

A Game of Snails and Heroku

A Game of Snails - snail racing and breeding

A Game of Snails is nowhere close to being complete or even really playable, but I’ve decided to get as much of it done as I can before the end of May and then just put it online – regardless of completion or bugs. There are no rules to One Game a Month, after all, and I can then continue to work on a more complete release for the month of June. Or, if I feel like a break from snails, make some other quick game in the meantime and let it rest until I want to work on it again.

I’ve decided to go ahead and upload all the code to GitHub. It’s unbelievably messy. Hopefully I’ll get to clean it up a bit before the end of May.

As for the actual state of the game – today I got the server running on Heroku. It took a few hours in total (I had no idea what I was doing). The client is still being run locally, but using the Heroku-hosted server. Since I’m trialling AWS for the year already I wanted to use EC2 for this, but had problems with the verification phone call and impatiently decided to go for the free Heroku to get something up. I felt that it was important to get something running outside of my local environment asap instead of panicking about deployment at the end of the month. I’m using MongoHQ to host the database for the snails – free version of both Heroku and MongoHQ.

Remember my old feature list? I’ve updated it (mostly the Race section), but really not much has been completed in terms of gameplay features. I’ve mostly spent the past few weeks working on GUI and server stuff. Now I can finally start working on a proper race formula. This may not be done before the end of the month, but we’ll see.

As for actually getting this thing onto Heroku, the main things I needed to do were:

  • Updating my package.json
  • Creating a Procfile (the Heroku documentation says this needs to be a text file, but in reality the extension should not be .txt)
  • Enabling long polling as Heroku does not support websockets.
  • Moving all the server stuff from the lib folder and into root
  • Listening for the proper server port that Heroku assigns, not 3000 as I was using on localhost.
  • Updating the database to connect to the one I set up in MongoHQ
  • Updating port on the client.

It doesn’t seem like much in the end, but all of this took at least a couple of hours to work out (with various breaks).

So right now…things seem to work. One thing I should have thought about but didn’t was how slow the server responses are compared to running locally…which is of course to be expected, but I was not expecting this much delay. It takes maybe 0.25 – 0.5 seconds to perform some actions.

Up next, I’ll try to get a rudimentary race formula up and running and then maybe make the whole thing look a little more presentable. I don’t know if I’ll have time to do much else before the end of the month, so May’s One Game a Month entry will be a broken, incomplete game (for now).

 

Revelation: I don’t actually want to run a half marathon…

Yestreday I realized that I don’t actually want to run a half marathon. It’s not like I couldn’t, if I trained up for it. I’ve done the distance before. Heck, I even entered the City to Surf half marathon in Perth with every intention of running it until I broke my foot a couple of months before the race. And it’s not like I don’t think running a half marathon would be a great achievement. It’s just that I don’t really like running. There are people who talk about how much they love to run and how awesome it feels. I am not one of those people. To me anything after 1km is just boring. I can usually manage 5km without it feeling like too much of a drag, and 10km is pushing my limit. But anything over that is just so dull. For me, it feels awesome at the end – looking at your time and seeing how much you’ve improved or how far you’ve run. It’s a matter of balancing the lack of enjoyment I get during the run with the enjoyment I get afterwards. And of course, afterwards, you remember the run as being great because the sense of completion makes it feel great. You conveniently forget that it was dull torture at the time – until the next run.

This is probably not what most people want to hear coming from a person who runs on a semi-regular basis.

Anyway, the last week has been pretty awesome. Work is putting on lots of summertime fitness activities – CrossFit, interval sessions, Yoga. So last week I ran 5km on Monday, did CrossFit on Tuesday, and ran a (slower than usual) 10km on Friday. Yesterday I ran 5km at lunch and then had a training session for Tough Viking after work, which involved more running, stair climbing, hill intervals, and cross training. I’ve also signed up for the Midnight Run and a team 5k run event where every team member does 5k. In short…I will be sore this summer.

I’m taking a couple of days off of running due to what I think may be a calf strain (let’s hope it’s not a stress fracture, but those are pretty uncommon in the fibula). Tomorrow I’m aiming for a 5km, then Yoga, and on Friday I’ll aim for a 7 or 10k run.

So here’s what’s been happening. In pictures!

A walk on Thursday, May 9

Tree chill

Chillin’ in a tree

Stockholm, Sweden flower

I’ve never seen a flower like this before!

 

Swedish summer houses

Apparently the government gives Swedish people free summerhouses. The waiting list is something like a hundred years, but they are so pretty.

Green Stockholm

It’s finally green!

A 10km run on Friday, May 10

Södermalm running

Part of my running route, around Södermalm

Vibram KomodoSport

They may look stupid, but they’ve saved my knees

 

Stockholm exercise areas

Stockholm has lots of these outdoor exercise areas – and people actually use them!

Post run pain

I may be smiling, but my legs were killing me in that moment.

Skansen on Saturday, May 11

Skansen horse

I’m on a horse!

Skansen stilts

I suck at stilts

Dandelions on Sunday, May 12

Dandelions

Dandelions

GUI – I hate this part.

I knew this would happen. Out of all of the new things that I have to learn to do for this snail game, the part that is the most tedious and difficult for me is the UI. Every part of the UI. You’d think that I’d be able to use web design skills from my previous life to make this at least a little intuitive, but nope – this blows. And it’s not just designing the thing that’s the problem, it’s finding the best way to implement it, too.

I’ve written about structuring a GUI system for my space game before and I’m using a similar method now – relying on trigger entities and a few dedicated GUI entities. Except this time I’m also throwing HTML forms into the mix, since clearly this isn’t complicated enough.

And it’s getting to the stage where it doesn’t seem like I’ll ever be able to work on the actual game mechanics again because for the rest of my days I will be sitting here creating trigger kinds, attemting to get stupid scroll bars to work, then redoing everything when I realize the layout is majorly screwed and unusable.

My GUI system is based on trigger entities. Trigger entities are anything clickable. No, I don’t know why I didn’t just call them buttons. Screw you, shut up. They’re triggers. Crap.

Ok so there are various “kinds” of triggers. Each trigger instance has a “kind”. For example, yesterday I was working on ‘upArrow’ and ‘downArrow’ trigger kinds. When a trigger with the kind of ‘downArrow’ is clicked, it calls this.parentEntity.scrollDown(). Then you have to keep track of each trigger’s parentEntity (which is what spawned the trigger). This is important because when you want to close a menu you have to make sure all of the triggers are destroyed, and loop through each parentEntity (these are sometimes nested) to close it.

It’s hell.

Aside: Every time I say something like “it’s hell”, I think about how stupid it is. Here I am sitting in a coffee shop enjoying my cheesecake and I think detangling a fricking UI system is “hell”. How pathetic is that? It’s not hell. It’s a piece of cake. I have running water.

Anyway, I just want to get the main UI elements done and usable. Except after the actual race list scrolling is done I’ll have to make the race triggers clickable to spawn race details…then create a way for people to actually enter their snails into a race…and then I can start running the actual race…and then it’s more GUI stuff as I attempt to find the best way to display the race results. Gah. The whole rest of this game is going to be about fricking buttons. I mean triggers.

A weekend of train-ventures, dodgy restaurants, and the most amazing weather in the universe.

I was meant to write this blog post four hours ago. Instead I got home and decided that since this one would have quite a bit of pictures in it and I’ve been running into bandwidth issues I may as well find a better solution for image hosting (as opposed to uploading everything to this server). I signed up to Amazon S3 on its free trial account and have been attempting to set it up ever since. Now I don’t even want to write this stupid post anymore, but I will anyway because darn it I didn’t spend all this time and effort to set up one fricking S3 bucket just to give up at the very end.

I was meant to go for a run this weekend, but this did not happen so instead I’ll do one of those half-assed at-home workout efforts on a full stomach just to make me feel like a little less of a lazy slug.

Saturday – end to end on the green line

Hot or Not Skarpnack

Hot or Not

The weekend was mostly good! We decided to be extremely rebellious and get on the train going in the other direction from our station today. It was very exciting. We ended up going to the very end of our line and got off at Skarpnäck. I thought the buildings around the station looked really cool, but other than that there wasn’t really much to do…it was almost lunchtime and we were a little hungry, but stopping to eat at a restaurant called “Hot or Not” in this kind of weird looking neighborhood didn’t seem that appealing.

So we figured…let’s go in the other direction, to Hässelby. We did some quick phone-Googling and decided that it sounded pretty interesting. Lots of people seem to want to live there so it must be a nice neighborhood, right? We’d grab a nice lunch at a cafe or something while there and explore and it would be full of awesome awesomeness.

The train trip to the other end of the line took about 45 minutes to an hour from Skarpnäck. And…we got out to a whole lot of nothing. Near the station were two food places – a pizzeria and some sort of fast food cafe. Unfortunately by this time @locust9 was feeling a) extremely hungry and b) kind of sick, so we just wanted to shovel some food in us and go home. We ventured out to the water hoping to find a nicer cafe, but this did not happen. Instead we wandered back and ate a sad meal of “fish ‘n’ chips”. Which sounded good at first, but then I remembered that when Swedes say “Fish ‘n’ chips” what they really mean is this:

Fake Swedish Fish 'n' Chips

Swedish “Fish ‘n’ Chips”

I did think the giant forest on the other side of the water at Hässelby looked really interesting, though. It’s the kind of forest you imagine people having adventures in. The kind of forest that makes you want to write a story about getting lost in a forest. The kind of forest where werewolves, zombies, and other monsters live. I said that we should come back there when we’re feeling less sick and better prepared to walk along the water and then maybe find a way to cross into the forest.

Hasselby forest

Hasselby forest

So we ate some pathetic fish and chips, got back on the train, and headed home.

Sunday - Södermalm

It’s amazing how much there is to discover in Stockholm. I go to Södermalm every day both for work, running, and just for fun and there are new streets, parks, and views to discover each time. We got delicious crepes for lunch, then went to an awesome, tiny closed-in park with an amazing view of the water.

Crepe Stockholm

Crepe place Stockholm

Summer in Södermalm, Sweden

We sat on a bench, drank coffee, and talked about Jesus. Not…in the way you think.

And then we discovered a little wooden bridge just behind the park fence. It had even better views of the water. The weather today was pretty much perfect. I hope it stays like this all summer…and winter…and every other season. I heard that Swedish summers were great, but I didn’t know they would be this great.

Södermalm benchView from wooden bridge

View from the wooden bridge in Södermalm