Jump to content

Recommended Posts

Posted

I rarely ASK for a sticky, but I'd like to formally ask for one for this post below.

 

I've made myself known on these forums for plopping down the following image in MANY suggestion threads:

 

UqE1SsX.jpg

 

This was known on the original forums as The Standard Code Rant. I didn't make it, someone else did. (Who? Anyone know? I'd love to talk to this genius!) Why do I do this? Why do I feel it's important enough to keep doing it? Read on if you'd like to know.

 

I am a "professional" programmer by trade. Someone pays me money to type on my little keyboard in my little cubicle for 8+ hours a day. This is what I *DO*. Installed prominently in my cubicle, I have a piece of paper with the following text:

 

Westley's Maxims

[*]Virtually ANYTHING is possible code, given enough time and resources.

[*]If you don't know the existing code, or if a task has never been done before, there's no way to accurately gauge how difficult it will be, until it is attempted.

[*]If the ONLY reason why you're doing something a certain way is "because it's always been done that way", that is *NOT* an acceptable reason to keep doing it that way.

 

Why do I have this posted in my cubicle?

 

So that any time someone comes and asks me "can you do X", I can point to #1.

So that any time someone suggests that something "should be easy, right?", I can point to #2.

And so that any time I ask someone why they're doing something "that way", and they say "because it's always been done that way", I can point to #3.

 

It saves me a LOT of breath. The Standard Code Rant is essentially #2 stated in a more humorous and visual form. I don't post it to be a COMPLETE dick, maybe just a partial dick, but no, I post it whenever I see "X should be easy" to raise AWARENESS that unless you've actually done something similar yourself, with THIS code base... you're making a HUGE and gross assumption about that process.

 

Everything that you see on your computer screen is the result of literally MILLIONS of programming man(or woman)-hours of code work to make it appear on your screen, and make it useable to you. The modern programming languages that we have access to today are the results of MILLIONS more hours of programming work that had gone before us. Everything that I make or work on was built on the backs of giants, so that I don't have to sit on my computer and figure out whether I should code my solution as "00010101" or as " "00010110". And thank GOD for that. I thank the tireless efforts of thousands or hundreds of thousands of programmers that came before me and laid the groundwork so that I can move forward and keep building more on top of what they've already given me.

 

Something that "sounds" easy to you, might be take a programmer anywhere from five minutes, to five months to accomplish, or anywhere in between. For example, below is a "Hello World" app that has a button that when you click on it, shows a message box that says "Hello World!":

 

AUTFE0W.png

 

And below is the minimal required code to make that simple thing happen:



using System;
using System.Windows.Forms;

namespace Hello_World
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [sTAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

using System;
using System.Windows.Forms;

namespace Hello_World
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Hello World!");
        }
    }
}

 

Now, depending on your current level of computer know-how, that might all seem overwhelming and like Greek to you, or you might just be saying to yourself "is that it? so what?". Well those saying "so what" aren't realizing that for MY code to be even THAT simple, THOUSANDS of other lines of code behind the scenes had to be created by programmers that came before me that created all of the objects, methods, and other tools that I was able to use to make that program in the two minutes that it took me to throw it together. Someone had to MAKE the MessageBox class, someone had to MAKE the IDE (Integrated Development Environment) that allowed me to just plop an object down on a form in a GUI environment instead of making everything from scratch. NONE of this exists without someone going through the work and MAKING it exist. The wizards that came before me created the digital world, the digital land, digital air, digital waters, so that I could then populate it with digital trees and birds. But NONE of this would exist, if someone didn't go through the work of making that world to begin with. *I* certainly couldn't have made that world, I don't have the skills necessary.

 

Now, let's bring this back to the City of Heroes world. When City of Heroes was created, it was created in the language of C. Not C#, Not C++, but just plain old "regular" C. It was created in 1972. There WAS no easy "IDE" to use, there WERE no graphical tools that existed so that idiots like myself could plop pretty objects down onto other pretty objects. Hell, GUIs didn't really even exists as a programming CONCEPT until a year after that language was originally envisioned, and wouldn't become common until the mid 80s.

 

Now, why Cryptic chose to use regular C in 2003/whenever, I have no idea. But the fact is that they DID choose to use it. And, until someone rewrites the whole engine in a modern programming language, we're stuck making everything the "hard way". For example, here's a snippet of code from source that draws a SINGLE one of the "quick access" selector buttons onscreen for you to click to change your chat channel by using just one of those little "letter buttons" above the chat window:

 



int drawSelectorButton(int * xp, int y, int z, float scale, int clr, Entity * e, int tip, int info, char * text, char * smallTex, char * largeTex)
{
AtlasTex * tex;
int hit = 0;
int x = *xp;

if( e->pl->chatSendChannel == info )
{
tex = atlasLoadTexture( largeTex );
z += 1;
}
else
{
tex = atlasLoadTexture( smallTex );
}

BuildCBox( &chatTip[tip].bounds, x - tex->width*scale/2, y - tex->height*scale, scale*tex->width, scale*tex->height );
setToolTip( &chatTip[tip], &chatTip[tip].bounds, text, 0, MENU_GAME, WDW_CHAT_BOX );
if( D_MOUSEHIT == drawGenericButton( tex, x - tex->width*scale/2, y - tex->height*scale, z, scale, clr, CLR_WHITE, e->pl->chatSendChannel != info ) )
{
e->pl->chatSendChannel = info;
sendChatChannel( e->pl->chatSendChannel, "" ); // won't use buttons for user channels
hit = 1;
}

*xp += CHANNEL_SPACER*scale;

return hit;
}

 

And even THIS is just a SINGLE method that makes use of dozens of other variables and methods that are defined elsewhere in code. Just to DRAW one single teeny tiny pretty button.

 

Are you starting to get the complexity here? No? Well, take a look at the "How It Fits Together" page from OuroDev, and notice that there are FIFTEEN different unique servers/programs that all work together in conjunction with each other to bring the game that you know and love to your screen, and EACH of those elements contain within them HUNDREDS of methods, objects, and variables that are made up themselves of THOUSANDS of lines of code.

 

I did at one point have a graphic that showed how all of these pieces fit together so that you could have a graphical representation of the complexity, but I seem to have lost that at this time. If I find it again, I'll modify my post and stick it here for reference.

 

So, when I post that "Standard Code Rant", I hope you can understand that it's NOT just to troll, but rather to try to foster an understanding of our own ignorance of the process. Make suggestions, as the Standard Code Rant states, it's fun to dream! Dream big! Go nuts in your imagination. But, unless you are intimitely familiar with the codebase itself, do NOT presume to suggest how "easy" a suggestion would be to implement.

 

For if you do, I will be there, and I will be memeing. ALL over your thread.

 

And I'll be doing it with this now, The Updated Standard Code Rant:

 

pVih0a2.png

  • Like 1
I'm out.
Posted

Players are not coders (usually), however, using a shield of 'ZOMG THAT'S NOT POSSIBLE TO DO' kind of shows that you don't know what you're doing at all. I know many coders on other emulators. Close friends of mine that work with perl, C++, etc, and they are wizards and can put together source material with no problems. You go off talking about binary 100100111 and that shit is not even used in most of today's languages which SIMPLIFY the process to get things done since it's already built in. I highly doubt City of Heroes coding is beyond the beyond to the point where things can't be changed or added. I do understand their are limitations to various situations, but to MEME somebody when they want a feature in the game just shows lack of skill and tossing in the towel right away. There are indeed more civil ways to go about it without looking like a complete toolbag.

 

This coming from a complete asshole should tell you that this post is almost villainous. Bravo to that I suppose.

Posted

Unknowable difficulty != "ZOMG THAT'S NOT POSSIBLE TO DO shield".

 

You must have missed this:

Virtually ANYTHING is possible code, given enough time and resources.
I'm out.
Posted

Unknowable difficulty != "ZOMG THAT'S NOT POSSIBLE TO DO shield".

 

You must have missed this:

Virtually ANYTHING is possible code, given enough time and resources.

 

You defeated the point of this thread with your own words. If it's a great suggestion, get some of the best on it and hammer it out in a few hours. Top wizards I know are fast and know exactly what they are doing. If something is completely stupid, I guess you could crucify that person. I don't personally care in that regard.

Posted

Well, if it's THAT easy, can you please put us into communication with your "wizards"? Because we've got a fairly LARGE list of suggestions in these forums that they should be able to whip out in a couple of minutes. Let's make it happen.  :)

I'm out.
Posted

Well, if it's THAT easy, can you please put us into communication with your "wizards"? Because we've got a fairly LARGE list of suggestions in these forums that they should be able to whip out in a couple of minutes. Let's make it happen.  :)

 

Are you part of this team on homecoming? Or do you do Ouro/Side work?

Posted

I can legally neither confirm nor deny anything of the like at this time.

 

I'll talk to a couple of my buds and see if they are even interested in CoX. They do WoW/Vanguard/EQemu mainly.

Posted

I've come to the conclusion over the years that, in this, computer programmers deal with almost exactly the same situations that we professional cooks have to deal with.

 

Namely, people who don't do what we do, don't know how we do it, and don't comprehend the resources we need to do it promising things to customers and expecting us to "just do it".

Posted

Philotic is absolutely correct.

 

I have IT departments that report to me, and have learned over years of being the interface between user and programmer, that what a user thinks is easy, never is. One of the primary functions I serve is to be a wall between both user and programmer, to interpret the user wants, translate this into action parameters, and then allow programmers to create the tool that fits the need, with proper guidance. It is never easy, it always requires significant effort and it is always complex. And this is just working with Oracle and Netsuite, among other programs.

 

I can't even imagine the complexity when GUI use increases to Mmo levels.

 

Yeah.

 

 

Posted

I heard from Leo that the code for CoH is a combination of spaghetti, prayers, superglue, a box of spare parts and duct tape. I am totally amazed at what has been done.

y0Y5yFQ.png Forever grateful to be back in my city!
Posted

I've never taken the SCR as a personal affront. 

 

With the way code has changed since the game was written it's understandable that the next generation would think that changes should be "easy". 

 

If it were really so easy, you would think the teams of coders who've had the code in their hot little hands for the the last couple months would have figured it all out by now.  In fact, I bet they thought they'd have it figured out by now, too. 

 

But guess what...  They don't have it all figured out by now, because it just ain't all that easy.

 

Also, please remember that the folks who are working behind the scenes here are VOLUNTEERS.  They are putting in their own spare time and energy into not only keeping the servers up and running, but also fielding questions on Discord and in-game "emergencies". 

 

It's all well and good to make suggestions, toss out ideas, argue about powers, etc., but let's keep our expectations within the realm of reality. 

Posted

Speaking of "toolbag" and "civil" your choice of vulgarity is not needed. Being an a**hole isn't something to be proud of or put on public display in these forums - please remember that they are frequented by teens. As for your whole post - meh - picking and choosing a sentence here or there to make your point isn't a valid argument against the suggestion.

 

 

Players are not coders (usually), however, using a shield of 'ZOMG THAT'S NOT POSSIBLE TO DO' kind of shows that you don't know what you're doing at all. I know many coders on other emulators. Close friends of mine that work with perl, C++, etc, and they are wizards and can put together source material with no problems. You go off talking about binary 100100111 and that shit is not even used in most of today's languages which SIMPLIFY the process to get things done since it's already built in. I highly doubt City of Heroes coding is beyond the beyond to the point where things can't be changed or added. I do understand their are limitations to various situations, but to MEME somebody when they want a feature in the game just shows lack of skill and tossing in the towel right away. There are indeed more civil ways to go about it without looking like a complete toolbag.

 

This coming from a complete asshole should tell you that this post is almost villainous. Bravo to that I suppose.

Posted
With the way code has changed since the game was written it's understandable that the next generation would think that changes should be "easy". 
Horseman's Law: the actual complexity of a change request is inversely proportional to what the user expects.
Posted

Unknowable difficulty != "ZOMG THAT'S NOT POSSIBLE TO DO shield".

 

However, too many people use the unknown difficulty in exactly that manner.

 

...

 

For myself, I don't say "... and it'll be easy" when making a suggestion.  But I have said, in the past, "that shouldn't be too difficult" ... and been right.  Even, to the point of helping shape CoX.

 

Does anyone remember the problems people with AoE Stealth powers were causing, by griefing people trying to interact with Zone or Mission objectives?  When being Stealthed simply made it so you weren't allowed to interact at all?  I think Warburg was a big place that happened, you'd get people standing near the launch console with their AoE Stealth on, and no-one on the same "side" could then interact with the console at all.  For a couple weeks, this was a huge problem and the developers were unsure how to proceed.

 

My suggestion was, simply: "you already have the code for Travel Power suppression.  It shouldn't be too difficult to re-use that, to suppress Stealth when interacting with objectives; balance is preserved, with not being able to stealth glowies.  Griefing is eliminated, with not being able to use AoE stealth to prevent others from using glowies.  Everyone wins."  I of course got SCR'd for saying that.

 

But, two or three days later, guess what happened in a patch?

 

Yeah.  :)

 

...

 

So, even some of us non-coders actually are cognizant of when something actually does stand a fair chance of being "not too difficult".  Thus, that Standard Code Rant shouldn't be hauled out every time someone talks about how easy/difficult it would or wouldn't be to accomplish something.

  • Like 1

Global Handle: @PaxArcana ... Home servers on Live: Freedom Virtue ... Home Server on HC: Torchbearer


Archetype: Casual Gamer ... Powersets:  Forum Melee / Neckbeard ... Kryptonite:  Altoholism

Posted

Counter-example: I had one user ask of one of my programs - "Why can't we just have a right mouse button to 'undo' the merge of a crate?"

 

It sounded simple to him. Just "undo" what you did. He thought it'd take like five minutes to add the right mouse button menu.

 

And sure, it WOULD take only five minutes to add the menu option. However, it would take MANY HOURS of programming time to actually make the option DO what he asked to do, because:

 

[*]We'd have to create "tracking tables" that track every time a merge happens (currently, we were only logging in a log table the fact that a merge DID happen).

[*]We'd have to handle unmerging of merged crates.... and the unmerging of THOSE merged crates, and so on and so on.

[*]We'd have to think of and create code to auto-remove records from these tracking tables so that the data didn't grow exponentially.

 

And so on, and so on. We ended up NOT allowing unmerging. At all. It was determined by the executive team that it wasn't worth the coding time for too little payoff.

I'm out.
Posted

Theres a reason programmers have the unfortunate nickname 'code monkeys', users and executives are IGNORANT to exactly how intricate and precise coding really is. Heck, even simply changing a variable can throw the whole system out of whack. 'Minor' alterations in how a program works can end up being a task of reinventing the wheel. I have great respect for people who work tirelessly to make us only have to simply 'click' thing x to accomplish y

 

Edit: misunderstood specific topic, need to have coffee before posting

Posted

Oh, don't get me wrong, Philotic.  I know a lot of things are often quite difficult, even if the person suggesting it doesn't know how or why that is.

 

But just tossing the SCR out at them, by itself, is not helpful - even if they come right out and say "it'd be easy".  Not as a first response, anyway.  Better, instead, would be to do as you just did: point out the parts of it that would be hard, and/or, just take more time and effort than the end result would ever be worth.

 

And like I said, I've seen people use it purely as a way to shut down an idea entirely, no matter what the reality of that thing's difficulty might be.  Including, in my example, when I suggested "look into whether or not you can adapt this section of code that you already have to solve this somewhat similar problem".  :)

 

...

 

To be clear, I'm not arguing against the SCR.

 

I'm only arguing against using it - or letting others use it - as a way to shut down suggestions entirely.  It should rarely, if ever, be the first response to someone's idea.  Even, as i say, if they make the cardinal error of suggesting "it will be easy".  :)

Global Handle: @PaxArcana ... Home servers on Live: Freedom Virtue ... Home Server on HC: Torchbearer


Archetype: Casual Gamer ... Powersets:  Forum Melee / Neckbeard ... Kryptonite:  Altoholism

Posted

But just tossing the SCR out at them, by itself, is not helpful - even if they come right out and say "it'd be easy".  Not as a first response, anyway.  Better, instead, would be to do as you just did: point out the parts of it that would be hard, and/or, just take more time and effort than the end result would ever be worth.

 

And like I said, I've seen people use it purely as a way to shut down an idea entirely, no matter what the reality of that thing's difficulty might be.  Including, in my example, when I suggested "look into whether or not you can adapt this section of code that you already have to solve this somewhat similar problem".  :)

 

I'm only arguing against using it - or letting others use it - as a way to shut down suggestions entirely.  It should rarely, if ever, be the first response to someone's idea.  Even, as i say, if they make the cardinal error of suggesting "it will be easy".  :)

 

I'm with Pax on this...

 

Innovation doesn't come from flowcharts, it comes from looking at things in new ways, and it often comes from a suggestion that everyone else is willing to throw out, but that one person looks at it and says..."We can do that".  I really like Pax's suggestion of commenting on "why it might be difficult", something the SCR doesn't really capture.  Also, doing so might spark some innovation for the OP or other posters. 

 

I've worked as Business Systems Analyst for decades...I can't code...But I can't tell you how many times I've helped solve a problem that coders couldn't by just looking at things a different way and suggesting how to use existing code in new ways.  Additionally, now that the code is "out there" we have more and more people in this community who actually can suggest changes and have sufficient expertise with the source code to understand the level of difficulty

 

The SCR comes across as funny to many veteran posters...but dismissive to newer ones as well.  We don't want to have a community where good ideas are never suggested because the OP is afraid it'll just torpedoed anyway

 

 

 

"The opposite of a fact is falsehood, but the opposite of one profound truth may very well be another profound truth." - Niels Bohr

 

Global Handle: @JusticeBeliever ... Home servers on Live: Guardian ... Playing on: Everlasting

Posted
I heard from Leo that the code for CoH is a combination of spaghetti, prayers, superglue, a box of spare parts and duct tape. I am totally amazed at what has been done.

 

Hell, Positron admitted, back in one of the meet&greet events at the San Diego Comic-Con, several issues before shutdown, that the code was spaghetti and baling wire, and each beta pushed to the PTS was accompanied with "please, don't have too much break this time" prayers. Unless you've got Torquemada enforcing the coding design standards, this is going to happen to any big programming project as it goes through revisions and has coding staff move on to be replaced by new coding staff. And sometimes even that doesn't help. Programmers want to write code and see it up and running; documentation takes a seat way in the back of the bus, and even documenting everything that you do isn't going to help when the only way you found to do something without rewriting huge chunks of code was to hook into some obscure function in a module that did something completely different. Which then got updated in a patch unconnected to either your addition or the module's original function.

Posted

 

The SCR comes across as funny to many veteran posters...but dismissive to newer ones as well.  We don't want to have a community where good ideas are never suggested because the OP is afraid it'll just torpedoed anyway

 

I concur with the rest of your post, but this. Here's why:

 

gzwJccE.jpg

I'm out.
Posted

 

The SCR comes across as funny to many veteran posters...but dismissive to newer ones as well.  We don't want to have a community where good ideas are never suggested because the OP is afraid it'll just torpedoed anyway

 

I concur with the rest of your post, but this. Here's why:

 

gzwJccE.jpg

 

Thanks for posting back...and I know you are not at all dismissive and should have said so earlier.  You are one of the quickest in these forums to +1 an idea, so kudos for that.

 

The problem, even with that part of the chart is the "Y" decision...which, in my mind, should also link back to "Let's hear it.  Daydreaming is fun!"

 

And I also want to say, that everytime I see the chart, I do laugh...

"The opposite of a fact is falsehood, but the opposite of one profound truth may very well be another profound truth." - Niels Bohr

 

Global Handle: @JusticeBeliever ... Home servers on Live: Guardian ... Playing on: Everlasting

Posted

I would say "yes" should lead to a box that says "Well, really it won't be (and here's why) ... with two lines:

 

(a) "Understood", that leads up to the "daydreaming is fun" box

 

(b) "No but really it IS easy", which leads to the actual Standard Code Rant box.

 

:)

Global Handle: @PaxArcana ... Home servers on Live: Freedom Virtue ... Home Server on HC: Torchbearer


Archetype: Casual Gamer ... Powersets:  Forum Melee / Neckbeard ... Kryptonite:  Altoholism

Posted

I would say "yes" should lead to a box that says "Well, really it won't be (and here's why) ... with two lines:

 

(a) "Understood", that leads up to the "daydreaming is fun" box

 

(b) "No but really it IS easy", which leads to the actual Standard Code Rant box.

 

:)

 

Okay, I can dig that.

I'm out.
Posted

A couple things that come to mind.

 

1) Back then C programmers were likely in their prime. Hell, even "I" still remembered...some of what I learned in HS/college. OOP wasn't really all that old and probably not as understood yet, so they stuck with the procedural methods;

 

2) We ALL knew about Spaghetti code...painfully so;

 

3) I can see what the others are saying about the pic. At first it was kind of amusing, but to those now a days that barely know how their computer works that probably makes no sense. Now that the world is a meme, it has even less impact or worse, comes off as snark. TBH, I'd maybe stick with your (very detailed) responses and leave the pic alone at this point. Maybe a relatable meme or three instead.

OG Server: Pinnacle  <||>  Current Primary Server: Torchbearer  ||  Also found on the others if desired  <||> Generally Inactive


Installing CoX:  Windows  ||  MacOS  ||  MacOS for M1  <||>  Migrating Data from an Older Installation


Clubs: Mid's Hero Designer  ||  PC Builders  ||  HC Wiki  ||  Jerk Hackers


Old Forums  <||>  Titan Network  <||>  Heroica! (by @Shenanigunner)

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...