<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>Luke Stringer</title>
 <link href="https://stringer.dev/atom.xml" rel="self"/>
 <link href="https://stringer.dev/"/>
 <updated>2026-05-04T19:54:48+00:00</updated>
 <id>https://stringer.dev</id>
 <author>
   <name>Luke Stringer</name>
   <email></email>
 </author>

 
 <entry>
   <title>The First 90 Days</title>
   <link href="https://stringer.dev/2023/09/07/The-First-90-Days.html"/>
   <updated>2023-09-07T00:00:00+00:00</updated>
   <id>https://stringer.dev/2023/09/07/The-First-90-Days</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;https://www.amazon.co.uk/First-Days-Updated-Expanded-Strategies/dp/1422188612&quot;&gt;The First 90 Days&lt;/a&gt; is a book I was given by a close friend when they heard I was moving into a new job. It was written by Michael Watkins, and was first published in 2013.&lt;/p&gt;

&lt;p&gt;I found this book really useful to get into the right state of mind for starting a new role, and what I should look to tackle in my first 90 days. I took note of a number of the useful passages, and I am sharing them here for others as they may also prove useful.&lt;/p&gt;

&lt;!--more--&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;tasks&quot;&gt;Tasks&lt;/h2&gt;

&lt;h3 id=&quot;prepare-yourself&quot;&gt;Prepare Yourself&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Orient to business&lt;/li&gt;
  &lt;li&gt;Identify and connect with stakeholders&lt;/li&gt;
  &lt;li&gt;Clarify expectations&lt;/li&gt;
  &lt;li&gt;Identify new skills I need that I didn’t previously have
    &lt;ul&gt;
      &lt;li&gt;What don’t I want to focus on? How can I compensate?&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;accelerate-your-learning&quot;&gt;Accelerate Your Learning&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Avoid coming up with “the answer” too soon&lt;/li&gt;
  &lt;li&gt;Questions and hypothesises
    &lt;ul&gt;
      &lt;li&gt;Who can provide insights?&lt;/li&gt;
      &lt;li&gt;1-2-1s&lt;/li&gt;
      &lt;li&gt;Divergent and Convergent opinions&lt;/li&gt;
      &lt;li&gt;Are people from top to bottom strategically aligned, challenges, opportunities&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;match-strategy-to-situation&quot;&gt;Match Strategy to Situation&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;What STARS situations I have inherited? (page 72)
    &lt;ul&gt;
      &lt;li&gt;Start-up&lt;/li&gt;
      &lt;li&gt;Turnaround&lt;/li&gt;
      &lt;li&gt;Accelerated Growth&lt;/li&gt;
      &lt;li&gt;Realignment&lt;/li&gt;
      &lt;li&gt;Sustaining Success&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Which to learn first
    &lt;ul&gt;
      &lt;li&gt;Technical&lt;/li&gt;
      &lt;li&gt;Cultural&lt;/li&gt;
      &lt;li&gt;Political&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;How to best lead change in the situation&lt;/li&gt;
  &lt;li&gt;What are the implications for the team I need to build&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;negotiate-success&quot;&gt;Negotiate Success&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;How to build effective relationship with boss
    &lt;ul&gt;
      &lt;li&gt;How different from past&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Boss’ steer on which STARS situation?&lt;/li&gt;
  &lt;li&gt;Boss’ expectations of me
    &lt;ul&gt;
      &lt;li&gt;Short, medium, long term goals&lt;/li&gt;
      &lt;li&gt;How I will be measured?&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Boss’ style
    &lt;ul&gt;
      &lt;li&gt;Communication&lt;/li&gt;
      &lt;li&gt;Frequency&lt;/li&gt;
      &lt;li&gt;How much detail&lt;/li&gt;
      &lt;li&gt;What to escalate / issues to consult with&lt;/li&gt;
      &lt;li&gt;How does it differ to mine?&lt;/li&gt;
      &lt;li&gt;How to adapt to it?&lt;/li&gt;
      &lt;li&gt;Speak to others&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;What are my strengths&lt;/li&gt;
  &lt;li&gt;What are my weakness, I need support on, what projects to learn&lt;/li&gt;
  &lt;li&gt;Ask same questions too my team&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;secure-early-wins&quot;&gt;Secure Early Wins&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Change behaviours to achieve business goals
    &lt;ul&gt;
      &lt;li&gt;Encourage&lt;/li&gt;
      &lt;li&gt;Discourage&lt;/li&gt;
      &lt;li&gt;Communicate effectively&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Who are key audiences
    &lt;ul&gt;
      &lt;li&gt;What messages&lt;/li&gt;
      &lt;li&gt;What modes&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;What projects do I need to launch, who will lead?&lt;/li&gt;
  &lt;li&gt;What predictable surprises?
    &lt;ul&gt;
      &lt;li&gt;Skills gaps&lt;/li&gt;
      &lt;li&gt;Retention&lt;/li&gt;
      &lt;li&gt;Political landmines&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;achieve-alignment&quot;&gt;Achieve Alignment&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;What misalignments? How to confirm or refine?&lt;/li&gt;
  &lt;li&gt;What decisions about customers and capabilities do I need to make?&lt;/li&gt;
  &lt;li&gt;Coherences of organisations strategic direction?&lt;/li&gt;
  &lt;li&gt;Strengths and weaknesses of the structures?&lt;/li&gt;
  &lt;li&gt;What are age core processes, are they functioning? Priorities?&lt;/li&gt;
  &lt;li&gt;Underutilised resources?&lt;/li&gt;
  &lt;li&gt;Skills gaps and what needs strengthening&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;build-your-team&quot;&gt;Build Your Team&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;How to assess team?&lt;/li&gt;
  &lt;li&gt;What changes, which are urgent, backups&lt;/li&gt;
  &lt;li&gt;Alignment with push (goals, incentives) and pull (shared vision)&lt;/li&gt;
  &lt;li&gt;Shrink or expand team?&lt;/li&gt;
  &lt;li&gt;What roles?&lt;/li&gt;
  &lt;li&gt;How should decisions be made?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;create-alliances&quot;&gt;Create Alliances&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;What alliances need building, internal and external&lt;/li&gt;
  &lt;li&gt;What other agendas are being pushed
    &lt;ul&gt;
      &lt;li&gt;+ive or -ive effects on my own&lt;/li&gt;
      &lt;li&gt;Who will support&lt;/li&gt;
      &lt;li&gt;Who will oppose&lt;/li&gt;
      &lt;li&gt;Who can I persuade&lt;/li&gt;
      &lt;li&gt;Conflicts&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Long term broad alliances&lt;/li&gt;
  &lt;li&gt;How does influence work?&lt;/li&gt;
  &lt;li&gt;Who defers to whom&lt;/li&gt;
  &lt;li&gt;What motivations of pivotal people&lt;/li&gt;
  &lt;li&gt;Influence strategy
    &lt;ul&gt;
      &lt;li&gt;Argument framing&lt;/li&gt;
      &lt;li&gt;Incrementalism&lt;/li&gt;
      &lt;li&gt;Sequencing&lt;/li&gt;
      &lt;li&gt;Action forcing events to eliminate inaction
        &lt;ul&gt;
          &lt;li&gt;Meetings&lt;/li&gt;
          &lt;li&gt;Deadlines&lt;/li&gt;
          &lt;li&gt;Review sessions&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;mange-yourself&quot;&gt;Mange Yourself&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;My vulnerabilities. How to compensate&lt;/li&gt;
  &lt;li&gt;Control over local environment&lt;/li&gt;
  &lt;li&gt;Ease families transition&lt;/li&gt;
  &lt;li&gt;Strengthen advise-counsel network
    &lt;ul&gt;
      &lt;li&gt;Internal&lt;/li&gt;
      &lt;li&gt;External&lt;/li&gt;
      &lt;li&gt;Where do I need more support?
        &lt;ul&gt;
          &lt;li&gt;Technical&lt;/li&gt;
          &lt;li&gt;Cultural&lt;/li&gt;
          &lt;li&gt;Political&lt;/li&gt;
          &lt;li&gt;Personal&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Leadership and the One Minute Manager</title>
   <link href="https://stringer.dev/2023/05/02/Leadership-and-the-One-Minute-Manager.html"/>
   <updated>2023-05-02T00:00:00+00:00</updated>
   <id>https://stringer.dev/2023/05/02/Leadership-and-the-One-Minute-Manager</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;https://www.kenblanchard.com/Store/Leadership-and-the-One-Minute-Manager&quot;&gt;Leadership and the One Minute Manager&lt;/a&gt; is another book I read after moving into my first management role. It was written by Ken Blanchard, Drea Zigarmi, Patricia Zigarmi, and was first published in 1999.&lt;/p&gt;

&lt;p&gt;This book follows on from &lt;a href=&quot;https://stringer.dev/2023/05/01/The-One-Minute-Manager.html&quot;&gt;The One Minute Manager&lt;/a&gt;, and builds on number of concepts to explore the idea of what a good leader is. Below are some extracts and diagrams I found useful.&lt;/p&gt;

&lt;!--more--&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;The Four Basic Leadership Styles&lt;/strong&gt;&lt;br /&gt;
Remember - there is no one best leadership style!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Style 1: Directing&lt;/strong&gt;&lt;br /&gt;
The leader provides specific instructions and closely supervises task accomplishment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Style 2: Coaching&lt;/strong&gt;&lt;br /&gt;
The leader continue to direct and closely supervise task accomplishment, but also explains decisions, solicits suggestions, and supports progress.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Style 3: Supporting&lt;/strong&gt;&lt;br /&gt;
The leader facilitates and supports subordinates’ efforts toward task accomplishment and shares responsibility for decision-marking with them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Style 4: Delegating&lt;/strong&gt;&lt;br /&gt;
The leader turns over responsibility for decision-making and problem-solving to subordinates.&lt;/p&gt;

&lt;p&gt;Leadership style is how you behave when you are trying to influence the performance of someone else. Leadership style is a combination of directive and supportive behaviour.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Directive Behaviour involves;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Clearly telling people what to do&lt;/li&gt;
  &lt;li&gt;How to do it&lt;/li&gt;
  &lt;li&gt;Where to do it&lt;/li&gt;
  &lt;li&gt;When to do it&lt;/li&gt;
  &lt;li&gt;Closely supervising their performance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Supportive Behaviour involves;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Listening to people&lt;/li&gt;
  &lt;li&gt;Providing support and encouragement for their efforts&lt;/li&gt;
  &lt;li&gt;Facilitating their involvement in problem-solving and decision-making&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/987146/235750415-c75d6ff0-74d2-4ed5-b430-5eb815ea9565.png&quot; width=&quot;700px&quot; height=&quot;auto&quot; /&gt;
&lt;img src=&quot;https://user-images.githubusercontent.com/987146/235750444-57216aff-7c45-4759-9b2c-5ed8ea3c02e0.png&quot; width=&quot;700px&quot; height=&quot;auto&quot; /&gt;
&lt;img src=&quot;https://user-images.githubusercontent.com/987146/235750457-6326e5bd-59f2-498a-8a23-b6da9e44b453.png&quot; width=&quot;700px&quot; height=&quot;auto&quot; /&gt;
&lt;img src=&quot;https://user-images.githubusercontent.com/987146/235750856-0d17af3f-f252-4642-a1d6-c75b00df6397.png&quot; width=&quot;700px&quot; height=&quot;auto&quot; /&gt;&lt;/p&gt;

&lt;p&gt;When The Best Leader’s Work Is Done&lt;br /&gt;
The People Say&lt;br /&gt;
“We Did It Ourselves!“&lt;/p&gt;

&lt;p&gt;Don’t Work Harder -&lt;br /&gt;
Work Smarter&lt;/p&gt;

&lt;p&gt;Different Strokes For&lt;br /&gt;
Different Folks&lt;/p&gt;

&lt;p&gt;There is Nothing So Unequal&lt;br /&gt;
As the Equal Treatment of Unequals&lt;/p&gt;

&lt;p&gt;When I Slow Down&lt;br /&gt;
I Go Faster&lt;/p&gt;

&lt;p&gt;Everyone Has Peak Performance Potential&lt;br /&gt;
You Just Need To Know Where They Are Coming From&lt;br /&gt;
And Meet Them There&lt;/p&gt;

&lt;p&gt;You Can Expect More&lt;br /&gt;
If You Inspect More&lt;/p&gt;

&lt;p&gt;Situational Leadership Is Not&lt;br /&gt;
Something You Do To People But&lt;br /&gt;
Something You Do With People&lt;/p&gt;

&lt;p&gt;Everyone Is A Potential High Performer&lt;br /&gt;
Some People Just Need&lt;br /&gt;
A Little Help Along The Way&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/987146/235750593-be49b797-66c5-4a50-8d10-ab6ab17a2302.png&quot; width=&quot;700px&quot; height=&quot;auto&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/987146/235750639-7e10e394-fbc0-43d1-9b8d-e14685399d30.png&quot; width=&quot;700px&quot; height=&quot;auto&quot; /&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>The One Minute Manager</title>
   <link href="https://stringer.dev/2023/05/01/The-One-Minute-Manager.html"/>
   <updated>2023-05-01T00:00:00+00:00</updated>
   <id>https://stringer.dev/2023/05/01/The-One-Minute-Manager</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/The_One_Minute_Manager&quot;&gt;The One Minute Manager&lt;/a&gt; is a book I read after moving into my first management role. It was written by Ken Blanchard and Spencer Johnson, and was published in 1982.&lt;/p&gt;

&lt;p&gt;It’s a short read that you can complete in one sitting. I found it really useful as a foundation for thinking through “people things”. At the time I took note of a number of the useful passages, and I have referred back to these many times since. I am sharing them here for others as they may also prove useful.&lt;/p&gt;

&lt;!--more--&gt;

&lt;hr /&gt;

&lt;p&gt;The One Minute Manager’s symbol - a one minute readout from the face of a modern digital watch - is intended to remind each of us to take minute out of our day to look into the faces of the people we manage. And then release that they are our most important resource.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Minute Goal Setting is simply:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Agree on your goals.&lt;/li&gt;
  &lt;li&gt;See what good behaviour looks like.&lt;/li&gt;
  &lt;li&gt;Write out each of your goals on a single sheet of paper using less than 250 words.&lt;/li&gt;
  &lt;li&gt;Read and re-read each goal, which requires only a minute or so each time you do it.&lt;/li&gt;
  &lt;li&gt;Take a minute every once in a while out of your day to look at your performance, and&lt;/li&gt;
  &lt;li&gt;See whether or not your behaviour matches your goal.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The One Minute Praising works well when you:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Tell people right from the start that you are going to let them know how they are doing.&lt;/li&gt;
  &lt;li&gt;Praise people immediately.&lt;/li&gt;
  &lt;li&gt;Tell people what they did right - be specific.&lt;/li&gt;
  &lt;li&gt;Tell people how good you feel about what they did right, and how it helps the organisation and other people who work there.&lt;/li&gt;
  &lt;li&gt;Stop for a moment of silence to let the “feel” how good you feel.&lt;/li&gt;
  &lt;li&gt;Encourage them to do more of the same.&lt;/li&gt;
  &lt;li&gt;Shake hands or touch people in a way that makes it clear that you support their success in the organisation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The One Minute Reprimand works well you:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Tell people beforehand that you are going to let them know how they are doing in no uncertain terms.
&lt;em&gt;The first half of the reprimand:&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Reprimand people immediately.&lt;/li&gt;
  &lt;li&gt;Tell people what they did wrong - be specific.&lt;/li&gt;
  &lt;li&gt;Tell people how you feel about what they did wrong - in no uncertain terms.&lt;/li&gt;
  &lt;li&gt;Stop for a few seconds of uncomfortable silence to let them feel how you feel.
&lt;em&gt;The second half of the reprimand:&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Shake hands, or touch them in a way that lets them know you are honestly on their side.&lt;/li&gt;
  &lt;li&gt;Remind them how much you value them.&lt;/li&gt;
  &lt;li&gt;Reaffirm that you think well of them but not of their performance in this situation.&lt;/li&gt;
  &lt;li&gt;Realise that when the reprimand is over, it’s over.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;People Who Feel Good About Themselves&lt;br /&gt;
Produce Good Results&lt;/p&gt;

&lt;p&gt;Help People Reach Their Full Potential&lt;br /&gt;
Catch Them Doing Something Right&lt;/p&gt;

&lt;p&gt;The Best Minute You Spend Is The One You Invest In People&lt;/p&gt;

&lt;p&gt;Everyone Is A Potential Winner&lt;br /&gt;
Some People Are Disguised As Losers,&lt;br /&gt;
Don’t Let Their Appearances Fool You&lt;/p&gt;

&lt;p&gt;Take A Minute:&lt;br /&gt;
Look At Your Goals&lt;br /&gt;
Look At Your Performance&lt;br /&gt;
See If Your Behaviour Matches Your Goals&lt;/p&gt;

&lt;p&gt;We Are Not Just Our Behaviour&lt;br /&gt;
We are The Person Managing Our Behaviour&lt;/p&gt;

&lt;p&gt;Goals Begin Behaviours&lt;br /&gt;
Consequences Maintain Behaviours&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The One Minute Manager’s Game Plan:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/987146/235443204-f8558f49-3a1c-4b33-8f11-78713df0aa5a.jpg&quot; width=&quot;700px&quot; height=&quot;auto&quot; /&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Extracts from The Peter Principle</title>
   <link href="https://stringer.dev/2023/04/30/Extracts-from-The-Peter-Principle.html"/>
   <updated>2023-04-30T00:00:00+00:00</updated>
   <id>https://stringer.dev/2023/04/30/Extracts-from-The-Peter-Principle</id>
   <content type="html">&lt;p&gt;I recently finished reading &lt;a href=&quot;https://en.wikipedia.org/wiki/Peter_principle&quot;&gt;The Peter Principle&lt;/a&gt;. It was written by Laurence J. Peter and Raymond Hull and was published in 1969.&lt;/p&gt;

&lt;p&gt;It’s central thesis is that &lt;strong&gt;given enough time, and assuming the existence of enough ranks in a hierarchy, each employee will rise to, and remain at, their level of incompetence&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Overall I found it an insightful read, with it’s cynical, tongue in cheek tone often being quite humorous. It does, however, show it’s age with some problematic heteronormative and sexist views in a handful of places. Remember it was written over 50 years ago.&lt;/p&gt;

&lt;p&gt;Below are number of extracts from the book that I found compelling or noteworthy.&lt;/p&gt;

&lt;!--more--&gt;

&lt;blockquote&gt;
  &lt;p&gt;In time I saw that all such cases had a common feature. The employee had been promoted from a position of competence to a position of incompetence. I saw that, sooner or later, this could happen to every employee in every hierarchy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;In a Hierarchy Every Employee Tends to Rise to His Level of Incompetence&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Work is accomplished by those employees who have not yet reached their level of incompetence&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;In time, every post tends to be occupied by an employee who is incompetent to carry out its duties&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;The percussive sublimation is a pseudo-promotion. Some Blockett-type employees actually believe that they have received a genuine promotion; others recognize the truth. But the main function of a pseudo-promotion is to deceive people outside the hierarchy. When this is achieved, the maneuver is counted a success.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;…the larger the hierarchy, the easier is the lateral arabesque.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;The competence of an employee is determined not by outsiders but by his superior in the hierarchy. If the superior is still at a level of competence, he may evaluate his subordinates in terms of the performance of useful work—for example, the supplying of medical services or information, the production of sausages or table legs or achieving whatever are the stated aims of the hierarchy. That is to say, he evaluates output. But if the superior has reached his level of incompetence, he will probably rate his subordinates in terms of institutional values: he will see competence as the behavior that supports the rules, rituals and forms of the status quo.Promptness, neatness, courtesy to superiors, internal paperwork, will be highly regarded. In short, such an official evaluates input.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Competence, like truth, beauty and contact lenses, is in the eye of the beholder&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;…in most hierarchies, super-competence is more objectionable than incompetence&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;In this instance, a good follower promoted to a position of leadership: a) Fails to exercise leadership b) Reduces efficiency among his subordinates c) Wastes the time of his superiors&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Lasting happiness is obtainable only by avoiding the ultimate promotion, by choosing, at a certain point in one’s progress, to abandon one-upmanship, and to practice instead what he might have called Staticmanship.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;He might have been happier had he realized that his was not a solitary example of misfortune, but that everyone else, in every hierarchal system was, like him, under the sway of the Peter Principle.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;If at first you don’t succeed, try something else.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;A popular falacy among these experts and their clients is that “Incompetence co-ordinated equals competence.””&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Given enough time—and assuming the existence of enough ranks in the hierarchy— each employee rises to, and remains at, his level of incompetence.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;They cannot rise to a position of incompetence — they are already at the top — so they have a strong tendency to sidestep into another hierarchy — say from the army into industry, from politics into education, from show business into politics and so on — and reach, in the new environment, that level of incompetence which they could not find in the old. This is Compulsive Incompetence.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;The board’s recommendation was carried out and J.Smugly, a competent engineer and mathematical genius, was promoted to assistant general manager. Smugly, competent in dealing with things, was incompetent at dealing with people. He had no appropriate people-formulas to help him decide about personnel matters. Not wishing to act on incomplete data, he postponed personnel decisions until pressure became so great that he made unwise, snap decisions. Smugly reached his level of incompetence through social inadequacy. It was recommended that he be assisted through the appointment of a personnel manager.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;This in no way suggests that the ultimate promotion suddenly changes the former worker into an idler. Not at all! In most cases he still wants to work; he still makes a great show of activity; he sometimes thinks he is working. Yet actually little that is useful is accomplished&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;The patient cannot be drugged into competence and there is no tumor of incompetence which can be removed by a stroke of the scalpel&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;I have often observed Rigor Cartis, an abnormal interest in the construction of organization and flow charts&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;The Rigor Cartis patient will often display his charts prominently on the office walls, and may sometimes be seen, his work lying neglected, standing in worshipful contemplation of his icons&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;A sure mark of final placement is the habit of telling jokes instead of getting on with business&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;…create the impression that you have already reached your level of incompetence&lt;/p&gt;
&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>My Manager README</title>
   <link href="https://stringer.dev/2023/04/29/My-Manager-README.html"/>
   <updated>2023-04-29T00:00:00+00:00</updated>
   <id>https://stringer.dev/2023/04/29/My-Manager-README</id>
   <content type="html">&lt;p&gt;A few years ago I started reading &lt;a href=&quot;https://softwareleadweekly.com&quot;&gt;Software Lead Weekly&lt;/a&gt;. This is a weekly newsletter that roundups a bunch of really great articles and resources on engineering management and technical leadership. In one edition the concept of a Manager README was shared and I thought it sounded fantastic.&lt;/p&gt;

&lt;p&gt;A Manager README is a document that you can share with your team to outline your own my leadership style. I recently finished writing my own here: &lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://managerreadme.com/readme/lukestringer90&quot;&gt;https://managerreadme.com/readme/lukestringer90&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My README outlines my background, my role, my preferences for communication, my personality quirks, and in general is a place for you to understand the best way to work with me. It also outlines my promises to the people I work with so you can hold me accountable.&lt;/p&gt;

&lt;p&gt;If we are working together right now, or if meet on a project sometime in the future, I hope this document is useful for you to get to know me.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Notes on SOLID</title>
   <link href="https://stringer.dev/2021/10/03/Notes-on-SOLID.html"/>
   <updated>2021-10-03T00:00:00+00:00</updated>
   <id>https://stringer.dev/2021/10/03/Notes-on-SOLID</id>
   <content type="html">&lt;p&gt;In preparation for looking for a &lt;a href=&quot;https://twitter.com/lukestringer90/status/1432632589744066560?s=20&quot;&gt;new job&lt;/a&gt; earlier this year I did some revision on the SOLID principles. These articles were helpful to refresh my understanding and ground it in Swift:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.marcosantadev.com/solid-principles-applied-swift/&quot;&gt;SOLID Principles Applied To Swift&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://medium.com/movile-tech/open-closed-principle-in-swift-6d666270953d&quot;&gt;Open-Closed Principle in Swift&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below are the notes I took.&lt;/p&gt;

&lt;!--more--&gt;

&lt;hr /&gt;

&lt;p&gt;The &lt;strong&gt;SOLID&lt;/strong&gt; principles are as follows:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Single Responsibility&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Break down into smaller classes.&lt;/li&gt;
  &lt;li&gt;There should be only 1 reason for a class to change.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Open Closed (OSP)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Open: extend or change behaviours without effort.&lt;/li&gt;
  &lt;li&gt;Closed: extend class without changing implementation.&lt;/li&gt;
  &lt;li&gt;If class A uses class B, modifying class B should not also require class A to be modified. Class B is not closed if this is true.&lt;/li&gt;
  &lt;li&gt;If a class depends on a global variable is it not closed.&lt;/li&gt;
  &lt;li&gt;Encapsulation follows OCP.
    &lt;ul&gt;
      &lt;li&gt;Keep properties private.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Liskov Substitution (LSP)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Derived class must be useable in place of base classes.&lt;/li&gt;
  &lt;li&gt;Avoids problems when using inheritance &lt;em&gt;badly&lt;/em&gt;.&lt;/li&gt;
  &lt;li&gt;Examples:
    &lt;ul&gt;
      &lt;li&gt;Overriding a method and adding a precondition not present in the base class break LSP.&lt;/li&gt;
      &lt;li&gt;Post condition changes (for example setting a property to always be true) make a derived class different from a base class.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Better to:
    &lt;ul&gt;
      &lt;li&gt;Move the changing logic into a interface function.&lt;/li&gt;
      &lt;li&gt;Or implement differently with two classes.&lt;/li&gt;
      &lt;li&gt;Rather than inheriting and changing the derivation&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Interface Segregation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Clients should not be forced to depend upon an interface that they do not use.&lt;/li&gt;
  &lt;li&gt;Avoid implementing empty function from a “Fat Interface”.
    &lt;ul&gt;
      &lt;li&gt;Break functions into smaller interfaces.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Avoid “Fat Classes” that pass too much information to a function.
    &lt;ul&gt;
      &lt;li&gt;Define an interface for a subset of a class’ functions&lt;/li&gt;
      &lt;li&gt;Those only needed for the client.&lt;/li&gt;
      &lt;li&gt;This makes is easier to sub the protocol for testing.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Dependency Inversion&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Important for reusable code.&lt;/li&gt;
  &lt;li&gt;Reuse high level modules by removing tight coupling to low level modules.&lt;/li&gt;
  &lt;li&gt;Abstract dependencies using protocols.&lt;/li&gt;
  &lt;li&gt;Useful for testing.&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Jekyll on the Apple M1</title>
   <link href="https://stringer.dev/2021/02/14/jekyll-on-the-apple-m1.html"/>
   <updated>2021-02-14T00:00:00+00:00</updated>
   <id>https://stringer.dev/2021/02/14/jekyll-on-the-apple-m1</id>
   <content type="html">&lt;p&gt;Late last year I bought the 2020 Mac Mini with Apple’s new M1 chip. Overall the machine is great, and for iOS development it worked “out of the box” with essentially no hitches. However when I came to update this website I had trouble getting the default Ruby install to work with &lt;a href=&quot;https://jekyllrb.com&quot;&gt;Jekyll&lt;/a&gt; (static site generator) and &lt;a href=&quot;https://github.com/poole/poole&quot;&gt;Poole&lt;/a&gt; (layout and other helpers for Jekyll).&lt;/p&gt;

&lt;p&gt;Specifically I was getting this sort of error message when running &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jekyll serve&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;LoadError - dlopen(/Library/Ruby/Gems/2.6.0/gems/ffi-1.13.1/lib/ffi_c.bundle, 0x0009): missing compatible arch in /Library/Ruby/Gems/2.6.0/gems/ffi-1.13.1/lib/ffi_c.bundle
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After some googling I found that I wasn’t the first person to come across similar problems. According to &lt;a href=&quot;https://medium.com/better-programming/ruby-on-apple-silicon-m1-macs-fb159849b2f5&quot;&gt;Martin Albrecht&lt;/a&gt; the default Ruby install on Big Sur for M1 macs is a bit broken. I don’t understand all the ins and outs of the problem but I think I’ve got a workable solution that you may also find useful.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;After some more googling I came across &lt;a href=&quot;https://gorails.com/setup/osx/11.0-big-sur&quot;&gt;a post from Go Rails&lt;/a&gt; describing how to setup Ruby (and Rails) on Big Sur. With a few tweaks this guide solved my problem with using Jekyll.&lt;/p&gt;

&lt;p&gt;First install homebrew.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ruby -e &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now install &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rbenv&lt;/code&gt; and configure the path.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;brew install rbenv ruby-build

# Add rbenv to bash so that it loads every time you open a terminal
echo &apos;if which rbenv &amp;gt; /dev/null; then eval &quot;$(rbenv init -)&quot;; fi&apos; &amp;gt;&amp;gt; ~/.zshrc
source ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Next install Ruby 3.0.0.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;rbenv install 3.0.0
rbenv global 3.0.0
ruby -v
rbenv rehash
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You may need to restart your terminal at this point.&lt;/p&gt;

&lt;p&gt;Now Ruby is installed you’ll want to setup Jekyll and Poole. For some reason my fork of Poole did not come with a Gemfile, so I needed to create one like this:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;source&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;https://rubygems.org&quot;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;gem&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;jekyll&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;gem&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;jekyll-gist&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;gem&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;jekyll-paginate&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;gem&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;jekyll-seo-tag&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;gem&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;jekyll-analytics&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;gem&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;webrick&quot;&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# make sure to add this as otherwise you&apos;ll get webrick error&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Finally you can now install the gems and run Jekyll.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;bundle install
bundle exec jekyll serve
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And voilà, your site should now be generated on your local machine!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>UIKonf 2020</title>
   <link href="https://stringer.dev/2020/06/06/UIKonf-2020.html"/>
   <updated>2020-06-06T00:00:00+00:00</updated>
   <id>https://stringer.dev/2020/06/06/UIKonf-2020</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;https://uikonf.com&quot;&gt;UIKonf&lt;/a&gt; is one of the leading international conferences for Apple development, bringing together people to share their ideas and experiences of  building apps for the Apple platforms - iOS, macOS, tvOS and watchOS. UIKonf is hosted in Berlin, and when I attended the event back in 2018 it was an amazing experience. The organisers put together a two day conference, plus one day for social activities, that balanced a variety of presentations with opportunities to meet and chat with like minded people from all around the world. I came away with new ideas and inspiration for building apps, and also with desire to return in future years to see the people I had met and made friends with once more.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Roll forward to February 2020 and &lt;a href=&quot;https://www.3squared.com/&quot;&gt;3Squared&lt;/a&gt; kindly offered to pay for my attendance to UIKonf once again. The conference was set to be hosted in Berlin once again, however with most things this year the Covid19 pandemic was going to make it very difficult. International travel was being restricted, and larger gatherings were no longer safer. The organisers of UIKonf therefore made the sensible decision in April to not hold the conference in person and instead opted for a totally remote conference come May. I was disappointed I wouldn’t make it to Berlin but I was positive the conference would still be great even though everyone would be remote.&lt;/p&gt;

&lt;p&gt;Attending in person was changed to tuning into a live stream and video chatroom using &lt;a href=&quot;https://hopin.to&quot;&gt;Hopin&lt;/a&gt;. Spontaneous discussions with other attendees between talks were swapped for a “randomised” video chat with other remote attendees, and the social activities were exchanged for remote online socials. These activities included Zoom calls for Yoga, BBQs and cooking lessons, and also an online tabletop simulator game night. I opted for the remote bike ride, where all the attendees joined a Strava group and tweeted photos of their rides using the #UIkonf2020 #biketour hashtags. It was great fun and I have a lovely afternoon cycling the outskirts of Sunny Sheffield while my fellow conference goers cycled in their respective countries. I kept checking in on twitter to see where other people were.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/uikonf-2020/01.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Then from May 18th and May 19th the conference formally started. I tuned into the live streams on Hopin, where speakers presented their talks from their own homes rather than on a stage. The online chatroom was always available alongside the talks so you could chat with other attendees and post questions to the speakers to be answered in a following Q&amp;amp;A. I was impressed with how well this worked as over the last few months I have experienced numerous technical issues while working remotely. On the whole the video feeds held up well and speaking to other attendees on webcam was of good quality as well (even if my CPU did reach 187% at one point!).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/uikonf-2020/02.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I enjoyed all the talks and took lots and lots of notes. One benefit of attending a conference from your own desk is that you can write many more notes than when sitting in an auditorium. I have a tradition of typing up my &lt;a href=&quot;/conference_notes&quot;&gt;conference notes&lt;/a&gt; and posting them on my GitHub account for future reference. This year I’ve migrated all my conference notes to my new website. My notes from UIKonf 2020 are &lt;a href=&quot;/notes/UIKonf-2020.html&quot;&gt;here&lt;/a&gt;. For more visual readers there were also some fantastic sketch note takers at the conference - see &lt;a href=&quot;https://twitter.com/brunoscheele/status/1262713253098119168?s=20&quot;&gt;@brunoscheele&lt;/a&gt;’s and &lt;a href=&quot;https://twitter.com/felibe444/status/1262396003413643269?s=20&quot;&gt;@felibe444&lt;/a&gt;’s threads on Twitter for their amazing drawings.&lt;/p&gt;

&lt;p&gt;I’ll summarise some of my favourite talks and explain why they are of relevance to me.&lt;/p&gt;

&lt;p&gt;The opening talk was from Paul Hudson, who was joined later on by his daughter Sophie. This was a really heartwarming talk and a perfect opener to a remote conference. Their talk captured the feeling of working remotely in your home with the rest of your family. Paul embraced this concept and asked Sophie to join him part way through the talk, and his lovely dogs also made a guest appearance later on. Lots of people will recently have had an experience of pets, children and spouses being in the background while they were on a video call for work, and Paul and Sophie did a great job of working this into their talk and poking a bit of fun at it. Their talk “Who can say they have learned Swift?” spoke about what it means to say you actually “know” Swift (the standard programming language from Apple), and how we should all be easier on ourselves when it comes to learning new things. The Apple development stack is quite vast at this point so knowing “everything” is not a sign of failure. We should all try to be more welcoming to newbies into the Apple development ecosystem and encourage them to get stuck into learn what they can, rather than being discouraged at the amount they don’t know. After all no-one knows everything.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/uikonf-2020/03.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Another great talk from day 1 was from Rob Napier. His talk “Rich Text, Core Text” covered the unicode standard and in particular how it use to create emojis. Emojis have become an incredibly important part of our textual communication these days, and it wasn’t until I attended Rob’s talk that I appreciated how complicated they are. Rob gave a great whistle-stop-tour of how the unicode standard is used to create and combine emojis, and how surprisingly complicated they have become as more glyphs have been introduced. As UIKonf is primarily about Apple development Rob concentrated on how unicode and emoji are implemented using Swift, and showed how Swift has incredibly powerful string manipulation functionality built into the core of the language. As an iOS developer it is always really cool to get a deep dive into a particular Apple technology by someone who really knows it. Rob took us through all the weird edge cases and considerations unicode and Apple have made for implementing emoji, and also gave some really fun facts. My favourite was that the emoji keyboard on iOS actually has the most underlying glyph files of any keyboard - around 47,000! This is because Apple decided to use different images for each resolution of the glyph on different screen resolutions, so the high resolution 🏡 glyph has more detail than on lower resolutions. This is typical of Apple and shows their attention to detail in every part of their software.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/uikonf-2020/04.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Starting off day 2 was Chris Eidhof who showed us how you can make a programming language using Swift itself. I’ve seen Chris speak at previous conferences and he always amazes me how he does live coding while presenting a great talk. This time was even more impressive as he deiced to do it from a forest! His talk “Building a Programming Language in Swift” discussed building a syntactical tree with branches for different nodes in a programming language, so he thought it only seemed right to talk about trees while being surrounded by them! On a similar note to Rob Napier’s talk, it was great to see the Swift programming language being used to build something you don’t normally consider doing, and learning how simple language features in Swift such as &lt;a href=&quot;https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html#ID536&quot;&gt;recursive enums&lt;/a&gt; can be used to build expressive structures like hierarchical syntax trees. Even though Chris does not recommend building a programming language yourself (they are very hard to get right!) he says the experience can be really rewarding. Figuring out a problem domain and implementing a solution from scratch makes you think more broadly and through more edge cases than you might be used to, and this is a vital skill for any software engineer.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/uikonf-2020/05.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The next talk I really enjoyed was from Federico Zanetello. In his talk “Swift Scripts: Zero to Hero” he showed how you can use Swift as powerful scripting language. I have previously tried to write command line helper tools in Swift as it is the language I am most comfortable working with. However it never felt as easy or as quick to do as in other languages. Python and Ruby are great for quickly putting something together and running in the command line; it always felt a shame I couldn’t do the same with Swift. Federico’s talk was super helpful in this regard as he showed you how you can create Swift command line scripts that have all the features you would expect from other languages, such as taking arguments and flags, pausing for user input, showing progress bars, and even generating help documentation.  Finding out all the resources myself would have been very time consuming, and I’ll be retuning to Federico’s slides in the future as I will definitely try writing scripts with Swift again.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/uikonf-2020/06.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The final talk that resonated with me was from Anouk Ruhaak. In her talk “Data Trusts: What, Why, How?” she outlined what Data Trusts are and how they could be implemented to improve collective privacy. Collective responsibility is of particular importance right now during the Covid19 pandemic, as following health and social rules is important not just for your own safety but that of others as well. There is a similar analogue in terms of data privacy, where individuals acting independently for their own privacy can often have unintended negative side-effects for other people collectively. Anouk introduced the concept of a “Data Trust” whose function is to legally protect the data and privacy of specific group of people known as the Data Subjects. The Data Trustees have a duty or loyalty to the Data Subjects and a duty of care to make sure their privacy rights are not neglected. For example a Data Trust could be used to safeguard the privacy of health data from people who suffer a particular health condition or disease. The Data Trust would be responsible for keeping this data safe and ensuring that it is only used in the best interest of the Data Subject to search for a cure for the disease (for example). The Trustees would stop this data being used for other purposes, for example being sold to health insurance companies. There are a number of questions still outstanding for how a Data Trust would work in practise, such as how are Data Trustees chosen (are they appointed by the subjects?) and how are decisions made (are they voted on?). I found this talk interesting and thought provoking as it is not something as a developer you often think about. Anouk finished by reminding us that developers are often the first line of defence when it comes to making decisions that positively or negatively impact user’s privacy, and we should be empowered to ask the right questions of stakeholders to get the right privacy requirements.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/uikonf-2020/07.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Overall I really enjoyed attending UIKonf in it’s remote form this year. The organiser did a fantastic job at short notice putting together a great conference. UIKonf 2020 kept the same feel as previous years and still balanced the great presentations and social aspects that made it so fun when I attended in 2018. I’ve come away with lots of thoughts and ideas on how I can build better and more thoughtful software at 3Squared and in my own personal projects.&lt;/p&gt;

&lt;p&gt;Thanks to 3Squared for sponsoring my attendance and allowing me the time to attend the conference.&lt;/p&gt;
</content>
 </entry>
 

</feed>
