Unspeakably rude.

Posted by | Posted in Game Development, Life | Posted on 11-08-2015

The Incident:

The other night (Friday, 7th Aug) I was in the RoundHouse pub with some friends when I spotted a group of former work colleagues sat at another table.

I exchanged the usual pleasantries with one I know a bit better & thought nothing more of it.

At the end of the evening as they left someone I didn’t know came over and said “Hi I’m ####, you’re Andrew Copland?“, and I said – whilst reaching to shake hands – “Yes that’s me“. He shook my hand and said “I fix all your bugs“.

He let go of my hand and left laughing leaving me in silence with my hand still in the air, stunned.

A friend that I was sat beside asked me if he really had just said that and I, slightly dazed, simply confirmed he had.

This has been bugging me more than it should so I want to get why off my chest.

The Past:

When I started at this former workplace I was broke. It was after another company I worked for had gotten into financial difficulty and not been able to pay, simultaneously several big studios in the UK had gone under and made about 800 developers (in total) redundant in the UK.
There was a massive glut of talent and finding work got really hard, really fast at the worst possible time. I was unemployed from early July to late October that year.

Eventually I went to this place out of desperation, I’d heard bad things about them, so even though they were based very conveniently I’d instead chosen to go up and down the length of the country before applying to them. Partly this was also because it wasn’t a games role but a Tools one and my first time doing more than just tinkering or bug fixes on development tools.

It started fairly badly with some office politics treating the outgoing developer I would replace unfairly. Thankfully the Tools team themselves were great and the guy who was leaving (that I knew already) made that whole time work despite the bullshit.

Sadly about 6 months into this I started to suffer from depression and a little anxiety. It took me a while to realise this of course, anyone with these things will know that they don’t come with an easily identifiable rash or something to give themselves away, they come on slowly and discreetly.

The pressure was on at work due to company finance problems, project deadlines, a new tool that needed creating – which should have been a simple affair and conceptually I had no problem with. However by now my mental health was affecting my work. This was when I realised what was wrong and went to my doctors.

To cut all that short, I got help.

The Fix:

I got some very mild anti-anxiety tablets to stop me having panic attacks and elected not to treat the depression medically but to get counselling (CBT to be precise) instead and to keep medication an option for later if that wasn’t helping.

I also started to look for another job as it was clear that the way the company worked, and the work itself, didn’t suit me at all.

Getting the anxiety under control really helped my work but during the time leading up to this I had written some of the worst code of my entire life. Even with things being better I was still under a lot of time pressure to fix existing bugs / features and to write the new tool so this code also suffered quite badly. I have no doubt that I left some absolute stinkers in that codebase.

Since I started as a technical QA (bug fixer) I’ve been on the receiving end of code like that too. In fact the code I was replacing was already pretty hideous and bug ridden but only because it too was written whilst it was being used in production with all those same time constraints.

What I have never done is approach someone else and mock them for their bad code.

I’m Normal.. No, Really:

Perhaps it’s because I am an average coder, I strive for excellence, I achieve average but I don’t see a reason to beat myself up for that as I always strive for excellence regardless. The attitude that you should only code if you’re some kind of code-magician is only held by the most deplorable of shit heads. Sadly I’ve worked with a few, being openly mocked in a company wide email by the lead programmer of another studio, as junior coder, for asking for help comes to mind. I shrugged it off as my own lead was far more supportive and the better man, it was his opinion (to paraphrase: “Don’t mind him, he’s a dick”) that mattered more. I’ve remained friends with many of the people I’ve worked with, and have been rewarded in my work by always being recommended and thought of highly, sometimes even for my skill and not just my dedication.

Over time I’ve learnt that I’m not alone, other people have gone through periods like me, outside influences in their lives that have affected their proficiency at work. It seems obvious when you say it aloud, but if you’ve been dumped by your girlfriend, divorced by your partner or separated from your children, maybe you suffer from depression or anxiety for any reason, then yes your work will suffer because you are suffering. You shouldn’t be mocked for that, not then and not unfairly in the future when some 20-ish-year-old University graduate has to see those bugs you wrote at one of the lowest and most difficult times of life you’ve yet faced.

My subsequent job was also in Tools, I found out that at least that hadn’t been the problem. Just some combination of the company / tasks / projects / environment had combined badly with what was going on in my personal life at the time to affect so horribly. The next job went well and I enjoyed it until the company was being bought out and I saw an opportunity to get back into developing games themselves. Tools development just isn’t for me, Tools are part of the process of making a game, and it’s the game I wanted to be making.

These days I do contract work, we re-launched an older PC title on Steam with some bug fixes and improvements including replacing the old networking with Steam’s system and I wrote a lot of improvements and additions for it. Now I’m still working with that company and with my friends because everyone has been pleased with my work, for the most part I am too. There are disappointments, I am after all just average and I make mistake or do stupid things, but I’m also successful far more than I fail.

The, let’s be generous and assume nothing malicious, “witty-put-down” I experienced the other night out with friend has been slowly gnawing at my mind now not because I’m without fault but because of that time, because of those difficulties I faced and how much everything hurt…

…well, that and it was a just a really shit thing of them to say ;)

Andy

 

NB: Yes you can probably look at my LinkedIn page and figure out where this all happened but I’ve deliberately omitted that stuff so keep it out of the comments please.

Work, DLC & DRM

Posted by | Posted in Game Development, Life | Posted on 22-01-2015

So, back from Xmas I get my PC working again at long last, several parts later but what the hell eh?

This means back to work too and immediately I am reminded of just how clueless this industry can be. Take our DLC releases, or rather the DLC we’re releasing for other companies for our game. Confused yet? Not as confused as I was since this wasn’t supposed to be on the cards for quite some time yet. However due to the games success it’s been pushed forwards from “many weeks” after launch to… well we’re about to release the 3rd DLC pack on Tuesday! How’s that for a change in timetable.

Maybe it wasn’t a change and the client are simply goddamn awful at communicating with us what is going to be happening, or indeed when it will happen. Having dealt with this now for a few weeks, and through my exhaustion, I can confirm there’s nothing malicious just sheer ineptitude.

The reason I am exhausted is because I’ve been implementing the initial DRM system we’ll be using for future DLC. Yes even whilst we’re releasing DLC that I have to double-check for problems I am writing the DRM for that same system. This is a DRM setup that I explained could take upto 3 months to write, but they wanted it in a hurry so I stripped it down and said “How about 3 weeks?” to which the reply was “Great! We’ll start testing it in 1.5 weeks then!” … that’s not how it works, 3 weeks means it will start working in 3 weeks. No I am of course now committed to doing what was initially a 3 MONTH task in 1.5 weeks because some people can’t read who sadly are also the ones who pay the bills :(

Then there’s the DLC, I’ve had them turn up without you being able to see outside of the plane, then to get a “fixed” version, where the plane was completely invisible. Or when asking for the raw original why is it that we nearly always get the installer? Meaning we must install the thing, get past it’s DRM / license then extract the changed files then build the DLC from them and hope we didn’t miss anything? That’s assuming that anything works. We’ve fixed issues in each and every DLC we’ve received, issues that were in them when they were sold as standalone products for the last 8 years! Simple text file and naming issues that take seconds to fix.

All the while I’m trying to create this whole new DRM system and my mind is staggering under it all.

Thankfully Rocco has finished most /all of his bugs and has taken the DLC checking off my hands, Steve does the initial unpacking/packing and testing, then Roc’ does a sanity pass on it in the Debug build to see what asserts, which given that they’re mostly conversions from an even older version of the game means that lots of things assert.

The lack of professionalism is confusing, nevermind staggering, and tiring to deal with. Files arriving at the very last possible second when testing them properly is impossible because it’s so late in the day, or last minute changes the morning before launch abound. It’s risky and it’s unnecessary.

Mostly I am enjoying this work but as ever the parts that suck are the parts where your deadlines are driven by those who don’t have a clue and don’t seem to have the nous to acquire one.

Back to work.

What to do when your PC goes Kablooey on you.

Posted by | Posted in Game Development, Life | Posted on 06-01-2015

Obviously your first response should always be to panic.

By “Panic” I don’t mean furiously try and solve your problem. I mean that you should take a long time to just sit there, scream, cry, wail, gnash your teeth at the wall of horror that is the demise of years of effort and a couple of thousands of pounds of hardware. Really wallow in that despair because lets face it: You’re fucked.

Just before Christmas I was faced with this and I made the classic mistake: I didn’t panic. No what I did was carefully diagnose the issue, then the reality crept up on me. The costs to fix it began to mount, the work and personal data I had that could be irreparably lost followed by that absolute sadness that is the demise of your personal PC.

Maybe I should explain that last item. I built my PC. I didn’t make the chips and circuit boards that are in it I just picked them, carefully and after lots of choice. I weighed up all of the costs, the implications for the future, the path that choosing a particular chipset would set me upon. Those decisions were heavy and the impacts are still being felt now.

When everything was chosen, bought and delivered I sacrificed my old machine. It was another custom built one but I couldn’t afford to buy all-new and had to re-use certain components. This is fairly typical for the budget tight PC builder but it does have one terrifying downside: fuck-up and you have no PC at all, and no money left to get one. Things went well though and I built my new PC. it was awesome compared to the old. Over the years there have been numerous upgrades, memory, GPU(s), harddrives and even the CPU. An attempt at water cooling using a closed loop cooler is best forgotten but hey, I tried!

It’s been through 3 operating systems too and a couple of monitors, and multi-monitor setups, I’m probably missing out a lot of things. I think I had SLI GPUs for a while, I forget, there’s been a lot of things. Things I have done, with that machine, we have spent time together. More time than anyone spends on a car, more personal than any static musical instrument, more involved and consuming than anything I can think of beside having children. I don’t have children.

I’ve earn’t money with that machine, it has been my personal PC, my work PC, my hobby PC, my gaming PC, my learning PC, my development PC.

Right now it’s switched off. Inert, inoperative, lifeless and waiting for me to make it function again. People that I discuss this with tend to think I’m a bit special, then harp on about there own hobby, the one they spend the odd evening once a week/month doing, and how it makes much more sense to feel involved with that despite spending a tiny fraction of the time and energy on it. Yes it is “only a  PC” in much the same way someone might say to a musician that something is “only a guitar” – I wouldn’t, I have at least half a fucking clue.

The last time it turned out that it had fried the GPU, an expensive component by itself but thankfully under warranty.

By the way www.overclockers.co.uk customer service were great, I phoned, told them the problem, they immediately sent me the return information and issued an RMA. They sent me a replacement card the same day that they received the broken one. I couldn’t have asked for better. They gave me the option of a refund too but I chose the replacement. Cheers anyway if you ever read this.

This time it’s looking like it might actually me even more serious, and more like the problem I initially believed it to be before Christmas. I think the motherboard might be toast. Not completely toasted yet, but getting a bit crunchy and too dry to call bread anymore at this point… I may have to abandon that analogy. The motherboard being the most central component of the whole machine means replacing other parts like the CPU and RAM too. At this point there are only a few other parts I’d want to bring across. That shiny-shiny GPU, the harddrives (2x SSD, 1x HDD) and erm… that’s it actually. Even the case is old and newer ones have some much better layouts and… I’m justifying aren’t it? I can hear the imaginary pound coins being sucked out of my bank account “full” of imaginary money.

When it initially went kablooey before Xmas, once I’d stopped not-panicking, I priced up a replacement machine. Then I went looking for how much a loan would cost me.

Time to dig out those figures and get a PC built then? Something a lot less Personal, less PC more Computer. Something with … a warranty.

Andy

2 weeks already?

Posted by | Posted in Game Development, Life, Pioneer | Posted on 13-09-2013

Wow time really flies when you’re … um, reading books and going to the gym more often?

Ok so I have been doing some programming on Pioneer; fixed up the solutions & projects for VS 2012 & 2013 Preview (I could do VS2010 too but am not touching 2008!) to deal with latest changes, fixed the GLEW changes to get it all building and compiling and then took up the Oculus Rift integration again – that’s a bit hairy that stuff since I’m having to modify a LOT of stuff in Pioneers rendering process.

Anyway the result so far is the following;

  • distortion shader working,
  • head tracking working,
  • rendering two cameras to a framebuffer working.

screenshot-20130911-205145

So all done huh? Nope, not by a long shot.

There’s a lot of other stuff that needs to be done to get a 3D projection + FOV + view offsets for each eye and a few other bits before we actually get a working 3D view and I haven’t worked through all of that yet since I’ve been busy with time consuming other stuff.

Unexpectedly, probably only to me, some of it is just stuff that didn’t used to take much time at all but is now quite time consuming.

Take going to the gym, this is what it used to work out like:

  • Leave work & walk to gym (11 mins)
  • Get changed (3-ish mins)
  • Exercise (30 mins)
  • Shower and get dressed (10-ish mins)
  • Hurry back to work stopping at Tescos (15 mins)

I think that in truth that used to usually take about 1 hour and 15 minutes, sometimes longer if we’d been doing leg work and I couldn’t walk as fast on the way back. Now however I’m coming in from Beeston which entails an extra train journey, and because I don’t choose when the trains run I have to catch them based on which one gets me there _before_ my session with my personal trainer. This means that I’m getting in quite a bit earlier, but that I’m travelling for much longer and due to the scheduling granularity of the trains… well, I left the house at 11:30am and got home today at 15:00pm just to do a 30 minute session. I could have gotten home earlier today, but decided that since I’d be missing one train anyway I got a haircut (I’m male, so if it takes more than 10 minutes to cut my hair then something is wrong). So I could have shaved 30 minutes off that (Train schedule) but even so it’s around the 3 hour mark to go to the gym just once.

Everything has scaled similarly though, popping out to get milk was to the nearby Tesco Express and less than 10 minutes but now involves walking across Beeston to the big 24 hour Tescos (or further for Sainsburys) because that’s the nearest one that does the Lactofree stuff. I’ve also been getting to the doctors (knee injury and anxiety attack stuff), dentists (keep flossing!!!) and the talking therapy place for an assessment (I’m not mad, might want to work on my confidence in a couple of months – quitting was the right thing to do apparently!).

At first I was worried about how this was going ot impact on two of my stated goals from the previous post:

  1. Work through some UDK tutorials – the new job is on Unreal Engine 4 so I think getting a footing in the tech’ will be good for me,
  2. Work through Frank D Luna’s D3D 11 tutorials but convert them to OpenGL 4.0 – Been meaning to do this for a while, it’s a good ramp up and parallels these SlimDX posts,

…but screw that, I’ve really really really (emphasis!!!) needed this downtime to get myself sorted and simply running into yet more challenging stuff and then freaking out about that wasn’t going to help anyone least of all me.

My plans haven’t changed, I still want to dive into the UDK stuff – I have it all installed and a selection of tutorials ready, I’ve just pushed the start of it back until this weekend or Monday. That takes the pressure off me for doing the Pioneer Oculus Rift integration which is acting like a pressure valve and gentle reentry into doing some coding again for fun.

Now though I’m going to go and tidy up downstairs before Danni gets home. She’s started at a secondment to a new primary school which is in Special Measures. It’s taking a lot of her time and mental capacity, everyone there is under tremendous pressure, so I’m trying to suck less at the housework. Of course I come from a position of sucking _utterly_ to begin with but I am getting less awful :)

 

Andy

It’s not me, it’s you…

Posted by | Posted in Game Development, Life | Posted on 06-01-2013

The new job is quite a big let down, well not all of it, but I’ve been neatly corralled into a role that no-one else wants because it’s so bad. So whilst I can see all the fun things that others get to do it has been confirmed that I will never be doing them. This is because they need someone to be doing the very annoying shit that no-one else wants to do. There’s no obvious route out of this role, or promotion prospects for anyone doing it (i.e: me), there’s no learning or development to the role, there’s not even any relief in the form of other minor tasks so that I’d be doing something else occasionally, in short, it’s the shitty end of the stick.

That’s not what the deal was when I took the job, but it’s what they had in mind all along.

So, dusting off the CV again and starting to look for jobs whilst I’m still in the probationary period.

Canada looks nice! Lots of people I know have been heading over there in the last few years. Although I’ll also just be hunting around the UK for random contracting roles or work just about anywhere I think.

It’s a shame as it’s not an awful place to work. It’s got some fairly crap bits though and I don’t think they realise it. The UK studio has a very unfortunate attitude in that they believe they’re really professional, but they’re not, they’re very childish, disorganised and amateurish about some things which is quite an unfortunate schism. It’s ok when a place is rubbish and knows it, but quite difficult when they don’t. I don’t think I’ll talk about it more right now. I did have a big rant partially typed up but decided that it just isn’t worth ranting about really.

New job.

Posted by | Posted in Game Development, Life, Pioneer | Posted on 14-10-2012

A little nervous this evening as I’m starting at a new job at Crytek tomorrow.

September, still unemployed but happy update!

Posted by | Posted in Game Development, Life | Posted on 03-09-2012

So it’s been 2 months since I finished my last contract, well, 2 months and 3 days. It’s also now 3 months (+3 days) since I was last paid! Neither of these things is great news but I’m doing surprisingly well right now.

A quick recap just to get my brain in order:

*Sept->Dec (2011)* – Sony London (soho) studio worked on the Harry Potter Book of Spells using their new WonderBook platform, top secret at the time and I can still only mention that I worked on it. That was ok, frustrating at times as they were really hunting around to find the best bits so a lot of stuff fell on the cutting room floor. At the end they offered me another contract on more money beginning when I returned from sailing.

*Dec->Dec (2011)* – Sailed across the Atlantic with my Dad in a slightly broken boat! You can see the photos if you look in my photo archives. Scary, a bit dangerous but not too much – certainly seemed and felt dangerous at the time in places. Good experience, I can’t believe this is already 9 months ago.

*Jan (2012)* – Sony didn’t contact me before/over Xmas – total panic as I needed a job and thought I had everything lined up. Thankfully Rik had been trying to contact me about doing some mobile development for Android & iOS for his new company AppCrowd. This was interesting, I’d be able to work from home a lot and the pay was good enough, nowhere near Sony but not in London and working from home lots meant it was about equal. I took the job with AppCrowd.
Of course Sony contacted me a couple of days later and it was all down to a slight snaffu with HR etc, it’s always HR that screw things up but I’d made my mind up and stuck with the AppCrowd decision.

*Jan->Jun 29th (2012)* – The AppCrowd contract came to an end after a 1 month extension. In some ways I was glad because the publisher we were working for were becoming a real nightmare. It was like they simply had no clue about how to do game development despite being in the business for years before. I think they were just too used to being able to make big changes very easily in the older J2ME games. When the games get bigger and the resources required balloon you need to plan out those changes before work gets done on them or you end up paying multiple times for a single task.

*Jun->now (2012)* – the publisher decided to withhold payment for work done so they could negotiate a better deal, that meant AppCrowd don’t have the money to pay me for the work extra month of work I did in June…

So as you can imagine things are a bit tight money wise right now but they couldn’t be better on other fronts.

Danni is awesome, we went on holiday for a few days and did lots of Shakespeare related stuff (saw a play, visited museums etc), then she was away for 2 weeks travelling around Europe but I got her back this weekend :) she’s gone back to work (teaching) today which is a bit of a bummer as I’d have liked to have her around for a bit longer all to myself!

I have a new niece (see my photos) called “Poppy Isabella Lydiatt” who is, as babies often are, quite adorable. My other niece Amelia Joy is being a good older sister, she especially likes the fact that all of the babies things are pink because this means that she can be the boy and have everything blue… I’m buying her a Transformers toy :)

Also I’m actually getting interested in programming again rather than just doing it because I feel I must to keep my skills in shape, or for programming tests or indeed for work. Mostly this has meant doing things to http://pioneerspacesim.net/ which I’ve just been submitting various little patches covering some basic icon scaling and keeping the VC2010 project compiling etc. However I have also been working on the Factions code that I started months ago and it’s coming along nicely now.
In other coding news I have been working on the Syndicate level viewer and adding pathfinding too it and the GWEN UI etc but that’s gone on hold once more :)

…so there, end of braindump!

I’ve lost track of the days!

Posted by | Posted in boris, Life | Posted on 07-08-2012

We all knew it would happen eventually but today I officially lost track of what day it was. This is doubly worrying since my birthday (33, woot!) was only on Saturday the 4th, but here were are on Tuesday the 7th (thankyou calender) and until I checked I hadn’t a clue.

This is the inevitable results of not having worked for so long (about 5 weeks and counting), there’s no regularity, no rhythm or pulse to life to separate the days out according to some greater plan. I think I’ve managed to go so long with that pattern externally enforced thanks to Danni. Being a primary school teacher means that she’s got a very regular 5 day working week with a 2 day working weekend. It forms a good beat to time life by. Of course now its the summer holidays and that’s all gone out of the window and with it any sense of the passage of time aside from how bright/dark the sky is. NB: currently grey.

As an aside I’m currently watching Boris, our pet adult bearded dragon, pace back and forth along the skirting board the runs alongside the sofa. I’m not sure why he keeps doing this but the last few days he scratches at the glass of his vivarium to be let out, then proceeds to skrat around along this skirting board (its right outside his vivarium) then when he gets cold he goes back inside to warm up. He’ll repeat this several times. There’s an entire ground floor that he could go and explore, and he usually does instead of this – in fact he did it most of this morning, but just recently it’s all about the skirting board. Bizarre lizard, wonder what’s actually going on inside that tiny mind of his.

Ebay(.co.uk) has been saving my finances this month, though not as much I’d hoped. Firstly I did well selling off an older phone for as much as I had originally paid for it, yay! Then I tried to shift my Samsung Galaxy S2 (/S II), that one I ended up selling for £75 less than I paid for it, but that was 6 months ago and since then they have released the S3 so it’s not too bad. I just feel dumb for not selling it sooner and limping on with a dodgy phone.

I now have a HTC One S on contract with Orange. Initially I was nervous of going onto a tariff + phone contract again but in hindsight it makes a lot more sense, even financially, for me. If you can afford to rush out and buy the latest super-phone outright then great because you can end up spending a bit less than going on a contract… in my case it would equate to a massive *insert-drumroll-here* £25 saving over 2 years!!! Woohoo, wow £25 I’ve been conned out of with my contract, what a sucker I am. Yup really it’s only £25 difference. I was amazed when I did the maths, so was the guy selling it to me actually :D he then threw in one of those crappy “care kits” that they charge £49.99 for for free so right now I’m technically up on the whole deal. Of course then my contracting job ended which wasn’t great timing but nevermind.

Switching into discussing work next so I’ll separate these posts.

Tense? Nervous? Angry? Well then…

Posted by | Posted in Game Development, red ship | Posted on 27-05-2012

Tense? Nervous? Angry? Well then I guess someone’s demanding that you commute to another city so you can lose precious hours of working time to sit in on meetings that won’t help you, answer the questions of idiots who’re hindering you and generally make no progress on the complicated research task that they’ve given you which involves an unfamiliar build system using two different languages which you don’t know.

I am sat here cross legged on the floor before my PC honestly wondering if keeping this job for another month is even remotely worthwhile. The rational part is of course saying that I’m skint, the rest is wondering if another months pay is worth several years in prison for murder(/though obviously I’d plead diminished responsibility and accept manslaughter!). No I need the money, I have the mortgage, Danni wants to do things this summer and I’ve heard nothing back from any of the places I’ve sent my CV off to. On which note actually after all of the talks they’ve had it might be extended… by 1 month! Woo, 4 extra weeks.

That’s worthwhile I guess, as I’ll keep looking and leave at the earliest possible opportunity that presents itself. Not only that but I won’t find out until next week which is *drum-roll* my last week! What a complete clusterfuck.

We’ve got no design that’s worth a shit, nor have we had for the last 5 months, no real management or production, no leadership, no art or scheduling, constant re-design… I realise it’s hard to have re-design without design, perhaps re-whimsical-direction-and-arm-waving is a more accurate description.

I maintain that game development is not really that difficult for the most part. You define your desired goal, you plan the steps that get you from where you are now (having nothing, or maybe already having some tech) to where you want to be. Then you divide up that plan into workloads for people, try to figure out dependencies between tasks, identify risks (wherever and whenever that’s possible), sort it all into you’re preferred organising method, then you get on with it. Shit will hit the fan along the way but at least you’ll know where you’re supposed to be going even if you don’t quite get there you should get most of the way.

I still after 5 months am not sure what this game we’ve been making is really all about! Or how it will play, what the end goal of it is, how we define success or failure, anything! I know what it currently does and I vaguely understand what my current task is, but that’s all. That’s a pretty damning failure isn’t it?

On a different tack entirely, I’ve started work on something that Duncan suggested which I’ve tentatively called “red ship” thanks to this Rainbow Codes name generator implementation :)

It’s beyond early days on that one, I don’t even know where it’ll go yet… well, not quite true I know the inspiration for it was one of the games we’ve overplayed beyond all sense or reason, what I mean is that I don’t know where I’ll take this game eventually. Hopefully though it’s small enough to be able to release in a reasonable timeframe. We shall see I guess.

Andy