It’s election season in Canada! If we hadn’t already been inundated with everything happening these last two years this would be bringing in a smorgasbord of bad faith arguments over every imaginable topic. Instead it’s the year 2021 and we’re living in a dystopia where bad faith arguments are consuming enormous amounts of energy and public discourse, so really it’s just an extra seasoning this year, but maybe a good excuse for an online journal entry.

Politicians tend to be the merchant royalty of bad faith arguments, there are examples worldwide of political decision makers that do their job pursuing honesty and while striving for accuracy, and they’re amazing – but they seem to be the exception and none of them personally represent me so I’m just bitter. Observing their peers (and the comments section of… anything) did showcase one pattern: the tendency to invalidate an argument on the presumption of an agenda.

Super common in game development, as my project responsibilities increased I found myself spending more and more time in meeting rooms. Over the years I found this inefficient and problematic enough that at first opportunity at a department leadership role I explicitly re-designed expectations for all layers of that department to promote personal autonomy, accountability, and creative agency. It was win-win! All the folks reporting to me ended up being more productive, generally enjoying their work more (unless they didn’t, which is a good time for me to step in for support), and I spent less time in meetings (I wasn’t the sole representation of “Design” – the designer working on content/feature would be in the meetings and we could catch up after) allowing myself to be productive developing and not just “managing”.

Anyway, that small success story aside I have spent more time in meeting rooms than I would wish on anyone. Not all meetings are soul-draining, collaborative meetings can be energizing! Though for a successful collaborative meeting you either need everyone acting in good faith or at the very least to step aside and just listen – otherwise the meeting can be derailed very, very quickly by a loosely related (or in extreme cases a completely un-related) agenda.

One strategy I’ve used to generally combat the hijacking of meetings is to pre-empt a focus on goals – what are we trying to achieve? This strategy has had mixed success, enforcing the goals (ex: “hey that sounds cool, but it’s off-topic and we need to be working towards [goal reference] right now”) can end up in its own spin-off argument of how [agenda] fits in the goal (bad actors gonna bad act), depending on who is moderating the meeting this may or may not be an acceptable use of 5-10 peoples next 20-60 minutes. When not moderating meetings myself I made a habit of doing the math of when meetings were completely hijacked (0% productivity, no new action items other than to schedule more meetings), # of people multiplied by the number of minutes. I would then present this data to the moderator, in hindsight this may have made me unpopular at that company (like, actually – when doing ‘coaching training’ one of the company directors made a joke about how some of the other directors ostracized me, I didn’t find the joke funny).

There’s another strategy I’ve seen deployed where there may be assumptions someone has an agenda but won’t speak openly about it, those people then get excluded from the decision making process. That’s one method of disempowering an unhelpful agenda, but you may also be doing the group a disservice – just because someone may have an agenda doesn’t mean they can’t provide useful input to a conversation. In fact, sometimes a focus on an agenda (gaming example: someone may be so hyper-focused that the Player vs. Player experience fits their vision that they may neglect other facets of the game) can provide insights to help make better decisions, as they can be most deeply connected to a cohort of the community than others available.

Gate-keeping conversations is a very poor solution, people who have good intentions may act in bad faith purely out of a passion for the topic – you don’t want to cut out your passionate voices (just need to keep bad faith arguments from taking up everyone’s time!). Taking the reigns of moderation can be effective in helping keep progress towards a goal, and that’s as far as my hands-on experience goes. BUT! I have seen something really cool come out of Taiwan, the idea of leveraging tech to filter out all the noise and find consensus in a conversation. While in a real-world environment that strategy can help find consensus in a wide-array of conversations, I can imagine the same principles apply on a smaller scale (like say, game development!). Asynchronous conversations can happen over time (which works well with work-from-home mentality) and an automated service could be pulling out consensus for evaluation by decision makers – decision makers can be freed up from having to moderate conversations allowing them to get back to directly contributing. Win win?!

Maybe, it’s all a theory but the fact that the software used is open source is very promising, the mechanism for pulling out and analyzing conversation text for consensus could even be added as a plug-in for task tracking software (like Jira) or communication software (like Slack or Discord), reducing friction to the conversation contributions. Timeframes and milestones tend to be set months if not years in the future, all sources for conversation (internal to the company or even crowd-sourcing from fans) could be collated for consensus giving decision makers reliable conversation data to base their decisions on when the time comes (rather than having bad faith arguments consume disproportionate amounts of their time).

That’s the thing about bad faith arguments, they don’t need to be on topic and they tend to create more division than consensus. Someone with a goal of “winning” their argument at all costs (logic and goals out the window) can be a massively disproportionate time-sink in decision making – that time can be offloaded to this machine learning AI! Would be curious if explicitly bad faith arguments could be dumped into analytics as well to tease out agendas causing the bad behavior – maybe one day if I’m absorbed back into corporate development I’ll have a chance to find out, ha!

After nearly two decades of workin’ in the games industry no two job-hunt stories I have would be alike. The most recent evolution is with recruiters, companies seem to be leaning more and more on third-party recruitment services… and it’s very telling those services aren’t terribly familiar with the wonderful world of game development. Recruiters tend to focus on very “traditional” employment (please sign this contract to devote a minimum of 40hrs a week to this corporation but in reality it’s closer to 60-80 averaged out over the year), and I tell ya, I’ve been on some journeys with recruiters this last year. Those journeys were unfortunately as dreadfully boring as they were confusing for everyone involved, probably make for poor content to pad out this online journal entry.

Okay okay, just one. Short story. Sometimes a group of people needs a really specialized person to fill a role, it’s good to be up front about this. I like to suss out any important expectations right away, so in this particular case the very first time I talked to this particular recruiter I discovered the company they represent really wanted someone super passionate about American Basketball. That very first time I told’em: I’m familiar with the rules, I could write them down without reference, but I don’t actively watch it so I don’t think I’d meet those expectations.

…so several conversations later the recruiter is telling me that my salary expectations are totally fine, and I’m thinking “huh, I guess that basketball thing wasn’t as big a deal as I originally thought”, so we kept talking, even updated my digital paperwork based on what they recommended from feedback from the client, cool cool. Things seem to be progressing (I’ve noticed this is a common theme with recruiters, regardless of reality everything is making progress), and after over a month of entertaining this particular recruiter…

I was informed it was really important they have someone very passionate about American Basketball fulfilling the role so they’ll be looking elsewhere.

That was the most interesting recruiter story, time and energy investment certainly don’t make a better story. Now contrast that with a fascinating scenario I find myself in: a studio has a problem, someone who does work with them understands the problem and what they need, they suggest to both studio and myself that I help them with their problem.

Rather than acting like a recruiter the person who made the observations and connected the dots just got us all in a video chat to discuss the problem and how I could help, how long I think that would take, and what I would need in support + financial compensation. It’s a format that may shift my attention away from my personal projects for a short time but wouldn’t have me abandoning them completely, slowing the drain on my savings so I can put more effort into hopefully creating my own financially stable game library. Win-win!

I’m super intrigued by this new (for me) idea now that I’ve been engaging in the process and having it go so smoothly. My next step will be to not divert all my limited energy, make sure at least one personal project continues to make progress (sorry Roblox game! back soon I promise). Hey look, I’m doing better! I’m on round-two of this fascinating new experience and I’ve updated my online journal 😉

Sure! Usually, unless they’re saying something dishonest hoping for a specific outcome, then they’re intentionally misleading – but when that’s not the case, the customers feelings are definitely valid. That doesn’t make them the best problem solvers, though.

Maybe I’ll take a step back, maybe some people who are reading this haven’t heard the phrase “The Customer is always right!” (because I’m probably old and “cheugy”), but growing up when and where I did this was statement pretty popular. You did not question the statement, you followed the statement. The statement can be retroactively used to justify past actions taken, the statement shuts down all arguments because “the customer is always right” and you’ll find that justification in places you would never expect as our lives became more blended with earning an income (sometimes called “entering adulthood”).

This statement was basically treated as a rule, and of course once you know a rule you know how to take advantage of it. When a rule is poorly written the potential for it to be taken advantage of is much higher, and the idea of a rule that gives someone ultimate authority in a situation is clearly ripe for taking advantage of. Personally, I don’t blame people playing my games for taking advantage of rules I made – I believe the onus is on the rule-maker to ensure their rules are designed in such a way that the rules in-and-of-themselves prevent players from creating horrible play experiences for other players. After all, Bad Actors exist and should not be ignored.

Coping with a flawed rule

You may disagree with the flaws I’ve hinted at in what I’ll call the customer rule, just like players may disagree with various rules in a game (from limitations in social interactions to perceptions on difficulty), but I’m going to go forward with it as my example. In this particular case, I’ll still interact with various people in life who subscribe to the customer rule, if I pointed out how I felt this rule was flawed every time it is used to “prove a point” it would just escalate a needless conflict.

There’s nothing I can do about the rule itself or other peoples choice to subscribe to the rule, so instead I choose to find a way of interpreting the customer rule that applies to all cases. When a customer is upset, excited, bewildered, or just plain angry – there is no value in dismissing their emotions. In this respect, the answer is yes, the customer is always right.

This is especially true as the one making the rules within a game. As the rule-maker you had intent behind the rule in the first place, if the rule is making people upset it’s important to at the very least audit the rule to ensure it’s doing what you expected it to do in the first place – or if it is accomplishing what it’s set to do, if the negative consequences outweigh those accomplishments. It’s very possible accomplishing what the rule set out to do while also mitigating negative consequences can be achieved by updating or replacing the rule.

Having valid emotions does not make someone a better problem solver, and if a topic ends up with a lot of attention chances are there will be a barrage of proposed solutions (potentially contradicting each other). As a developer if feedback is feeling overwhelming, chances are it’s because some of the proposed solutions sound like a lot of hard work. Don’t let the idea of hard work get in the way of validating the customer, you may not feasibly be able to do exactly what is wanted, but doing exactly what is requested is a pretty extreme method of validation. It’s not required!

Validation can come in small doses, and is much easier if your customer trusts you. Hearing “yeah that sucks, sorry, we’re looking into it” from a developer who has proven to act in good faith can be incredibly validating – but don’t lie, that breaks down trust. “yeah that sucks, sorry” may be all you’ve got if you know that either work can’t be accomplished, or will never be signed off on by the people who sign off on work. Dishonesty erodes trust, and saying “we’re looking into it” without ever showing your work addressing the issue comes across as quite dishonest.

Who is the customer?

I couldn’t let it go, so I’m going back to the customer rule to dig deeper. If you’re hired by a company to develop a game for them, groups of customers may look like (in no particular order)

  • Players
    • Tend to be sub-divided into categories (ex: “PvE”, “PvP”, “Crafters”, unique per game) due to groupings of potentially contrary opinions
  • Anyone above you in company hierarchy
    • If they can put a task on your list (directly or by proxy) their opinion on what that task means is important
  • Other developers
    • Either in their hearts or in their career, feedback coming from the perspective of someone who sees themselves as a peer
    • These can masquerade as players, may only sometimes identify themselves
    • This customer can come loaded with the entitlement of “I’m a developer, so what I’m saying matters more than all these other people”
      • Feedback from a place of entitlement is tricky to validate, always much easier to validate feedback that shows the work as opposed to “You do this thing, you should do this other thing”
      • Hint hint: If you feel you’re in the know, if you feel you’re a peer, show your work – it’s a lesson I still struggle to apply consistently myself
  • Investors
    • Their stake in this game is for it to make money
    • You and everyone around you have their jobs only because of these customers
  • Marketing
    • Their job is to get your game experienced by as many people as possible
    • This customer has a very unique and important perspective, their feedback may seem very strange when compared to other customers, this is because they are trying to do a very different job
  • C-level executives
    • Contractually obligated to ensure the investor-class customer is the only customer that matters to them
    • Reward mechanisms are based on opinion of their job being done, not reality, this can make feedback from this customer opaque in their intent, very tricky to validate
  • Media (including reviews)
    • Unlike marketing, it’s not their job to get your game experienced by as many people as possible
    • Very broad group here, going to be a lot of cross-over with other customer types
    • Due to the nature of this feedback being directly tied to a job being done, validation…
      • …is probably a conflict of interest
      • …is difficult! Is it the opinion of a person or the outcome of a brainstorming meeting of multiple people?
      • …is probably best shown in the form of an update to the game and a polite request to please give it another try to see if the opinion has changed

When you’re a developer in a company you have lots of sources for a large array of expectations and feedback. While game development is a complex process, even brick-and-mortar stores are going to have more “customers” than who walks through the door to buy a thing – parent companies or owners, distributors, layers of management or investors will have strong opinions that help shape the workplace thus impacting the day-to-day of everyone on the ground.

Crux of what I believe is the largest flaw in the customer rule – anyone is a potential customer. It’s a rule that gives absolute authority to a poorly defined group.

Nothing is lost in listening

It’s (too) easy to dismiss customer concerns because it feels like they don’t fall in what is considered a valid group, unfortunately when it comes to feedback reality will assert itself whether you choose to dismiss the information or not.

If you’re told people aren’t having fun in your game they certainly aren’t going to have more fun if you choose to segment out a chunk of the user-base and ignore them. Same if it’s not profitable, not marketable, or not feasible to complete the project at all! Willfully ignoring any feedback may not have negative consequences, but it also may, it’s a gamble. Consequences for ignoring feedback will tend to be several steps removed, and once even one step removed it can be difficult to draw a connection from past feedback given to current problems that are a result of ignoring information (that was dismissed).

On the other hand, once you’re presented with feedback it’s already been presented! There is no additional effort to acknowledge that what’s being said may be someone’s truth and mentally keep it on file to see if it checks up against other observations. That very act can help validate the source of the feedback which helps build trust, it’s a win-win scenario.

My general plan for January was pretty simple: Take some time off around Christmas, take my concepts and initial idea-proving work and come back at it refreshed and full of energy and pep!

Things did not go as planned.

I found myself just as exhausted as when I decided to put a proverbial pin-in-things in December. “This ain’t right” I thought – I mean, I explicitly stated I was taking time to relax, so I should have relaxed right?! That’s how it works!

That is, apparently, not how it works.

So I’ve learned at least one thing, I don’t know how to relax right now. That’s… a step, but doesn’t really guide me to how to, y’know, force that relaxation on myself so I can get back to the high levels of energy that I’m used to. The level of focus that in the past meant a new person at my desk interrupting me every 5-15 minutes with brand new questions, swapping topics to solve problems while threading in my own work without a hitch. I had it! I want it back!

I’ve swapped people at my desk to assist in questions around school or helping get a cup that’s in the high cupboard, but I find myself playing catch-up far more than I used to when I sit back down to get back at it. We’re living in some pretty crazy times with some massive disruptions in all sorts of things, I’ve even started a “scrapbook” of things I just stumble on in my day-to-day that really highlight the… casual insanity. I’m hoping years from now some of the massive problems that have been exposed lately world-wide are addressed and that I can look back on that scrapbook with friends and have some head-shaking reminiscing moments. The state of the world is occupying my brain space much more than I’d like, is that it?

I don’t know. It could be a number of things, this is very new for me (a phrase I’m sure many people in their own scenarios can relate to in 2020 and… beyond…). Tackling new frontiers is very important in game development. Staring the unknown straight in the eye and saying “… I will google that” as opposed to passing-the-buck is a solid skill to have. To leverage that skill though, you really should have a basis of foundation to ensure you’re asking the right questions, to even know what you should be learning. Just try googling “how can I force myself to relax?“, there’s a plethora of suggestions out there, but also I don’t think I’d be asking the right question to begin with, I think the problem is more complex than I’m even able to articulate right now.

So where to go from there? Well, I’m trying to make Gilroy Games a sustainable source of income for my entire family. I’m my best asset, I can leverage my experience in both game design and engineering to accomplish any array of tasks generally assigned to a group of people, sometimes faster than the group. That’s not a flex, years ago when I was a single person assigned to a project (and only half my time at that) the progress of that project was praised and directly compared to fully staffed other teams in the company. It’s a phenomenal advantage to reduce communication time between workers to nothing (honestly, that praise is what planted the nugget that it’s a totally reasonable thing that I could just make my own games).

So the hard truth I need to accept: My best asset is not functioning at peak proficiency.

This is a problem I’m not familiar with solving. Just like I buy assets or modules to help speed things along in areas that I know from my experience would save me a ton of time (or in the case of assets, hit an artistic quality level I could never hit myself!) I think I’m going to need some outside help. I’m going to try something that is radically new to me. I’ve now had two chat sessions with a therapist.

Way I see it, it can’t hurt to talk to an objective human about this weird problem I’m having, a weird problem I’m having trouble even putting into words. I think this very post is an indication I’m doing something right – cause if I’m being real here the bucket of work that contains things like [journal updates, page updates, business administrative work, promotion] are for me some of the hardest things to do, requiring the most amount of energy. Here I am, doing it!

It’s a strange thing to ask for help when you don’t necessarily know what kind of help you’re even asking for, when part of the help is… defining what’s being asked for. I think that’s probably true when it comes to mental health in general, so all I can say is I encourage anyone reading this feeling any weird vagueness like I’ve described, just go for it. It’s a strange industry that weirdly specializes in that exact scenario.

Lesson learned this month: I need to keep working on and investing in myself if I want the games I make to be the best they can be.

One of the neat things about doing something on my own, as opposed to working for some corporate entity, is I can share whatever I want! Even ugly screenshots, even spoilers 😉

Here’s a snip of how this weeks roughly lookin’ like for new project

I don’t plan on doing regular updates or anything, I just realized *right now* that there was no one to stop me from doing something like this, muahahaha!

I’ve made a couple small personal projects before (one was when I got my first Android phone, made a simple native app with smiley faces that you could have bop each other, gradually making them become sadder and sadder emojis), but nothing outside the scope of a simple weekend-or-two. I thought I’d take the opportunity of unemployment time to make something a bit larger in scale.

First things first, I set myself up with a few goals:

  1. Gameplay that focuses on choices made
  2. Playable from a web browser
  3. Can be considered “Finished” within 2 months

Alright, goals. Good, I’ve set a loose framework to fit my next steps in.

I thought back to my early days, the days where I was standing up and doing presentations in front of the company with the fancy new things I wrote in C#. As a Systems Designer, it was important for me to be able to showcase the system working agnostic of the game environment. After all, on a team of people everyone has their prioritized tasks and it’s going to take many people doing many things before it all comes together in a lovely visualized game environment. So when I stood up and did my presentations they were 100% text from a custom C# Terminal program.

See, I would sit by people who spent their days working on their power-point presentations for their next meeting. Literally, days. I would estimate the ratio of work that was contributing to projects vs. the presentation of work they were doing for projects (images, dozens of iteration on wording, sometimes animations, etc.) would be around 2:99 – I’d watch this while seeing many co-workers pressured to achieve tangible results of very complicated or difficult things and think to myself… what a waste.

Myself, I would set a goal to invert that ratio, 99:2. Basically, I would build out my tools and tech and content in a way that I could do it live in front of the company. And it wouldn’t be pretty. But if the people who needed to be informed got informed, I felt it was a successful strategy.

There were many jokes and playful (or not so playful?) groans by the time I did my third presentation. In my mind, this was always offset by the thoughtful questions and genuine excitement I received from a few members of the studio – but, I’ll admit, when there’s 100~ people watching a presentation of just text it’s not the most exciting thing non-tech people will enjoy. Even if I can show cool things like: “Hey look, this combat system is 100% simulated and we can use it to shortcut reproduce bugs or tests faster than it takes to load the game!”. For the 6~ people in the audience who genuinely appreciated it, thank you, you were the reason I stood up in front of everyone 😉

As a call-back to those early days, and because it fits within that framework of goals I’ve set for myself, my first real solo project (that will be web-based, and I can send links out for people to play) will be a text-based game with an emphasis on choices.

As to what “Finished” means, whether it’s a solo endeavor or working for a company, games are never “finished” these days. If my text-based style doesn’t find an audience then it will probably just hang out in “demo” form. If I can find some people who enjoy it though, and are willing to pay for a more “complete” version… well then, maybe that’s how I’ll be spending my subsequent months.

One can dream!

Several weeks ago our small team was informed that funding has been withdrawn and the company paying us will cease to exist at the end of the month (yesterday). I’ve put together something I wish I had done on my previous project, a memorial to look back on in the years to come.

It was a project in its infancy, recently erupting from beta to a live audience, fresh off a fairly significant update just a month after its release. It always started from a… highly irregular place, to summarize: The boyfriend of my previous project’s Lead Engineer worked with a guy who knew a guy who acquired funding and was tasked with starting a North American game development studio. They weren’t quite sure how to go about that from the actual development standpoint, so they recruited us.

I haven’t been at the start of a studio before, but I suspect it was… irregular. So we had a studio of 5 people, and our first week on the job was to… figure out what game we were making! Up to that point, I’ll be honest, it was all very strange. When I received my first paycheque I was still quite surprised (despite: hey, they bought computers and we have an office) and also immensely relieved – I had been living off of a very generous severance given to me by IGG when they shut us down at my previous job, but it was running quite low. If this crazy start-a-studio-from-scratch thing didn’t pan out I’d of had to jump on a pretty aggressive job hunt.

The game had some fairly serious requirements: it was to be a 1 year project to a beta with live (non-development) humans playing. It had to be fully server-authoritative and have some hefty anti-cheat security. It was a mobile game that will launch internationally (including China), and it was expected to ramp up to some significant revenue numbers fairly quickly. That was December 2018, we spent the rest of December building up a technical foundation and determining art style. I got excited, I spent my Christmas “vacation” building our combat simulation and its various dependencies, throughout the entire project I took only a single vacation day for a long-weekend away.

I seem to have a linear narrative so far, I’m going to drop that and just type a bunch of words to indulge the whimsy of where my heart wants to meander.

So I’ve lost weight during the pandemic. Weird segue right? One of the perks of our office-sharing space was we had free beer on tap, and generally at least one pretty good one (though the sour they got in… so good, but also no other beer keg had been demolished so fast, so maybe too good?). Turns out when I stop drinking beer every day I shed pounds, hah. As a studio we had opted to work from home since the beginning of March.

In fact I made ample use of my own work-from-home setup back in November (2019) when I was suffering from what a doctor described as: “either a very bad case of bronchitis or pneumonia“. I was miserable for 8 weeks and absolutely wrecked for one of those weeks – but even during that week, the hours I spent out of bed were on the project for at least 40+ of’em. So I was accidentally very prepared to hunker down for a pandemic at home already.

One of my early goals was to design and create game systems that could be re-used across many game genres. To validate that these systems could be used outside of the Soulite Monsters project part of my process was to have them all working in a stand-alone C# terminal before integrating the library into the Unity project (and later, also the server). This had some really solid compound benefits, including the ability to rapidly reproduce bugs with simple text commands sent to a terminal, and verify those bug fixes without all the visual/UI overhead of the project.

We originally weren’t talking about building a single project, the goal was a sustainable studio. In month 2 I was already writing out plans and team structure on how we could evolve to both develop and support multiple projects (that shared technology that functions agnostic of any game project was one of the key elements of this). In fact, I got out of bed one night to have a conference discussion on what it would look like if we needed to immediately ramp up to 30+ people.

It was a wild ride. It sounds like people who have been part of a start-up can most relate. In a large company, responsibilities are dolled out, and if something slips through the cracks a meeting is held and by the end of it that floating responsibility would have a dedicated handler. We started with 5 people. There’s no committee to decide optimal work-load – you want that thing? No one else currently has the band-width to do the thing? You probably need to learn to do the thing.

This is also true for requirements passed down from the voice of the person funding the project. Need a trailer? Alright team! Who wants to put this together?

… no takers? Artists are busy? Errr… okay, guess I’ll make a trailer… that’s a first. I got to learn that Blender is pretty darn usable for making trailers, that was unexpected and neat. Context: I have near-zero aesthetic sense, probably why I’ve gravitated from Game/Systems design to blend it in with programming in general. So I’ve never, ever, had the desire to play around with video capturing and editing tools. My morning started with googling, and before lunch I sent out two 15-second trailers that disappeared into the ether that was some overseas business stuff that we weren’t exposed to.

It was an incredibly unique experience, and I hope a lasting learning experience for everyone involved. After all, whether it’s a risky start-up or multi-national company the games industry is not a stable place. I was told by recruiters many a year ago that the average life-span of an employee in the games industry is 2 years. I defied that by spending 7 of my first years at Relic Entertainment (until their parent company THQ declared bankruptcy), and continued to be stubborn by staying at every company I joined afterwards until they shut their doors.

Very rarely is there an opportunity to really persist with something lasting over a long period of time, though sometimes you’ll have your gems out there that you can continue to enjoy (I shockingly still see the odd news blurb for Company of Heroes crop up and my heart warms up each time), so there’s at least that. But when it comes to Mobile and more modern games… they get taken down, forgotten. As support dropped I’ve seen many of the games I’ve worked on just… cease to exist. That’s why I felt it was important to put together something of a memorial for Soulite Monsters, something I can selfishly look back on or to share with friends over the years.