loupgaroublond
Compile the Python Interpreter Statically
As for 'crisper' resumes ... this guy was a Santa Cruz hippie at heart. He knew what was up in the tech industry. If you pick your recruiters for having some personality, it makes your hiring process go so much better too.
PS - This is about Operations hires, there are similar tricks applicable to Engineering hires.
The skills you need to do IT aren't something you can really learn in school in any way shape or form. These include customer service skills, understanding the needs of a business intimately and learning how real business are run. The people that are passionate about doing IT in that context are far and few between. Since it's seen as a service job, it forces a lot of people into other disciplines after a couple of years behind the helldesk.
Many IT shops also fail at communication. There is a lot that we do behind the scenes and no IT shop i've been at is doing a decent job constantly reminding everyone why they are there. Organisations need to know what improvements IT is working on and how it will better serve their needs, and they need to get excited by it. People get excited when Apple introduces new technology, but they get less excited when suddenly they can log in everywhere with the same password. Market that better.
IT, Operations, DB and Co. will resent you for asking for things when they are already busy putting out fires, fulfilling all your other requests and being the whipping boys and girls of your organisation. Google is a notable exception because their IT department is far better managed than most. Make sure all your technical service departments are tightly aligned with the mission critical things in your org and make sure management is shielding them from requests that get in the way. The more focus the techs have on core things, the faster they get done and suddenly the more spare time they have to help you get your project done on time too. Time management and business planning is key here.
Finally quit this 'for the CEO' or 'for Alan' mentality. If someone's computer fails, it should be replaceable within a couple of hours. This special person who's making a larger salary than you should understand better than any one else, never be dependent on a single point of failure to run a business. This doesn't mean a CEO has to be a tech genius or your star programmer an IT genius. They should just be smart enough to ask their IT department ahead of time 'what do i do when my computer fails?'.
/bin and /sbin - binary files go here, namely programs /lib - all the shared libraries and other code that gets executed by programs /libexec - other kinds of executables that are not shared libraries or command line programs /src - source code /src/include - all your C headers /share - shared resources, data, game data, pictures, wallpaper, icons etc... /share/doc - documentation /var - runtime data, log files
So what's /usr? These resources get split between / and /usr for historical reasons. There's a push to put everything in /usr and get rid of the split. Go look it up if you want to know why it's this way.
The thing to notice here is there are no program specific directories at the top level. This is because all programs are thought of as small tools or cogs that you can build larger tools upon. It's a system, not a way to run a couple of different apps in their own sandbox.
When you work with a 'stack' or a runtime like Mono, Python, a JVM, many of these details are partially hidden from view. The same if you use an IDE like Eclipse or MonoDevelop.
The better you understand this, the more shallow the learning curve will be with any tool you use, even emacs or vi.
As for getting started, here's a few pointers. It doesn't matter which distro you use, it's 2011, they all work pretty well. Instead pick the one you're most comfortable with. Mint and Ubuntu are good contenders because they are both easy to use, and Mint is based on Ubuntu. Fedora is better if you absolutely must use cutting edge tech. Suse is great for giving you a shiny frontend, close to cutting edge tools and an integrated environment that's also developer friendly. Just pick one, if you like it, stick with it for six months.
The same goes for runtimes and frameworks. Pick one you like, because a friend recommended it. Try the tutorials. If you like it, and get along with the community behind it, play around with it for 3-6 months before moving on.
Most importantly, find a friend who's using Linux already. Don't pester that person too much with questions, but just chat at least once a week about it. Focus on what you did, what you like, what was difficult. Chances are, your friend will be able to tell you, 'oh, sure, you could just do Foo and get this result'. Part of the learning experience is a week of pain you don't forget, solving it on your own, and then learning that other people solved the same problem.
Also, something you see quite a lot is innovative concepts built onto existing languages via libraries that then get integrated into new languages.