Categories
Blogmarks Culture First Engineering Software Engineering

Endorsing and regretting technical decisions

This post from Jack Lindamood has a format I loved. The decisions and his reflections are interesting, but I think less interesting than the format itself. What I love:

  • You keep track of all the big decisions you’ve made during your tenure in a particular company / role
  • You engage in self reflection on if they were good or bad choices, after you’ve had time and benefit from hindsight
  • You share knowledge with the community (I was exposed to tech I’ve never heard of, and had new takes on tech I use every week)
  • If we had one of these for Culture Amp, it would go a long way to clarifying not just why we use a certain tech, but if we still like it, separate from the decision of if we’re still using it.

At Culture Amp we do use a tech radar that mimic’s the format from Thoughtworks. But the “radar” UI doesn’t lend itself to reading as a whole.

I also like that he’s captured the decisions he’s been accountable for as an engineering leader. That’s fascinating when thinking about recruiting – how do you convince a new company that you’re going to be a leader with good judgement? And how does the new company evaluate if the way you make decisions – and learn from mistakes – is the right fit for them?

(Almost) Every infrastructure decision I endorse or regret after 4 years running infrastructure at a startup · Jack’s home on the web

Categories
Personal Reflecting

Examen 2020

At the change of the year I want to engage in some reflection. A reflective exercise I’ve began using in 2020 is a daily prayer called “The Examen”. I believe it’s a Jesuit practice, and I’m following this format shared by Xavier University. I’ve mildly adapted it here to make the language about the year not the day.

The Examen: A Daily Prayer

St. Ignatius Loyola’s Examen is an opportunity for peaceful daily reflective prayer. It invites us to find the movement of God in all the people and events of our day. The Examen is simply a set of introspective prompts for you to follow or adapt to your own character and spirit.

Begin with a pause and a slow, deep breath or two; become aware that you are in the presence of the Holy.

From “The Examen: A Daily Prayer” via Xavier University

Thanksgiving

What am I especially grateful for in the past year…

The gift of another year…

The love and support I have received…

The courage I have mustered…

An event that took place this year…

From “The Examen: A Daily Prayer” via Xavier University

The biggest news of the year came in the final month. On December 4th in the early hours of the morning, Hugo was born. We’d been holding our hopes for a healthy baby and a healthy mum – and both came to be. We’re now a family of four, and I’m so grateful.

Christmas Day 2020. I’m 33, Anna is 30, Louis is 2 and Hugo is 3 weeks old.

One of the other things we’ve been hoping and praying for through 2020 was about making the most of our time with Louis at this young age and while before his brother arrived. He learned so much about the world, and we learned so much from him, and my love grew more than I knew my heart was capable of.

2020 for most of the planet was defined by the COVID19 pandemic. I lived in Western Australia, one of the safest places on earth this year. Safe in a pandemic, locked down in a big home with Anna’s parents who we love. Grateful to have spent this year safe, and for the proximity to family, and for the support we gave each other.

I’m also grateful to be writing this from a beautiful house that’s now our family home. After living in 9 houses over 5 years we were keen to settle. We tried to sell our little unit and buy a family home, but the finances just couldn’t work. We’ve found a rental though that is perfect for our family and our stage of life.

This year we also found a spiritual community where we felt most authentically ourselves since our small Melbourne church closed down. A small group of friends (we know each other mostly from Riverview) started gathering, at first on Zoom, and then face-to-face once it was safe, and sharing our journeys, and finding ways to hone our spiritual practices together. We used the resources at https://practicingtheway.org/ to lead us in growing in two practices in particular: Silence and Solitude, and Sabbath. I also made some small progress in finding words and courage to share where I’m currently at with friends and family whose journey and beliefs now look pretty different to mine.

The first practice our Sunday group worked through was “Silence and Solitude”. I’d highly recommend this series (if you’re up for the church teaching style and the assumed Christian background anyway)

I was grateful for the courage Anna had in writing this post and releasing this song. This has been a big part of our story that we’ve carried privately for a long time. Sharing it took courage.

This song took 3 years from writing to release. And the story behind it spans an entire life.

I felt like this year I had courage at work and have grown as a leader, taking on new teams and harder tasks and speaking up when it’s not been comfortable. The support I’ve had from my co-workers, and my managers in particular, has helped me grow so much.

There’s other places I started to show courage, but wish I had better follow through. After the devastating Australian bush-fire season I reached out to local politicians to discuss an idea for community volunteering in the face of climate change, but dropped the ball when COVID19 took over the world. Similarly I was exploring doing a DEI (Diversity, Equity, Inclusion) talk at tech meet-ups, exploring how privilege has shaped my own journey, to help other people recognise their privilege and work to share it. This also dropped off the radar during COVID19 lock-down. I also made efforts to help people affected by Culture Amp’s layoffs. Not sure if it really helped anyone. And lately I’ve been volunteering to help a small group build a site for collecting stories about those with disabilities and their experience of being Locked Out during lock downs. Hopefully I have better follow through there!

Finally, I’m grateful for this book: “Watch for the Light“. These readings for Advent have been a beautiful way to connect with my faith, and has helped me move beyond what I struggle with intellectually, and into the experience and the politics and the hope of the Christmas season. I’ll be rereading this again next year I suspect.

Book cover: Watch for the Light | Readings for Advent and Christmas.

Petition

I am about to review my year; I ask for the light to know God and to know myself as God sees me.

From “The Examen: A Daily Prayer” via Xavier University

Review

Where have I felt true joy this year?

What has troubled me this year?

What has challenged me this year?

Where and when did I pause this year?

Have I noticed God’s presence in any of this?

From “The Examen: A Daily Prayer” via Xavier University

Where did I feel true joy?

Most days this year when I tried to reflect on where I felt true joy, the first thing that popped into my head was Louis. The wonder of seeing a small person grow and learn and experience things and imagine.

Louis loves the playground swing. And he loves his picture books, including some which talk about space. He recently started closing his eyes on the swing and imagining his extraterrestrial journey.

Also, in November we celebrated 10 years since Anna and I met. Reflecting on a decade together has been sweet.

One moment of happy tears I’ll remember: receiving news that some of my favourite friends were moving to Perth. We’ve missed them, and haven’t built friendships quite the same back here yet. So glad to have them near again.

Where was I troubled and challenged?

On that note, something that has troubled me this year is noticing how I don’t actively invest in many friendships beyond those people I see regularly by necessity (family, workmates). In particular there was one friendship that has atrophied over the years and at the end of this year, it was heart-wrenching to realise just how dead the relationship now was. I felt awful – for my own sake, and for realising the pain I’d caused by not returning the friendship offered. One of my resolutions out of this is to get counselling and do the “inner work” that is part of repentance. (Shout out to Rabbi Danya Ruttenberg for helping make this clear to me).

Another thing that has troubled me is the work culture at my work. Our company is called Culture Amp, and the thing which attracted me to the company was the mission to be successful by being a company that puts people and culture first – being a great place to work. I’ve been there three years and most of that has been great, this year has been hard though. As well as the lay-offs, there has been an unrelenting period of change, and it’s been hard. I’ve seen plenty of decisions I disagree with, and seen people I like a lot negatively impacted by them. I’m still hopeful we can get back to being a place we’re proud to work but it has been a hard year.

I was also troubled by the amount of time I was glued to my phone. With a constant stream of worldwide drama: bush fires and impeachment and a pandemic and elections – and the addictive nature of an infinitely scrolling social media feed – I spent way too much time staring at my phone (after being on my laptop 8hrs a day for work). Most weeks I’d have an average daily screen-time use of between 1-2hrs. I am troubled that it’s so addictive I do this even while hanging out with my kids. And I’m troubled by the opportunity cost – I don’t have time for friendships, for writing, for reading, for richer things, because of this.

I read this reading from Thomas Merton on December 31st 2020 in “Watch for the light”, and it felt like a perfect description of my addiction to the new news in this eventful year.

Nor are the tidings of great joy announced in the crowded inn. In the massed crowd there are always new tidings of joy and disaster. Where each new announcement is the greatest of announcements, where every day’s disaster is beyond compare, every day’s danger demands the ultimate sacrifice, all news and all judgement is reduced to zero. News becomes merely a new noise in the mind, briefly replacing the noise that went before it and yielding to the noise that comes after it, so that eventually everything blends into the same monotonous and meaningless rumor. News? There is so much news that there is no room left for the true tidings, the “Good News,” the great joy.

Thomas Merton. From Raids on the Unspeakable, 1966.

One way of bringing together all of these challenges: I live a comfortable life in an uncomfortable world. I benefit from a mix of luck and hard work and systematic privilege. And I’ve become more aware of that privilege this year. And seeing the sharp contrast between my comfort and a world in pain can be… challenging. Am I doing enough to change things? Am I there for those who need me? Am I even there for those I consider friends? Is my busyness (from work) and mind cluttered-ness (from screen time) numbing my willingness to see, and to act? Is this just part of the early-parenting stage of life? How might I get less comfortable? How might I do less sympathising and more compassion, more help? Can I love “the storm drenched“? These thoughts have been building into a challenge to myself.

Where did I pause?

I’m glad to have explicitly worked on some spiritual practices that led me to pause. The few minutes of savasana at the end of yoga, a nightly “examen” to pause and reflect, setting aside Sunday as a Sabbath day of ceasing and rest and worship, and this book of readings through Advent. None of them I followed perfectly or consistently, but between them, I did learn to pause. For longer breaks, I only took one small holiday this year, but it was a good one for pausing: in a cabin on the edge of a Karri Forest in Margaret River.

A view of the sun rising over a hill lined with tall Karri trees.
This was looking at the window one morning during our holiday stay in Margaret River.

Where did I find God in all of this?

I’ve found God in little ways, new ways, this year. As my image of God becomes less “in heaven above” and more “over all and through all and in all” I’m adjusting where I expect to find God. Less often in a religious service or book. More often in people. Or in nature. Or in silence. A new little life. The night sky. Someone willing to give up their health and freedom-of-movement to be a COVID-19 chaplain. The support from family in a time of need. Nursing a newborn in the middle of the night. And then sometimes still in the services and books from before.

Most days that I prayed the Examen, I found the Spirit of God somewhere in the day. It was usually subtle.

Response

In light of my review, what is my response to the God of my life?

From “The Examen: A Daily Prayer” via Xavier University

I’m going to leave this out, keep it private.

A Look Ahead

As I look ahead, what comes to mind?

With what spirit do I want to enter the coming year?

From “The Examen: A Daily Prayer” via Xavier University

The big thing in my mind is 2021 will be us parenting a newborn and a two year old – we’re not sure how we’ll balance it! As well as that I’ve got some challenges and opportunities at work (some predictable, some not), I’ve got friendships I want to strengthen, I want to keep seeking spiritual community, and I want to get some counselling to work through some of my challenges mentioned above. There’s a lot to do.

But in all of that, the spirit I want to carry, is one of having space. Creating space, and expectation, waiting to find the moments where the Spirit of God might interrupt my days. To notice the places where grace appears. Or to be willing to look on the places where inequality and injustice still dominates. Leaving capacity in my days and in my task list to look beyond my own concerns and to see the need of others, and rather than looking away, finding ways to partner with the Spirit of God to bring grace into the world. To live the kind of life that brings both justice and peace.

It’s hard to do that when rushing between zoom calls and filling spare moments with social media feeds. I want space to notice where God is at work and where grace is forming, and I want space and energy to join in and be part of it. Be that in my family, in my work, in my friendships, or the wider world.

Categories
Haxe

Requiring a Class argument to have a certain constructor signiature

Haxe has a very powerful reflection API, allowing you to create objects of a class, which you don’t know until runtime.

var u:User = Type.createInstance(User, [“jason”,”mypass”]);
u.save();

Sometimes, you have a method where you want to create a class, but which class is created is specified by the user:

function createUser( cls:Class<User>, u:String, p:String ) {

var u:User = Type.createInstance( cls, [u,p]);
u.save();

}
createUser( StaffMember, “jack”, “mypass” );
createUser( Subscriber, “aaron”, “mypass” );

So far so good.  But what if we have a 3rd user class, “Moderator”, that actually has a constructor that requires 3 arguments, not just the username and password.

createUser( Moderator, “bernadette”, “mypass” );

This compiles okay, but will fail at runtime – it tries to call the constructor for Moderator with 2 arguments, but 3 are required.

My first thought was, can we use an interface and specify the constructor:

interface IUser {

public function new( user:String, pass:String ):Void

}

Sadly in Haxe, an interface cannot define the constructor.  I’m pretty sure the reason for this is to avoid you creating an object with no idea which implementation you are using.  Now that would work for reflection, but wouldn’t make sense for normal object oriented programming:

function createUser( cls:Class<IUser>, u:String, p:String ) {

var u:IUser = new cls(u,p); // What implementation does this use?

}

So it can’t be interfaces… what does work?  Typedefs:

typedef ConstructableUser = {
function new( u:String, p:String ):Void,
function save():Void
}

And then we can use it like so:

function createUser( cls:Class<ConstructableUser>, u:String, p:String ) {

var u:ConstructableUser = Type.createInstance( cls, [u,p]);
u.save();

}
createUser( StaffMember, “jack”, “mypass” );
createUser( Subscriber, “aaron”, “mypass” );
createUser( Moderator, “bernadette”, “mypass” ); // ERROR – Moderator should be ConstructableUser

In honesty I was surprised that “Class<SomeTypedef>” worked, but I’m glad it does.  It provides a good mix of compile time safety and runtime reflection.  Go Haxe!

Categories
Faith Justice and Politics Personal

Cowards

“All right, but let the one who has never sinned throw the first stone!” Then he stooped down again and wrote in the dust.

When the accusers heard this, they slipped away one by one, beginning with the oldest, until only Jesus was left in the middle of the crowd with the woman.

I used to notice 3 groups here: the accusers, the accused, the defender. I had a hard time imagining which group I would realistically fall into.

I’m not often confronted and threatened for my errors, I’m not the sort to condemn others for theirs either. Yet I usually lack the courage to defend the accused and stand up to the crowd, so I can’t honestly group myself with Jesus in this story.

I guess I fit with the group I never noticed before today: the onlookers. The crowd, drawn into the drama, not sure of what they think, but afraid to speak up, lest they say something wrong and find themselves the new target of the accusers.