zapman449
Witness in puppet: their 'go to' module for example purposes is for ntp. Yet, last I looked, their ntp module contained a couple thousand lines of complex puppet logic to handle every configuration option under the sun. In making a meta configuration language, they have made a hydra of maintain-ability, in the name of re usability.
Far better in my view is a straightforward example that interested parties can take and tweak to their needs. Some need an iteratable list of ntp servers, some need a local clock skew.
Almost all ntp server environments can get by with a 20-30 line config file. Don't maintain a thousand+ line monster to maintain it in a reusable manner.
And now up the complexity to, say, tomcat. How complex would a fully flexible tomcat module have to be? Now do the same for Nginx. It's a pipe dream of combinatorial explosion.
I'm typing now on a u6430 running ubuntu 13.04, and it runs great.
Three challenges:
1) On a busy wifi, I have some challenges with connection drops, but I haven't determined if that's a driver issue, or a chip issue. The connection drops are mostly after several minutes of idle network connections. (Now that I think about it, its probably driver, since rmmod/modprobe the wireless modules fixes things)
2) The thumbprint reader doesn't work out of the box, but honestly, I'd rather type a password.
3) When I try to use a usb3 'docking station', it works. However I find that I need to rmmod the usb3 module, and then modprobe it again to get it back to life after ~10 undock/redock operations. After about ~20-30 undock/redocks I find I need to reboot.
What I don't get is why they're submitting to a leveraged buyout.
(that said, I do see the utility, since it gives a more obvious visual queue as to the order of size differences... but if you're doing anything with the sizes programatically, you have to remove the commas afterwards... Short version: if you're going to do this, make it a unique flag, or a new flag modifier to the -l flag... don't overload the -l flag without recourse...)
For me, it's worth the 'price' of admission, just to get a usable instance of 'gfind', and avoiding the cognitive dissonance of typing 'ls' and not getting useful info.
And it's not the PITA that is cygwin.
I too would rather them be longer, and involve at least some numbers if not specials... but they're not THAT short.
But MY favorite feature of zsh is ZLE: the Zsh Line Editor. The fact that I hit up-arrow, and see the for|while|if statements as I typed them, rather than mashed together into a horrible, semi-colon infected, one-liner (like bash) is awesome.
As for 'deeper in the stack', well, learning assembly in various guises is a good first step. Understanding how the pieces fit together, and how to make things faster is the next. I'm not sure if you're ready to start absorbing Knuth and the Art of Computer Programming (for reference, I'm not sure I am either), but that might be a good start too.
Oh, and another thing: understand the math. Learn the math behind this computer stuff. Understand how to measure the complexity and cost of a given algorithm. Something that might help there is Project Euler. It's something I enjoy hacking on when I have free time.
<-- hopes my children learn to code like you have.
As for college, there are two theories on that: on one hand, a college degree from a good school still caries a lot of weight with people, and it's a great networking tool. You'll meet some great people as well, and you might even learn something (though at your presumed skill level, you probably won't learn much of value until your junior/senior level CompSci classes. More valuable might be hitting CompEngineering or Electrical Engineering instead.
There's another theory which says 'skip college, do a startup', and there's lots of good reasons to take that route as well. It'll be less fun, more work, but possibly more lucrative, and you'll have much more 'working world' experience when you're done than your college friends.
As for 'what should you learn?' My MO for that is 'when in doubt, go deeper in the stack'. Those who truly understand the entire architecture of computers, and know how to drive the maximum performance out of it will always be in demand.
Also, work on the people skills. Learning to be a better communicator and how to connect with people will never be wasted. Negotiation is a skill to work on as well.
Just look at the price delta for those TV's with Netflix streaming vs those without. You can't tell me it costs $300ish to add the parts to make this work. Wireless chips cost a few cents... the screens already have a CPU in them to handle everything, so add a few cents, or maybe $1 to add a better CPU...
Do I have specific evidence? no.
http://webcache.googleusercontent.com/search?q=cache:UGF6HCq...
If that describes you, you need to be willing to track the latest kernel releases, and able to rebuild your FS semi-frequently.
(I'm being bitten by this right now, and I need to rebuild the FS... not something I'm happy about.)