About the Author
Mass Effect
Final Fantasy X
Batman:Arkham City
Borderlands Series
Weekly Column
Champions Online
World of Warcraft
DM of the Rings
Good Robot
Project Frontier

Crash Dot Com Part 2: The Art Coder

By Shamus
on Thursday Nov 17, 2016
Filed under:


It’s now 1999, and I have an odd job. Our product is a multi-user social environment. In four years, Second Life will show up and make a more successful version of this idea, but for right now we’re doing pretty good. Sometimes clients come along and ask us to build custom environments for them. A lot of these projects land on my desk.

I’m technically an “artist” in the sense that a lot of my job involves creating models and textures. But I’m more an engineer in terms of inclination and skill set. I don’t have a solid grip on aesthetics and I really envy my fellow artists who can nail a particular architectural style like “Gothic”, “modern”, “whimsical”, or whatever. I don’t have the flair for that sort of work. When I need to make something, I have a very literalist, brute-force approach to designing stuff. If someone sends me sketches or reference photos for what they want, I’m likely to just build exactly what I’m shown, while the real artists on the team are able to get the “vibe” the client is going for.

In any case, I see myself as a bridge between artists and engineers. I make tools to help automate some of the drudgery work of the art pipeline and sometimes I come up with solutions to time-consuming problems.

For example…

I don't have any screenshots of the project, but here's a shot of Unreal Tournament. This is from the same time period and it's kind of what I was shooting for.

I don't have any screenshots of the project, but here's a shot of Unreal Tournament. This is from the same time period and it's kind of what I was shooting for.

At one point a client comes along. They want something that looks like an indoor corridor shooter. The problem is that our software is not designed to render BSP based levels like that, and our tools aren’t designed for making those sorts of spaces. Imagine trying to build an Unreal Tournament level with the Fallout 4 building interface, using stuff like one-meter rectangular panels, and you have a sense at just how maddening and fussy the job was going to be.

We don’t really have good tools for building something like this. The 3D modeling program we use is called truSpace. It’s basically tolerable for making small-scale models. It’s okay for making stuff you might put IN an environment, but it’s terrible for making the environments themselves. It’s fiddly and buggy and the interface is inscrutable. The most egregious shortcoming is that the program can't do boolean operationsCombining two shapes together. For example, use a smaller cube to carve out a hollow area inside of a larger cube. to save its life. Some of my friends at work have a saying we use: “Truespace is a 3D program that is bad at math.” Subtract 3d object A from B, and you have 33% chance it will work, a 33% chance it will do something that makes no sense, and a 33% chance it will crash.

My solution is to build the level using a modern level editor. I build the level using the awesome Unreal Edit, which comes free with every copy of UnrealI wonder now if I was violating some sort of license agreement? At the time it never even occurred to me.. Once I’m done I export to a generic (non-Unreal Engine) format. Then I write a program to parse that file and convert it to our own format. This is a bit of a challenge. The Unreal Engine has a very different system from what we’re using. They use different coordinate systems at different scalesIn Unreal, the Z in XYZ is up, and 128 units = 1 meter. In our world, Y is up and 1 unit = 1 meter, and I think some of the XYZ axis might be flipped.. They have different ways of defining polygons, different ways to defining what textures are used on each polygon, different ways of expressing how those textures are mapped onto the polygons, and different ways of expressing the lighting and surface properties. This foreign format isn’t documented, so I have to do a bit of reverse-engineering to figure out how it worksThese days it would just be a Google search away. But in 1999? Not so much..

At least the file is text-based. I can open it up in Notepad and try to make sense of it by reading, which is better than groping around in a formless soup of binary data.

The converter works and turns the videogame level into a single object that we can use. That solves part of the problem. Now we have the level in our 3D world. There are still two problems:

Problem One:

Our software can’t support this many polygons in a single model. Once a model has more than N polygonsI forget the value of N. Maybe a thousand?, the collision detection assumes the object is a decorative statue or other object that doesn’t need per-polygon collision checking. Instead it will ignore the object during collision checks, thus making the whole thing non-solid. This is a safety measure we put in place because our software features a lot of user content and users tend to be reckless about adding heavy, CPU-sucking assets. The result is that you can view this level, but you can’t stand on any of the floors or bump into any of the walls.

Problem Two:

Since the world is usually made by users building with prefab pieces, we can’t use the usual optimization tricks that games like Unreal and Quake use. In Quake, the developers run a program to figure out what rooms can be seen from which other rooms, so the game only draws what is completely necessary. It’s not possible to use something like this in a world where users are constantly moving and changing things. So we have to rely on the stone-age technique of “draw distance”. If you get more than N meters from an object, it will vanish from view. N is a variable that is controlled by the user, by changing a setting in the graphics menu. The problem is that this building is all one object. As soon as you get N meters from the origin of the building, it will vanish and you’ll find yourself in empty space, plummeting into the void belowIgnoring the fact that you’re ALREADY plummeting into the void, because you can’t stand on the floors.. Even if you set all of your graphics options to maximum, it still won’t be enough to allow you to explore the far reaches of the level.

A screenshot of the level editors of the time period.

A screenshot of the level editors of the time period.

My solution is to write another program that tears the entire level apart into its component polygons. Then it groups the polygons according to texture and location. It creates a new origin for this group. So instead of one big object, we have thousands of little ones. These objects are kind of funny. One object might be a couple of huge triangles that make up part of the floor in one room, along with one side of a pillar and half a door frame. It’s a bit like those 3D puzzles where individual pieces don’t make any sense, but when all the bits are in place it forms a seamless whole. My program effectively tears the model apart and then places the pieces in the world.

Sure, the artists could have built all of these pieces by hand in their 3D modelling program of choice. But if they needed to make a change – like making one room slightly larger and doubling the number of support pillars – it would require a ton of fussy work and changing many different objects. Instead, I just change the level in Unreal Edit and run my converter program.

This job would have been far too technical for the artists. Meanwhile, the programmers working on our core product wouldn’t have known about this problem because they weren’t concerned with the art production stuff. And even if they did know about it, this solution wouldn’t have occurred to them. And even if it did, they would have seen it as a low-priority job that took them away from the all-important core product.

As a result of being this odd artist / programmer hybrid, I am able to turn weeks of work into a couple of days of coding. I LOVE jobs like this, although the downside of being the only art coder on the team means that nobody is really in a position to appreciate just how much time I’ve saved us.

Communication Skills

The other downside of having this skill set is that I’m seen as a socially high-functioning engineer. If we need to have a feasibility conversation with a client then I’m the one called into the meeting because I’m not going to baffle anyone with technical jargon when I’m asked a question.

See, just about every engineer puts “good communications skills” on their resume, and in the vast majority of cases it simply isn’t true. It’s not that they’re lying, it’s that they have no idea what “good communications skills” means. They think it means stating things bluntly and accurately. They transmit the data, and it’s up to the listener to decipher it. Once they spew out their brusque, jargon-filled facts, they feel like they’ve done their part. But of course the goal of communication is not to broadcast data, but to be understood.

I’m the rare person who understands the technical stuff but can also strip out the jargon for non-engineers. This is how I end up dragged into a meeting with our largest and most prestigious client. They’re some bigshots from a hot new dot-com venture.

To be continued…



[2] Combining two shapes together. For example, use a smaller cube to carve out a hollow area inside of a larger cube.

[3] I wonder now if I was violating some sort of license agreement? At the time it never even occurred to me.

[4] In Unreal, the Z in XYZ is up, and 128 units = 1 meter. In our world, Y is up and 1 unit = 1 meter, and I think some of the XYZ axis might be flipped.

[5] These days it would just be a Google search away. But in 1999? Not so much.

[6] I forget the value of N. Maybe a thousand?

[7] Ignoring the fact that you’re ALREADY plummeting into the void, because you can’t stand on the floors.

Comments (56)

  1. Mr Compassionate says:

    I am legitimately on the edge of my seat. Looking forward to the next issue of The Adventures of Shamus the Art Programmer. Same bat time ect

  2. Da Mage says:

    I get round the jargon problem by not remembering what things are called in the first place.

  3. Lachlan the Mad says:

    So I’m actually studying a Masters degree in Science Communication right now, and towards the end there Shamus has really hit upon one of the core principles which gets hammered into us in every single lecture.

    There’s this old idea in Sci-Com called the “Deficit Model”. The way that model goes is something like this:

    – We have lots of science information.
    – The public has no science information.
    – Therefore, we must give the public ALL THE SCIENCE INFORMATION.

    There are a couple of reasons why this doesn’t work:

    Data is useless without context. Most people are very bad at interpreting raw numbers; you need to be interpreted for them in order to understand it (and it’s not difficult to interpret the same set of data in two different ways and come up with two different meanings).
    People actively look for what is useful to them. “Useful” is a very broad word, but it’s the most appropriate word that I can think of because it can mean different things for different people. Some people think that useful information means “information that is relevant to my job”; others might think it means “information that affects my purchasing decisions”, or “information that fits with my moral values” — and most people will think all three of those and more depending on what you’re talking about.
    People see contrary data as a personal threat. If someone has already decided to believe something, contrary evidence doesn’t convince them against their beliefs. If anything, they’ll see the contrary evidence as a threat, which makes them wall up in order to defend their beliefs. The conversation will become antagonistic instead of constructive. This in a nutshell is why internet political debate is so stupid.

    There, I just saved you a Masters degree.

    • Primogenitor says:

      The gulf between “communicating to people who are listening and willing and able to understand” and “communicating to people passing by (metaphorically or literally)” is vast. The former is akin to teaching, and the latter is more like marketing / indoctrination.

      • Lachlan the Mad says:

        Oh yeah, but those three principles apply to both types of communication. Knowing what not to do is easy — knowing what you should do is the hard part.

        • Tizzy says:

          In my experience, the usefulness bias is one of the hardest aspects to deal with. Once you’ve had to do the work of learning ALL the data and not just some bits, it’s easy to forget how daunting the task was. And it is so easy to underestimate the deluge of data that people must contend with on a daily basis, and assume that yours has top priority.

    • Grudgeal says:

      In other words, we have to turn all of humanity nihilistic to get anything useful done?

      • Ilseroth says:

        I wouldn’t say nihilistic, simply because that assumes that lack of believing in anything inherently implies that life is meaningless. Even if you reject the traditional means of giving meaning; life can have meaning mostly because you give meaning to it.

        Instead the need is for people to become more open to being wrong. From a young age, right is might. We spend a fair deal of school teaching kids that being wrong is bad, that you should believe what is written in the textbooks as they are written then drill them into studying exactly that one way for a test. However when someone follows the line of logic it means they are more likely to be gullible and then eventually resistant to change.

        I think that to improve, more logical thought based classes should be introduced at a young age that ask kids to really try to create a system for taking new ideas given to them and disseminating their value on their own.

        • Syal says:

          I think teaching will only ever be partially effective; kids (and adults) lie for fun long before they can really think things through, so there will always be that ‘disbelieve what people tell you’ training no matter what the teachers say.

          Socratic method still works well; find out what someone thinks, then ask probing questions that make them think more heavily about it. If you get someone to a point where they can’t understand their own opinion anymore it’s more likely they’ll be willing to change it. It’s really hard to apply on a wide scale, but I don’t think anything works on a wide scale.

          • Grudgeal says:

            To add a note of seriousness to my above joke, humans may be genetically conditioned to want to be ‘right’. While evolutionary psychology is a bit of an iffy subject, a hypothesis in the field suggests that arguments and reason are, in themselves, a means to establish social hierarchy and dominance within a pack and evolved because they let you better sh(o)ut down anyone who disagrees with you.

            That means that an inability to change your mind and appear ‘right’ in your convictions, no matter how antiethical they are to logic and reality, may be a positive trait that has been selected for in humans, or in layman’s terms, people are bullheaded because being bullheaded and shouting down the other part in an argument is good for you, as long as you don’t end up shouting down something that turns out will kill you and everyone related to you while saving the other side.

            Incidentally, I have no idea how correct that hypothesis is. More than likely it’s one of those things that would be impossible to prove one way or the other. But it’s an interesting concept to think of the next time you get into an argument. Both sides, you and them, may literally be programmed to want to ‘win’ the argument by whatever means and ‘facts’ are just one way of doing it.

            • Syal says:

              I agree with that hypothesis (in general, I haven’t read the link), and I think part of the beauty of the Socratic method is it allows the other person to lead the conversation, and effectively says “Ok, you win, now tell me what that means.”

              • Geebs says:

                The downside of the Socratic method is, of course, the bit where all of the people you’ve used it on make you drink hemlock for being that annoying prick who kept asking questions and got them all muddled in their brain-thinks.

        • Felblood says:

          Actual Nihlism, as opposed to the form practiced by disaffected highschool students, is a bit more sophisticated.

          In a universe that provides no absolute meaning, it’s up to you to decide what has meaning and to dedicate your life to the goals and causes that truly matter to you. This is what Nietzsche means when he talks about evolving beyond morality, and forging your own truth in a universe where nothing is true. It’s about daring to be an individual and not letting your religion, culture or even your biological impulses define you.

          Kind of ironic how that ideology gets twisted around to justify nationalist and totalitarian regimes all the time.

    • Zekiel says:

      Further to your third point – I just read this today which is both fascinating and deeply depressing: https://youarenotsosmart.com/2011/06/10/the-backfire-effect/

      • Syal says:

        The most depressing part to me is that 1997 study bit.

        Each group then read the fake studies full of pretend facts and figures suggesting their worldview was wrong. On either side of the issue, after reading studies which did not support their beliefs, most people didn't report an epiphany… Rather than shed their belief and face facts, they rejected science altogether.

        They seem to be suggesting that disbelieving lies is unfortunate behavior.

        • Felblood says:

          Breaking News!

          Scientific community overestimates the importance of the authority of the scientific community to laypersons!

          It is true that scientists used to get a lot more respect, but now we see them as just people, human and fallible, just like Earth people. This must be pretty galling, especially as the community itself continues to fracture into dogmatic echo chambers.

          • Felblood says:

            All snarking aside. I think this is healthy for us, as a culture.

            Exposure has helped us build resistance to the idea that people in lab coats are trustworthy, intelligent and well screened.

            After some of the statistics I’ve read about medical testing labs.* This is probably healthy for us, in a literal way.

            *I haven’t got the source on me, but this study claimed that, a non trivial percentage are canning nearly complete studies, apparently out of concern that the companies funding them might not like the results. The contradiction inherent in asking you to accept this flimsily supported, half remembered statistic are not lost on me.

    • King Marth says:

      I took a speech-making class once, and it taught me the basics of rhetoric, which has framed the way I approach communication to this day. The core types of arguments are Ethos, Logos, and Pathos. Most people recognize the last two when communicating, but I’ve seen little representation elsewhere of the first.
      Logos is logic, the presentation of facts and the chain of reasoning that follows from those facts; it’s arguably the most important part of rhetoric as it’s the part where you’re actually trying to convince people to believe in what you say based on reason. Pathos is emotional appeal, making people feel something about what you’re saying. Pathos is powerful, but it’s a polarizing force, it strengthens people’s beliefs in what they already believe.
      The basic structure of a speech to a receptive crowd is Logos/Logos/Pathos, spending most of your time educating them and a bit at the end firing them up about it so they remember your topic. The basic structure of a speech to a fanatic crowd is Logos/Pathos/Pathos, getting the boring description of what you want to tell them out of the way early so you can cheerlead for the rest. (I use three arguments because that’s roughly how much time you have in a 5-minute speech.)
      Ethos, however, is the ‘ethical’ argument, or more accurately the establishment of common ground. Ethos is the essential starting point for hostile, non-receptive, or just plain indifferent audiences. You appeal to shared humanity and shared values, and remind people that we’re all on the same side in terms of wanting the best for everyone (at the lowest cost, which is often where the arguments start). Without the Ethos argument, you don’t give your audience a reason to listen to logic, so it doesn’t matter how much information you try to convey.
      Ethos/Logos/Pathos is the most generic speech structure, uniting people so that they listen to what you say long enough that you can make them care about it. Ethos/Logos/Logos or Ethos/Ethos/Logos are the structures you need to dispassionately present facts for consideration or gently massage your audience into considering different views.

      Or, if you’re boring like this comment, Logos/Logos/Logos presents a bunch of information with no reason to accept or remember it. This is why you end on a joke.

      • Chaotic says:

        That’s actually pretty intresting.

        I also can’t help but see parallels in videogame writing with this. In the sort of emotional connection/exposition/payoff kind of way (whereas mass effect 3 would be all exposition and no payoff).

    • Son_of_Valhalla says:

      Not only did you sum up communication (like Shamus) and a master’s degree, you’ve basically summed up getting any science or in my case social science degree.

      It’s painfully frustrating to present information to people when they don’t like that it contradicts what they believe in…. especially when they’re conspiracy theorists, and there’s a shockingly crazy amount of them

      For the sake of how sad it is to speak to people about my field, I am in anthropology.

      No, big foot doesn’t exist. No, alien’s didn’t build the pyramids. Get used to it…. yes I’ve had people debate me on this. Primary education really worked, eh?

      • John the Savage says:

        To be fair, it’s not like anthropologists are any less susceptible to this kind of bias. Just look at the Margaret Mead/Derek Freeman kerfuffle. I took two anthro courses in college, and I swear my professor could hardly go a week without raving about “this society of alleged scientists putting it to a vote which author was right. A VOTE! As if science was some sort of democracy!”

  4. mewse says:

    At Melbourne House, that process of splitting up a large mesh so it could be usefully culled by distance (and other visibility criteria) we called “slice & dice”. Our 2004 PS2 Transformers game had its levels built as a single piece, and then procedurally split up in a manner very similar to what you’re talking about here. (We also did occlusion culling in the same process; the “what’s in view from where?” thing that you couldn’t do because of user-generated content)

    We actually wrote a parallel processing tool which didn’t just split up that single massive level mesh; it split up the job of splitting up the level mesh, and divvied that up between computers. We had this tool running on every computer in the building, even the receptionist was running this in the background, and it made what would have been a weeklong mesh optimisation process reliably complete in just about three hours, as everybody’s computers’ idle cycles were devoted to the problem.

    …in retrospect, I imagine we must have had some impressive electricity bills, during that project. I don’t think we ever used that tech again. But it was pretty awesome, at the time.

    • Tektotherriggen says:

      Probably still more eco-friendly than buying a dedicated machine, or building a less efficient game and making the player’s computer work harder (although, did the PS2 have any kind of power saving when not working 100%?). Maybe renting time on an external server would be better, but that’s a more modern service, isn’t it?

  5. Grudgeal says:

    That’s at least one advantage to working in medicine: The GPs all know the stuff the technicians do behind the scenes, they’re just over-educated for the job and too busy to actually do it. Nobody ever calls me out of the lab to explain stuff to the patients, because there’s a perfectly serviceable doctor around with three times my schooling and three times my salary to do it for me.

  6. arnsholt says:

    The directions of the XYZ in Unreal and your engine may very well have been flipped. If one of them used OpenGL while the other used DirectX, the direction of the z-axis would be flipped because OpenGL uses a right-handed coordinate system (which is the orientation generally used in geometry, but sadly means that in screen coordinates the visible half of the z-axis are the *negative* coordinates) while DirectX has a left-handed coordinate system (which is weird in math terms but means you have the positive z-coordinates being visible in screen coordinates).

    • Abnaxis says:


      Every time I have ever had to work in a left-handed coord systems, I ruefully curse the software designer who decided to do it this way and never understood why you would do that. The “avoid positive z coming out of the screen” thing makes sense, though I still hate left-handed systems.

  7. Daemian Lucifer says:

    Part 2?But there should be part 5!This is a rip off!

  8. Now all I can think about is this guy from Office Space.

  9. Ross Smith says:

    Shamus, you’re describing my day job :)

    I work for this company on plugins that connect our rendering engine to various 3D modelling suites, so a large part of my job is writing code to convert in both directions between Octane’s scene graph format and the likes of SketchUp and Unity (to name two I’ve personally worked on). Recently I had to write exactly the kind of “partition $TOOMANY polygons into no more than $NOTENOUGH at a time” code you wrote, so that our test scenes (millions of polys) could be imported into Unity (which allows no more than 64K polys per mesh).

  10. Joe Informatico says:

    Having friends who were studying engineering and computer science around this time, I remember hearing a lot of jokes like these:

    A man is in a hot air balloon, drifting over a field. He sees another man below and calls out, “You there! Where am I?”

    The man thinks for a second, and says “You’re in a hot air balloon, about thirty feet above this field.”

    The man in the balloon grimaces, then calls back, “You must be an engineer.”

    The man in the field says, “Why yes, as a matter of fact I am. How did you know?”

    “Because what you said is technically correct, but of no use to anyone.”

    “I see,” says the engineer. “Well then, you must be in management.”

    “Actually I am,” says the man in the balloon. “How did you know?”

    “Because you don’t know where you are or where you’re going, and you’re in the same predicament you were five minutes ago, only now it’s my fault.”

  11. Ysen says:

    I think many engineers are actually good at communicating… with other engineers. It’s when they have to talk to people outside their specialisation that it becomes a problem. This isn’t something that’s specific to engineers either – a lot of fields have their own lingo that makes it hard for people who work in those fields to communicate with outsiders.

    • Benjamin Hilton says:

      My best friend in college was always like this. I will freely admit that he has always been a much better coder than me, but when talking with people at internships I always had to be there to translate what he said to others.

  12. Dreadjaws says:

    “But of course the goal of communication is not to broadcast data, but to be understood.”

    This brings to mind conversations I’ve had with people who believe themselves to be smarter because they use fancy words to communicate. Note: they don’t actually say smarter things, they merely say regular things, only with more obscure words. This, of course, not only doesn’t make them any smarter, but actually show how terrible they are at communication since, like you said, the entire purpose of communication is, well, to communicate, to have your interlocutor understand what you’re trying to say.

    • Son_of_Valhalla says:

      I’ve done this before. Often times, you just can’t help it.

      I get so enthralled in conversation, I can’t help but to use fancy words.

      Okay that word wasn’t bad, but sometimes I use fancy words. Sometimes.

      • Friend of Dragons says:

        Back in college, I had one class where a recurring assignment was to read one of a handful of scholarly articles, and pen your thoughts on it. For several of said articles, I just had to assume that the person writing them was desperately referencing a thesaurus to find the most arcane way to express their thoughts. I derived a perverse sort of amusement from being as deliberately obtuse in my responses to those as I can only assume their original authors were in writing them.

    • You have to understand that when scientists (or at least most of us) do this, it is NOT to appear smart – it is to either be as precise as possible or sometimes, simply out of habit. Our normal form of communication is through scientific papers and presentations, where complex data has to be communicated clearly, precisely and briefly – often leading to use (overuse?) of jargon. And it is very easy for some of the jargon to find its way into one’s normal, every day communication. I know that I have caught myself using the word ‘aliquots’ to refer to portions of stew I left in the fridge for my flatmates. I didn’t do it to pretend I was smart, I did it because it was a word I used a lot every day and it came to mind first in this situation.

      PS I had to look up ‘interlocutor ‘. That was a nice touch :)

      EDIT: As another example, check out below, Shamus explaining why, when talking about graphics, he say ‘polygon’ instead of ‘triangle’. Habit and precision.

  13. Taellosse says:

    So, here’s a question that betrays my lack of technical expertise, but which has always vaguely bothered me:

    Why are the component shapes in 3D modeling always called polygons, as though they’re going to have a variable number of sides? As far as I can tell, absolutely every shape created in 3D modeling is a triangle. Some form of triangle is used to make all other 2D shapes (a square is actually 2 triangles arranged so their longest sides are adjacent. A hexagon is 6 triangles arranged so their most acute angles all meet at the same central point. A circle is not really a circle, but the same idea as a hex, except with lots more, much skinnier triangles) and by extension all the 3D ones as well. Is it just because “polygon” sounds fancier, or is there an actual technical reason?

    • Shamus says:

      Probably habit. While graphics hardware can only understand triangles, back when rendering was done by your CPU, you could render either triangles or rectangles. The framework for rendering rectangles is still there, but these days it just automatically breaks a rectangle into a pair of triangles.

      So we probably say “polygons” as a leftover from the old days.

    • Naota says:

      Another reason is simply that worlds made of discrete triangles aren’t easy to actually work with. In 3D modeling programs such as 3D Studio or Maya, most flat planes are actually rectangles or more complicated convex shapes which are only later broken up into triangles (technically they’re always triangles, but let’s not get into that for now). It’s why models look like this in creation, but render out as this inside a game.

      Essentially, when you’re working in 3DS Max there is actually a meaningful difference between a model’s polygon and triangle count, even though it’ll be cut up into triangles later.

  14. tengokujin says:

    Actually, even when using the XYZ coordinates in realspace, X and Y are to indicate a 2D plane, so they’re basically “width” and “length”, while Z is “height” for the 3rd dimension.


  15. Scerro says:

    Don’t forget that you have to put Great Communication Skills on a resume as 1 – A space filler, and 2 – It’s expected, and 3 – Need it there for Keywords.

    Oddly enough, I think the Internet has actually made job searching worse. It’s more convenient, but because of floods of applications it’s super hard to stand out unless you’re amazingly accomplished. Plus re-entering the same information over and over and over and over and over is such a waste of time.

  16. ThaneofFife says:

    If there’s any chance that the environment you built is still in public use (which I’m guessing is unlikely), then you may want to edit out the part about how you may have violated the software license. As an alternative, you may want to anonymize the level editor that you used.

    Specifically, while the statute of limitations would likely apply to a hypothetical IP violation that occurred 17 years in the past–meaning that it would likely be too long ago for anyone to be sued over it–if the IP violation was still on-going within a more recent time period (i.e., a period in which the statute of limitations has not expired), then it might still be possible for you and/or your former employer to be sued for violating the software license.

    If, after reading this, you’re concerned that you and/or your former employer face legal action, then I would recommend consulting an attorney specializing in intellectual property issues (i.e., not me).

  17. Mike C says:

    I’m enjoying this series, and can’t wait to read what happens next. I hope you don’t get stuck with businessmen who want to build a clunky skeuomorphic online shopping experience!

Leave a Reply

Comments are moderated and may not be posted immediately. Required fields are marked *


Thanks for joining the discussion. Be nice, don't post angry, and enjoy yourself. This is supposed to be fun.

You can enclose spoilers in <strike> tags like so:
<strike>Darth Vader is Luke's father!</strike>

You can make things italics like this:
Can you imagine having Darth Vader as your <i>father</i>?

You can make things bold like this:
I'm <b>very</b> glad Darth Vader isn't my father.

You can make links like this:
I'm reading about <a href="http://en.wikipedia.org/wiki/Darth_Vader">Darth Vader</a> on Wikipedia!

You can quote someone like this:
Darth Vader said <blockquote>Luke, I am your father.</blockquote>