venta: (Default)
[personal profile] venta
Huge thanks to all the lovely people who picked up the mundane monday idea and ran with it. Here (rather late, sorry) is mine...

I work for a company that provides a "cross-platform gaming solution". The easiest way to think of this is to liken a computer game to an mp3; if someone sends you an mp3, you don't worry about whether they were using a PC, or an iPhone, you just assume that your music player will handle it. We provide an analagous game "player" which means the file which contains the game will work on your PC, in your browser, on your Android phone, on your internet-capable TV, etc.

Monday wasn't actually all that mundane for me - I've just started work on a completely new project. I was also required to be in a meeting with our CEO as his technical demonstrator (which is something I only do around once or twice a month).

So, after the usual morning round of tea, email and checking everyone's had a nice weekend I round up the phones and tablets I'll be using for my demo, boot up the set-top box, switch on the TV, and quickly run through everything. I'm making sure that no one's installed experimental bleeding-edge versions of any software while I wasn't looking (they haven't), and that everything's behaving as expected (it is). Also that everything is fully charged (it isn't) and attached to the correct wireless network (it isn't).

I'm also working out what aspects of our software I should be emphasising - I might show a slightly different set of demos to a TV manufacturer, or a mobile phone operator, or chipset company. Today's guest is from an annoyingly hard-to-pin-down company and it's not clear what he'll want to see.

Having plugged everything in to charge up, I go back to my real job. Day-to-day I do a bunch of disparate stuff (writing games, writing demo code, writing and organising the documentation and development materials we send to games publishers) but my new project is porting a third party game to our system.

Game porting means taking an existing, working game written for a different system and converting it to work on ours. The game that has been dropped on me is huge by my standards, vastly complicated and uses features of C++ that I never use. I spend quite a lot of the day staring blankly at it in horror and confusion.

I have a C++ book on my desk, and have to keep stopping to read up on features of the language which I don't know about. A couple of times I have to be rescued by [livejournal.com profile] hjalfi - who hates C++, but is extraordinarily well-informed about it (so he can hate it properly, I think). He explains just what's being used by a particular bit of code so I can work out what to look up and read about.

I also spend a lot of time chatting on Skype (IM, not phone-a-like) to a colleague who's done a lot of this sort of work before. He's very good at it, but I don't seem to be doing a very good job communicating with him.

Around one o'clock, our visitor arrives and I am summoned into the meeting room. The demos should, in theory, be very simple. Show some games running on a TV, send the games to phones and tablets over wi-fi, show the same games running on them. Show some multiplayer games between different devices. It's all very easy - the only reason a demonstrator is required is because if you give any piece of electronics to our CEO, then within 30 seconds it will have crashed, rebooted into some hitherto-unseen factory-only development mode, and changed all its settings to Taiwanese.

In theory, I'm also there to answer any technical questions the visitors ask; in reality, they rarely ask. Mostly, I sit and listen while our CEO gives the visitor a quick, filleted overview of the technology. I show him the software in action and - as is normal - at least one of the demos fails spectacularly despite having worked perfectly well earlier in the day. Most annoyingly, it is the one I wrote.

About an hour later they move onto business stuff and I'm released: I've missed my usual lunch stop with Hjalfi and Sysadmin #1, so eat lunch at my desk instead. Then it's back to swearing and glaring at C++, and trying to work out exactly where I'm supposed to start. I'm not really doing anything yet, just chasing through the paths the code might take and trying to grasp some idea of how it currently works, and how it might need to be restructured.

Throughout the day, I keep half an eye on email. I don't get a lot of mail from humans as a rule, but various machines mail me to keep me up to date on changes other people are making. Towards the end of the day, I notice some emails coming in from our bug-tracking system suggesting that there's some work needs doing on our Eclipse plug-in. Eclipse is a piece of software that people writing games might use, the plug-in allows them to develop games specifically for our platform. A number of years back I did some work on our plug-in to add branded splash-screens, icons, customised help etc to it (which Eclipse makes harder than you'd expect). Anyway, some silly bugger has done a complete re-brand and everything need updating.

One of my colleagues has duly updated all the images, but (having re-built the plug-in) it's still using the old ones. What else does he need to do? The answer is currently "buggered if I know". I dig the code out of our version control system, and have a look at the relevant project. It's a good three years or more since I interacted with this stuff and when I look at it, nothing seems in the least familiar. It also seems to be throwing weird errors all over the place. I decide to put it off until my overseas colleague is awake tomorrow morning and see if he can remember; if not, I shall have to try and piece together what needs doing.

Just before hometime, my boss comes to check how the game porting is going. Not that well, yet. He says that if I'm not making progress, we should get back to the original company and tell them the code isn't suitable. I warn him that I think it's probably me that isn't suitable, and he says he'll ask again in a few days.

So... all in all, not a terribly successful day!

Date: 2013-02-07 11:17 am (UTC)
From: [identity profile] ao-lai.livejournal.com
Because you can, for example, pass that variable into a function by reference and change it in there. You can't do that search in C++ not because multiple return parameters aren't supported, but because out parameters are.

Date: 2013-02-07 11:24 am (UTC)
From: [identity profile] bateleur.livejournal.com
Because you can, for example, pass that variable into a function by reference and change it in there.

Certainly C and C++ support this, but as you wisely pointed out earlier in the thread, just because a language contains some horrendous misfeature that doesn't mean it has to be used. (Actually, to be fair, passing something by reference is often completely reasonable in C. I assume there's no valid reason to ever do this in C++.)

Bear in mind that I'm arguing for multiple return parameters as part of an elegant and sensible language design, rather than proposing they should be - for example - bolted onto the shambling monstrosity that is C++!

Date: 2013-02-07 12:24 pm (UTC)
From: [identity profile] ao-lai.livejournal.com
Reasonable or not, pass by reference isn't supported in pure C... Though of course you could do similar things with pointers.

But in the end, apparently I'd rather have a powerful language with useful features than a restrictive one.

Date: 2013-02-07 12:29 pm (UTC)
From: [identity profile] bateleur.livejournal.com
Yes, "by reference" in this context just meaning anything that allows mutation.

apparently I'd rather have a powerful language with useful features than a restrictive one

Yes, that does seem to be the defining tradeoff with C++. All the features you could possibly want, with the caveat that if you aren't incredibly clean and disciplined in your coding you will also end up with all the debugging you could possibly want. 8-)

Profile

venta: (Default)
venta

December 2025

S M T W T F S
 123456
78910111213
14151617181920
212223 24252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 26th, 2025 06:37 am
Powered by Dreamwidth Studios