ai data development free speech Uncategorized

2022 reflections

2022 seems to have been a strange year for a lot of people. There’s a lot of bloggers I follow whose output dropped a lot this year, myself included. Some of that I’m sure is a seeming loss of community, with changes to Twitter and Facebook, and I’m sure Google’s AMP as well, there’s been less drive-through traffic and less engagement.

I also think online discourse in many places is following the lines we see in politics where subtlety and nuance are increasingly punished and every platform is pushing shorter form content. We’re not giving ourselves time to digest and reflect.

And we should.

The pandemic is still here, but we’re adjusting, working from home is a natural state for many of us in tech, although that’s not an arrangement that plays to everyone’s strengths, so let’s make space for different companies with different cultures. There’s new ways of working to explore (hello the UK 4 day week experiment), people have moved jobs to take advantage of the change and create more family time.

But we can’t escape the world outside tech, and many of us are burning mental cycles on disease, on the massive weather events from climate change, on war, on the continued assaults by the far right, and watching inflation tickling upwards. It’s not an environment that leads us to our best work. It’s not an environment that helps us be in the moment.

Through 2016-2021 the world stared into the abyss of the rise of the far right, and the dismantling of certainties, before we were all thrown into lockdown. We were hoping for a turning point this year, but our leaders were lackluster in improvements, pulled us further to the right or were just plain incompetent. Instead of hope to counter the dispair, we got indifference at best Rather than turning away from the abyss, we collectively chose to build a car park next to it.

The greatest minds of our generation are building pipelines for ads for things we don’t need and can’t afford, whilst the AI engineers are building complex transformations that churn out uncanny valley versions of code, of mansplaining and of other people’s art. But of course the AI is built on a corpus of our own creations, and I don’t think we like the reflection looking back at us.

Ethics in technology isn’t just about accurately reflecting the world as it is, or how the law pretends it is (or seeks to adjust what is), STEM at its most important shows us the world as it could be. An airplane isn’t just a human pretending to be a bird. A car isn’t just a steel horse.

Yes, these advances in AI are cool parlor tricks, and they will lead to great things, but just like drum machines didn’t replace drummers, we need to get past the wave of novelty to see what’s really behind the wizard’s mask.

AI is dangerous. Look at how machine learning projected racial predictions on zip codes based on historical arrest data. Look at how many corrections Tesla’s “Self-Driving Mode” requires. Look how easily ChatGPT can be manipulated to return answers it’s been programmed not to. But, with the right oversight AI encompasses some very useful tools.

Let’s get out of the car park and look away from the abyss. What does the world AI can’t predict look like? After years of despair, what does a world of hope look like? What does the world you want for your children, grandchildren, nieces and nephews look like?

Land on your own moon. What’s your 10 year plan to change your world?

leadership Uncategorized

As a team lead …

As a team lead you need to know your team. You need to understand people. You don’t need to second guess them, you don’t need to micromanage them, but know what motivates them. Know what they need to perform at their best.

What tools do they covet? What routines matter? Do they need precision? Do they value gym time? Do they aspire to learn?

Understand their 6 month and their 5 year plan and help them achieve it. Make sure they know the team 6 month and 5 year plan and where they fit into it, and where that fits in the company plan.

Value them, and ensure they feel valued. Listen. Give them the grace to accept that which they cannot change but be sure they know you’d change it if you could.

Change what you can. Make their lives easier. Help them aspire to your job, even if they may fear the conflicts you protect them from. Keep your head whilst those about you are losing theirs.

Be the best team you can be. Discover the greatness in everyone. Play to strengths to see them through weaknesses. Move people. Change their roles. Find your gardeners and your innovators and Train them to replace you, because for certain times they will need to. Do not become vain or bitter for always there will be greater or lesser persons than yourself.

Let go. Trust them. Trust yourself. Let them do their job so you can do yours.

But lead, don’t follow. Have strong opinions, weakly held when a better way presents itself.

Let data guide you but not be your master. Don’t trust your gut.

Don’t be a stranger and make a full commitment to your team.

And make sure everyone knows the standards.


2014 in review

The stats helper monkeys prepared a 2014 annual report for this blog.

Here’s an excerpt:

A San Francisco cable car holds 60 people. This blog was viewed about 1,200 times in 2014. If it were a cable car, it would take about 20 trips to carry that many people.

Click here to see the complete report.


2013 in review : agile, dynamic and dangerous data

The stats helper monkeys prepared a 2013 annual report for this blog.

Here’s an excerpt:

A San Francisco cable car holds 60 people. This blog was viewed about 1,600 times in 2013. If it were a cable car, it would take about 27 trips to carry that many people.

Click here to see the complete report.


Announcing DunDDD 2013

I hope to make it this year, are there any of my blog posts you want to hear in a talk format?

Scottish Developers

DDD ScotlandScottish Developers are pleased to announce that DunDDD 2013 will take place on Saturday 23rd November in the Queen Mother Building of the University of Dundee.

This will be the 3rd DunDDD built on the popular foundation of the Developer! Developer! Developer! conference series which has spread to all corners of the UK and the international arena.  DDD conferences are community-run days where passionate and enthusiastic people come together to learn, share ideas, and to network within the many hubs of the development community. Best of all DDD events are free to everyone.

This year DunDDD will be featuring an entire track dedicated to Data Science.

Call for speakers

We are looking for sessions relating to all aspects of development from the code and technology level through to methodology and theory. DDD conferences are about sharing experience regardless of skill level so even if you have never spoken publicly…

View original post 100 more words


2012 in review

The stats helper monkeys prepared a 2012 annual report for this blog.

Here’s an excerpt:

600 people reached the top of Mt. Everest in 2012. This blog got about 2,100 views in 2012. If every person who reached the top of Mt. Everest viewed this blog, it would have taken 4 years to get that many views.

Click here to see the complete report.


Developers in a Post-PC world

Army of Me 5.25" floppy

So, last week I tweeted about the “Post-PC” world and sounded like a bit of an arrogant tosser.

Post-PC is the shift from devices built for personal creation to devices for consumption. I need to create.!/craignicol/status/166969581137707008

Today, I’m going to try and explain myself by sounding like an old fart.

My first computer was an 8-bit Toshiba MSX (yep, powered by Microsoft – still waiting for by MSX Basic MVP 😉 ), which wasn’t as popular as the other 8-bit platforms, but it shared one important feature : it booted into a programmable console. Anyone who wanted to use one of these machines had to start by learning a few lines of code, and it was the same code that a lot of the available software (well, games) were written in, so the user immediately started learning how to create new software. And that became important to me on each new platform, because I wanted to understand how they worked and what I could do with them.

I then moved on to Amstrad CP/M and then DOS machines. Still condole based, but there was a division between developing for the devices and interacting with them. I could easily load up QBasic in MSDOS and start writing graphical games (and then later port those to Borland C++), but there wasn’t a need to learn code to use the machines. Definitely an advantage for the average user, but at least the development tools were still one step away. That philosophy is one reason why I run Ubuntu on my home machine – it comes installed with Python 😀

And then came Windows 95 and development became an add-on. The computer grew up and divided those who wrote software into a special class apart from the normal users.

And then we get the Post-PC era, where not only do the devices not come with development tools, there are no add-ons available for those devices to develop on. The development has moved not only to another machine, but to another OS. So, we now need 2 devices, and the world of development becomes more disjoint from the world of users. I can see the benefits of it, I can see the different optimisations that need to be made for different use cases (and I understand why a lot of developers have a string reaction against Ubuntu Unity for a similar reason), but it leaves me with a nagging question of where the next generation of developers will come from. When your primary device is for consuming software that others have developed, the jump to developing your own software isn’t just a leap to learn a new package, it’s a leap to a new platform, which is a much bigger, scarier and more expensive step.

Unless the web wins, and all the Post-PC devices have a decent Javascript editor (or can run Cloud9 IDE or similar in their browser).

But maybe I’m just old and have a skewed view of the world.

For those in the audience who started developing in the Windows 95 era when development meant downloading something new, and taking a bigger step, what inspired you?

And what will inspire the next generation of developers to step up from their Post-PC device to a development PC?

code development programming test Uncategorized

Apprentice programmer

unlit olympic flame

Let’s talk about plumbing, and customer service, and an experience I had recently with a company I won’t name. Overall the experience was good, but I don’t want anyone to get into trouble because they’ve misinterpreted what I have said here. (and if you’re wondering about the picture : the Olympic flame isn’t lit either).

A couple of months ago, our gas combination boiler failed. It refused to start and complained that the flue was blocked. I sighed because we’d had the bearings on the fan replaced last year. So I called the service company to get it fixed.

A couple of days later, I was working from home to let the service technician in. He was fairly young but identified a problem. Unfortunately, a new part was required, so he had to come back the next day. He came back, replaced the part, fired up the boiler and all looked good. The next morning, no hot water and a flue warning 😦 it was the weekend by this point so we got a senior employee, who identified an error in the replacement part (fitted the wrong way) and identified the original problem as a blocked inlet. 5 minutes to identify, 1 hour to dismantle the boiler to get to the blockage and put it back together.

He finished, switched the boiler off, and then made sure it fired when put back together. Problem solved.

So, what did I learn, and why am I posting this on a programming blog?

Firstly, a monthly fee means that I didn’t have to worry about callout or parts, which was great, and left me less annoyed than I might have been.

Secondly, your first fix might not be the right fix. It looked right and it passed the first test, but caused problems later on (at the next restart). Ever written the wrong test and thought the problem was solved? Threading has caught me out in that way before.

Thirdly, just because it passes the test, doesn’t mean the problem is fixed. The boiler fired easily when the case was open and there was more airflow, but didn’t fire when the case was closed. Ever had a bug that only appeared in production or in a system test?

Fourthly, experts will find problems quicker than rookies, but rookies still need to learn.

Fifth, sometimes the only way to fix a problem, even a small one, is to tear everything apart, blow on it, and put it back together again.

The second guy also said something that struck a chord, as I’ve been trying to do it myself : he was disappointed that the company didn’t send the junior out with him so he could pass on his experience so that he’d learn for next time. Apparently, the fault itself is rare, so it’s a good learning opportunity. For developers : fix your own bugs, as there are a lot of things apprentice developers will see in the first few years after they graduate that are rare enough not to come up in university but common enough to be real problems in the real world. For example,
trusting user input (and the related buffer overrun bugs).

So, what have you learned from other professionals?


Weekly (Scottish?) Developers Google+ Hangout?

I had an idea for running a book club for Google+ Hangouts, but after David Christiansen turned up, it became a more interesting catch-up, covering HP selling off WebOS, and discussing zaproxy ( ) penetration testing tool and JIRA agile project management tool ( ).

Some good chat, but we were wondering if other Scottish Developers would be interested in a weekly Friday lunchtime hangout to shoot the breeze on the tech stories, tools and blogs of the week.

If you’re not on Google+ and need an invite, give me a shout and I’ll email one back to you, or click here for an invite : . If you are interested and on Google+ come and find me at and jump on in next time. Web cams and mic optional (if you’re a fast typist), but you will need speakers to listen in.

If there’s more good info, I might even start a weekly blog on it, but we’ll see how much interest there is.

What do the rest of you think?



Justice in Pakistan?

I’ve had an idea in my head for a while that I wanted to start
blogging about things a bit more political than my technical blog. Not
party political, because frankly, that bores me, but political in the
grander sense. Today I was having a discussion on Facebook about Osama
bin Laden, and whether killing can ever be a good thing. And I would
say that the question isn’t what is right, a question of if it is OK
in this circumstance, but not in that circumstance.

It is a question of justice and forgiveness. If justice and
forgiveness are to mean anything, then they, like the human rights
they are based on, must be universal. We cannot say “this person is
not worthy of justice” because then justice is hollow and becomes a
tool to control others by imposing values on others that you would not
follow yourself.

To demonise one man for his actions dehumanises both him and those who
oppose him. Simply calling him “evil” absolves you of responsibility
to hear his grievances. Not listening to the victim does not justify
the crime of murder. And for those who would say that he would not
give his victims compassion, I would ask why you choose his actions as
a guiding principle when you condemn those same actions in his hands?

Will this death undo all those who have died before? No. Will it stop
future terrorist attacks? Unfortunately not. Is celebrating death,
anyone’s death distasteful? Of course.

Do you want justice, revenge or compassion? What sort of person do you
really want to be?