Friday, October 12, 2012

My Run-in with Myki

Myki sucks. I had never had any issues using MetCards for ten years. So, despite having a good run with Myki for a few months without any issues, I was finally subjected to the clusterfuck that is Myki's complaint system.

I top up my Myki card with Myki Pass instead of Myki Money. I do this because it's a lot cheaper for me. So there I was, attempting to top up my Myki Pass with 170-something dollars for 4 weeks, with cash, when the machine stopped accepting my notes and took my $75, leaving me with a complaint receipt to take to Myki staff.

So I did that.

Since I was trying to top up at Southern Cross Station and there is a Myki office thing right there, I walked over and handed the receipt to them. The guy was very kind and helpful. Everything after that kinda sucked.

The short of it was, customer care asked for a bunch of details, told me to write down a case number, told me I had to keep the complaint receipt, left me without any way to get home (so I bought a trusty MetCard) and told me they'd get back to me in a couple of days.

A couple of days later I get a phone call.

They asked me for the same details I had given them when I lost my money and and they wanted a copy of the complaint receipt. I offered to read out the numbers on the receipt (as the guy at Southern Cross Station had done), but the woman said they had to see the original. WTF? I asked if a picture would suffice, because fuck having to send it to them in the mail and wait yet another couple of days. She said a picture would be ok, so I sent it immediately.

She called back a day later. I was then told that they would reimburse the money I lost (within the next 24 hours), but that they would put it on my card as Myki Money. But I didn't want Myki Money! I was trying to buy a Myki Pass because it works out cheaper for me in the long run!

Whatever. I just decided I was happy that I at least got something back.

Why do I have to keep the complaint receipt? After the guy who helped me at Southern Cross Station read out the numbers over the phone, why not just put those numbers into the case (or issue or ticket or whatever their system refers to it as)?

After they called me, part of verifying who I was was me telling them my phone number. They just called me! This is pointless and weak security.

I can't help but feel that 3-4 days is a long time to reimburse someone for money lost because their machine decided to not do its job.

Tuesday, July 31, 2012

Strength Quest Grading on July 22

A couple of weeks ago I went and did my Strength Quest grading at Definition 352 in Doncaster. Strength Quest is Australia's new system for strongman. The idea is that, to enter a competition, there will be a minimum grade required. You achieve your grade based on your performance in the yoke, log clean and press, deadlift and farmer's walk. I decided to attempt C grade as a heavyweight.

First up was the yoke walk. I needed to walk 300kg for 15m. Having only first walked a yoke two weeks before that, and with only 230kg, I knew this was going to be my hardest event, and it proved to be. Getting my first couple of steps sucked and I dropped it soon after. On the second pick, I finally got some momentum and moved about 7-8m before dropping it again. In the end, after a couple more drops, I stopped at 10.5m, saving my energy for the other events.

I would've liked to get the full 15m, but given that it was only my second time doing yoke walks, and I only needed 1.5m to get my grade, I was very happy with my result. I asked a couple of the other guys how to improve and I've got a few things to add to my training to get better now!

Next up was the log. I needed 100kg. I love pressing and I do all kinds of pressing multiple times a week, so this was an easy get. 100kg flew up!

By this point, it had been a few hours since I ate breakfast and I was starving, so I ate a peanut butter + jam sandwich. I swear it was the best damn sandwich I've ever had! This was also a good time to get a bit of foam rolling in.

The deadlift was next and 210kg was the target. I deadlift every week and have pulled 210kg many times before, so this was also an easy get.

Last was the farmer's walk. I needed to carry 100kg per hand for 25m. Again, having only done farmer's walks with proper farmer's bars two weeks before, I was a little worried about making the distance, but I was fine! Although I felt a little slow, I managed to walk the full 25m without needing to re-pick the weight, so I'm a lot more confident about this event now, and actually enjoyed it more than the first time around. A pair of farmer's bars are very high on the list to buy now.

I'm pretty confident that, with a bit of planning, I can hit the numbers for B grade by the end of the year.

One of the things I loved about the day was the amount of cheering everyone was doing. Everyone wanted everyone else to hit their numbers. Everyone gave everyone else advice on how to approach a tough event. Everyone congratulated everyone else when they hit a PR. Everyone was supportive of everyone else. And that's something I can get used to!

All up, it turned out to be an awesome experience. George Mariolis put on a great day at Definition 352 and I met a bunch of new people who were all super nice and very willing to talk about anything. I'm looking forward to more!

Monday, June 25, 2012

Tough Mudder 2013 Preparation

I've signed up for another Tough Mudder in Melbourne for January 2013. I'm excited and anxious to get started on my training this time, and I've got a couple of extra friends to do it with this time, which should make it even more fun than the one I did earlier this year!

I've been having a bit of a think about how I'm going to prepare this time around, and here's a few of my random thoughts:

  1. Drop 10kg. I weighed a good 115kg the first time around, which was fine for all of the strength training that I do for the powerlifting and/or strongman comps I want to do later this year, but carrying the extra body fat sucks for a mud run, so I'm tackling this early on. I've got 7 months to drop 10kg (the more the better), which is more than enough time. Going low carb, high fat, high protein for this. Carbs to fuel workouts only.
  2. Run more. I'm going to start with running once a week, either for a short sprint around the block a couple of times, or for a slower, 5-6km run/walk around my area. I'll build up to 2-3 runs a week.
  3. Drop the volume in my weight lifting. Low volume. High intensity. For most exercises. I'll still hit high volume on my Kroc rows, because that keeps my upper-back strong for benching and deadlifting, my two favorite lifts. I'm not trying to get bigger. I just wanna get stronger.

That's it; drop some weight, run more and lift a little less. Simple.

Monday, May 21, 2012

Lifting Weights Away from Home

I recently spent around 10 days house sitting with my girlfriend, Cherie, for her brother-in-law's parents. Given that I usually lift weights at home and not at a gym, I wanted to take a couple of pieces of equipment with me so I could get some work done. I wasn't looking to break any new ground or anything, but I wanted to keep myself busy and not feel like I was being lazy.

The equipment I took with me:

  • 20kg kettlebell
  • Adjustable dumbbell with 40kg of plates (2x10kg, 4x5kg)
  • FatGripz
  • Chalk

The only thing I would change is bringing more plates. Last time I tried to press a 40kg dumbbell, without FatGripz, I nearly dropped it and left a dent in my dad's car which would've resulted in me getting a boot in the ass. This time I was pressing it with relative ease.

I wanted the workouts to be very simple:

  • Heavy-ish, low volume, 1-2 exercises at most. Mostly technique work with the dumbbell.
  • Hard conditioning. Just to gas myself given the low volume lifting.

Next time I would add some kind of bodyweight/gymnastics training to this.

Some of the workouts I did:

  • Fat dumbbell snatch 4x2 @ 30kg. Fat dumbbell clean and press 4x1 @ 40kg. 40kg bear carries 3-5 sets of 100-150m.
  • Fat dumbbell clean and press 6x3 @ 30kg, 4x1 @ 40kg. Bear carries as above.
  • Fat dumbbell clean and press AMRAP sets at 60, 75 and 90 seconds. Bear carries as above.
  • Turkish get-up 4x4 @ 20kg. Sprint 10 lengths of 20-30m, record time, repeat for 3-5 sets, etc...

This was a good opportunity to do some technique work for some strongman movements that I want to nail and don't usually prioritise at home. I hit all the reps I wanted to hit, and walked away feeling like I got some work done, and that's all I care about.

Tuesday, April 10, 2012

Attack of the Phone Scam?

Yesterday afternoon, my girlfriend, Cherie, and I walk into her home. Her dad was on the phone with his laptop in front of him. He's not the most computer savvy person in the world, so he asks us to help him with this person on the phone. I sit down at the laptop and take the phone. MSConfig is open (alarm bells start ringing), as is the "run program" box with "www.ammyy.com" typed in (ding ding ding).

"Hello?" No answer... "Hello?"

A man with a thick Indian accent finally speaks. "Hello, are you the manager of this laptop?" I respond, "No" The man repeats his question and I repeat my answer.

"Who are you? Where are you calling from?" Apparently he is from my Windows service provider (which I never got the name of) and apparently the laptop had made several attempts to access forbidden sites (which I never got the addresses of) and they needed to fix the problem for me.

"Ok, so what do you need me to do?"

After a bit of confusion on his part - apparently "all the programs are closed, I can only see the desktop" is a little confusing - he asks me to press the Window button and "R" at the same time. I then have to type "www.ammyy.com" and press Enter. I don't, of course, because I'm a critical thinking human being who knows that Microsoft don't have the resources to call the billions of end users that they have around the world to remove a virus, which their Microsoft Security Essentials product is supposed to take care of anyway, and certainly not via some non-Microsoft owned remote desktop software.

I Google the address, and quickly find out that the site hosts some kind of remote desktop software and that there are forums all over the internet talking about getting phone calls, having the same story spun to them, and attempting to coax the mark into downloading some software and some people even getting charged a small fee.

While stalling him, I hear him put me on mute a couple of times, I assume because he's annoyed that it's taken me a good five minutes just to press Enter.

He starts talking again. I hang up.

Cherie and I tell her dad that it's a scam and to hang up on him if he calls back, and we head out for a few minutes. When we return, her dad is on the phone with this guy again. Cherie grabs the phone.

"Hello, we have looked up the site that you asked us to go to and it's quite obviously a scam. Stop calling." She's pretty awesome like that. I would've preferred to mess around with him a little, but time is precious. The man responds with something along the lines of "I will call every day." Fine, whatever. The more time you spend failing to scam us is less time you spend successfully scamming others.

I'd always read about phone scams like this happening in other countries, but never in Australia.

Monday, April 2, 2012

Tough Mudder, Melbourne 2012

On Saturday, March 31 2012, I ran my, and Australia's, first Tough Mudder at Phillip Island.

What the Hell is it?

You can find out more on the website, but in brief, Tough Mudder is a, roughly, 20km obstacle course with obstacles ranging from ice baths to 4m high walls to electric wires designed to test your muscular endurance and mental strength.

So last October I sent out a message to my closest friends asking who wanted to do it with me. I ended up recruiting two mates, Gordon and Andrew.

Training

Although early on we had discussed training together for it, our schedules clashed a lot, so we ended up mostly training separately.

How did I train for it? Mostly strength training; I've been on Wendler's 5/3/1 for about 12 months now, so all I changed up was adding in a lot more upper-body assistance work, in the way of rows, pull-ups, lat pulldowns and high-rep push presses, to help with pull-ups and endurance.

I relied on my endurance and running/sprinting ability from 16 years of basketball to get me through the running, although this didn't work very well. I'm good a short distance sprints, but not long distance running.

Injury

Six days before, the three of us, accompanied by our wonderful partners, did an obstacle course out in Gembrook. On the first obstacle, a rope net, my left foot got caught and I twisted it. It hurt a lot! I jumped up and down on it a few times, felt the pain setting in, and in my stubborn ways, decided to keep going. I went to a physio during the week, who told me I had pulled some of the tendons in my ankle on the inner side, instead of the usual outer. She strapped up my foot, told me to go easy on it and sent me on my way. I decided that, even if I wasn't going to be able to run, I would, at least, go down and start the thing. After all, I paid for it, dammit!

Pre-game Nutrition

The night before the big day, I ate a decent meal (from the advice in this article), prepared by my lovely girlfriend, consisting of a t-bone steak, leafy green vegetables and a lot of a sweet potato. This worked out spectacularly; I had a lot of energy throughout almost the entire thing, with exception to the last few kilometers, for which I relied on the bananas provided by Tough Mudder staff.

Before the Start

My girlfriend and I had tickets to see Avenue Q on Friday night, so we didn't leave Melbourne until about 10:30pm, and after a few stops on the way, we arrived at Phillip Island to the house we were staying at, which Andrew had organised, at about 1:30am.

Five hours later, we all woke up, suited up and headed off.

As soon as we parked our cars, we had to walk for a good ten minutes to get to the entrance, which meant we were cutting it pretty close because it was almost 8am, which was my designated start time. Luckily, registration was super quick, as was the bag drop. I quickly jumped into the back of the pack as they were counting down from 10 and headed off. Due to a bit of a mix up, I started earlier than Andrew and Gordon, who ended up sneaking into the 8:15am pack.

The Obstacles

I'm not going to go through all of the obstacles or every bit of my experience, so I'll just outline the favorite and not-so-favorite obstacles.

The 4 metre high Berlin Walls were a lot easier than I thought they were going to be. There was a little edge to get your feet onto, which was more than enough for me to launch myself from, grab the top of wall and pull myself up and over. However, it was good to see teams helping out others, and I stuck around at one of the walls to help up the last members of a couple of teams who couldn't get up by themselves.

The pinnacle of team work, however, was the tight rope net we had to crawl under. Three teams and a couple of lone rangers (myself included, as I hadn't met up with Gordon and Andrew yet) all grouped together to completely annihilate this obstacle.

The ice bath was my downfall. My right calf muscle cramped up as soon as I tried to get out and my left ankle started to ache a lot even when I just walked on it. And this was only at about the 5km mark. I thought I was done. If I couldn't even walk without it hurting, how was I making it through another 15km of this? After a couple of kms of walking, the pain went down enough (or did the pain in the rest of my body go up?) and I decided to keep going.

The mud crawls, with barbed wires a few inches above me, scraped up my knees a lot. The mud was mixed with some kind of gravel, although this seemed necessary as the mud was stubborn and impossible to push yourself off of. Soon after this point, we stopped to stretch out our legs a bit, and Gordon decided to lean on a fence. Turns out it was an electric fence. Good work, Gordon!

By the time I reached the hay bales (a little over half-way through), both of my calves were cramping, as were my adductors. A lot of other people around were suffering from muscle cramps too by this point.

The mile of mud. If ever there was something to tire out my legs and mid-section, this was it. By the time I got out of this, walking out of mud felt like floating on air.

Everest. A quarter pipe that made the Berlin Walls look like a warmup. My first two attempts at this were in the middle of the pack, where the grass was quite muddy. When attempting to push off with my left foot to get a hand onto the top, I slipped and face-planted instead. Oops! My third attempt was on one of the ends, where the grass was dry. And it was a success!

Last but not least; electro shock. I shat myself coming up to this, because I didn't know how much it was going to hurt and I couldn't see any gaps to minimize the number of wires I would hit. So I just ran through it and got zapped what felt like a dozen times and had my muscles flailing all over the place, without any say from me.

The End... Nearly

As soon as I crossed the finish line, with a hurt left ankle, muscle cramps, a giant blister on my right foot, scratched up knees, some gashes on my arms and a whole lot of mud on my clothes, I shook hands with the MC at the end, grabbed my free beer, which I necked in about ten seconds, grabbed my head-band and t-shirt, let my girlfriend take a few pictures and then headed for the nearest patch of grass to fall over and die.

After waiting for over an hour to get my backpack, my girlfriend and I finally made our way to the car. Or, at least, we tried to. We got lost! All I wanted to do was take my shoes off, unstrap my left ankle and relax! It took us about half an hour of walking around to find it, and with my backpack on my back the entire time, there wasn't a single part of my body that didn't have something to say.

Recovery

Back at the house, Andrew, Gordon and myself were dead tired. We had our long-awaited showers (separately, of course) and let the recovery begin. Our girlfriends all did wonderful jobs looking after the three of us, and we wouldn't have made it through the rest of the Saturday or Sunday without them doing things for us, and shopping for lunch and dinner for everyone.

For me, recovery food that night consisted of a bowl of chunky soup (provided free by Tough Mudder), a pack of Oreos, an iced coffee Big M, chicken, bread and a shitload of water.

Next Year?

Would I do it again next year if they come back to Melbourne? Absolutely. As much as it hurt, I really want to do it again with a healthy ankle, just to see how much better I could do. It also made me realise how fun trail running is compared to road running.

And that's it! That's my Tough Mudder 2012 report. I can't wait to do it again! Now I'm off to take more fish oil and stretch my damn calves before my lunch break is over...

Friday, March 2, 2012

Getting Some Quick Experience with a New Programming Language

One of the biggest problems I have when I mess around with a new programming language is deciding what to do with it after I've been through the examples and official tutorials. What do you do when you just want to get more comfortable with the language and you just can't think of anything, or don't have any ideas that this language would fit nicely?

My solution? Use it for odds and ends. If the implementation has one, fire up a REPL and keep it running in the background while you work on other things. Need to do some kind of simple calculation? Need to transform some data? Jump into the REPL and figure out how to do it with your new, shiny toy. It may take a little longer than if you used something you're more fluent in, but the reward is often worth it.

Tuesday, February 28, 2012

Future Blog Posts

In my spare time I've put down a lot of the programming-related stuff I was doing in favor of other things. I started playing guitar a couple of years ago, I started lifting weights (to get better at basketball at first, but now with a focus to compete in strongman) and I started having more of a social life with my girlfriend. So I'm going to broaden my range when it comes to blog posts. No longer will this blog be solely for tech-related topics. I will start writing about various things in my life, which may include lessons I learned on the basketball court, reviews for cafes and restaurants around Melbourne and little tidbits about weight lifting and guitar and music theory.

I always wanted to blog about some of these topics, and I always thought about keeping it to separate blogs. But I've decided that this blog isn't busy enough and doesn't have many (if any) readers, so I'll mix it up with the tech talk.

Tuesday, February 7, 2012

Dock Stopped Working in OS X?

It doesn't happen often, but when it does, I don't want to have to restart my computer to fix it (or anything, really).

Every now and then, on OS X, my Dock disappears and I can't Cmd+Tab between applications anymore. After a bit of searching around on forums, I found the solution; kill the Dock process from Terminal.

killall -KILL Dock

After killing the process, a new Dock will automatically start up.

Problem solved!

Monday, January 2, 2012

How I Deal with Lots of Data

Just for some context, by "lots of data", I mean a couple hundred million rows in a table joined to other tables of similar size. By no means is it a lot compared to what other people deal with, but it's certainly enough to warrant some forethought instead of just diving right in.

Late last year, I was tasked with a few one-off reports that required me to summarise data that was stored over a couple hundred million rows in a database. Knowing that it was going to be a long process to retrieve the data for these reports, I had to come up with a game plan to do this as quickly and as efficiently as possible. In the process of doing this, as always when handling relatively large quantities of data, a few things were learned. None of these lessons/ideas are new or original, but I wanted to write them down somewhere, and here feels like as good a place as any.

Extracting the data that I needed (which, in one instance, was a subset of a couple of ~300 million row tables) into a local database meant I was able to modify the data (like cleaning up dirty, inconsistent spellings of suburbs, states and countries) and modify the schema (like adding new indexes which, because of the odd nature of the reports, the production databases didn't have or ever need previously).

Assuming that you don't require something like schema changes, that local database doesn't even need to be a relational database. CSV files work perfectly fine a lot of the time. For a couple of reports I wrote a handful of scripts, the first of which was to pull the data out of the MySQL database, perform some simple operations on the data and output it into a CSV file. The other scripts that needed to operate on the same data could then easily (thanks to Text::CSV_XS) read the CSV data, which was a lot quicker than reading it from a relational database.

Why do CSVs lend themselves nicely to this kind of task? Because with reports like these, in my experience, you very rarely perform complicated operations on the data after extracting it from the original data source(s); you just want to suck the data up, summarise the data, output the summary, and then output the nitty gritty details on subsequent pages or into a separate file.

An obvious advantage to storing the data like this is the speed in which you can retrieve and process the data. That improvement made a huge difference for me because I like to run my scripts very often throughout the development process, no matter how small the change.

Of course, depending on the size of the data (in bytes), extracting the data into a local database of some sort may not always be possible.

The last big win I had was not using object-relational mappers (Class::DBI in this case). They're great a lot of the time and save on code and development time, but when dealing with millions of rows, they just add bloat and everything runs much slower than it should.

That's all I can think of now, a few months later.