Cost of an MBA

Here’s an infographic on the cost of an MBA.

And steep tuition is continuing to climb further while salaries stay stagnant.

That applies even if it’s just a normal degree.

Less people are hiring MBAs

Really? It might have something to do with being overqualified.

Of all US Presidents, only 1 has an MBA: George W. Bush

That’s interesting. Maybe a political career takes too much out of a candidate for him/her to take up studies.

What’s an MBA?

MBA stands for Master of Business Administration. I don’t have one, so I’m going to make a general assumption. You study how to administer a business, right? Accounting, finance and whatnot.

I don’t know the actual course curriculum. Does it focus mostly on administering a medium to large sized company? Does that appeal to you? Will what you learn benefit you as a startup founder?

I would even go so far as to say you’d be learning to administer other people’s money. You’d have bar charts and pie charts and business matrices to support your argument to your superiors that they should go about their business this way, or handle their finances that way, or streamline their product lines in such-and-such way.

But it’s not your money. It’s not your money on the line. You’re not worried. If your proposition fails? The worst that can happen is you get a pay cut. Possibly even get fired.

I’m all for getting a degree (but start a business on the side too). But an MBA seems like an overkill.

After over 2 years of running my own business, I’d say nothing gets you up to speed on how to administer your finances than having your own money on the line. And it cost me less than my degree, let alone an MBA.

Get an MBA if you feel it’s worth your time and money. Just don’t get one because everyone’s getting one (or telling you to get one). Make your own decisions.

Thanks to Tony Shin for telling me about this.

Does the point lie on the Bezier curve?

Someone recently asked me how to tell if a point lies on a Bezier curve.

For the purposes of discussion, it’s a quadratic Bezier curve and all 3 control points are known (or the start and end points and the 1 control point if you prefer). You can read more about the reverse process of finding the control points here, which is the reference point of that person’s question.

The answer is actually straightforward. Substitute everything into the Bezier curve equation and solve for t. Here’s the quadratic Bezier equation:
B(t) = (1-t)^2 * p0 + 2(1-t)t * p1 + t^2 * p2

Let’s say p0 is [1,1] and p1 is [1.5,4.5] and p2 is [2,3]. We’ll keep the points in 2 dimensions to keep the maths working less cumbersome. And let’s say the point you want to check is [1.8,3.4]. We substitute all the points into the equation, and we get this:

[1.8,3.4] = (1-t)^2 * [1,1] + 2(1-t)t * [1.5,4.5] + t^2 * [2,3]

I know, it doesn’t look pretty. But hey, we’re doing this by hand. If you’re writing code to generalise the solution, the code will probably look just a little uglier, but the solution will come out faster. Like probably instantly given the current modern processors.

Because we’re dealing with 2 dimensional points, that equation splits into 2 separate equations (with scalars instead of vectors as coefficients), like so:
1.8 = (1-t)^2 * 1 + 2(1-t)t * 1.5 + t^2 * 2
3.4 = (1-t)^2 * 1 + 2(1-t)t * 4.5 + t^2 * 3

If you have 3 dimensional points, you’d have 3 equations. Note that even then, the degree of your equations remains as 2. The degree of the Bezier curve is independent of the number of dimensions you’re working with.

If you simplify
1.8 = (1-t)^2 * 1 + 2(1-t)t * 1.5 + t^2 * 2

You get t = 0.8. It so happens that in this case, there’s only one solution.

If you simplify
3.4 = (1-t)^2 * 1 + 2(1-t)t * 4.5 + t^2 * 3

You get
5*t^2 – 7*t + 2.4 = 0

and after solving for that, you get t = 0.6 or t = 0.8 (you’re a smart person, you know how to solve a quadratic equation, right?)

Now, the solution t=0.8 appears in the solution sets of both equations. Therefore, the point [1.8,3.4] lies on the Bezier curve. In fact, t=0.8 is the t value.

Multiple solutions

What if you get multiple t values appearing in multiple solution sets of equations?

Consider the case where p0 is [1,1], p1 is [2,3], and p2 is [1,1]. Notice that the start and end points are the same point. Let’s say you want to know if the point [1,1] lies on the curve (yes I know it’s the same point). Substituting all the points, we get:

[1,1] = (1-t)^2 * [1,1] + 2(1-t)t * [2,3] + t^2 * [1,1]

This gives us the 2 equations:
1 = 1 – 2*t + t^2 + 4*t – 4*t^2 + t^2
1 = 1 – 2*t + t^2 + 6*t – 6*t^2 + t^2

They simplify to:
2*t^2 – 2*t = 0
4*t^2 – 4*t = 0

Hey presto! The solution set is t=0 or t=1 for both equations. Therefore, the point [1,1] lies on the curve. In fact, it lies on the curve where t=0 or t=1. And t=0 and t=1 happens to coincide with the start and end points respectively.

The whole point (haha!) is that, as long as you have at least one value of t that appears in the solution sets of all the equations, then said point you’re checking lies on the curve.

Higher degree Bezier curves

This is a toughie. If you have a cubic Bezier curve, then you’re solving a degree 3 polynomial (of t). If you have a Bezier curve of degree N, then you’re solving a degree N polynomial.

There are algorithms to solve generic degree polynomials, but they are out of scope here. Assuming the highest degree of Bezier curves you’ll ever work with is 3 (cubic), then this Wikipedia article on cubic functions will help. Remember, cubic Bezier curve equations are still cubic equations.

Higher dimensionality

The number of dimensions you’re working with determines the number of equations you need to solve. If you’re working with 5 dimensional points, then you need to solve for 5 equations.

For example, if you’re working with cubic Bezier curves and using 5 dimensional points, then you need to solve 5 cubic functions. You will have possibly 3 (unique) t values for each equation. Let’s say your solution sets are as follows:
t = -1, 3, 5
t = 0, 1, 3
t = -2, 2, 3
t = 3, 3, 4 (yay repeated values!)
t = 3, 6, 8

The value t=3 appears in all 5 sets of solutions, therefore your point lies on the curve.

Keep it real

In the process of solving your equations, there’s a possibility that you might get imaginary solutions. You know, those involving the square root of -1. Dismiss them.

Your Bezier curve is in the real world. The point you’re checking must therefore also lie in the real world.

Unless you’re working with some abstract imaginary Bezier curves on an advanced maths paper. Then good luck to you! The logic above for solving still applies.

Actual applications

When applying the above, you don’t usually get nice numbers like [1.8,3.4] lying on the curve with t=0.8. You get numbers with lots of numbers behind the decimal point that seems to continue forever. You don’t get exact values.

What if you get a t=0.798 for one equation, and t=0.802 for another equation?

Use your common sense. Set an error margin for what is acceptable.

My suggestion is to NOT use the values of t to check for the margin. Substitute the values of t into the equation, and then check the points if they’re within the error margin.

This means you don’t check the difference between t=0.798 and t=0.802, which is 0.04. Is 0.04 within your error margin? Maybe. But you’re not checking for this.

You substitute t=0.798 and t=0.802 into the equation, and you get 2 points: [1.798,3.40198] and [1.802,3.39798]

Then you say, “Are these points close enough that I consider them to be the same point?” Use whatever you think is appropriate. I think the Euclidean distance norm works fine. Then check if that “close enough” criteria is within your error margin.

If you’re checking for [1.8,3.4], then ask yourself, “Is [1.8,3.4] close enough to [1.798,3.40198]? And is [1.8,3.4] close enough to [1.802,3.39798]?”

Obviously, doing this by hand sucks big time. Good thing you’re a programmer.

Students don’t graduate because…

… because they’ve lost hope.

They’ve lost hope that:

  • they can fulfill degree requirements (some subjects are tough!)
  • they can actually graduate
  • (more importantly) they can graduate in a shorter time so they pay less tuition fees
  • they can get a good job with that degree

And so they give up. They’ve lost hope. They don’t believe anymore.

A degree can still be useful. But the current educational and economic outlook doesn’t exactly inspire a lot of confidence in the immediate use of a degree.

Educational institutes mostly teach students towards knowledge that’s known. I mean, your professor won’t set a question that he can’t answer, right? The world we now live in rewards those who solve the unknown, possibly even seeking questions that weren’t ever asked.

Teachers need to start teaching students to face the unknowable. They need to instill hope in the next generation.

University degrees and debt

Make the time and money you spend while studying in university count. The value of a degree doesn’t fluctuate much, year to year. But if you take just one year longer to obtain that degree, it means you’ve wasted one year of your life and another few thousands of dollars in tuition fees. Which means it takes that much longer for you to repay the tuition fee loan (if you took out one).

University/college tips from Bryarly
http://www.youtube.com/watch?v=nKL72gzQ58s

University/college tips from Emily
http://www.youtube.com/watch?v=0qG3Df1QC48

Business or degree

Degrees as general intelligence shortcut

Today I went to the library. Never mind the reason. Suffice to say, I decided the best use of my morning was to go to the library.

While I was browsing the shelves, I found this book Spent, by Geoffrey Miller. He’s an evolutionary psychologist, and it happens that his writing is a little… dry at times. Whole blocks of text with few bolds, italics and headings to break the flow.

Degrees and sexual evolution

I persevered and managed to skim through some of the chapters. Basically, his premise of modern consumerism and marketing is affected by sexual evolution. You buy stuff to show you’re a better mate. You buy expensive (but deemed as socially coveted) goods to show off. You buy stuff that’s seemingly a waste to show you can waste resources.

He also pointed out the 2 extremes: the people supporting consumerism (despite the credit card debts and other financial disasters), and the people opposing pure consumerism. He also said both are dangerous, which I agree.

Anyway, he said something about education. I’m paraphrasing here, but he said university degrees are used as a shortcut to determine a person’s general intelligence. He also used the term IQ as well.

He said the people who scoff at the idea of using IQ to determine a person’s intelligence are usually already clever, and hang around people of their intelligence level. “Anyone with average intelligence can understand string theory!”, ignoring the fact that they’re surrounded by janitors and other school staff.

Schools require stringent tests to determine if you’re intelligent enough to attend at their establishment. The most prominent of these tests is the SAT. But the idea of an IQ test to determine intelligence threatens these schools. Because anyone can easily take a short IQ test to determine their intelligence.

If it’s easy to obtain, it’s harder to use it as a screen or charge for it. Thus, the academia typically scoff at the usefulness of an IQ test, ignoring the SAT they used for admission.

If it’s easy to fake, or is almost indistinguishable from the original, then the original loses value. The example used here is cubic zirconia, directly competing with diamonds.

Our ancestors might have developed humour, creativity and kindness to compete for quality mates. Those are alternative traits to body musculature, body symmetry and other physical properties. In time, those “inferior” traits won. There are women who prefer a guy with humour, creativity and kindness to other human beings.

Social status (or showing off)

What I’m getting at (and what I believe Geoffrey was suggesting), is that a degree is a social status object, just like any other social status object. Having a degree shows other people that you had the time and money to pursue a degree, and the discipline to actually fulfill the requirements to get a degree. It’s a shortcut. Having a degree doesn’t necessarily mean you’re intelligent because there are some graduates who are frightfully stupid.

I will admit right here that I’ve never actually applied anything I learned for my degree in my jobs. Maybe that I learnt C and Unix shell scripts and commands.

My only regret is that I didn’t try to do more during my university days. Maybe learning about how businesses actually work. Did you know an employee typically costs a company 3 times his salary to employ him? This means an employee has to do work that generate a revenue amount 3 times his own salary just to justify his existence in company payroll. Where does the money go? The lights, the cleaning, the pantry, the security, the stationery. How can a company survive then? Because there are sales people that generate revenue amounts equal to 10 times their salary. That’s why sales people can be highly paid.

What was I talking about? Oh yes, degrees.

To increase the value of the original, you can increase the precision of getting the original and/or decrease the credibility of the competition. For example, the judgement of diamond quality and the emphasis that cubic zirconia rings aren’t rare (thus not as “valuable”).

The crux of the matter is that educational institutes are afraid their degrees will lose value. Just read the backgrounds of those who fervently support the obtaining of degrees, and those with a “meh” attitude towards degrees. Are they academics? Do they hold a job? Are they entrepreneurs? Are they open to new ideas? Are they ambivalent? Do they propose alternatives?

I suggest you get a degree if you can. But start a business while you’re there. A degree is still a valuable social status object. But don’t kill yourself trying to get one.

Consider what you want out of your life. I would hate to think you would waste 4 years of your life and tons of money to just scrape by and get a degree. Do something useful while you’re there! Make it more than just a piece of paper!

Did you know that because cubic zirconia is cheap to produce, the processes can be refined to the point where they’re less flawed than diamonds? Imagine, “fake” diamonds that are “purer” than real diamonds!

Start business or get a degree?

Ok, I’m biased in this. I would suggest you start a business. But I would come off as fake, since I do have a university degree.

In these tough economic times, the value of a university (or college) degree is highly debated. Some people say you don’t need a degree (here and here). And there are also articles and studies saying a degree is (still) the best investment you can make (for example, here and here). [For the latter article, I would add that you be careful of the word “average” being thrown around. Because you read my blog, I would suggest that you’re more than just average.]

DISCLAIMER: The Singapore education system might be different from the system you have in your country. I can’t even tell you if the Singapore system as of writing now is the same as what I went through.

Should I buy the steel sword now or later?

In the role-playing video games I’ve played when I was younger, I would arrive in a town and I’d be immediately broke. I’d go buy the best armour and weapons money can buy. Inevitably, the game designers made it such that it’s highly unlikely you would have enough money to buy every single piece of best armour and weapons for your character(s).

Now you have a decision to make.

“I don’t have enough money. Should I buy that bronze sword now so I can continue with the adventure? Or just tough it out until I reach the next town, where I can buy the steel sword for just a little bit more money?”

That degree you’re thinking of getting is that adamantium sword. And it’s available for purchase about, oh, 8 towns later. You better tough it out…

A degree is traditionally considered the be-all-end-all. Once you have it, you’re set for life. It’ll open doors for you in the corporate world. People judge you (highly?) based on a piece of paper that you have. Job recruiters screen you based on the type of degree you have, looking for computer science degree graduates even though someone with a bachelor of science (majoring in applied mathematics and computational science) is just as qualified *cough*.

There is always another sword better than whatever you have (even adamantium). It doesn’t happen in games because they’re finite. But in real life, there’s always something better you can have. Maybe a professional certificate in something. Certifications by Microsoft, Oracle or any company/organisation that’s respected.

Don’t waste your freedom

Through my primary school, secondary school and junior college days, I had to wake up early and be at school by 7:30am. School ends sometime in the afternoon, where I might have extra curricular activities.

When I was drafted into the military, I was told when I had to wake up. I was told when and what to do in my waking hours. And I was told when to go to bed.

When I started at a job, I had to be in the office at 8:30am. I could only go for lunch between 12 noon and 2pm, and only for 1 hour. I could only go home after 6pm.

I only had freedom of time when I was in the university (and now, when I’m working for myself). When I was in university, I typically took about 20 credits per semester (about 5 classes), which was about 20+ hours of lectures and tutorial work. The class timings were still fixed, but for the first time in my educational life, I had some degree (no pun intended) of freedom. I could choose which tutorial classes I wanted to attend. I could plan my time each week and even each day.

So if you’re looking for advice, I suggest this: Go to university/college and get your degree if you can (keeping the cost of time and money in mind). But start a business while you’re there.

Don’t give me that cranberry about not having enough time. Even if you stretch it, lectures and tutorials only consume up to 30 hours per week of your time. You still have 10 hours more per week than if you’re working full time! Make use of that.

Don’t drink (alcohol). Don’t do drugs. Don’t party (too much). Don’t smoke.

I get that this period of time might be liberating to you, but it’s also the time where your self-discipline is most tested. I’m not saying you can’t have fun. But if you can’t hold yourself accountable now, your future work at a job is going to suck cannonballs.

You have a huge university debt the moment you start. Don’t wait 4 years before struggling to find a job that pays enough that you can repay that.

If the statistics are true, most small businesses fail within 5 years. You have 4 years in university. Start failing then.

You can either start your own business and have some control over your future. Or you can work at a company where the company controls your future.

If you’re reading this, I assume you’re either a mathematician, a scientist or a programmer. Start a business. Get a degree. You’ll probably do fine either way. Even better, start a business while you’re getting your degree.

Cartesian coordinates and transformation matrices

If you’re doing any work in 3D, you will need to know about the Cartesian coordinate system and transformation matrices. Cartesian coordinates are typically used to represent the world in 3D programming. Transformation matrices are matrices representing operations on 3D points and objects. The typical operations are translation, rotation, scaling.

2 dimensional Cartesian coordinates

You should have seen something like this in your math class:

2D Cartesian coordinates
[original image]

The Roman letters I, II, III, and IV represent the quadrants of the Cartesian plane. For example, III represents the third quadrant. Not a lot to say here, so moving on…

3 dimensional Cartesian coordinates

And for 3 dimensions, we have this:

3D Cartesian coordinates
[original image]

I don’t quite like the way the z-axis points upward. The idea probably stems from having a piece of paper representing the 2D plane formed by the x and y axes. The paper is placed on a flat horizontal table, and the z-axis sticks right up.

Mathematically speaking, there’s no difference.

However, I find it easier to look at it this way:

Another 3D Cartesian representation

The XY Cartesian plane is upright, representing the screen. The z-axis simply protrudes out of the screen. The viewport can cover all four quadrants of the XY plane. The illustration only covered the first quadrant so I don’t poke your eye out with the z-axis *smile*

There is also something called the right-hand rule, and correspondingly the left-hand rule. The right-hand rule has the z-axis pointing out of the screen, as illustrated above. The left-hand rule has the z-axis pointing into the screen. Observe the right-hand rule:

Right-hand rule

The thumb represents the x-axis, the index finger represents the y-axis and the middle finger represents the z-axis. As for the left-hand rule, we have:

Left-hand rule

We’re looking at the other side of the XY plane, but it’s the same thing. The z-axis points in the other direction. And yes, I have long fingers. My hand span can cover an entire octave on a piano.

What’s the big deal? Because your 3D graphics engine might use a certain rule by default, and you must follow. Otherwise, you could be hunting down errors like why an object doesn’t appear on the screen. Because the object was behind the camera when you thought it’s in front. Your selected graphics engine should also allow you to use the other rule if you so choose.

In case you’re wondering, here’s the right-hand rule illustration with the z-axis pointing upwards:

Right-hand rule with z-axis upwards

I still don’t like a skyward-pointing z-axis. It irks me for some reason…

Scaling (or making something larger or smaller)

So how do you enlarge or shrink something in 3D? You apply the scaling matrix. Let’s look at the 2D version:

Scaling a circle in 2D

If your scaling factor is greater than 1, you’re enlarging an object. If your scaling factor is less than 1, you’re shrinking an object. What do you think happens when your scaling factor is 1? Or when your scaling factor is negative?

So how does the scaling factor look like in a scaling matrix?

Scaling matrix 2D

If you don’t know what that means, or don’t know what the result should be like, review the lesson on matrices and the corresponding program code.

You will notice there are separate scaling factors for x- and y- axes. This means you can scale them independently. For example, we have this:

Sphere above water

And we only enlarge along the x-axis:

Enlarge sphere along x-axis

We can also only enlarge along the y-axis:

Enlarge sphere along y-axis

Yeah, I got tired of drawing 2D pictures, so I decided to render some 3D ones. Speaking of which, you should now be able to come up with the 3D version of the scaling matrix. Hint: just add a scaling factor for the z-axis.

Rotating (or spinning till you puke)

This is what a rotation matrix for 2 dimensions looks like:

Rotation matrix 2D

That symbol that looks like an O with a slit in the middle? That’s theta (pronounced th-ay-tuh), a Greek alphabet. It’s commonly used to represent unknown angles.

I’ll spare you the mathematical derivation of the formula. Just use it.

You can convince yourself with a simple experiment. Use the vector (1,0), or unit vector lying on the x-axis. Plug in 90 degrees for theta and you should get (0,1), the unit vector lying on the y-axis.

That’s anti-clockwise rotation. To rotate clockwise, just use the value with a change of sign. So you’ll have -90 degrees.

Depending on the underlying math libraries you use, you might need to use radians instead of degrees (which is typical in most math libraries). I’m sure you’re clever enough to find out the conversion formula for degree-to-radian yourself…

Now for the hard part. The 3D version of rotation is … a little difficult. You see, what you’ve read above actually rotates about the implied z-axis. Wait, that means you can rotate about the x-axis! And the y-axis! Sacrebleu! You can rotate about any arbitrary axis!

I’ll write another article on this. If you’re into this, then you might want to take a look at this article on 3D rotation. I’ll also touch on a concept where you rotate about one axis and then rotate about another axis. Be prepared for lots of sine’s and cosine’s in the formula. Stop weeping; it’s unseemly of you.

Translating (nothing linguistic here)

What it means is you’re moving points and objects from one position to another. Let’s look at a 1 dimensional example:

Translation in 1 dimension

The squiggly unstable looking d-wannabe? It’s the Greek alphabet delta. Delta-x is a standard notation for “change in x”. In this case “x” refers to distance along the x-axis. We’ll use an easier-to-type version called “dx” for our remaining discussion.

Translation in 2 dimensions

In 2 dimensions, we have the corresponding dy, for “change in y”. Note that there’s no stopping you from using negative values for dx or dy. In the illustration above, dx and dy are negative.

You’ll have to imagine the case for 3D because the diagram is likely to be messy. But it’s easy to visualise. You just do the same for z-axis.

So what’s the transformation matrix for translation? First, you need to extend your matrix size and vector size by one dimension. The exact reasons are due to affine transformations and homogeneous coordinates (I’ve mentioned them briefly earlier).

Consider this: You have a point (x,y,z) and you want it to be at the new position (x + dx, y + dy, z + dz). The matrix will then look like this:

Translation matrix

Notice that for scaling, the important entries are the diagonal entries. For rotation, there are sine’s and cosine’s and they’re all over the place. But for translation, the “main body” of the matrix is actually an identity matrix. The fun stuff happens in the alleyway column on the extreme right of the matrix.

That reminds me. Because you’ll be using all the transformation matrices together, all matrices must be of the same size. So scaling and rotation matrices need to be 4 by 4 too. Just extend them with zero entries except the bottom right entry, which is 1.

Conclusion

We talked about 2D and 3D Cartesian coordinates. I’ve also shown you the right-hand and left-hand rules. This forms the basis for learning basic transformations such as scaling, rotation and translation.

There are two other interesting transformation matrices: shearing and reflection. I thought what we have is good enough for now. You are free to do your own research. When the situation arise, I’ll talk about those two transformations.

If you enjoyed this article and found it useful, please share it with your friends. You should also subscribe to get the latest articles (it’s free).

You might find this article on converting between raster, Cartesian and polar coordinates useful.

You might find these books on “coordinate transformation” useful.