Lance Wicks

JudoGeek Blog

February 2015... 

Hi All,
so February has flown by, here is a small update on the month that was.

This month I was allocated MooseX-Types-Parameterizable as part of the CPAN Pull Request Challenge. As with last months module, I started by contacting the author by email. He quickly got back to me and over the course of the month we shared a bunch of emails discussing the state of the module and at the end of the month I eventually tried to contribute a small pull request which basically marks the module deprecated.

In $dayjob, I have been busy working on a project to merge some old CGIs into one. This has involved quite a bit of work ensuring that I did not break the functionality of the page(s) whilst I worked.
So I started early on using selenium to test the results I was receiving. This was worthwhile upfront work as it saved me a couple of times when I broke the UI. Mainly, it gave me the safety net and associated confidence to refactor some of the code.

This month I spent a little time reading up on and playing with Meteor a javascript framework. The idea being to create web apps using the same framework front and backend.
It is perhaps what you could term a MEAN stack implementation. It is rather interesting and I intend to spend some more time this month working on it as it seems to be getting some traction.

Me but less so
I've been getting good progress on the "stop being a lard arse" project. I'm doing well at maintaining my downwards trajectory. Lost a few kilos since I began; not speedy, but steady. The plus is I have been able to reward myself nicely and I think I am feeling better healthwise.

It's been a hellish month in Judo. The BJA lost the hosting of the European Championships; utter chaos as their UFC partnership blew up in their faces and cost everyone badly.

Life has been god overall. Though I have not managed to achieve everything I wanted to; I have achieved quite a lot of what I am working on.
This month I intend to finish the research on competition formatting for British Judo. I want to get that written up and shared before March is over.

On the code side, I want to make some progress on the Club management/promotion software I have had on the backburner. I also would like to get the Judoticker software working for all the Judo events I can't attend. There is also a fascinating project to try and use the Judoticker concept with Instagram.

As ever too much to do, too few hours in the day to do it.

Pebble Time
WOW! The new pebble took off like wild fire! 10 Million dollars in a day. I wish I had shares. At least I backed it and will be getting one in May I hope. I love my original Pebble, so looking forward to the colour e-ink display and all the new stuff!

[ view entry ] ( 1270 views ) permalink

It's been a busy month for me; but as it comes to a close I thought I would take 10 minutes to type out a short reflection on the month. Think of it as a personal "retrospective".

This month I participated in the "CPAN Pull Request Challenge". This is a project whereby each month you get allocated a CPAN module which you are challenged to make a pull request on GitHub to the author/maintainer of the module.

I was allocated HTML::Form by Gisle Aan. Which was a bit intimidating. But I took up the challenge and took a browse through the issue tracker and found a small one I knew I could do. yes, I updated the pod documentation!! Yeah, I know not real impressive. But I did it.

Meanwhile in my $dayjob, I have been working with Solr and the Webservice::Solr module by Andy Lester. I discovered a feature I needed to use was not included in the module. So filled with motivation and a little guilt from my HTML::Form pull request, I wrote a test and then the code (yes in that order) to incorporate the stats data in the responses being returned from Solr. I've pushed my pull request, got some feedback and pushed again.

This was more rewarding as, it was adding a feature that I wished was already there. I may have made the pull request without the challenge... but I doubt it.

Much like the CPAN day challenge last year, the idea here is not so much about the quality of the contributions themselves; rather the act of contributing.

General Tech
I have been loving my Pebble watch. It is what I would call the original smart watch. It was available before the Android Wear watches were available and of course we are yet to see the Apple Watch here in the UK yet. They are also considerably cheaper. I have the original Pebble, which is under 100 GBP.

Recently, Pebble enabled android wear alerts on the watch. So I get the same interactive alerts. There is also a large collection of apps and watchfaces available.

Pebble also work hard to make it possible for you to develop for the watch. They have a web based IDE which allows you to right the code online. It has GitHub integration and recently an online emulator! Super simple! I have been testing some ideas with Judo apps. As well as C, you can write apps in Javascript; so I took some of the Judo related javascript I have written and have been testing it on the watch... it's very cool.

This month I managed a quite good cheevo streak on but then after it broke I ran my ArchLinux updates and spotted a Dwarf Fortress update and now I'm digging into the worlds self-proclaimed most complex game in the world again.

January means competitions start again and I'm on the IJF Junior World Ranking list again. It's rewarding in an odd set of way. It's interesting to process the results and look at the statistics on how many events, where they are held, what countries are involved. What categories are big and small, etc etc etc.

I'm exploring a couple of technical projects and completing a couple that are still running.

So... I've been getting heavy, slow and generally not me over a period of years. And last year was no exception. So in December started working on the problem.

I have applied my geek side, my coach side and my Agile side to the problem. I did a couple of exploratory tests in January that informed my goal setting.
I then sat down and wrote out a detailed plan around what I wanted to achieve and by when. Based on good theory and the experiments. Knowing that I planned backwards to now. Working out what I had to do in what time frame.
Then I worked out a set of rewards I could award myself if I hit the targets as I go along. The targets are realistic measurable (yes kilograms lost) and set to fixed dates.
I have intentionally made the targets achievable, with more rewards early on and bigger ones further apart later. The idea being rewarding early is good for establishing the habit and bigger ones further apart give shinier toys for the real wins.

It's been tough to reach the point of really getting off my arse and doing this. As someone who has been in sport my whole life I've never (other than making weight for competitions) worried about weight or diet. The past decade+ I have not been an athlete or trained hard and regular and it's taken this long to realise it I suppose.

But, I'm taking it in hand now. And every day that I manage the calories/joules and try and find the correct balance between in and out is a win. If I make small adjustments daily, then the large project is easy to ignore as I make small daily decisions.

My first Judo trip of the year is next month, I go to Oberwart, Austria for an EJU event. I have never been there so that is a positive. It also means I'll be able to spend time talking with my colleagues in Austria where they have a club team based Judo league.

This is important as near the end of 2014 I started researching competition structures for Judo in Britain. I have looked into various professional leagues in Europe, USA and elsewhere. I've looked at Judo, Rugby, Football, American Football, Rugby and more including e-sport.

I hope to finish researching and writing it up and share it publicly as well as sending directly to the British Judo Association in March.

2015 has already been a good year, January has been busy! February is looking good to get some things out the door and into the public. I also have a trip which is always motivating for me, so I'm hoping to feel a real boost in February that will drive me forward on projects!

I can't wait to see what CPAN module I get allocated and hope to make a good contribution.

See you next time!


P.s. My friend David McFall has a kickstarter campaign running until February 20th. It's for an English Language Judo Magazine called Judoka Quarterly. If you have a few spare bucks I would really appreciate it if you would consider backing the project:
[ view entry ] ( 1428 views ) permalink
Hello 2015 

Hi all and welcome 2015! Happy New year one and all.
As is traditional this post is a personal review of 2014 and my thoughts on 2015.

2014 for me has been a good but tough year. I was unable to travel as much as I would have liked as I have a $dayjob at the moment that requires my full attention and attendance. That said I did manage to attend a dozen or so competitions including the World Championships in Russia and European Championships in Montpellier. Not to forget getting to Korea for the first time.

Judo topics I have covered in my Judo blog, so I shall not dwell on it here. Here I shall stick to more technical and personal matters.

This year I have again spent a majority of my time writing software. Specifically Perl software for a UK commercial web business. This year I became the "social guy". I spent a good amount of time working on our emailing system and our Facebook and Twitter integrations.
Working with Perl remains an enjoyable activity for me. It is flexible and has a maturity and stability I like. CPAN remains a key benefit (just as NPM is to node developers). To this end I finally contributed a package to the CPAN as part of the 2014 CPAN day.

This was a good experience and has lead me to join the 2105 CPAN pull request challenge. This is an idea being driven by NeilB that assigns a CPAN module to you once a month with the idea being you submit a pull request to the authors. In the opening month I have been allocated HTML::Form which will be a challenge as Gisle is one of the faces you see on CPAN alot.

In 2014 I continued to explore technologies I know less well. Specifically I spent some time getting more familiar with Dancer and Dancer2. I also played some more with Javascript both server side and client side. I have a app on GitHub that is pure client side Javascript and Bootstrap. Pretty interesting, the non-blocking is still a challenge. :-)

In terms of Agile, SCRUM and so forth it has been a challenging year. I work with two technical teams and both have their challenges. I really enjoy it when we actually apply agile methods. But I guess the thing I have learned this year is that good processes are like good health, it takes good habits, commitment and constantly trying to undo the natural tendency for things to go bad.

In 2014 my weight has climbed badly, 10kg heavier than a year ago. :-( I am unfit, fat and need to get myself sorted out! I have really started to feel the negatives in terms of general demeanor and physical capability. I just don't feel like me anymore. My mood this year I think has been pretty dire too. The two are related.

So I shall be one of the new years resolution crowd making an effort to get slim again. We shall see. I'll also be really trying to make sure that the Agile stuff takes a more prominent position in what I do.

This time of year is not my preferred time of year. Especially now I live in England where the weather at Christmas and New Years is to be honest horrible! I really struggle to feel it when it is grey and miserable out. I also hate the stress this time of year generates, so many people stressed it really makes me a grinch.

In 2015, I hope to achieve a few things. I have an obvious kilograms issue to deal with. This will take all year to achieve in a sensible way.

I want to complete and publish the research I have been doing on options for a national competition structure for Judo in the UK. This fits in with my work is sports business and my coaching and so forth. This should get done by the end of January, and I'll self-publish, so a short term goal.

I want to expand my PlanetJudo site to cover at least one more language (German I think). I also want to give the site a refresh and expand it moving my Judo podcast from there and incorporating a vidcast too (stay tuned). I have some people who want to help with this.

I want to grow my SportSouthampton project. My plan is to continue to expand the reporting side for the first half of the year and then start the services side.

Lastly I want bring back from the grave my VWJL.NET project. This was and will again be an online simulatiopn of Judo. Both a game and a experimental environment. I want it to be a fun entertainment for the players but also a simulation that can be used to test if certain ideas (leagues for example) work. I have the old code (and somewhere probably the original code) so I have a starting point.
I'm yet to decide on technologies fully. I have been exploring Mojo, Dancer2 (both perl) and well as Express on the node side. I want to look at a couple of other server side option before deciding. PHP is in the mix of course as so many people can help if in PHP, but Perl is my most comfortable tool. But I'd like to consider newer languages like Node and Go etc before deciding.

Client side, it will be HTML5 and Javascript I think.

2014 was an exhausting year for me, by the end I felt utterly drained. 2015 is looking just as tough if not tougher. I need to work hard this year at consistency and at balance. I need to continue to explore how I can simplify, improve and so forth.

It will be a great year, of that I am sure. I don't know what it will hold, but I look forward to finding out!

[ view entry ] ( 919 views ) permalink
cpan day 2014 

August 2014 marked the 19th anniversary of the amazing resource that is the Perl cpan. Node developers already know why cpan is so cool, they have npm which is a very similar tool.

cpan for those who don't know is the online collection of modules for Perl. These are the components you use when for example you want to connect to Facebook or Twitter. Rather than writing all the code to handle connecting and authenticating and then posting to twitter or facebook; you can simply install a module from facebook and away you go!

So for me as a person that makes a living currently from writing Perl code and relying on cpan to provide the linkages between what I want to achieve and the technical elements I need to use.

One of my early experiences was writing a interface layer between a windows application and some robotic hardware interfaces. The initial code implementation was done with TCP sockets with adhoc commication. Later in the project it was decided to use XML to format the communications; this was a pretty big change and could have been a nightmare, but with Perl is was really use a case of using a XML library from cpan. It was really a simple change (much quicker and easier than it was for the .net developers working on the other side).

As a Perl guy, I know and love the cpan and cpanday was something I wanted to support in some small way. I have had a cpan upload account for a longtime but never had something I wanted to upload. But somewhere I heard that one suggestion for cpan day was to upload something to cpan... so I decided that was what I would do.

But what to wrote and upload?

This was easy, I had been joking with a work colleague for a while about writing a Perl::Critic policy to prevent his use of Perlserets in the corporate code base. I even added it on (the written in perl) site.

So this was the project I started last week:

Now, I have never written a Perlcritic policy before, or contributed to cpan, so I did what any good perl developer would do; I stole!

I did some googling and looked at some other policies.

One that caught my eye was Perl::Critic::Policy::ValuesAndExpressions::PreventSQLInjection, which has it's code on GitHub. Including having tests on Travis-CI. So I checked out a copy of it and then used this as the starting point for my module.

So I created a git repo and used the files from the PreventSQLInjection as the basics for my module. I started by striping out and replacing names and files that I needed or didn't need.

The next step was to get the integration to Travis-CI working. Travis-CI allows you to run your test suite on a variety of Perl version without having to do it yourself. It took a while but after some misteps I had up and running including the button in the readme in the Gitgub repo. Next I did the same for Coveralls, which provides test coverage for reports:

It then got a bit interesting, I had some issues getting the pre-requisite modules working on my laptop. But interestingly, the travis-ci build worked nicely (mainly as I copied the setup). So I did have a working test environment (four in fact). Luckily, I wanted to approach this little project in a Test Driven Development (TDD) style. So I made the decision to stop wasting time fixing up my local environment and trying to put together a dev VM etc and decided to simply use the tools I had already setup.

My decision was simply to write my changes to github, then let the automated testing take place on Travis-ci and react accordingly.

So I got started, I looked at Perlsecret and wrote a test for the first entry, the "Venus Operator". I pushed it to Github and looked at Travis-CI and as expected, it was red (fail). Then I wrote the code to detect a Venus operator and pushed that. Travis-CI turned green as the test I wrote now started passing as my code detected the Venus operator.

Then I continued with each of the operators, with the same process:

* Write a test.
* Test fails
* Write code
* Test passes
* Repeat

So after some days of working evenings on it and some of Saturday (cpan day) 16th. I had a completed Policy with tests built and passing tests. Time to upload to cpan.

This again is something I have not done before, so more googling. It seemes I needed a TGZ to upload via the web interface. Now, if you remember; I said my actual local build was not working. So I could not actually build locally. But a couple of references talked about being able to upload direct from Github; so this is what I would attempt. Thankfully a very handy PerlMonks thread has all the details I needed... well almost. ;-)

So I created a release, the only trick being I needed to name it just right "Perl-Critic-Policy-Perlsecret-0.0.1". That done it was really as easy as pointing CPAN at the github release url.


It took 30-40 minutes before it was easily found on cpan metacpan etc but there it was/is, online and available for anyone to use. By morning it got even better, the massive cpan testers community had picked up the module and I had passing tests on Windows, Linux, Mac, BSD etc. Now as I write this (a day later) I see that the testing has continued and I even have some failures, something to look into already.

Now the one confession I have is that I have not actually used my shiny new module on anything at all! My plan is to try it Monday on the corporate codebase as a test. I know I have written a pretty naive module, pretty sure it will detect errors even if in comments (a false positive).
Also, it's probably a policy nobody will use, but that was not the point. The point was to do it, to wrote something and submit it to cpan on cpan day.

The result of cpan day was pretty impressive. 775 uploads from 107 people. Mine was one of 10 from new contributors.

You can read about it over at ... e-1st.html

For me it was a worthy use of my time, I make a living from writing perl and I was happy to be able to contribute a little something to the community that I have enjoyed being a part of on and off for such a long while.

It was also a good technical challenge and I got some "deliberate practice" in. I developed the code in a pure TDD style, this has meant that when I got to the end, the tests were already in place and I have confidence in it working; and the cpan testers successes show that it passes on a wide variety of platforms.
I have also learnt how to upload to cpan, the requirements and the methodology.

So for me, the inaugural CPAN day was a good experience and I am pleased to have participated in my own small way. I hope next year for the 20th anniversary that the community does even more and I will I think attend (or perhaps even organise) some form of hackday to celebrate with.

Thanks Perl, you've been great!

[ view entry ] ( 2338 views ) permalink related link
Games of the moment... 

Just a quick one about a couple of games I have been playing and why.

The reality is I don't play much in the way of games. Too busy by far. But occasionally I want to relax and play a game. I have a bunch of consoles and steam and yet the two games I am playing the most recently are pc based and to be frank... weird.

1. SailX
This is a sailing simulator, as in sail boats. It's web based, though as I am a Linux user I am using the stand alone client for Linux. You can play in 2d or 3d (I alternate between the two).

It is basically exactly what it sounds like, you sail a boat. It's not expansive, you only sail races around a course.

It is multi-player; no NPCs here. You sail against real people and the winner is the best sailor as all the boats are the same.

It is statistics. I think I discovered the game when I was researching ranking systems for the research project as it uses the ELO system for ranking.

2. Dwarf Fortress
This is a dwarf simulator, I guess. It can probably only be described as a cross between minecraft, the sims, simcity and archlinux.

This is a game that you really struggle to even get started with unless you have the dwarffortress wiki open.

The learning curve is immense, the graphics ASCII. The complexity huge, the frustration even larger.

I blame my brother entirely for getting me into Dwarffortress. He prompted me to try it a couple of times. And then a little while back I had my 4/5/6th try and it stuck. I got it and enjoy not doing well when I get a chance to embark.

3. Ingress
This was previously Android only, but now is iOs also. Niantic labs' augmented reality game can be addictive. Especially with the ARG elements to this go be somewhere in the realworld game.

It's really interesting and I like geo based anything. (I geocache and trying Munzie).

Give it a go, join the resistance and let me know.

Not sure why I was prompted to write this, possibly just that it was a dreary day and I didn't fancy actually playing anything. Possibly because the blog has not been updated for months and I want to correct that. Possibly because I am curious if I am not the only one who is enjoying quirky indie gaming more than firing up the console.

I'm not a fast twitch FPS guy, so major AAA releases on old and next-gen consoles don't appeal that much. And I also get tired of the power on, start game, wait for updates, wait, start playing, realise you are out of freetime, turn it off cycle. Sometimes, I just want to get on, play, turn off.

Also, these quirky games are far more intricate it seems in areas. The SailX community is pretty serious about the rules for example; yet will happily help a noob. They have simple one design boats, but that opens up tactical play so much. Not freemium style powerups or such like.

Dwarffortress is obsessive both in the way it is developed and in the way people react to it. The level of simulation is creepy high, yet graphics are awful. But intentionally so. The fun is in the details not in pretty graphics (I confess however I play trhe Ironhand version which adds a little graphically).

Everything matters, nothing is just filler. No cut scenes. If your characters express emotions they matter. As in, you probably need to keep tabs on how they are feeling, who they are hanging out with, any budding relationships etc.

When you build, you need to plan for the future as well as short term. You need to keep thinking and keep enjoying the little touches that make the game so rewarding.

I'm a total noob, but everytime I manage not not mess something up and see how I should have done it I get a little charge that wants me to play more. I'm kinda addicted and wanting more.

Ingress is the one that is slipping a bit for me now. I'm level 6 slowly creeping to level 7. The recent virus infection(s) are frustrating as I don't live in a city with lots of portals. So the fast decay rates piss me off. I know it was needed and to be frank I'm getting more points for it. But the sudden change was jarring and annoying.

It also seems to be suffering a bit from there being nothing new to discover now I've got to a reasonable level. Maybe level 7 will reveal more?

The ARG elements are really good, but I'm not being drawn in quite so much as I'd hoped. Maybe my busy lifestyle is partly to blame.

So, I am a geek. I work with geeks.

So, it's been interesting recruiting others to play. Ingress was the first one to catch. Dwarffortress so far has only been me catching it from my Brother and my colleague has just started playing.

If you play any of these games, or better yet have a game you reckon might appeal to me, please comment below or drop me an email.

[ view entry ] ( 2271 views ) permalink

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Next> Last>>