Monday 31 December 2018

The year that was, 2018

2018 is more or less over and it's time to look back and decide if it was worth the bother. Work has been tough this year, with a new role and responsibilities but despite that I've managed to improve my physical and mental health (especially the former). But it's not good enough, and I think 2019 needs to be a year where I focus on sorting out my personal life. I'm still not creating enough, and that is in part because of the limited time I spend doing useful things outside of work. Still, this is post is about the things I have done so let's look at the positives. It's not all Elite Dangerous and YouTube.

  • 13 posts on this blog (14 including this one)
  • 2 posts on my gaming blog
  • another year of the Year in Pictures site, up to 21 photographers
  • created the Year in Pictures helper and only completely broke it once
  • over 239 contributions to various projects on github (down from last year)
  • started a new D&D game (Elsewhere) resulting in much writing, drawing of maps and running of sessions
  • went on another photography course to learn how the rest of the buttons on my camera work
  • 100+ pictures on my instagram account
  • loads of photos on my flickr stream
  • became a Reader at the British Library (and failed to find the thing I was looking for)
  • helped out at Codebar
  • lost a load of weight
  • started back at the gym properly
  • updated my website and Gareth's website
  • made a set of coasters with pictures of my nephew at different points over his first year

It's not a lot, but this has been a very work-centric year. That is definitely something to change in 2019. On top of this, I've also learned to pick a lock, introduced some friends to the joys of the escape room, done a load more sound desk stuff, and failed to see the friends I mentioned last year.

Resolution count: 6/10 - definitely improving over previous years.

This coming year needs to do more with what I started this year. More serious exercise, with an endgame I'm actually happy with. Code more. Draw more. Create some things that aren't the blog / game cycle. It's going to be another busy one at work, which means I need to be careful to avoid just getting sucked into it. After a scientific analysis of work and play I'm going to be doing at least one thing every month. And I will definitely see those people this year.

Brace yourself, everyone. 2019 incoming...

Saturday 29 December 2018

Mental health and maths

There are a million connections between social media and mental health and most I know about show a strong (albeit anecdotal) negative connection between the two. People are constantly saying they've taken a break from Twitter and feel much better for it, and I know that for me avoiding "debating" (or more accurately "screaming impotently into the void") on social media is definitely a good thing.

But what happens if we look at this backwards? Engaging with the world, as opposed to withdrawing and shutting down is supposed to be positive, right? In theory, social media is about reaching out and connecting (haha I know, but stay with me). I know that when I'm feeling happy and on top of the world I look at it with interest and very often take photographs of the things I see. Some of those photographs end up on Instagram. When I'm exhausted and my mental health is poor I shut down to preserve energy and I feel like I'm doing a lot less, such as taking fewer photographs.

So in theory I should be able to see a correlation between taking lots of photos and posting them to Instagram and times of good mental health. Good - I've needed an excuse to write some code. Cue the music.

A bit of hacking later and I've got a bit of Ruby which looks at my Dropbox Camera Uploads directory and counts the photos I've taken this year, grouping by month. And I've got another bit of code which looks at my Instagram feed and does the same, but using a deprecated API because I'm not a business and apparently that means I'm out of luck in their new world.

And lo:
The very obvious peak in October is at a time when I had a week off, had just had some very good news and actually Did Things outside of work (walked the Two Tunnels walk in Bath and went to a display of Japanese art in Bristol). Coincidentally I also wrote a post about having a peaceful time off. So it was a good month - or at least a good week in a month.

At the other end of fun, the two obvious troughs are in July and November. This matches my memory of the year - times when I had to drag myself out of a major slump. This was especially true in November, when I had far too much to do both in and out of work. In work a long series of things went wrong and I was on the back foot the entire time - which resulted in me writing a post about reactive vs proactive work. Outside of work I basically stopped doing anything as I worked late and spent the evenings recovering. I felt my engagement with the world around me suffered and this is born out in the numbers.

Otherwise it's pretty stable through the year other than an upwards tick in August (another holiday), so what happens if we add a trend line?
An increase in photos taken over the course of the year, but interestingly a decrease in photos posted to Instagram. So I'm snapping more, but gradually getting less interested in the world around me? That's quite possible. I mean, have you seen the world?

Last year I had an interesting time and I started this year writing about recovering from an actual crash. So what happens if we overlay 2017 Instagram engagement with 2018 engagement?

*hack hack*

This happens:
I was at my lowest in November and early December 2017, which correlates nicely with ... the highest engagement of the year. Hmm - that messes with my theory. December I can easily explain - I was away from work for most of that month, actively recovering, and spent Christmas with my parents walking miles and taking photos of their village. November is a mystery. Looking back, it seems in November I went for a few long walks around London and posted multiple pictures from each which brought the count up. Confusing. Moving on to trends.
Rate of posting to Instagram increased over 2017, which is mostly expected with the exceptions above. The decline in 2018 still worries me, as does the change in style of my pictures over the last 24 months. I used to put more thought into use of abstract space and filters, giving more texture to the posts. More recent photos are pictures with limited work on them - pictures of things rather than more artistic expressions, if you'll forgive the phrasing. It's not all bad - the technical quality of my pictures has definitely improved - however it plays to the narrative of less engagement from me in the output.

So what have I learned? This kinda works. It's certainly not good enough to create an early-warning system to tell me to Take Steps if my frequency of posting drops below a certain level. But there are some interesting patterns and going through this has got me thinking about changes I can make in life which will hopefully make a positive impact. I have strong, positive memories of the various Things I've done, and those Things tend to generate photographs. So if, loosely, I can do more Things I should improve my general outlook on life. I hope? I spend a lot of time in London, so finding something interesting and photo-worthy to do once a month shouldn't be the hardest thing in the world. Now I need an arbitrary point in the year at which to make fresh-start promises to myself. Some kind of Resolution for a New Year, perhaps?

If you're interested in details, the code is all on Github and  I used Google Sheets for the spreadsheet to generate the graphs. I am not a doctor and I'm well aware this is not Science.

Friday 30 November 2018

Reactive vs Proactive

What feels like years ago I asked a friend an important question: "How do I be less reactive and find the time to think and plan?"

Why is this important? Reactive work treats symptoms, not underlying causes. The problems and work is never really done, never really goes away so the job remains static. Well; static plus all the extra stuff people find for you to do all the time. If this happens for long enough, eventually someone more senior may notice you're overloaded and hire another person to take some of the load. Unfortunately this approach relies on another person noticing and taking action - and this is a person who has hired you to make their life easier, not to give them more work. It might happen, but I suggest your mileage may vary. Personally I'm not inclined to passively wait for someone else to save the day - I need to be doing something to make the world change, which brings us back to the opening question.

So - how? Local context changes, but I believe the basic theory is more or less consistent - eliminate the bits that don't need doing and delegate the rest. Keep only the work that you need (or want) as key parts of your role.

Elimination is pretty obvious. Do I really need to maintain that data? How about attending that working group? Do I have to be part of that initiative (also a delegation option)? If you, like me, have been in a place for a while you'll likely have also accumulated a load of legacy responsibilities which are linked to a previous role, but no longer relevant. Purge them all - ruthlessly. A rolling stone gathers no moss, etc etc.

A good trick I've discovered for this is to talk through my calendar with someone else. If I can't justify the time I'm spending on things, it needs to go. Inevitably, this will be the fun stuff. Depending on the depths of my own self-loathing at the time, I usually give myself a few hours a week to indulge in some enjoyable but slightly lower priority activities - the rest must be sacrificed in the pursuit of a clear diary. The rewards are the ability to spend time thinking.

Next up is delegation. In the Olden Days, delegation meant handing work to someone you trust. This has a whole world of its own problems. We'll come back to it as in the New Days there is a better choice available to us in tech - write an app, script or some other bit of magic to make the computer do all the work for us. Not only does the problem go away, but it makes us look like wizards.

More seriously, to properly solve a problem with code you need to thoroughly understand it. In my experience that means refining underlying processes which ends up solving a much wider range of problems than was originally intended. For example, in an effort to answer some basic questions and stop maintaining some data, I got involved in how the master copy of that data is maintained by another team. Working with them has helped drive change in that area and cross-team understanding of their processes and challenges.

Once the computer is doing all it can, you're left with delegating to people. At the risk of sounding like a stuck record, this is enabled through community and leadership. Build a good team of empowered people, give people clear goals and a clear space in which to do them, then trust them to deliver. This last is difficult. I need to write about trust at some point, but for the moment an important reminder - trust needs to go both ways. If you trust someone, they need to trust you - to give them space to learn, to know they have your support, to fail, whatever. If you want people around you to be reliable and give their best you need to behave in a worthy way.

I'm on a journey towards being properly proactive - a winding journey which seems to loop back on itself with annoying regularity. I'm never going to get there fully - I'll always have short-term things to deliver for other people, business cases to write, and other exciting bits of admin to do, but I am certainly getting better at forcing the dial further in the direction I want.

But at what cost?

If you've been reading this blog for a while, you'll know my primary motivation for doing more management style work is to make life better for other people. Better is, of course, a subjective thing but there is a strong emotional component to it and being valued as an individual is part of it. But work to help the individual is often more reactive and, in the long term, provides less value. That said, it doesn't stop me feeling awful about some prioritisation decisions I have to make. I may have put in place some very valuable governance which will make transparent the foundations for certain decisions, but if it's been done at the expense of a pay case for someone who is not being paid properly I've failed the individual. I can put off the proactive strategic work, of course, but then it never gets done - there is always another piece of essential reactive work.

Keeping the balance is really hard and sometimes involved making tough and unpleasant decisions. It's too tempting to slip back into only reacting to immediate needs and never think through or develop the future. It's also very possible to just abandon the needs of others in the pursuit of building a "better" organisation. I have no great insight here - I'm just writing about the place I find myself in at the moment and how I feel about it. I do know that I can't spend my whole life treating symptoms. I also know that if I just ignore many of those symptoms, I turn my back on the very reason I do this work. However there is only so much of me I can give to work before I run out of me - and I have a habit of stretching the me available to make it all fit in. I'm going to keep looking for a better solution.

Sunday 28 October 2018

A peaceful break

I find myself starting a week off work and for the first time in ages I'm not worried about all the things I haven't done, panicked by the future or generally feeling guilty about not being in the office. This feeling of peace makes for a nice change, so rather than ruin any benefits through analysis and naval-gazing, I'm going to embrace it and relax.

Hahaha of course not. So what's different this time?

I'm more in control of my time these days. I still have far too much to do, but I've been working to push further out of reactive work and into proactive work. Knowing I've got this time off, I've been focusing on setting things in motion which can run while I'm away. That means I haven't left much blocked, awaiting my input. This feels good.

I've reached the end of a few bits of ongoing work. Clearing out the backlog has really helped me feel like I've made concrete progress and some of that work has fixed things I've felt incredibly guilty being left undone. These fixes should run themselves now, which will reduce ongoing load. This also feels good.

So is it just that through luck (and some judgement) I've managed to time this holiday well? Possibly. I guess I'm also starting to feel effective at some of the things I've written about before. Bringing some things to a close, or at least a good breakpoint, feels like success which is a positive feedback look that has been missing from my professional life for a while. I'm also aware that despite this being a pretty lethal week, I've not sacrificed making time for people who have needed it so I've managed to deliver without compromising my core rule. This feels extra-good.

Overall, it's not just peace - I actually feel good about work for a change. It took some self-analysis to dig that out, but I guess it's been worth it.

It also doesn't hurt that I'm surrounded by some fantastic people who I can trust to put out fires while I'm away, either.

Sunday 30 September 2018

Time should wait for all men

Occasionally, I am asked what I consider the most important part of being a leader. There are lots of good answers for this - vision, transparency, pragmatism, empathy, competence, spreadsheets, blah, blah.

The answer I always give is "making time for people".

I've written before and at length about how as a leader the people around you are your most important resource, asset, capability, etc. Find good people, set a clear direction, give them space to be good at what they do, trust them and the results follow. But there is always more to do than can be done, so when you've been in the office for ten hours a day for a week or longer and just want to cut it all back what is the last thing to drop?

Over the years some of the most negative feedback I've received is from colleagues questioning why I spend so much time talking to people. Why spend the time face to face? You're wasting your and their time with something that could be sorted out via email.

This is very true - email refines communication down to the words only and that can be very short and to the point. However, much like boiling vegetables can remove most of the benefit of eating them, it removes most of what matters when talking to someone - the opportunity to create a connection. It might be noticing that someone has a problem that can be solved, asking about their new child, hearing something that frustrates them in the office and gives a better appreciation of the environment in which they are working or one of a million other cues. As a manager you can spot the signs of stress or anxiety and help alleviate them. If I were to think in purely mercenary terms, I can't think of many times I've invested time in a relationship and not seen an extremely favourable rate of return.

My director is very good at this - I know he is very busy, but on the occasions when I need to talk to him in urgency he always makes time for me. Our unspoken pact is that I don't bother him unless it's very important and he respects my judgement for when that is. This is built on the back of a strong relationship of (I believe) mutual respect which comes from - yes - making time to talk and drink coffee together.

Simply giving people time can improve their confidence and effectiveness. By making time for me, my director has learnt he can trust me on a long leash and as a result he's getting a significant return in his investment in terms of my effort. In turn, I feel confident that he respects my ability to make decisions - so I feel empowered to keep making them, which makes me more effective.

Moving away from the cold mathematics of relationship building, the welcoming and humanising effects of making time for people can't be underestimated. Everyone has a story to tell and most rarely get to tell it - especially to someone who is in a position of authority. It's extremely empowering to think that the person in charge knows who you are and cares that you're getting on. If that person is you, it's on you to share the love.

There is a danger, of course. A leader needs to be able to control their time so they can still deliver things and there is too much of a good thing. Far more significantly, if too much time is spent with others and the pressure of individual delivery is mounting it is all too easy to spend time talking while also answering email or doing other work. This is utter poison - if you're going to make time for someone, do it properly. If you're not going to be present then don't bother - it's more demeaning to watch someone write email and not listen than it is to just not meet at all.

There is a lot that can be written about the cold logic of this but it devalues the humanity to define relationship building by what one can get out of the deal. We spent a frightening amount of our waking adult life in work and in my opinion it does a huge disservice to everyone involved if that time is just about raw output - we're not just in work to work. For most of us, it's the source of most of our human contact and community throughout our adult life so it's worth putting in the effort.

Friday 31 August 2018

Surviving the world of post-technical

Back in the olden times, when I used to do a real job, I spent my time writing code and making awesome things. Nowadays I am post-technical which means I mostly talk to people, sit in meetings and play with spreadsheets. Making the jump from operational work to a leadership position is not easy, so I thought I'd write about some of my experiences in the hope it'll help someone making a similar journey.

One of the hardest parts I found of moving to management is understanding what a good and productive day looks like. A reason people find programming so compelling is the process of breaking down problems into small, achievable chunks then completing them in a short period of time. At the end of the day you can look at your work and say "I had a good day - I made that". This is a tight emotional feedback loop which triggers positive emotions and makes us happy.

Moving into management breaks this loop as, initially at least, much of the work is variations on supporting the people making things. It's important, but not as immediately rewarding - especially since most of it is never really "done", it's forever maintaining things. It's very important to learn how to limit maintenance and support work or it can easily become all-consuming - especially since if you know what you're doing everyone will want your involvement. Taking on too much is particularly tempting early on as, if you're anything like me, you'll want to do something concrete and maintenance work looks like a short-term deliverable that will help justify your existence. This can easily fill your time and you'll be unable to do anything else - anyone who has suffered under a reactive, passive manager will know where this road leads. One of the most important questions I (accidentally) asked early on was "how do I stop being so reactive and start taking control of my work?" The answer was long and difficult in practice, but the theory was simple - be discerning about what ended up on my plate.

In the early days of management I was given things to change, handed down from On High. They appeared in the form of business needs, which needed translating and socialising before anything could be done. The basic but important questions to get through this were: Why is this change important? What (hopefully positive) effect will it have on the people I'm looking after? Why do the operational people want or need to care? It's very important be able  to champion whatever is going on and there were definitely times I found myself unable to express clearly the case for change so I spent long hours talking to people and going back through decisions to regain that context. "Why" is a very important question - you're going to be asked it a lot, so you really need an answer ready.

When it comes to communicating change, the key tips are to keep the message simple, keep saying it and listen to feedback at least twice as much as you talk. In fact, "listen a lot" is my strongest single piece of advice for making moving into management or indeed any leadership role. As a rule of thumb, the more authority you have, the less you should be talking.

These basic experiences about managing change have come up again and again, however the steps take a long time and frequently loop around while appearing to go nowhere. This brings us back to the original question on how to get some sense of accomplishment from management work. Fortunately, for me the answer was also the answer to the questions "how do I effectively deliver anything?" and "how do I show the organisation I'm doing something useful?" and comes in the form of work objectives. Everywhere I've worked has required objectives written in the SMART format. As a manager thinking about these in detail suddenly becomes very useful as they force a scoped deliverable in a known timebox and defines a "done" state, which lets me know when I can stop thinking about something for a time. This isn't particularly insightful, but it's easy to skip over when the pressure is on. I've made that mistake several times, but taking proper time to think and plan deliverables and end states has never been time wasted.

Much of the above is about scoping management work in completable chunks, and therefore bringing it back to the more familiar patterns of product delivery. At the same time, I did have to get used to the new cadence of work. Plans and changes can take a long time to seed and grow and I frequently have periods when it feels like everything is just a slow grind. Then every so often the work comes to fruition and several things bloom at once. The feeling is different from cracking a difficult technical challenge, but no less powerful. However it is far less frequent.

There are other fundamental changes to watch out for when making this switch in role. It's important to get used to making decisions. In a leadership or management role you can't hide at the back, or as a voice in the crowd. In order to be comfortable making decisions, I had to learn the detail of how I make a decision (how much information I need, etc) so I could justify it to others if the need arose. Learning how to make a decision is an art, and a very important one when taking up a role where making decisions is basically the job.

Part of that is understanding the limitations on the decisions you can make. What are the limits of your authority? When do you need to escalate and (just as important) when do you not need to? What does and doesn't the organisation let you do? This last is worth gently pushing and questioning as I've found the organisation will be used to giving you the same authority as your predecessor took and that is not necessarily the same as the answer to the first question about limits.

To frame it differently, I see learning what I can and can't do as learning the rules of the game. I don't have to use everything, but it's helpful to know where I can reach out and when I'm in danger of doing something wrong. It also helps me take ownership of the things I'm doing. A manager who doesn't do this and passes on messages from their superiors just looks weak and ineffective and that is awful for the morale of those who depend on them.

Final tip for now - it's important to find a team of people you can trust. Everyone needs support but you can't sit in a pub grouching in the same way you used to. Finding a leadership team is very important for getting things done, but you do need to be open to this team changing. There is a very real danger of building a clique and alienating people, denying development opportunities to new and growing people and causing problems via your own biases (both conscious and unconscious). At the same time, those kept close need to be able to grow and sometimes that means them moving on into their own space.

So, the summary. It's a mental shift going away from technical work and something not to everyone's taste. If it's happening to you, I hope something here has been of use.

Saturday 28 July 2018

Fixing Play Store downloads on a Huawei p10 plus

TL;DR - disable the "lock screen cleanup" feature

This took me ages on a Friday evening (yes, I know I live a crazy live) so I thought I'd make a note on what happened so I can do it again in highly unlikely event of technology disappointing me again. I know, right? No precedent for that.

This worked for me on a Huawei p10 plus. I suspect it'll work on other Huawei devices. Probably not on other Android devices as I think it plays with Huawei specific software.

The symptoms


When downloading something from the Play Store it gets stuck on "Downloading" forever with that maddening not-progress bar going round in circles, promising treats and excitement but delivering more scrolling bar. Maddening. Forever.

Standard Android fix


Apparently some people have had success juggling stopping the Play Store (Settings -> Apps -> Play Store -> Force Stop) and clearing the cache (above, then Storage -> Clear Things) then rebooting. You can also try removing the Play Store updates (same again then hit the menu icon in the top right and select "Uninstall updates"). Then reboot again.

None of this worked for me though.

Supermagic Huawei p10 plus fix


There is a Huawei feature which kills background process to save battery power. Hurrah! Apparently it also stops the store downloading anything. Less hurrah. Not that it'll be clear, of course. Maddening download progress bar. It must die.

Apparently it works if you just disable the Google and Huawei bits but finding this took hours and frankly I couldn't be bothered to narrow it down. So instead, I killed the whole thing.

Die:
Phone Manager -> Lock screen cleanup -> Close all to enable for everything, then Close all again to disable for everything.

Then reboot. Because it's technology. So you turn it off and on.

But then the Play Store will work! You can download apps which will break in other ways!

Sunday 24 June 2018

Why I do this job

My life has changed quite a bit this year. I started out as a Lead Developer working on our new reliability engineering programme then our Head of Software Engineering moved on to pastures new and against all sense They saw fit to put me in charge of over a hundred technical people, including their hopes, dreams and careers.

The handover was a bit of a whirlwind, but I distinctly remember standing in our foyer as I was leaving on the handover day, thinking "shit, I'm Head of Software Engineering here".



Yeah, the imposter syndrome was very real.

So anyway, there are highs and lows in any job and when those lows come around it's important to remember why one does the role. In my case, I laid it out the other day in a brief presentation to the department about the software engineering community. Community is defined as a group which has the same attitudes or interests in common - by that definition, the software engineering community is a loose collection of people who happen to do the same job. For me, that misses a great deal - people don't spend their lives seeking out community because they want to share a label.

Community means connection, safety and support. It means being able to grow, safe in the knowledge that others around you acknowledge your strengths and weaknesses, where you are on your journey and are willing to give of themselves to help you come along. It means being able to reach out to people around you when you're in need of help and be confident you'll find a supportive response. It means an environment you can be the best version of yourself that you want to be, whatever that might mean.

This doesn't happen by accident. It is all driven by connections between people and these take time to grow and need space in which to thrive. At work, this means many things but I think they can be boiled down to two axioms: enabling a safe environment for people to talk and creating the space for them to do so.

Community leadership has a responsibility to create the space for community to flourish. At GDS one thing we have is a monthly community hour which brings technologists from across the organisation together. We have various activities which are carefully considered to encourage participation by our very own liberating structures expert, David Heath. However, no matter how much work he puts in the gatherings are only successful because the community turns up and engages. Because everyone shows willing, barriers are broken down and slowly people get to know each other.

Tech community workshop

This is just one example. I've written before about Show & Tell, and I'm also looking at different ways of helping everyone have a voice. But I'm also challenging people with the response "so what are you going to do to help?" - a question which not only helps increase the possibilities of the community, but also gives important opportunities for growth to the individual. All of this needs to be carefully balanced against delivery of course, so putting in place sustainable events is very important as it's all too easy for any kind of community to vanish when the crunch comes and people turn inwards.

I'm deliberately not writing about diversity in this post, but clearly implementation of anything here needs to be considered from a variety of different angles and this brings me back to that presentation and the real reason I do this job. We can discuss groups of people and even do some good things to help them, but that lays down a wide path that goes from A to B when it's too easy to forget that that group is made up of individuals. Every single one a different person, with different hopes, dreams and needs. Each is coming from a different place, with a different collection of experiences and each is going to a different place. In short, they are different.

This isn't to say that broad-brush improvements aren't important - they are vital for raising the base level for everyone. But they should be viewed through the lens of "this will affect X individuals" rather than "this group behaves like this". It's essential to remember the individual, even though in a position of leadership it's often impossible to know everyone. That doesn't mean we shouldn't do what we can.

If I vanished tomorrow, those who remembered me wouldn't remember the hours of meetings I attended or the improvements to our governance structures I've implemented. They'd remember how I touched their individual lives - the battles I fought for them, the time I spent with them talking through their hopes and fears, and the ways I have helped them move forward in their lives and careers.

This is why I do what I do. Because day by day I like to think that my efforts are helping to improve the lives of the people around me who are doing such good work - not as a group, but as a collection of individuals.

It's inevitable we're going to end on the parable of the starfish:

A man was walking along a deserted beach at sunset. As he walked he could see a young boy in the distance, as he drew nearer he noticed that the boy kept bending down, picking something up and throwing it into the water. Time and again he kept hurling things into the ocean. As the man approached even closer, he was able to see that the boy was picking up starfish that had been washed up on the beach and, one at a time he was throwing them back into the water. The man asked the boy what he was doing, the boy replied, "I am throwing these washed up starfish back into the ocean, or else they will die through lack of oxygen."

"But", said the man, "You can't possibly save them all, there are thousands on this beach, and this must be happening on hundreds of beaches along the coast. You can't possibly make a difference."

The boy smiled, bent down and picked up another starfish, and as he threw it back into the sea, he replied "Made a difference to that one".

There are various ways to read this - it's supposed to highlight the power we have as individuals to change lives, and doing something is better than nothing. It's not supposed to dismiss the need to ask wider strategic questions like "why are they on the beach in the first place?" or "can we stop this happening again?". However it does contain a warning against asking those questions, while forgetting that all the while there are thousands of individuals dying on the beach.

Double starfish

Also, starfish are weird.


Saturday 26 May 2018

Restoring microphone and sound after Windows 10 upgrade

Warning: this one will get ranty.

At home I run Windows 10 - an operating system I carefully selected and in no way appeared on my computer while I was reading a book. It actually works pretty well for my gaming needs (the only reason it's not Linux) but does have a habit of trying to sell me things or steal all my information.

It also has a habit of dropping massive named updates which do exciting new things like BREAK EVERYTHING.

Recently a huge update landed which I'm going to call the GDPR update. Mostly because I can't be bothered to look up its actual name. When I originally "opted" to install Windows 10 I went through and disabled the inbuilt advertising and random tips on the lock screen because I'm a bit old fashioned and inane nonsense written on screen when I'm logging in just doesn't do it for me. GDPR should only help my desire to avoid advertising - only a truly scummy company would use being forced to confirm my privacy choices as an excuse to turn everything back on and hope I don't notice.

I noticed. You lose.

Special mention for the "send information for diagnosis" option which now lets me choose between "yes, everything and don't forget my passwords" and "only some things". Apparently the older option of "don't send anything" is no longer viable in today's excitingly connected world.

So anyway, I have to choose to not have voice control turned on. No really, really really, please die Cortana. Then maybe my mic wont be on permanently listening to me. It appears it is indeed off. PERMANENTLY. Along with ALL MY SOUND.

Grr, rage, etc. This is revenge for disabling advertising, isn't it?

Anyway, the sound has died before and was a pain to fix both times, so I thought I'd document what I did for the next time this happens. The symptom: output seems silent. On closer inspection there does appear to be sound coming out of the card, however even with the output boosted high it's very tinny and quiet. Many people find problems in their Sound menus (volume being dropped to nothing, device being disabled) but I had a different issue.

My card is a Soundblaster SomethingOrOther, which has a separate config screen called the Creative Audio Control Panel (which I had to reinstall to get working, incidentally). On this panel there is a Headphone Detection tab, which has options to make the device change behaviour when headphones are connected. This seems to get locked on for me, causing the muting effect.

Voila.
How to disable soundcard mute when headphones are plugged in

I disable the options and it all works perfectly again. I've done this before, however the Windows 10 upgrades sometimes reset these options. Thanks for that. I've experienced this same problem with a Realtek card and the fix was the same - Realtek has a similar control panel.

Now for the microphone which is a new and exciting problem. It seems that because I've asked Windows not to let Cortana listen to me all the time, it has interpreted that as "for the sake of my privacy DO NOT ALLOW ANY APPLICATION TO USE MY MICROPHONE". Which is ... extreme.

Anyway, this new option has gone a bit mad and disabled access from everything and sanity needs restoring. The new button is hidden in the Privacy menu, selecting Microphone from the left menu.

Voila. Again.
Windows 10 microphone privacy settings

So things are back to normal. I wonder what will break next? And I wonder if my next ranty post about operating systems will be about how annoying Windows is, or how much I hate OSX? If anyone is placing a bet, I've just had to reinstall Homebrew...

Sunday 29 April 2018

Show & Tell and why it helped people be awesome

In a previous life, I worked in the Digital team at the University of Bath. For many years we ran a fortnightly Show & Tell event. It was awesome, people got a lot out of it and since I've gone through this a dozen times in the last couple of months I thought I'd write it all down.

The format was a little more formal than other S&T sessions I've seen - more like conference lightening talks. Each week there would be five speakers, each talking for around five minutes with some time for questions. The speakers usually spoke over slides, although they didn't have to do so, and it was supposed to be unpolished so preparation didn't take too long.

The crowd waits in anticipation for the start of Show & Tell

The meeting itself ran every fortnight and was open to anyone who had an interest in the work of the Digital team. Most speakers were from the Digital team, but we had guest speakers from across the university. This was a great thing for the Digital team - aside from showcasing the work we were doing to colleagues from around campus, it also put faces and humanity to the faceless mass of "the team". It helped us start build personal relationships with those whose lives our work was affecting. They could see the challenges we faced and hear the reasoning behind the decisions we made.

The attendees benefited for these same reasons. They found out about developments in a personal way and could ask questions, raise concerns and influence the direction of progress in a safe environment. Aside from this, I'm confident everyone who attended (and listened) learned something. We had such a range of topics - from typography to web application security - it would have been impossible to not.

@iris Showing and Telling on regular expressions
So far, pretty obvious. Treat people like humans and you foster community. Talk about stuff and people learn things. This misses the main benefit though - for the speakers.

There is an art to public speaking. It is an important skill for anyone who wants to be in a position of leadership and one that is quite difficult to practice. Firstly there is having the confidence to stand in front of a group and speak. People, understandably, find this very uncomfortable and avoid it which is very easy to do until suddenly not only you can't, but it's important you're good at it. By that point it's too late. Events like our Show & Tell give a safe environment to practice - an environment where it really doesn't matter if it all goes horribly wrong and others are around to bail you out if it does.

There is more to speaking than just having the confidence to stand in front of a group of people. Being an engaging speaker means having some vocal control to project well into the room, relaxing your body to give an air of confidence to your words and embracing the odd gimmick to keep things interesting.

Sean's first Show & Tell

Then there is the way your message is put across. That means structuring the story in an engaging way, thinking about what the audience wants to hear and in what order to clearly convey a point, and how to support that narrative with slides where necessary. These skills are about constructing an argument in a logical way and bringing your audience with you, especially when that audience may not share the same background and skills as you - such as explaining cross site scripting to a non-technical audience. They are very similar to the skills I mentioned when I wrote about blogging last month.

That's three benefits in without any mention of the subject of a talk. As I said in a previous post, being forced to speak regularly means constantly finding new topics and this makes you ask questions about ongoing work. What is happening? Why? Why is this interesting? These are good questions to be asking anyway for keeping the projects honest. Everything has a purpose - if not, why are you doing it? If the work is boring, what is the context? Someone cares about the thing you're doing and it is a very useful skill to be able to understand that perspective and be able to convey it to other people. Talking about your work also helps highlight the positives to you, which will help you be happier day to day.

Talking about any topic requires a certain amount of analysis of the subject. Although we kept our talks informal, there was still research to be done. Usually that was the depth of research required to deliver whatever underlying work was the subject of the talk and then the preparation became an opportunity for reflecting on the process. On a few occasions we gained a great deal of insight on something we were doing through preparing talks - in fact our content modelling process was formalised through an attempt to visualise it to others. Backwards at times, but effective.

I ran Show & Tell at the University of Bath for three years and in that time delivered more than fifty talks, on top of the intro and exit speeches each time. I had to learn how to pull a talk from nowhere, and I had to learn how to write that talk very quickly and how to prepare slides at speed (pro tip - if you draw on a white board it's different and interesting, and you don't need to prepare slides in advance). I learned how to face a room full of people without fear, and I learned how to fill space while others were setting up their presentation (aka stall in a semi-entertaining way) I'm not going to claim I'm an expert at any of the above, but I'm certainly better than I would have been without this practice. For a final benefit, I spoke about this at length at my last job interview - and yes, I did get it.

Nice work, Kelv

Friday 30 March 2018

Why do I write a blog?

A few years ago I decided to put a bit more effort in to my blog and commit to writing at least one post every month. This is my third year of that routine and so probably a good time to reflect and ask myself "why do I do this?"

First question - why write at all? I am (or was) a mathematician and a programmer, neither of which really requires written English, right? Well, me, allow me to disagree with myself. My career as a developer has been spent working on projects with other people. Whether through documentation, presentations, Slack, proposals, or whatever, a key part of that job has been clearly and persuasively expressing my opinion in writing. Now I'm working in a leadership role it is even more important - at a recent leadership event I listed "being able to write" as one of the most important skills for someone aspiring to do what I do (as an aside, I still feel weird thinking that I'm now in a job to which people aspire, but anyhoo).

Like any skill, writing requires practice and self-critical analysis. Everyone may have a novel in them, but not everyone can get it out in a form others would care to read. I write this blog as a way to practice putting together ideas into a coherent narrative and placing them on a page in a way that flows relatively well. Clear writing requires clear thinking; crystallising ideas into something that can live outside one's own head, and that is a great way to turn ideas into something that can be made real.

Practice takes time, and that is one of the reasons why I'm still using Blogger as a platform. I certainly could move it to some other hosting platform, run my own thing, or whatever. However I have finite time and lacking an amazingly compelling destination I know I could spend hours fiddling with templates and different technologies. Hours I could be spending writing instead.

Ok, but why share? I do not kid myself that I'm an influential blogger. With a couple of exceptions, I get between 100 and 200 readers per post and if I'm honest with myself, most are likely bots. I could write these posts in Google Docs and they'd never see the light of day, however, the motivation for writing something in public is much stronger for me and I do have occasional conversations with people who read my posts and have gotten something from them. Even if it's only one person, that is one more than if I'd locked it away.

I started tweeting when I put up a new post about the time I started writing regularly and I still find it very difficult. I actually find sharing my writing terrifying and starting to post it on Twitter was a big deal for me. These days I use that added pressure to ensure I proof read and think about what I'm saying, how I'm saying it, how others might read it out of the context of my head, and so on. All useful self-critical tools, as mentioned above.

So, why the monthly cadence? Back when I was working in the University of Bath Digital team, I organised a fortnightly Show & Tell event at which five speakers would talk for around five minutes each about something vaguely related to work. It was an excellent way of sharing knowledge both inside and outside the team (it was an open invite) and building a community for those interested in the web. There is a whole post on why this was great and the good it did, but for this post I want to focus on the frequency.

The most common excuse I got from potential speakers was "but I don't have anything to talk about". Of course they always did have something - the details of their current project, some inside information about their particular job (easy in our case as we had a wide range of disciplines and who really knows what a designer / content person / developer does day to day) or something they had been researching recently were the simple options - but to realise this was worth a 5 minute talk meant thinking about the detail of that thing and why it was being done and then realising why that might be interesting to someone else.

A monthly schedule triggers the same process for me. The mental commitment gives me encouragement to write something, and then I need to think of something to post about. It makes me think about what I have been doing, or develop my thinking about something that has been rattling around in the back of my mind. More importantly it makes me consider whether any of this is vaguely interesting or useful to others, and if so how to structure a story around it.

Take this post, for instance.

Wednesday 28 February 2018

Magic happens

I use the phrase "magic happens" quite frequently when giving an overview of something technical. For example, if I'm trying to explain the concept of the client / server model I might talk about how a web request is routed from a client to a server where magic happens and some HTML is returned as a response. This isn't supposed to be condescending - it's a shorthand for "this is a black box where something else is going on, but talking about it will draw our focus away from the thing we're talking about here". Unremarkable, but the phrase got stuck in my head the other day and while turning it over it made me think about how learning has changed for developers.

When I was starting as a developer I hated magic. I dug into these black boxes and learned a great deal around the problem until I had a good working knowledge of hosting, networking, etc etc. At the time, you pretty much had to learn this stuff to get a decent local dev environment running. This was before frameworks like Rails made it relatively easy to run up a complete environment with a couple of console commands, and a long time before cloud hosts like Heroku allowed the application to be run in the wild with little more effort. Consequently, there was a huge technical barrier to entry for those learning to program. A barrier that now much lower.

This is in no way a post about how the kids today have it easy, or any other such nonsense. It's a musing on what new developers are learning and what that means for the older generation when it comes to mentoring the next generations (amusingly, my spellcheck wants that to read "tormenting the next generations"). It is now conceivable to have reasonably experienced developers (ie not juniors) who are highly competent, having worked in Rails environments pushed to cloud hosting, who have never had to worry about how anything under that works. No knowledge of linux, networking or other things from the sysadmin world. This has a significant impact on debugging problems and system design, which has a knock-on effect on production costs, maintenance and out of hours support rotas.

On the other hand, and before us more experienced folk feel smug, this focused learning means these developers are likely far better at the core language than we were at the same level of experience. If true, they will be better at their jobs than we were (for a narrow definition of "better", granted). However, it will also stunt career progress as a developer wanting to take the lead in designing or building a system generally needs a wider understanding of the subject area. Skills I learned early on were far less useful while I was a mid-level developer but that knowledge was pretty much essential when I moved into more senior work. This is a key area where our responsibility as more senior people comes in - it's not just juniors who need space to learn things.

In my experience, there is another benefit of this focused learning. Good developers who have learned their particular subject in-depth are aware of the edges of their knowledge. They are aware where, for them, "magic happens", and are capable of explaining that well. I'm not advocating siloed thinking or working, but learning how to define and articulate your problem space is an important skill as a developer - one that people who know everything (sigh) sometimes fail at. It's particularly helpful when discussing work and solutions with other, non-technical disciplines such as product and delivery managers.

Also worth remembering is that we learned around the subject out of necessity and back then it was much easier to get a really solid overview of everything. "Everything" has context of course - how many of us studied machine code, chip architecture and instruction sets, memory rings and so on? Some did, of course, but by no means all. Our window of learning took in what we needed. These days there are many more layers of abstraction in the hosting world as well as many more layers of complexity with SCSS processors, Javascript frameworks and transpilation, and on and on and on. The world today is far more complicated and while we may (MAY) have kept pace with new innovations, that is not the same thing as learning it all at once - especially since change continues to happen.

I have a feeling we're going to be seeing a lot more magic happening as the industry matures. We'll have more black boxes and more abstraction of important concepts - indeed making use magic components is a core part of cost saving strategies. Why on earth would you run up your own virtualisation environment when services like Linode exists, for instance? We are going to need to be increasingly aware of how we talk about technology - not just to those outside our discipline, but to those inside too. We're going to need to put an increasing amount of effort into making sure the next generation can get on - either by learning what they need around the subject, or by shaping our organisations to celebrate the new learning.

Sunday 18 February 2018

Return of Notes from a Gaming Table

It's back!

A million years ago, before I started posting my writing on Twitter, I used to write a gaming blog. For the last two years "restart gaming blog" has been on my list of New Year's Resolutions. Well, today I am restarting it. Behold: a new post on Notes from a Gaming Table.

And that is all.

Saturday 27 January 2018

From the darkest depths

I very rarely talk about my mental health. This isn't because I don't think it's important - when it comes to other people, I encourage them to talk and will happily lend a friendly ear if one is desired. I am, however, a hypocrite. Over the last year have I dabbled in burn-out, depression and what was, on reflection, probably chronic stress. At this stage I could probably write a book about how these things manifest for me, however this post is about climbing up after pulling myself clear. Apologies for the turns of phrase - I'm not a doctor and everyone's experiences with mental health are different. One of the reasons I don't talk about myself is the fear that someone who suffers with "proper" depression will call me out for just being a bit sad. I don't think that's the case, but I'm certain other people have a harder time with it than I do.

Anyway, this is about recovery. At rock bottom I needed a trigger to realise quite how bad things had become. For me, this was an argument with someone I hold very dear. It made me re-evaluate what was important in my life and decide that pushing ever onward was not an option - that I was threatening something inviolable. By this stage I had already put at risk my physical and mental health - neither things I am happy to lose for sure, but the slippery slope is not steep and it's easy to put something "at risk" without realising quite how much so. At this point several things happened at once, but the main thing is I pulled myself out of life and work. I then spent a week more or less asleep.

It took a month of doing almost nothing to start feeling vaguely right and slow the destructive cycles. Some of that was spent at home, some was spent with my parents and family. During this time I started programming again. Weird statement for someone with my job, but my role no longer revolves around making things. This is fine and acceptable, but one of the difficult parts of shifting into more strategic work is that you lose the emotional kick of being able to look at that thing you built today. Starting it again in my spare time gave me the chance to set goals and achieve them. I could look at my work and be proud of the progress I was making. I could give myself little kicks of positive emotion.

I wrote a lot of code over Christmas.

With some kind of positive feedback loop in my life, I started asking myself what makes me happy. If I walked away from my current life and started again, what would I do? Why do I want to get up in the morning? When I managed to pull back and analyse my life I was still lacking any real reason to want to engage with the world. My way of dealing with that is to directly face that question and pick it apart until I have the beginnings of an acceptable answer. I'm a middle class human living in an affluent country - I am aware that I have done well in the lottery of life and so I have options that are not available to others. I should be able to find a positive place.

I'm not going into the details of this, but suffice to say I am still working for the Civil Service. For the moment, my long-term goals are still in-line with working there. There are plenty of interesting challenges which will keep me engaged and enthused and which I hope I will approach in an effective and useful way. As an aside, this is the point I want to remind people that "no feedback is good feedback" is a terrible way of treating your colleagues. By all means say if something is bad, but if someone is doing a good job make sure they know. We shouldn't find our sense of self-worth through our work but while we seek enlightenment many of us do. Admittedly, I feel a bit of a rat writing that here as I know a few of my colleagues occasionally read my blog so if that's you tune this bit out and mutter something about fishing for compliments.

That gives me a direction for my life for the moment, however it doesn't help me much in the immediate future. For the short term I need to put some positive things in my life or remove some negative things. These need to be short-term, or at least have tight feedback loops. I'm not in a position to start a six month project that will only make me happy at the end. One of the key things that makes me unhappy at the moment is the deterioration my physical well-being, a combination of my weight and fitness. This is dangerous as losing weight can be soul-destroying. Given I'm living in London I decided to adopt something of a Londoner mentality and throw some money at the problem so I'm giving Alevere a try and so far I'm pleased to say that it is working. I can use my goals within this programme as a framework to trigger other nice things. I'm not sure what yet, but I've just started writing D&D again so I may well treat myself to props or whatever at key milestones.

I can also use the same milestones as a trigger for new, positive behaviours. Deciding these up front means that when the time comes I don't have to think so much and make it far more likely I'll get on and do. Hopefully that will let me ride any emotional wave and keep going, instead of stopping, losing momentum and having to restart again. For instance, I'm going to go back to Yoga when I reach a particular target weight. I haven't decided all of these things yet, but just thinking about what I can do is a positive exercise in and of itself. The timescale for all this is about three months so hopefully by the end I'll have rebuilt a positive life and figured out how to make myself happy in a non-destructive way.

I'm not better yet, not by a long shot. I am, however, moving away from the dangerous place I was in a couple of months ago. The word "triggered" is used far too much in modern parlance, but I can definitely say I know some of my own trigger points and still see them affecting me. Less so now, but the road to recovery is not short. I'm incredibly grateful to the people who have supported me in various ways through this time.

I'm writing this as a note to myself in the future. Maybe it'll be a me who is having a difficult time again and needs to remember that there is a turning point. Or maybe it's a me who is thinking back and wondering what the fuss was about - hello future me, you were not overreacting. If anyone else finds it helpful then I'm glad and please do reach out if you'd like to talk.