I really need to remember to post here more often. What have I been up lately? A bunch of traveling for work.

  • Microsoft Visual Studio Parter summit
  • Atlassian Connect Week
  • Jenkins World 2016 (Upcoming)

And the one event I went to as me, not really representing sauce labs

  • Cascadia 2016

I had a big blast at pretty much all of them. Most of them got me into the tinkering mood again.

Because of Cascadia, I learned about greenkeeper and have since hooked it up to a bunch of my node projects. At times the influx of pull requests to update dependancies is kinda annoying, but it forces me to keep my tests up and running. So far i’ve been pretty happy with it.

At connect week, I learned about this codegiest competition/hackathon they were hosting. I already had 2 entries due to work on some projects at sauce labs. But I really wanted to do something fun and silly. So I revisited the dance party plugin Jlipps created for our internal hubot. It gave me an excuse to use a bunch of the hipchat apis that I wouldn’t normally use, and was able to create Hipchat Dance Party. Totally available for free in the market place.

Next up would be hubot-jenkins-notifier. I’ll admit, I didn’t fully understand the bug that the one user opened, but they were willing to create a pull request. He admittedly didn’t have a lot of time to work on it, but was very receptive to feedback. After over a month of slow back and forth, I decided I was happy enough with it, but I wanted better test coverage of the project as a whole. So chatted with him, came up with a better config schema, merged everything, and started the rewrite. The code is now super cleaned up, nice objects that can easily be tested. No more horrible coffeescript. He’s happy with the result and so am I. As soon as I get a few more real life test users, i’ll be cutting a new release.

codacy-maven-plugin – Due to some of my projects being solo at Sauce Labs, I have had my eye out for various open source tooling to keep an eye on my code for me. I tried out gemnasium for a while, but that wouldn’t support java. Greenkeeper as mentioned above is great, but again, not java. Codecov has been great for reporting coverage, and I’ve used it very liberallly, Then I stumbled onto codacy. Codacy is multiple languages and builds you a report on code quality. In java, it uses findbugs, for javascript, it uses eslint. It also has a whole slew of built in checks and functionality. You can totally check out one of my projects to see some of its output. My only real complaint was that unlike codecov, which was just pip install codecov, for java code coverage, you needed to install another java package manager, then install a script, along the way there was https errors, etc. So decided it was worth it to learn a bit more about how maven goals are created, and just more about maven in general. Codacy-maven-plugin was created. This means with maven which is already installed and used to compile java projects, could also be used to upload coverage reports.

And lastly, one of my old standbys, Infinicatr, my old mobile web project that scrolls through a seemly unlimited number of cat pictures. After cascadia I was re-invigorated to learn more about service works. Its usually between salty stories and infinicatr to play around with “new” web tech. I really wanted to see if I could make infinicatr work offline. It turned out to be really easy. Using a service worker, I was able to returned cached values if flickr was unable to respond for any reason, and live network requests otherwise. This meant that once the first batch of 10 images were fetched, it would always appear to be online and working. I’m pretty happy with this result. Source

My next plan of course is to apply it to the old Salty Stories book engine so it can be properly supported offline, instead of the semi hacked version i’m depending on now.


And thats me for the last couple of months.

Talk on Testing – Code and Coffee YVR

One of my personal goals for this year is to start getting more comfortable sharing knowledge and talking infront of large crowds. As such, I volunteered to give a quick talk on testing, as its always been something I love doing, and ion the new job I thought it would be pretty appropriate.

This is my second Code and Coffee talk ever, and I can see I’m still pretty nervious giving the talk, but I think other than a few technical glitches (which were thankfully edited out) it went really well.

I have so much fun doing them. I love the fact that people come up to you afterwards and walk to talk about topics.

Totally open for more ideas on what to talk about. So far I’ve done Vagrant and now Testing in general. I’d love more suggestions.

Capistrano3 – Deploying with internal git server

Edit: I updated my “hack” to work with newer versions of capistrano/sshkit –

To set the scene. New team has been using capistrano to deploy some of its apps (all internal/behind our firewall). So new POC project comes along. Nothing sensitive but needs to be publicly accessible. I get very excited because this is the first time I’ve setup capistrano from scratch. I follow the getting started guide. Deploy to internal test. No problem there. Go to deploy to the amazon box (Go Free Tier) and fail… Riiight, can’t talk to our git server.

So spend a while scouring the internet for how to solve this problem. Can I just SCP? Its not that important right now. Hrm. That doesn’t seem to work reliably. Lots of solutions, none of which seem very clear and/or work with cap3. So I give up searching. This should be easy right? Just setup a remote tunnel. I open a new window, create  tunnel, edit my config, and bang. Deployed. Yay!

But wait, this is going to get annoying fast. Plus others will have to do that manual process as well. How do I automate this? Scour the internet for a while. Again, no real automation and/or doesn’t work with cap3.

Well fine, I always need the excuse to learn more about ruby, so start digging into the code. Its using pre-existing open source modules so it shouldn’t be that hard. After a bunch of learning, and giving up, I decided to skip on the nice clean solution and just start overriding some things.

So here it is, config/deploy/production in all its glory:


tl;dr – is now live again

Yet Another Online Interaction Role Playing Game was a project a group of us at BCIT put together. It was for some of internet studies course (Yea I’m that old / It hadn’t been updated yet). Evan, the guy who named it, was also someone who spent a lot of time online and really enjoyed the idea of an acronym that people probably wouldn’t get.

So YAOIRPG was born. We had to do lots of paperwork. Project Docs, Design Docs, ETC ETC. But we found everyone loved playing it. I actually got killed several times while I was trying to demo the game to the class. It was fully multiplayer. Not bad for a school project. We were not expected to finish it, just document the process. There was only one other team that manged to get something demoable (I think), and they had a simple app that transferred files.

Anyways, it came up in conversation recently, mostly because I still tell the story that the teacher was heard saying he loved yaoi and we in the know at the time were so amused by this.

I realized the code wasn’t backed up, so I dug through some of my old hard drives, found the code and an old DB dump and this morning through a lot of trial and error (And actually minimal work) got it running in a recent version of php and mysql. now lives on heroku where it should forever run. Backed up to bitbucket ’cause I’m pretty ashamed of the code :D

"free laptop" facebook scam

Ah, the things that people believe on the internet. I’d like to believe its not work that is making me paranoid, but it mostly is. Plus I get paid to help try to find the flaws in things before the time is spent developing them.

The interesting about this thing, is when I first saw the title of the facebook group, I was sure that was odd, but I quickly ignored it and moved on. Then I saw it again tonight, and I started to do a bit of digging. manages to describe my thought process pretty well actually. But I went a few steps more. I got very weirded out by the fact they wanted me to use javascript to select all my friends for invite (I still can’t believe I immediately recognized that javascript the second I saw it.). So after I visited the page they said you could only visit after you invited your friends (look at that, I visited it fine).

Anyways, to make a long story short, I started to dig through the js on the page, found out its essentially a small page with a ad or something to c p a l e a d (dot com, I don’t want to link to it). That in itself isn’t that interesting, its the fact that it tries to detect firebug so you can disable whatever it does (video maybe? I run with noscript so I don’t see it).

I put the code up on pastebin @ for anyone who is curious. Its simply the only javascript on the scammers page after I ran it through the reverse dean edwards packer.

Please people…learn to ask questions.

I’ve been playing around with some new jquery/javascript this week.. All has been going well, i’ve been learning just how bad UI is lately.. I wish interface worked still in the latest versions, UI is extremely slow, plus the documentation currently does not fully match the code (well actually they might, but we are using an older version of UI due to the fact that the new ones are less functional).

Anyways, lots of people pop in #jquery and ask questions.. which is good, ’cause i learn about new plugins or ideas, etc. But there are a lot of people who just can’t figure out how to ask a question.

Examples of bad people:
* <yoav> guys i’m stuck tryin’ to get an ajax form to work with jquery and codeigniter <yoav>stuck as in it’s not working
(i’m surprised i can’t find more in my recent logs)
or my fav, and i can’t find an example from my current logs
* <someone> Can I ask a question?
* <someone> I have a question (in which the reply is no, thats a statement)

Between those and the people who know next to nothing about javascript, css and html, expecting that jquery will be really easy and needing to be hand held through every little step is really frustrating.

I gotta setup some irssi aliases now to point to (which I just found)..