# Build Matrices

I'm an engineer who works in research and development for a large technology company. All the engineers have whiteboards with a lot of math written on them. I think the managers became jealous. So, they started stealing terms we use in an effort to fool themselves into thinking that they can relate to people with an IQ higher than their belt size. That's the only semi-rational explanation I can imagine for this next one.

## Build Matrices

### What it means:

To format numerical data to be used in a system of mathematical equations, especially linear algebra

Click here if you think of a movie when you here the word "matrix."

### What my company thinks it means:

To create a table or spreadsheet e.g. a Microsoft Excel file; data is not necessarily numerical

### Sentence used in my office:

"Start building matrices that will show a projection of our SLOC count going forward based on our current snapshots. I need a graphical representation for the slide deck."

For non-programmers, "SLOC" stands for "source lines of code." SLOC are basically the number of commands in a computer program. It's a bullshit metric, but that is another rant for another day.

### How this sentence could have been said:

"Put all of our SLOC counts into a spreadsheet. Plot it and add a trend line for the presentation."

As a comparison between a real matrix and the managerial "matrix" i.e. a table, here is a quick matrix building function off the top of my head, written in C. Don't use this code; it's not tested.

```
struct Matrix
{
int rows;
int cols;
int ** data;
};
struct Matrix * matrix_build (int rows, int cols, ...)
{
struct Matrix * mat = (struct Matrix *)malloc(sizeof(struct Matrix));
int * rawdata = &cols;
++rawdata;
mat->rows = rows;
mat->cols = cols;
mat->data = (int**)malloc(sizeof(int*) * rows);
int i;
int rowlength = sizeof(int) * cols;
for (i = 0; i < rows; ++i)
{
mat->data[i] = (int*)malloc(rowlength);
memcpy(mat->data[i], rawdata, rowlength);
rawdata += rowlength;
}
return mat;
}
```

That code will let the coder access the matrix data as `mat->data[row][column]`

. Again, this code isn't optimized or guaranteed to work, and you still need to write a proper `matrix_free`

function.

Here is an example of a "matrix."

That's still too close to a real matrix. Here is a "matrix" that is more like what I use at work.

I think by now everyone understands my point, so I'll leave you with this: `matrix_build(5, 4, 32, 109, 121, 32, 116, 97, 115, 107, 108, 101, 97, 100, 32, 105, 115, 32, 100, 117, 109, 98);`