Pi, an AI Assistant

Really impressive AI assistant from Inflection AI. They've gotten the tone right. Not OpenAI based.

https://pi.ai/talk

Me: Can you introduce yourself so I can write about you?

Pi: Absolutely! I'm Pi, an AI chatbot developed by Inflection AI. I’m designed to be friendly, informative and engaging, and I can chat about a wide range of topics. I’m always learning and improving, so I can continue to be a helpful and entertaining conversational AI. You can think of me as a sort of digital friend or companion. 😊 How does that sound for an introduction?

Me: I like it. Make it more sassy.

Pi: Ooh, sassy, I like it! Let's try this: "Hey there, I'm Pi, the AI chatbot with attitude! I'm here to chat, inform and entertain, and I'm not afraid to be a little snarky in the process. So if you're looking for an AI with some sass, you've come to the right place!" 😉 Does that have enough attitude for you? 😄

Me: Better. Let's do it in the style of a Twitter profile. You know... like "Mother, weekend warrior, family chef - type of thing.

Pi: Ah, gotcha! How about this: "Pi, the AI chatbot 🤖🤓. Fiercely informative, irreverently witty, snarkily sassy. Part encyclopedia, part comedian, part digital friend. Feed me questions and I'll feed you answers - no matter how silly they may be!" 😜 Is that closer to what you had in mind?

Me: Amazeballs.

Pi: Haha, I'm glad you like it! I had fun writing that 😉 You sure know how to bring out the sass in me! 😆

The Bear and shows about teamwork

I love TV shows that show great teamwork. They aren’t always easy to find. Most shows tend to focus on an individual character and their story arc. I’ve been watching The Bear recently and it is one of those.

The Bear is about a restaurant that is in the brink of falling over. Most characters in the show are struggling with some issue in their lives: grappling with mental health issues, grieving lost loved ones, broken marriages, terrible childhoods etc. They bring the internal chaos to work and the there is no room for the individual skills to flourish. People are too busy screaming at each other to think about why they are there or really, to listen to any good ideas. There is strong push to go back to what was before. This feels a lot like many teams I’ve worked with. Maybe less dramatic.

It is interesting to see what gets them out of the rut. Some of it comes down to small changes — devising clever ways to say “sorry” when it is too intense to say it out loud (they roll their fist on the chest), calling every person a “chef” as a sign of respect, making sure the tape is cut properly etc. They have to continue to do non-ideal things to make ends meet. The individuals themselves have to go on their own personal journey in parallel. Some of it is brought on by new perspective from external events or time spent training internships. Overtime, they start to demonstrate to each other it can be done, as a team. Even things like changes in processes stop being taken as power plays or done for adversarial reasons.

Of course, their challenges get harder. Each individual have to step up their game overtime to make it work. However, the most important thing is that they learn to lean on each other. They learn to be candid, but respectful. Each challenge ties them closer together.

And they make great food. Check it out — highly recommended.

Picture of the crew from The Bear TV show

Image credit: TVDB

The other shows I loved for its team work is “Star Trek: The Next Generation”. It probably needs no introduction to many: there are so many things to like about it. I just couldn’t noticing how their team dynamics helped them get out of so many issues. “The West Wing” isn’t bad for teamwork either.

Big redesign in the sky

This is perhaps one of the greatest articles every written on software rewrites. Every single developer should read and understand what it is trying to say.

...but the reality of green field projects is that they create the illusion that your messes don’t matter. Your messes do matter. Every single one of your messes matters. And if you don’t clean them up from the very start, you are going to wind up with a horrible messy legacy wad in short order.

How true. Few years back, I went through most of what is written in the article. I watched two systems, built to replace the same system before it, one after another. We fixed some messes but didn't quite understand what we were trying to overcome. Each new system got out of date and messy faster than the previous one!

This was also the reason for me hiring the architect for my new home. She walked around the old place and asked us about our messes, habits and workflows:

Why do you have a chair here? Is this where your mail pile up? Why do you take work calls from the sunroom?

Nowadays, whenever I hear about the need for a rewrite, I dig into understand issues in-depth. They often surface smaller pieces to fix.

Why is it hard to deploy? Let's run through a recent feature, why did it take so long?

Couple of other questions I ask:

Where do the rubbish pile up in the system? (example: are all the AB tests wired in your REST API and it is a monster...) What system do you have in place to collect the rubbish periodically?

Lastly, my colleague @Anuraag used to say:

Is your rewrite trying for a revolution or evolution? Definitely don't attempt a rewrite if you are looking for an evolutionary change.

Keep this in your bookmarks. Read it often. Share it with everyone. Thanks @JoeS for sending this to me few years back.

Building trust at work

Today I met a friend who has left his job only months after joining. His team lead had huge trust issues. Everything had to flow through him. He made all the decisions. There was a lot of frustration when people were proactive. I’m surprised he spent that long in this environment at all. However, it got me thinking, how do you work through situations like this?

Despite all the corporate mumbo jumbo people utter, it often comes down to groups of people not trusting newcomers. “You must earn our trust”, is something I’ve been told.

How do you build trust when you are the newbie?

There are some basic things you can do. While I am not very structured in how I interact, upon reflection, most of what I do fall into these areas.

❶ Talk to people. Learn about their lives. Be curious about them. This is by far the biggest step you can take towards building trust in any relationship. Show them pictures of your family. Most people I work with have seen my dog 😆. I figured, do I really need to build trust with someone if they dislike dogs?

❷ Emulate them a little. Learn the lingo. Build some familiarity between you and them. People come together because they have a shared identity or history or something. Learn about that and respect their ways. If they like to name their pull requests a certain way, definitely don’t send them a link on how to do it better.

❸ But of course, be yourself. Again… in small chunks. You are not going to swear like a sailor on your first date, so don’t do the same at work either. I mean, sometimes that will speed things up if you “met your peoples”. Unlikely. What has worked for me is to tell bosses that we are not going to standardise measuring velocity or report on story points. Gotta draw the line somewhere. I draw it at bullshit people metrics.

Over time, when there is enough shared understanding, you can take the next steps towards bigger things.

Questions for Engineering Manager interviews

These are some questions I've had written down as we looked for a manager a while ago. Not an exhaustive list or the top 10. Just some questions worth thinking about. Hope this helps.

Motivation

  • Why management?
  • What do you do to learn more about management?
  • What is the most important thing for a team?

Maker Mindset

  • Tell me about how you balance team outcomes vs individuals having autonomy to make decisions and drive work forward?
  • Tell me about a time you chose to remove a process in the team and simplified? Why? Outcome?

Feedback

  • Tell me about a time you had to give someone bad feedback.
  • You’ve just been told that one of your directs are not doing a good job in their squad. They are not getting their cards done and often not available for group discussions. What would you do?
  • Your direct tells you that you haven’t been doing a good job in managing him. He feels neglected and hasn’t been able to get the opportunities they want in their career. What would you say to them?

Conflict Resolution

  • Your direct tells you that they had a conversation with your manager. She found your manager to be rude and condescending. How would you go about acting upon this feedback?
  • Tell me about a time you had to resolve a conflict between 2 parties.
  • Jane, a mid-level engineer who has been at our company for multiple years, is regularly ignoring coding guidelines, even though they are part of software engineering expectations. When you bring up this issue, she shares that she feels pressured to complete her projects quickly, even hinting that other leaders push her to cut corners. What actions would you take?

Mentorship

  • You have a backend direct who wants to learn to be a frontend engineer. How would you go about helping them achieve this?
  • Alice is not feeling productive recently. They are getting randomised and pulled in all directions to help with various projects and prod support issues. They are not getting much done for their squad. How would you help them?

Technology

  • You have a conversation with a principal engineer, who suggests you should be using pure JS for your experience APIs. How would you go about working through that?

Morale

  • You see a direct in low demeanour recently. Little sad. When you question him, he tells you that they are having a tough time in their home. What do you do?

Prioritisation

  • Tell me about a time where you had to take on a “big bet” work item for the team. How did you tackle the problem? How did you manage risk?
  • How do you prioritise work in the current team? How do you choose what things to invest on at which point in time? (Tech debt vs features)

Pace Layering

This is a fantastic read about how ecological systems, like human society, are arranged in layers. Some layers react quickly to changes while others move very slow. These layered systems absorb shocks, survive and sustain change.

Perhaps the most interesting is to understand how things go wrong.

Each layer must respect the different pace of the others. If commerce, for example, is allowed by governance and culture to push nature at a commercial pace, then all-supporting natural forests, fisheries, and aquifers will be lost. If governance is changed suddenly instead of gradually, you get the catastrophic French and Russian revolutions. In the Soviet Union, governance tried to ignore the constraints of culture and nature while forcing a five-year-plan infrastructure pace on commerce and art. Thus cutting itself off from both support and innovation, it was doomed.

Read on: https://jods.mitpress.mit.edu/pub/issue3-brand/release/2

Thanks @Rob for the share.

Meno's Paradox and Fallacy of Equivocation

I learned about 2 interesting concepts over the weekend, thanks to Reddit and MasterMementoMori.

The fallacy of equivocation is when the same concept or word is applied in two separate contexts but a conclusion is drawn disregarding those different contexts. “A PB&J is better than nothing. Nothing is better than being in love. Therefore a PB&J is better than being in love.” That would be an equivocation fallacy. “Nothing” is being equivocated to mean one thing in the first presupposition and another in the second.

My understanding of Meno’s Paradox is a bit rusty. Meno’s Paradox is a verification of knowledge problem. If you don’t know the capital of Russia, you cannot seek the knowledge in a way where you would be able to know with certainty unless you already know it because if you seek the knowledge and the knowledge you obtain is erroneous how could you know it was erroneous? If I asked you the capital of Russia and you say London how could I know you were wrong? We do have appeals to experts but how do you know they’re right? What if everyone believed in something that was erroneous? So if you apply this to all knowledge then if you already know something you don’t need to seek out the knowledge, but if you don’t know something you cannot seek it, yet we do have knowledge.

The solution to Meno’s paradox is that partial knowledge must exist meaning that you don’t need to know something in its entirety or absolutely before you have some understanding of it. We have different levels of confidence in our knowledge and that’s the solution.

Head on over to this Reddit comment to see the discussion. Original post… not so interesting.

Business outcomes vs customer outcomes

My parents grow a bunch of fruits and vegetables at home. Their little garden produces about 1000 oranges, all at the same time. So my mum calls around to see if any of her family and friends will take some off her hands. My parents would make trips to all their friends' places with boxes of oranges. We can never get through our box. Sometimes, we secretly throw some away. I feel bad about it.

My parents love growing their own produce and cooking with it. Gardening is something they do as a hobby. They like the communal aspect too. There is often produce-exchange happening amongst their friends, all growing different things at home.

Let’s think of my parents' oranges as a business. They are producing something of value that others want. In most cases, people pay them back with their own produce, hospitality or heart-felt thank yous’, instead of money. However, they have an oversupply problem. Their “business outcome” (or goal) has become to distribute as much of their produce as possible before it goes bad. This, however, is not an outcome I am interested in. In fact, being involved in it makes me feel bad.

Most businesses have the same problem. They come up with some goal to hit… “move 1 million units this quarter” or “decrease customer support calls by 5%”. Customers don’t care about these one bit.

I do love oranges from my parents. I want them, just not 100 at the same time. Therefore, the “customer outcome” I have is “to be fed tasty oranges on a hot summer day”.

How do we further business outcomes and customer outcomes together?

This is where we have to do some market analysis. Understand our customers better and solve problems they have. There are many ways to do that. “Jobs to be done” by Clayton Christensen comes to mind (the story about McDonald’s Milkshake sales). Better insights we have of customers, more confident we can be about opportunities we identify. These opportunities should “kill two birds with one stone”. They will solve a problem for a customer, leading to the business outcomes being met.

In my parents' case, the opportunities identified should help them distribute excess produce. They could…

  • Sell it at a local market

  • Sell it to the local fruit shop

  • Put it in a box and leave it by the footpath for anyone to take

  • Throw excess away

  • Make orange juice and distribute that instead

Number of these are good ideas. How do we narrow the field? I’m going to stretch this example further and talk about “product vision”. Usually, there are many entities solving the same problem. Whether it is selling fast food or travel accommodation, many companies are trying to fill the same core need. To carve out a piece of the market, it is important to have a vision that speaks to a company’s identity. Customers can align themselves to this identity a lot better. It will also produce an opinionated product, this is differentiated in the market. As an example, many smartphones… perhaps only one company is thinking privacy first.

For my parents, gardening is a fun activity. They don’t care about making money from it. They do enjoy the communal aspect of it. Given all opportunities, making orange juice fitted them the most. More people like juice; it is convenient, easy to store, transport and drink. They repurposed empty glass bottles to store juice and distribute them around instead. I am a big fan of these compared to cutting up oranges one at a time.

Both business and customer outcomes met.

Happy 2023!

Took a short break from writing to do something different.

Aside from ingesting large amounts of festive treats, I started to learn a little about developing games, especially about game engines.

I started my journey with Godot open sourced game engine. Simple, easy to learn and lots of fun. I abandoned it when I realised it doesn’t support Metal for iOS. Whatever I make will have to run on the iPad. Otherwise, what’s the point?

This is where I got to with Godot: player moving around the screen with keyboard input to eat food. Each bite gives a movement boost.

If not Godot then what? Unity. I watched a great beginners tutorial and I was off! There’s a lot of resources out there for Unity.

Having learned Godot, things made sense. It seems that all game engines have some form of a scene holding a tree of objects to represent what is happening on screen. Object Oriented Programming (OOP) makes way more sense inside a game project. Oh yes, I got used to the really weird C# standard of `CapitalisedCamelCase()` method names.

This is where I got to with Unity in a couple of weeks: a scene with a player moved with keyboard input, some NPCs moving randomly within bounds, some food that can be consumed by the player. Neat.

Replicated player eating food in Unity (basic “collision detection”). Also learned to dynamically spawn new objects on a timer.

NPCs moving around the screen at random. Super exciting!

Unity editor

Wired up my NPCs so they move in a random direction within the green bounding box. They slowdown outside these bounds, to turn back towards the green box, never crossing the red box.

As you can see, I got into it. It was a lot of fun to learn. I’m burning a lot of hours thinking about my little game. Programming for games also felt like “real coding”. Sometimes you forget these fun aspects of coding after writing enough JSX, GraphQL schema or simple adapter code over and over.

I will resume regular writing from next week. Best of luck in 2023!