I haven’t posted anything for quite some time (which I feel a little bad about), so this is something of a randomly-themed catch-up post. According to my LinkedIn profile I’ve been doing this engineering management thing for about two years, which at least provides some explanation for a relative lack of technical-oriented blog posts. Of course in that time I have certainly not revoked my Github access, deleted all compilers/runtimes/IDEs/etc and entirely halted technical work, but the nature of the work of course has changed. In short, I don’t find myself doing so much “interesting” technical work that leads to blog-worthy posts and discoveries.
So what does the work look like at the moment? I’ll spare you the deep philosophical analysis – there are many, many (MANY) posts and indeed books on making the transition from a technical contributor to a team manager or lead of some sort. Right back at the beginning I did struggle with the temptation to continue coding and contribute also on my management tasks – it is difficult to do both adequately at the same time. More recently (and perhaps in my moments of less self-control) I do allow myself to do some technical contributions. These usually look like the following:
- Cleaning up some long-standing technical debt that is getting in the way of the rest of the team being productive, but is not necessarily vital to their learning/growth or knowledge of our technology landscape.
- Data analysis – usually ElasticSearch, Pig/Hive/Redshift/MapReduce jobs to find the answer to a non-critical but still important question.
- Occasionally something far down the backlog that is a personal irritation for me, but is not in the critical path.
- Something that enables the rest of the team in some way, or removes a piece of our technology stack that was previously only known by myself (i.e. removes the need for knowledge transfer)
- Troubleshooting infrastructure (usually also coupled with data analysis).
I’d like to say I’ve been faithful to that list but I haven’t always. The most recent case was probably around a year ago I guess, when I decided I’d implement a minimum-speed data transfer monitor to our HLS server. This ended up taking several weeks and was a far more gnarly problem than I realised. The resulting code was also not of the highest standard – when you are not coding day-in and day-out, I find that my overall code quality and ability to perceive abstractions and the right model for a solution is impaired.
Otherwise, the tasks that I perhaps should be filling my day with (and this is not an exhaustive list, nor ordered, just whatever comes to mind right now) looks more like this:
- Assessing the capacity and skills make up of the team on a regular basis, against our backlog and potential features we’d like to deliver. Do we have the right skills and are we managing the “bus factor”? If the answer is “no” (and it almost always is), I should be hiring.
- Is the team able to deliver? Are there any blockers?
- Is the team happy? Why or why not? What can I do to improve things for them?
- How are the team-members going on their career paths? How can I facilitate their personal growth and helping them become better engineers?
- What is the overall health of our services and client applications? Did we have any downtime last night? What do I need to jump on immediately to get these problems resolved? I would usually consider this the first item to check in my daily routine – if something has been down we need to get it back up and fix the problems as a matter of urgency.
- What is the current state of our technical debt; are there any tactical or strategic processes we need to start in order to address it?
- How are we matching up in terms of fitting in with technology standards in the rest of the organisation? Are we falling behind or leading the way in some areas? Are there any new approaches that have worked well for us that could be socialised amongst the rest of the organisation?
- Are there any organisational pain-points that I can identify and attempt to gather consensus from my peer engineering managers? What could we change on a wider scale that would help the overall organisation deliver user value faster, or with higher quality?
- Could we improve our testing processes?
- How are we measuring up against our KPIs? Have we delivered something new recently that needs to be assessed for impact, and if so has it been a success or not matched up to expectations? Do we need to rethink our approach or iterate on that feature?
- Somewhat related: have there been any OS or platform updates on any of our client platforms that might have introduced bugs that we need to address? Ideally we would be ahead of the curve and anticipate problems before they happen, but if you have a product that targets web browsers or Android phones, there are simply too many to adequately test ahead of general public releases before potential problems are discovered by the public.
- Is there any free-range experimentation the team could be doing? Let’s have a one-day offsite to explore something new! (I usually schedule at least one offsite a month for this kind of thing, with a very loose agenda.)
- How am I progressing on my career path? What aspects of engineering management am I perhaps not focussing enough on? What is the next thing I need to be learning?
I could probably go on and on about this for a whole day. After almost two years (and at several points before that) it is natural to question whether the engineering management track is the one I should be on. Much earlier (perhaps 6 months in) I was still quite unsure – if you are still contributing a lot of code as part of your day to day work, the answer to the question is that much harder to arrive at since you have blurred the lines of what your job description should look like. It is much easier to escape the reality of settling permanently on one side or the other.
Recently I had some conversations with people which involved talking in depth about either software development or engineering management. On the one hand, exploring the software development topics with someone, I definitely got the feeling that there was a lot I am getting progressively more and more rusty on. To get up to speed again I feel would take some reasonable effort on my part. In fact, one of the small technical debt “itches” I scratched at the end of last year was implementing a small application to consume from AWS Kinesis, do some minor massaging of the events and then inject them into ElasticSearch. I initially thought I’d write it in Scala, but the cognitive burden of learning the language at that point was too daunting. I ended up writing it in Java 8 (which I have to say is actually quite nice to use, compared to much older versions of Java) but this is not a struggle a competent engineer coding on a daily basis would typically have.
On the other hand, the conversations around engineering management felt like they could stretch on for ever. I could literally spend an entire day talking about some particular aspect of growing an organisation, or a team, or on technical decision-making (and frequently do). Some of this has been learned through trial and error, some by blind luck and I would say a decent amount through reading good books and the wonderful leadership/management training course at SoundCloud (otherwise known as LUMAS). I and many other first-time managers took this course (in several phases) starting not long after I started managing the team, and I think I gained a lot from it. Unfortunately it’s not something anyone can simply take, but at least I’d like to recommend some of the books we were given during the course – I felt I got a lot out of them as well.
- Conscious Business by Fred Kofman. It might start out a bit hand-wavy, and feel like it is the zen master approach to leadership but if you persist you’ll find a very honest, ethical approach to business and leadership. I found it very compelling.
- Five Dysfunctions of a Team by Patrick Lencioni. A great book, and very easy read with many compelling stories as examples – for building healthy teams. Applying the lessons is a whole different story, and I would not say it is easy by any measure. But avoiding it is also a path to failure.
- Leadership Presence by Kathy Lubar and Belle Linda Halpern. Being honest and genuine, knowing yourself, establishing a genuine connection and empathy to others around you and many other gems within this book are essential to being a competent leader. I think this is a book I’ll keep coming back to for quite some time.
In addition I read a couple of books on Toyota and their lean approach to business (they are continually referenced in software development best practices). I have to admit that making a solid connection between all of TPS can be a challenge, and I hope to further learn about them in future and figure out which parts are actually relevant and which parts are not. There were a few other books around negotiation and other aspects of leadership which coloured my thinking but were not significant enough to list. That said, I still have something like 63 books on my wish list still to be ordered and read!
In order to remain “relevant” and in touch with technical topics I don’t want to stop programming, of course, but this will have to remain in the personal domain. To that end I’m currently taking a game programming course in Unity (so, C#) and another around 3D modelling using Blender. Eventually I’ll get back to the machine learning courses I was taking a long time ago but still need to re-take some beginner linear algebra in order to understand the ML concepts properly. Then there are a tonne of other personal projects in various languages and to various ends. I’ll just keep fooling myself that I’ll have free time for all of these things 🙂
I had a meeting this week where among other things we talked about our teams and team members and how things were doing, generally, in the sense of team health. Oh yeah, since I haven’t explicitly called it out on this blog, for the last 9 months I’ve been an engineering manager and since the beginning of the year took on a second team. So I’ve got two teams of developers to manage currently.
Within the discussion we touched on personalities of team members and how some people are more likely to engage in pair programming, but others generally not. This reminded me of my own habits. I aspire to pair program, but when the opportunity is there I usually avoid it. This isn’t setting a great example to my teams so I feel guilty about this, but in the moment we were discussing the topic I started to reflect on this tendency a little.
Part of the new management training programmes that are being explored at SoundCloud involves a reasonable amount (ok, a LOT) of self-discovery and self-awareness. One form this takes is in doing an MBTI test and getting familiar with your tendencies, preferences and communication styles. I’ve done this test at least twice in the past and nothing had changed this time around, but I’m more familiar now with the implications. I tend to live the factual, data-based world, and without delving too much into my own personal MBTI type, prefer to plan things out and think them through in advance rather than acting spontaneously in the moment, talking out problems and making on the spot decisions.
This really reflects on my hesitation when it comes to pair programming. Innate in the process is talking out problems when the situation is not understood, making on the spot decisions without having much time to reflect internally and rely on internal thought processes (since there’s another person there waiting for you). This directly conflicts with my personal pre-dispositions. No wonder I am not a willing pair programmer! It’s quite likely members of my teams may be the same, and hence taking a universal approach of everyone pair programs may at best lead to poor results and at worst lead to a dysfunctional team full of unhappy members.
I’m sure this is not an original thought (in general) but it was a useful realisation for me. I think that taking into account different personality types and different personal motivators for your team member, and using this when it comes to planning how to work and what to work on, can be one potentially powerful tool in building a strong and happy team.
I’m on vacation in Thailand at the moment and noticed a correlation here that I hadn’t before. So many houses, shanties, shops, restaurants and various other abodes have awnings or coverings made of synthetic material and advertising various products. The awnings (I’m not sure what else to call them, as they provide various different services depending on the needs of the person) provide shade from the sun and in the monsoon months shelter and cover from the rain. They all appear to be originally intended as banner advertisements, but I’m not sure if what I’ve seen are intended to be advertisements now, or were previously used for advertisement elsewhere and have since been recycled.
Regardless of my lack of understanding of the banner lifecycle, the obvious result is that advertisements are everywhere you look. Typically they are for energy drinks (are Thais that low on energy all the time?) or mobile phone carriers. I’ve more recently seen some for broadband providers (10Mbps!) and there have been some for scooters but not many others that stick in my brain.
Online we’re living in a world where, regardless if you are aware of it or not, often the “consumer” is actually the product. Look at Facebook or any other service provided for “free”, but now ad-laden. You are consuming the ads and other companies are paying Facebook to display the ads on the off-chance you might consume their products as well. There has been some backlash over advertising, mainly in the more tech-aware demographics but the general consensus seems to be that those aware of it consider it to be a massive affront to their sensibilities and should be done away with at the source.
Having been in Thailand already almost 7 years ago now, I know that these banner ads have been around since at least that long ago, and probably since much earlier too. Online, all you have to put up with are ads in your field of vision – virtually presented through a window you can measure in centimetres. In Thailand banner ads are all around you, wherever you go, physically present in your world here. Again, I’m not very aware of the culture surrounding them, or the reasons for why they are here, but I don’t sense any of the backlash against them. On the other hand, they are providing physical benefits of shade and cover whereas virtual ads online typical give you access to free services such as Facebook (which is really a 1st world luxury).
We’ve been in the country for almost four years and I still feel like I don’t have a very good grasp on the language. OK, there are indisputable differences between children and adults in language learning but that doesn’t mean you can’t learn a language in adult life. I just find that I procrastinate, and find it hard to prioritise the language learning into my daily routine.
Sometimes it is just easier to zone out and read 9gag, or Failblog. I’ve cut down my RSS subscriptions to the point where I get through them all in a few minutes every couple of days. There is a constant few technical papers or videos I have on the backlog to read or watch when I get a moment, and sometimes actually get to them. I’m progressing rather slowly with Seven Languages in Seven Weeks, a book about learning seven computer languages – and I’ve almost completed the 5th in the list but haven’t yet managed to prioritise even my first non-native spoken language – German.
At work we recently did a “Bio Hacking” course, which sounds a bit hand-wavy, but at its core was basically about getting your stress levels down and allowing your brain the rest periods necessary to operate it at full capacity. I also learned that procrastination (among other things I learned about my habits) is related to an over-developer aversion to failure. Probably learned during childhood through some catastrophic failure event, or alternatively so much success that you couldn’t bear the thought of not succeeding. I’m not sure I recall either of these happening so it’s a bit of a mystery to me.
Nevertheless I am procrastinating right now in writing this blog post instead of finishing the chapter on Erlang, or doing some German revision. It’s hard to think I’ll change my habits drastically after 34 years on this planet, but I also can’t stand the idea of becoming one of those people who has stayed in Germany for 10 years and just gave up learning the native language at some point. Or really anybody that just gave up trying to better themselves at any point in their lives because they saw it as futile.
Today I actually have the energy for a blog post. Probably because I went for a bike ride when it was -1 outside, and am WIDE awake as a result!
That aside- I realised that the last time I went bike riding- Kai was barely walking – meaning it has been a long time since I have ridden. However I distinctively recall having significantly lower energy then, than this time around.
As I was riding along, aware of how good I felt, I began to realise that this is a small landmark event for me. For those of you who know me well or are close to me you will recall that the past two years have seen me not at my optimum health.
My internal fire was extinguished. 2012 in particular was a dark time, endless days feeling lost and alone. I will not mention the specifics, however I will be the first to admit that due to external stress levels going on in my life that were beyond my control- I stopped functioning. My eating became disordered. I had no appetite for my life and the knot in the pit of my stomach prevented me from thinking clearly, making decisions that were rational. It prevented me from sleeping, dreaming, from seizing opportunities that were presented to me. The Isolation was crippling. My mind was fractured.
Some people whispered on corners, some turned away, and some screamed at the top of their voices.
Since returning to a healthier state of being I have thought about sharing a part or the whole of this journey. I thought initially that I did not want to write a blog post about that time. However, I think there is merit in sharing. I usually have no time for blogging, I am not an avid blogger who likes to spread my opinion via the web however- if I can reach out to others, then it seems to make sense to write about something i know will effect others.
I know for a fact that Mental illness is a huge part of human society, especially in the westernised world.If there was less fear and judgement then people would be open to sharing more. This will not be an attempt to rid the world of stigmatisation, however I can share a part of a story that may.
While it was in large a personal journey, a re-building of a self – I did not do this on my own, I did this with support from certain people- and those people know who they are, and they should be acknowleged. For those who lost faith in me during this time; I can understand it would have been painful to be a powerless witness. While I have a firm idea, I may not fully know the extent of their pain or what was going through their minds as they struggled with watching me struggle.
Call it ironic but in actual fact- having people give up on me, only strengthened my resolve to push forward and prove to myself they were wrong, so to them I say an additional thank you.
I wonder, about a hypothetical alternative. If I had been in a traumatic road accident which resulted in a broken leg which left me just as incapacitated, just as damaged, whether the treatment of me would have been more understanding. I think it would. People could “see the cast” on my leg and understand what was “wrong with me”- when it comes to matters of mental health – a lot of people are just not educated about the facts, and naturally we shy away from what we do not understand, “it is dangerous” – however therin lies the problem with social determinates of health. Stigma.
Essentially what propelled me to get through this dark time was my son Kai. I could not leave my child motherless. I had to get up and face myself. I have realised I can not seperate myself from being a mother now. This death of my previous identity was something I had to grieve. Something I had to challenge, to deny, to surrender to, to play with, to taste and re taste, to explore, realise and accept.
While having my first baby, at age 23 – away from family in a foreign country was totally my choice, I realise now that was a choice marked as one of the hardest things I have ever done.
– But when you answer to someone who is 100 % dependant on you for their survival- the pressure is over-whelming. Your thoughts about yourself must change.
What kind of example did I want to set for my son?
That personal fears can rule your daily existence?
Or rather that your opinions of yourself are flexible, can mutate and evolve, and that we have a right to demand our own physical, mental and psychological health is a priority?
That being afraid of life is a balanced approach? or rather; that it is healthy to have fears, but not to let them dominate you?
That sometimes you can try your hardest at something, but it will not always come to fruition, and that is acceptable too.
That we need to love ourselves enough to forgive ourselves for the things beyond our control. Nothing is so big that we are not deserving to share a part of our-self with the world, furthermore – that self betterment is always desired. Accepting a second rate shadow of ourselves, is not acceptable.
Each second of every day we make choices with consequences-and each day we can choose to alter what is causing us lose respect for ourselves, or what is blocking inner contentment.
I wanted Kai to learn hat happiness should not be a the ultimate goal, as it is fleeting emotion – which will pass, and it is exhausting to chase an unrealistic ideal; however to reach for a place of self contentment no matter what you are doing or where you are.
I wanted Kai to see mistakes are a natural progression in evolution, that adults and children alike make mistakes and can adapt. That adults do not always have all the answers, all the time, we are human after all.
That there are myriads of ways to deal with the situations presented to us, and we can choose.
The final lesson I hope I can impart is how art can heal.
An art project I began whilst in an hour of darkness helped me to process my fears during this time, to channel it into something that can now potentially serve other people who are struggling and need something to cling to at their hour of darkness. A tiny seed of hope was implanted in me the day I decided to do this art project, a little flickering spark on the horizon that makes you think- what is up ahead?
When I told a therapist I was doing this- she was taken aback, and then disapproving. Her judgement was intriguing as she scoffed at me and rolled her eyes- I just smiled at her in response. I CAN not wait to prove her wrong.
Some ideas I want to share that I wish had shared with me prior to Motherhood…
It will ALL BE OK – TRUST YOUR INTUITION AND YOUR INSTINCTS!!! This child is yours and yours alone so Fuck what people say, it is usually their incorrect and often unfounded opinions that make you question your own, when you know what is best for you and your child.
It will get much easier, and much much harder. Settle in for uncertainty, because YOU CANNOT CONTROL EVERYTHING
IT IS OK TO MAKE MISTAKES> FUCK UP, its what is needed to grow with this tiny human, who needs to learn that making mistakes is vital to being HUMAN!!! your child does not need you when you are perfect, your child needs you NOW. just as you are, flaws and insecurities.
Having a child is the BEST personal trainer for your life both mentally and physically and often spiritually too. They will make you question everything, and then question it again. When you think you know what is going on, you will be thrown and have to get back up again, but even when you are tired – you will still find the strength somewhere to get back up again.
ASK FOR HELP IF YOU NEED IT. it is not a sign of weakness. You are a better mother/parent/guardian when you have had sleep, a shower and have fuelled your body properly.
The world will look different in the morning. GO TO BED. NOW.
Friends with or without babies – who are true friends mind you, will understand and will still respect you – even when you cancel on them for the 100th time due to having a child. There are some things that friends cannot possibly understand UNTIL they are parents and have gone through it first hand – BUT they should not judge you for this new little person who has thrown your entire world into havoc. Also, do not expect them to “get” all the parent stuff that comes with the territory and do not judge them for it.
LIFE will not be the same, but it may turn out better so run with it – be prepared that all your previous ideas about being a parent and what it may be like, will be questioned, may be wrong, will have to adapt
Your child is its own unique personality. They will have up and down moments and some days, you personalites will unite, others they will clash. your child is NOT A BLANK SLATE at birth so there are certain temperaments, genes and traits that are beyong your control. Instead of fighting this. work around it.
Pick your battles. Not everything is worth the stress in that moment. IF it is the difference between a messy house, or a happy child- go with what makes sense. Your sanity is worth more than looking like you stepped off the runway or like you can do it all, by having a clean house, dinner made and a bathed child who will sit there cooing in the background. its an illusion.
The media will fuck you. THey will present the ideal woman/mother/feminist/role model and expect you to emulate it. You will fail if you try.
A baby will change your marriage/relationship with you partner, your baby – daddy, or whoever is the so called “significant other”. Be prepared to accept that. even though it looks and feels different -It does not mean there is no longer love there, it just morphs into a different shape. it will continue to morph, as your child/children grow.
This moment like all, WILL PASS. So breathe.
Your role as a mother will be all consuming, especially in the beginning – but it wont be like that always. you will re-discover a sense of self, outside of motherhood. Your self worth is not only tied to how you rate as a parent or mother. IT is one very important part of your life that demands respect, but it is not all you are, even if you think that is how you appear post – child.
You are doing the best job you can. That will have to be enough.
Your child will not meet all the milestones that the baby websites tell you they will, at the exact moment that they tell you they SHOULD. Your child is a human being, not a machine.
You will think so called “tabooed or bad thoughts” about your new life, your child, and yourself. They are just thoughts. It is healthier to admit they are there, acknowledge a feeling or emotion and then move on. it does not make you a bad person for thinking them. Thoughts such as “My child deserves better”, “having a baby was a mistake”, “I just want to be alone why cant my child be quiet”, “If this child does not stop screaming, I may have a nervous breakdown”. “I want my old life back”, “I want my relationship with my partner the way it was before”, “I want freedom”
– any screaming match/tantrum/episode will pass. your child cannot physically scream forever, so when your nerves are fried, remember it will stop.
Allow your child to give you the the gift of spontaneity. It can feel like the constant change is stressful, but it can be so refreshing to remain constantly present and “in the moment”- stop and look at the child you have. there is no one else like this human being.
Do little things just for you. some small but significant things that work for me:
– Take a bath, or if no time, run wrists and hands under water. A hot towel to the face will rejuvenate you. Essential oils on the temples – orange or citrus for waking up, lavender or patchouli for relaxation.
– Buy some flowers
– A walk in the sun. simple. costs nothing to walk, and you can take baby/child with you either in the ergo or pram
-Ask for a massage from someone close – or if no one is there, give yourself a head or hand massage, focusing on pressure points.
-Dont cook, but instead try a meal from that new restaurant you have walked past a dozen times. Sit and enjoy that meal.
– start reading that book that is on the shelf that you keep meaning to read.
– Call a friend and talk about everything and anything that HAS NOTHING TO DO WITH BEING A PARENT.
– watch an inspirational talk on Ted.com
So this is what the world looks like when I have had sleep. Its good. its surreal. I have motivation to write a blog post for the first time in months.
Since returning to Berlin early 2012 – Kaichen has been in Kita. This has allowed me to have time to sleep and also be “alone” for a few hours each day for the first time since he was born ( over two years)- and this “freedom” for want of a better word, its a foreign concept to me.
I am still adjusting, even now I still look around for him, and I still have to tell myself that I can actually have a shower or sit down to enjoy a coffee without looking up to see what he is doing.
I don’t really know how to put into words the way the world looks now through non tired eyes – shinier perhaps?
After talking to Kais Kita teacher, (aka Anne Hathaway of Berlin) – she enlightened me to the idea that perhaps i had been functioning at such a low energy/on no sleep level for so long – it became the norm, and suddenly, my mind, now fuelled on sleep, (plus the mandatory caffeine) is buzzing on a new level!
suddenly ideas and thoughts come flooding to me – things seem possible in new way, on a practical and theoretical level. Even my daily yoga is met with a new breath, I can feel myself going deeper into the so called “dead zones”…
I have known for a while now that I have become totally incapable of relaxing. I cant sit still. I have borrowed the term, “the blessed unrest” taken from the idea that it is the blessed unrest that keeps you marching. Partly i fear if i slow, i wont get going again, ( think – the rolling stone, no moss analogy). Oli also has a similar blessed unrest, and we both can see it in Kai. His Kita teacher, is amazed at how Kai “never stops moving”, he is like the energizer bunny. When she first confessed this, I was so relieved. For so long I was under the assumption that I was a bad mother for being tired running after him, thinking that Kai needing to escape, run for the road without fear, go down slides head first on his own, climb onto and into everything, and catapult himself off things, was normal boy behaviour, and to an extent it is – but Kai takes it to the next level of intensity. I also love him for it. He has an unwavering sense of adventure. If there is a new thing to explore, he leads the way. on the flip side, he also gets bored and restless and has a short fuse. His stubbornness is not a huge shock, ( both oliver and I are very stubborn by nature) but a lot of these arguments do fall under the nature/nurture debate.
A reflection fitting in line with Mothers Day tomorrow, finds me at the point where I am still riddled with guilt – feeling like every day I commit myself to being ” a better mother”/ more patient, more attentive to meeting Kais needs, and yet, I still fall down. It also never ceases to amaze me that many mothers I speak too from many varying backgrounds, share this sentiment!
Somehow I can give advice I cant take myself. Hypocritically of me, I can reassure someone else that they are a brilliant mother, and that they are human, and thus allowed to make mistakes – yet I want more for myself, and for Kaichen.
My mothers Day present to myself? A Butoh Workshop entitled “Frontier is the Body” with the famous Yuko Kaseki – held here in Berlin, at Eden Studios An eight day workshop, that will allow me to explore my sense of self (whatever that is now).
A chance to use my body in conjunction with my mind. To explore movement and my kinesthetic awareness to re connect with myself. I was lucky to secure a place, and I am just a little excited!
If you know me from my professional life you may think of me as a techy, obsessive-compulsive, slightly (or aggressively) arrogant person driven to making some cool large systems work. But I’m also a family man, and for the last two months I’ve been separated from two-thirds of that family. During the last vacation back to Australia, I came back at the start of January while my wife and son stayed on for a duration we didn’t have concrete plans on at the time.
It ended up being two months almost to the day, and while I kept myself busy with work in general as well as trips to the US for work and Brussels for FOSDEM, I was completely unprepared for the emotional upheaval that hit me when they returned. Needless to say, biological mothers are hit with a barrage of various chemical rebalancing acts which, combined with the addition of a newborn, add up to be a formidable force in the first few weeks and months of the baby’s life. As a man, I don’t get the same effects (although sympathetic effects can’t be ruled out) but despite society’s expectations on males and my own generally robotic appearance day to day, I found I was hit with a wall of emotion in those first few days as well.
It was an undefinable experience. I couldn’t analyse it or understand it, but I knew it had me in its grasp. The responsibility of taking care of a fragile life form, being the only force in the universe that can keep this thing alive; but that again puts it into too tangible forms. As much as you can have these things going through your head and know that you are completely capable of it, the emotion still hits you.
And now that they are back again I found myself in the same place. Not sure I could do it, especially with a child that had aged and matured in just the two months he’d been away. New behaviours, slightly more grown-up features. Just back from the airport, I was going to duck out briefly to grab some take-away food since we had almost nothing in the house and the little guy burst into tears just as I was walking out the door. That’s putting it mildly – he just lost it completely. I’d be lying if I said it didn’t break my heart. I think both of us missed each other more than we realised.
Now he has some kind of flu which has spread to the rest of us. I’ve been off work since last week and taking care of a snot-dribbling, but still amazingly energetic two-year-old is draining to say the least. Me and the little guy have been sleeping on the sofa-bed to give Mama a chance to rest after the draining flights from Australia, which means not much sleep for either of the boys unfortunately. It’s not a great start to the year (now that we’re all together, this is our year beginning effectively) but we still have hopes it will be better than the last one. Kai will be going to Kita, Ange will have some freedom and do whatever she wants after two years of full-time caregiving and I’ll be my usual effervescent self with any luck.
I fully own up to and take responsibility for my unending perfectionist streak (although of course I am far from perfect) – I am never happy with the work I have done, am always looking for new challenges, and constantly think that I’m not doing enough (in various different areas of my life). This generally applies to work and associated pursuits but also to just about any other area I care to mention – learning languages, fitness, music etc. The inevitable time sucks aside (being a parent, Facebook, movies, RSS feeds, writing blog posts etc) I’ll try to describe how I find inspiration from day to day. This may sound rather vague but I guess this is mainly a post to give some anonymous credit to some people who have inspired me and continue to inspire me, mainly on a technical level.
I was fortunate enough to have found my last job through a friend, and while I didn’t have much idea of his tech background at the time, when he left I ended up filling his position until I left a little less than two years ago now. He ended up going to a rather large, well-known search engine company so you can guess he set a fairly high standard. Looking back, I was extremely green coming into that job and his presence was invaluable to me. He was always working on some system or writing some code that was a couple of steps out of my reach. I didn’t realise it much at the time but I unconsciously strived to catch up to him in some way (a futile effort) and he definitely inspired me to get into programming again, which has served me very well the last year or so.
When he left the company, I felt very uneasy stepping into his shoes, feeling completely unworthy of the role. It was actually a very good thing and I feel like I grew into it, and eventually felt that I left my mark after I myself had left. It was a big challenge stepping into the position of the lead tech for systems and networking in the company but definitely rewarding, and provided a lot more scope for bridging the gap between what I would call more standard sysadmin work and lead tech/architect work which is where I find myself these days.
Something I feel like I needed a lot more at that time was someone I could always fall back on who had all the answers when I came up stumps. The technical director of that company is extremely experienced, knowledgeable beyond all reason and very fastidious. I learned my sometimes excessive attention to detail and obsessive compulsive approach to work from him, and while it also comes with bonuses like constantly washing your hands, doubling back to make sure you have turned off light switches and so on (or maybe that’s just me) it has served me well. It was also incredibly reassuring to know that someone around would have the answer even if you didn’t, and when we were trying to solve problems in often unexplored ways, his presence was invaluable in that process of development.
Right now I feel a lot more self-confident in my own decisions and capability to find the right answers either through brute-force or learning that I don’t need that reliance, but it is still useful having peers you respect to bounce ideas off. You might call these things “knowing yourself” and “distrusting yourself”. Something I only discovered over the last few years is how my mind actually operates. I know I don’t take knowledge in immediately, but percolate through it unconsciously – so it doesn’t bother me as much when I don’t understand things as soon as I read them or someone explains it to me. I take a break away from thinking, or sleep on it and can relax knowing the answer or realisation will be there without forcing it.
And so, I feel like what is almost two years now at Nokia have been some of my most productive, mentally and developmentally speaking. I think I have done much less typing but much more thinking, which is a change, but also appreciate my inspirations and goals a lot more. I did accomplish the goal of programming more, and I do enjoy it (which was the whole point in the first place). I’m not sure if I’m good at it yet, but that’s another matter. So the last person I wanted to mention is actually a reasonably new recruit to my team (and ironically from that large search engine company). He again seems to be constantly two steps (actually a lot more) ahead, but has an odd array of hobbies strongly rooted in Electrical Engineering (which is where I started out at Uni).
This is another area that perhaps I had only vaguely wanted to get back into, but exploring it now has got my imagination going wild. Right now I’m having a look at building some kind of motion detection system (for various reasons which may be revealed over the coming months) using OpenCV on his suggestion. There is a wealth of other embedded systems and electronic projects that could be extremely fun and hopefully rewarding both in terms of what can be built and the knowledge acquired. It’s good having someone around to guide me in this field that I have been out of for perhaps a decade now.
The main takeaway from this all could be something along the lines of the trite adage of standing on the shoulders of giants, but I think it is simpler than that. You don’t need to be surrounding by renaissance men (although it helps) who can pull you up – you just need one or two people in your life who inspire you and do things you hadn’t perhaps thought of doing, or it hadn’t occurred to you to do. If you can find the time to better yourself by exploring these curiosities rather than just leaving them as such, I think you’ll find yourself a happier person in the long run.
that if you pass a Ruby symbol through the Puppet external node classifier interface, through a parametrised class and into an ERB template, it will arrive (relatively) unscathed? OK not really, but the special undef Puppet symbol does.
Puppet interprets it as a standard undef (which is internally represented as Puppet::Parser::AST::Undef).
When passed through to an ERB template, it again arrives as the symbol form :undef, which means you can do things like
<% if proxy_host != :undef -%> proxyhost=<%= proxy_host %> proxyport=<%= proxy_port %> <% end -%>
This does bring up an interesting conundrum about variable usage in templates. When you are faced with the pattern of “check some variable, and if the condition is true, enable a whole block of text which involves substitution”, what is the best way to express it? There are a few options:
- Reuse one of the substitution variables by testing that it is not an empty string. Requires the parameter in the class to default to empty string.
- As above, but default to undef in the class, and test for :undef (as I have done above).
- As above, but default to false in the class, and test for false.
- Use string values of ‘true’ and ‘false’ for configurations that also require enablers to be explicit before providing parameters in that section
- Use a special “enabler” variable to enable the entire block, but this variable is ultimately useless for substitution in other ways.
One of my gripes with the Puppet DSL (and let’s face it, who doesn’t have at least one) is that the type system is inherently different to Ruby’s. While there is the undef “value”, it doesn’t behave like the Ruby nil. Empty strings evaluate as false in Puppet; in Ruby they evaluate as true. It is not permissible to pass undef to a class or definition that wasn’t already set up with a default value. This clearly contrasts with Ruby where nil is a perfectly permissible value to supply (and evaluates as false).
My problems with the above patterns are as follows:
- I don’t like that an empty string has some kind of semantic value. I may not want to imply anything about the absence of a value, like an empty string (if for example I’m passing in booleans or numbers).
- Passing and testing for :undef is really ugly and totally blurs the Puppet/Ruby border. It is not clear how :undef is handled inside of Puppet to the outside observer.
- Again, false has semantic value. I don’t want something to be boolean if I’m passing a string or a number. Why not just use ” when handling string values and false when handling booleans? It destroys your consistency (especially when in Ruby you could just test for “if X != nil” or just “unless X”).
- This leads to confusion between real boolean values and the string versions. On the other hand you could use something like
<%= proxy_enabler : 'true' ? 'false' %>but this seems even more confusing, even if you understand the ternary operator.
- This just seems wasteful. Especially when your class interfaces can consist of 20 or more variables, another one is not welcome. Incidentally, bring on class parameter hashes!
This shows just some of the madness I have to endure day to day. I’d love to know your thoughts on this, as I still haven’t really made my mind up. I did actually request nil to be added to the Puppet language but my ideas on how best this can be applied is still floating about in the wind.
- February 2017
- January 2017
- December 2016
- October 2016
- August 2016
- June 2016
- May 2016
- August 2015
- June 2015
- April 2015
- March 2015
- January 2015
- December 2014
- November 2014
- August 2014
- May 2014
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- November 2013
- October 2013
- September 2013
- July 2013
- June 2013
- March 2013
- February 2013
- January 2013
- December 2012
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- February 2011
- January 2011
- November 2010
- October 2010
- September 2010