Agree wholeheartedly. It may not always have been the case now but a degree is no longer of any real value. Employers value actual experience ten times more than any degree subject, vocational or not. Given the choice between someone fresh out of university with a 3-year BSc Honours in Comp Sci and someone who has been doing the job for 3 years, I'd always hire the latter. Corroborated by my own experience - I learned more in 6 months on the job than in the entire Comp Sci degree I took. Ironically I skipped the database lectures and then spent the next 20 years doing SQL.
Nobody has ever even asked to see my degree certificate. I don't even know where it is now.
True, but it affects your salary (at least in the first 5-10 years).
I'd expect it to be a difference of 20% (15% net), for the exact same work.
Also: reputation - it helps in meetings/negotiations when you have proof you're not an idiot.
That may seem okay, but effectively it may mean if that you finish university, that after paying your fixed costs (rent/mortgage, utilities, food, etc) you have double or triple the amount of money to spend at frivolous things that take the edge off.
It's a tough choice. University is investing in your future and it can be an expensive investment. If you learn too little, you lose. If you spend too much for what you've learned, you lose.
Not really expensive (for me personally only public transport cost) unless we consider time needed for university as well (but you can still spend your free time on personal projects, open source etc.). Personally I am looking at university as a good time to try different things, develop both in my main area of interest as well as other programming domains.
Maybe it's a bit different in the Netherlands, but I usually find a significant difference in the way in which university-educated people think, compared to those that are not university-educated (also true when it comes to computer science). Many programmers that I meet that are not university-educated find it hard to transcend the immediate problem, to reason in abstractions. But I'm not sure which of "education" and "abstract thinking" is cause and which is effect.
However, many employers will assume someone without an university degree will find abstract thought difficult. This assumption will hurt you if you do not have a degree.
Also, time spent in university can also be a time of having fun, meeting new people, discovering yourself, learning new social skills, etc etc. Not everything in life revolves around success at work and having more moneys. There's plenty of time allocated for that in life already.
What I've found is that a university education acts more like a filter for duds than a producer of brilliance.
To add to Grunnts' point, students and teachers at uni are very interesting and you'll probably enjoy meeting new friends and colleagues more than anything else. It's one of the few real (non-internet) forums where you can have an in-depth technical debate about topics that you're interested in. I'm still studying and it's a high point in my week when I have a class with a knowledgeable teacher who can provide some new ways of looking at a problem that I wasn't aware of.
University is not actually a big commitment since you can quit at any moment and start work. If you find that the benefit of what you're learning is less than the cost of fees and missed wages then just take a break and start work.
But while you look for a job, you may as well start uni and see what it's like. That way you'll not have the fear of missing out.
I just noticed your signature, and I wanted to point something out to help you.
You would have been better off saying something like "even if the animation is still suboptimal", or "although, the animation could be better", because what you said doesn't exactly make sense.
I mean imagine being rich and the only thing you really care about is if the kids are playing on your lawn.
This happened to Bill Gates, he ended up just giving half of it away... What a weirdo!!
What can you possibly dislike with this tree?
Cows aren't sheep, because pigs already are.
Can be used to render large oceans without worrying about aliasing or rotating/translating a grid correctly to be visible everywhere on the viewport, also when displacing it along y.
Nice, what are you planning to turn this into? Is it a custom map format?
I have yet to implement the minimum spanning tree. If anybody has a link to a good (java preferred) explanation/tutorial on minimum spanning trees, I would be grateful.
This includes Prim's Algorithm, which computes the minimum spanning tree.
Made a thing in my engine that packs the specular texture and gloss texture into the alpha channel of the normalmap.
In order, the y-value of the direction the rays go is -0.09, -0.1, -0.11.
Wheee! In iOS 5 I've bypassed code signing and ASLR, I now know my location in memory and can probably dynamically load custom libraries in. Now to study sandboxing a bit more, but at least I have code execution. Not too sure about privilege escalation at this point, I need to read more about it. This is a blast, I wish I had gotten into this stuff earlier.
My band just finished recording our first professionally recorded song (mix & mastered!) and now we are working on our first music video. One of our friends is huge into cinematography and has some very nice equipment, so we paid him to do it for us. And WOW, the first little demo he showed us is amazing! I'm very excited to finally have some of my work recorded and soon to be distributed to lots of music sharing platforms.
I've managed to get render passes in my graphics abstraction for Vulkan working. Now it's time to implement software command buffers for OpenGL. I decided to do an experiment to find out what the best way of encoding OpenGL commands would be.
Method 1: The most obvious way is to use objects as commands. For each command added to the command buffer, I create an object for that specific command, store the arguments for the command in it and add it to a list. This has the advantage of being easy to handle. Adding a new command is simply making a new implementation of an interface. However, I've heard that calling virtual methods like that can be slow, and in my case there would be 100s of different commands (although 95% would be used very rarely). To avoid insane amount of garbage generated, I'd need to pool commands aggressively.
Method 2: Secondly, I wanted to try encoding the commands as a command ID number (an int) and then storing the arguments to the method encoded in the same int array after the command ID. To execute the command buffer, I'd read the command ID, do a switch() on it to find the correct function to call and then read arguments from the int array depending on the command. Floats would be encoded using floatToRawIntBits() and stored in the array too. This is much more complicated to maintain as adding a new command means manually encoding arguments to the int array, adding a new ID to the switch() statement and decoding the arguments again in the function, but it has the potential to be much faster since all commands are stored sequentially in memory instead of being spread out all over the entire heap in objects, and virtual method calls are avoided.
case 0: value = ADD_COMMAND.process(value, arg); break; //Call singletons to calculate value.
Method 3: Thirdly, I wanted to try something something inbetween 1 and 2. Instead of creating a new object for each command invocation, I would create singletons of each possible command. When encoding a command, the singleton for that command would be placed in a list, and the arguments for it would be encoded into an int array again. This also has perfect cache coherence as all the command arguments are sequentially in memory, while being a bit easier to maintain as each command is again contained in its own class implementing an interface (although arguments still have to be encoded and decoded into the int list).
My guess here was that method 1 would be significantly slower than the other two as the command objects will end up all over the heap after pooling and virtual methods are used. Comparing method 2 and 3, I assumed that they would perform almost identically as Java should essentially do the exact same thing as I'm doing internally (method 2 does a switch over the command ID while method 3 would internally do a switch over the command classes to pick the right function to call).
When cache coherency is good, method 1 and 3 are pretty much identical. If the command array of method 1 is shuffled (simulating what would happen after a few minutes of garbage collection and pooling), performance drops noticeably due to bad cache coherency, potentially becoming less than half as fast as method 3. Performance is apparently limited by the virtual function call overhead. What surprised me was that manually doing a switch-statement in method 2 was significantly faster than Java's virtual method selection, up to 2x faster.
EDIT: Hmm. Encoding command data into an int is pretty silly. Better to just use ByteBuffer or even a raw memory pointer to write data to. Something really awesome would be if I could "map" the buffer to a struct to give me a cleaner interface to it. Maybe it's time to revisit the good old MappedObject stuff?
Now you'll need to send us a link, you know that right?
Err...someone wrote a 132 page paper on jumping.