this has been an awesome year

 

First off I’m switching jobs in the new year. Contrary to the practise of my culture switching jobs now and again is actually a healthy and refreshing thing to do. It has many benefits, the least of which are the new skills I pick up and that little struggle in the beginning which distracts me from the illusion that in a few years from now I will still be remembered.

But here I am.

Writing.

Again.

It’s been a busy year. Let me try and summarise what it’s been like.

  • I grew older and hopefully wiser.
  • My family grew older and wiser. Some members departed.
  • I wrote a rules engine.
  • I lost a shit load of money because I couldn’t dump failing stocks. This was because I work(ed) at a place that didn’t allow for it.
  • I made a shitload of money on alt-coins.
  • I think I became a better man, at least I think I understand women a bit better than I did at the beginning of the year.
  • I must watched like hundreds of youtube videos and discovered so many new things.

I guess in short I’ve had an amazing year. I look forward to the next.

Free ssl certificate

Traffic between you and this blog is now protected by ssl certificate, courtesy of https://www.sslforfree.com/. It was super easy to install (webfaction is my hosting provider).

In some places it’s called a hustle

I don’t play much physical sports, actually I don’t. But like all men I must satisfy a desire to beat other men in some measures of strength, agility or intelligence. I play Go. My latest game appears at the end of this post. It seems as if I was mismatched here, I am definitely not a 25 kyu, the final score does seem to indicate I am around 10 kyu or even better.

I actually felt bad for the guy because I see this sort of thing a lot in real life. The Japanese have a concept aptly named Shuhari which has found currency in Agile Software Development lingo. The avid reader will notice the same concept from a Martin Fowler article where he articulates it as follows:

Shu: In this beginning stage the student follows the teachings of one master precisely. He concentrates on how to do the task, without worrying too much about the underlying theory. If there are multiple variations on how to do the task, he concentrates on just the one way his master teaches him.
Ha: At this point the student begins to branch out. With the basic practices working he now starts to learn the underlying principles and theory behind the technique. He also starts learning from other masters and integrates that learning into his practice.
Ri: Now the student isn’t learning from other people, but from his own practice. He creates his own approaches and adapts what he’s learned to his own particular circumstances.

Playing this 25kyu reminded me of the context I learned about the Shuhari concept myself. I too was a beginner. And as a beginner one is often preoccupied with not breaking the rules of the game. You try and make really really sure you don’t lose any stones and your focus is on capturing the stones of your opponent.

As you become more comfortable with the game you might even learn about Joseki which is basically a pattern of play in response to a common situation — which I suppose is a fair progression given that you’re probably trying to draw on the experiences of what the expert before you has, on average, gone through. At this stage you’re probably still having occasional headaches while playing because you’re really concentrating very very hard.

In the final stage, as Fowler says, the student is no longer learning from other people but from what he himself has observed in the field and he adopts his approach based on his own particular set of circumstances. In fact a famous Go Proverb intimates that you should no longer be relying on Joseki. Also, you realise that Go is more about encircling unoccupied board area than capturing stones. Capturing stones does actually count for a lot, but it’s considered vulgar to actually capture the group (you waste a move) and as an expert you’re supposed to be able read a few moves ahead that a group is in fact dead.

Of course this is all very similar to the Dreyfus Model of Skill Acquisition which Fowler also makes mention of.

Some food for thought perhaps?

Anyway what I wanted to say in today’s post is that at one point my skill level was ranked at 6 kyu in competitive play, but after some years of absence I can barely win against a 16 kyu. But in trying to remind myself of the first principles I clung to as an acolyte Go player it’s all coming back to me albeit slower than I want to as I kick some beginner ass.

It’s often said that to be sharp you have to do some teaching. By being in the company of those trying to learn you get an appreciation (some would say a reminder) of your own level of awareness.

I very much predict that in my next game I shall be able to beat at least a 15 kyu.

Enough talking, here’s the game. As you can see I totally crushed this guy.

After a long time I play Go again, and promptly resign

I used to be an avid Go/Weichi/Baduk player, reaching 6 kyu on kgs. But then life started in earnest. My daughter was born and I started mucking about with other things. Anyway wow, it was damn hard to get the Java applet running, and littlegolem games take too long. So I found this cool site which has uses HTML 5 to draw the goban and offers a lot of other nifty features.

I’m playing white. Things started going wrong for me around move 70.

 

Best introduction to Lean Manufacturing I’ve seen in a while

Ok, in case you haven’t noticed I just learned how to post youtube videos to my blog 🙂

In this video they approach a very simple problem of packing a number of items into a bag. They’re using a timer and at the start of the video the full operation takes about 3 minutes and we see how with incremental common sense changes they bring this down to something like 15 seconds.

It’s fascinating to watch how they innovate and do simple stuff like move things around and change the sequence of operations to cut down on the time taken to finish a job.

 

Executing a django view from the command line

 

In the recent post about importing postal codes I alluded to having written a script and doing the import “in a few minutes”. If you think about it a few minutes is way too short so let me tell how I at least got the persistent layer set up.

In Django a typical view (and the one I actually used) looks like this

def import_postalcodeboundaries(request):
    with open('/home/pi/projects/django/postalcodesbyprovince.csv','r') as f:
        for line in f:
            pname = line.split(',')[0]
            startcode = line.split(',')[2]
            endcode = line.split(',')[3]
            province = Province.objects.get(name=pname)
            pcb = PostalCodeBoundary(province=province, code_start=startcode, code_end=endcode)
            pcb.save()

..

You will notice here that I’m using straight old Django ORM to save my records. This makes the code pretty much agnostic to what the underlying database technology is. You can’t tell but I’m using mysql as a backend store.

From within ./manage.py shell I did a from views.myappname import views then did a views.import_postalcodeboundaries(None) and voila!

Some observations as I do the same thing as looking for new employment

 

Every few months I reassess the value of remaining at my current job. Perhaps you’ve read the article I posted a while ago on the metrics I use to assess whether a company and the role I’m offered is a good bet. So far whatever I’ve thought was a good bet actually turned to be a pretty good bet for the most part. Where the model has been wrong is in those things I really needed a crystal ball to foretell but that’s the nature of the game I guess. There’s always some surprising that’s going to crawl out from under the skirting boards. I have since attempted to redevelop that list, but one thing I learned is the value of exposing my current position and skillset to the open market.

This helps me assess the viability of my skills and therefore align my perception of my employability with “reality”.

It’s a seemingly expensive strategic exercise which I first read about in a career-advice article I read a whole while back, and which I have found to be immeasurably valuable especially given that the fulcrum of my pay-the-school-fees strategy is to balance job security with agility and ability to execute at a tactical level — the economy being what it is.

Just simulating the job search results in taking stock of what I’m actually doing at work, looking at the direction my career is going, what skills I’m both exercising and acquiring, what my candidate differentiator is and helps me to identify any gaps in my strategy of “over the next five years” to remain meaningfully and securely employed in a job which invokes something passionate within me.

Since the best feedback is actually independent outsider knowledge this exercise may take many forms

  • Engaging in conversation recruiters on LinkedIn by giving them their free “15 minute chats” and reading their job specifications etc. The information contained in these documents is very useful as they give an idea as to what kind of skills are current, popular, pay the highest, are used by the stablest companies, etc.
  • Engaging in conversation with mentors and colleagues at work and within my social network.
  • Actual interviews with companies which have actual openings. When I do find myself in the market I pay very very careful attention to all the feedback I get before, during and after the interview. The feedback, especially if it’s candid is used to feed me with ideas on how to improve. I found this Harvard Business Review article quite useful.

Anyway. Thus far I have seen the number one factor that would get you at least an interview at a good company regardless of whether or not your specific skills actually match what’s required in the job is:

PASSION

I suppose this cannot be stressed enough. If someone has passion it translates into so many other things a potential employer could harness about that person, to the point that I have seen they would be willing to employ a C# developer to write code in an entirely different language and operating system. This actually happened at a payments processing company where I was approached to interview at simply because of what my LinkedIn profile looks like.

And the number one thing that tells prospective companies that you have passion?

WHAT YOU DO OFF THE FIELD IS MORE IMPORTANT THAN WHAT YOU DO ON IT

So what these companies look for is evidence of

  • Hobby projects such as stuff you do in your free time. Tracking the temperature of a room with sensors connected to and code running off a raspberry pi? Great! You’re a self-starting innovator.
  • Do you have a technical blog? (I thank John Sonmez for this tip. He also has a great book called Soft Skills which currently ranks 5-stars over at amazon.com). Great! We can assess your ability to articulate yourself by writing and get a pretty good understanding of your thought processes.
  • Is that code written in a secondary language you taught yourself? Great! To you development is a lot more than just a means to get a salary.
  • Is that code in a repository such as github or bitbucket? Great! Nobody’s watching you but still have great innate development practises (now let me look at that code anyway).
  • Do you solve toy problems? aka projecteuler.net? Great! You have an interest in seemingly boring nerdy exercises which pay off only 1 in a 100 times in a real job but you know that 1 in a 100 times is what differentiates mundane from great.

 

The last, but certainly not the least important, is INTEGRITY. I’m not sure how companies look for evidence of this in candidates. Do you have any ideas?