jt202 said:
Ive been trying to learn FreeBSD on an off for years. I always run into the same brick wall, when I have questions and try to access different formats on the net, Like chat sites on IRC, I get high school kid crap and dont learn ANYthing.
This (how to ask questions the smart way) has been one of the best pieces of advice anywhere for me on how to get what you want answered in the FOSS world. Read it, internalize it.
I need to find an online school or college for FreeBSD. I've been searching with no luck so far. I was hopeing I could get some suggestions here.
Some awesome replies here already.
Course vs DIY - you want to do something specific with Unix. So does everyone else. Expecting a generic course to cater to everyone's needs (especially your own) is not very realistic. Someone creating a course does not know what everyone needs to know. They do not have perfect market research to find what are the most common needs. They don't have perfect recall as to what were the hard parts of learning what they know. By the time the course is created, it will already be out of date.
It's a bit like taking an automotive repair course vs buying a Haynes manual for your car and learning how to do everything. I've never done the former, but I have done the latter. Now I can change the oil and oil filter, the coolant, the brake fluid, brake pads, etc. If I get stuck I type whatever it is I want to do into youtube, e.g. "brake fluid change". And the thing is, now I've started down that path I see the mistakes that "professional" mechanics make, who probably learned via courses. Spark plugs, oil filters overtightened, and some major screwups I've seen before - e.g. rags left behind the air filter that got sucked into a turbo, and more. Those are just the ones I've found. I shudder to think of the mistakes I don't find, or the short cuts taken that will ultimately cost me money.
It's not that I don't think courses are unimportant, otherwise I wouldn't have an engineering degree. But I think the best learning, particularly for actual systems rather than general principles, is DIY. I knew lots of other engineers in college. I would ask myself if I would hire them - do they look good on paper or do they live and breath their field of expertise? All my instant hires were good at various things by the time they got to college. They were all self-taught in something, be it fixing cars, running Linux themselves, whatever. Other people thought they were good too - some worked for the university running the Unix labs, and all were hired and are making good money now doing actual engineering.
DIY gives you something that courses don't, and that is resourcefulness. Someone who has taken a course on something Unix related will have a set of go-to cookie cutter ways of doing specific things. Once they do something out of the ordinary, they can get stuck. Someone who has taught themselves will just do what they did to learn what they already did. And the thing is, the internet has lowered the bar tremendously for DIY. It's dead simple these days.
How I do it
There is of course a lot of very good documentation available for free online or very little cost. It will be specific to your needs. Here is my rough algorithm for figuring out how I do what I want to do with FreeBSD (e.g. set up a soundcard). Note that at any time I discover new information that I know is crucial to what I want to do, or interesting, I start the algorithm again with those search terms, often opening up new tabs in firefox. Often I learn that the way I initially thought to do the problem is not a good solution at all, and this may happen multiple times along the way. Note that my algorithm is easily modified for anything, just replace the forums I search on with other application specific forums you have discovered.
- Google what it is I want to do. (Maybe someone has an excellent howto somewhere on some random blog or page.)
- Google site:freebsd.org and the terms I want (note that I use "file" tags because it comes out as a smiley otherwise.) Read the links that look interesting.
- Google site:daemonforums.org and the terms I want. Read the links that look interesting.
- Consult the handbook. This is often worth doing first, especially if it's something not cutting edge. But the first two paths will usually find it anyway.
- man pages. If you've come this far, there might be a driver or program related to what you want to do. e.g I've figured out that my wireless card requires the rum driver. e.g.
$ man rum
(hint, type "/" to search, type "n" to go to the next term.
- If I don't know the specific man page, apropos is your friend. It will give you a list of relevant man pages that you can then try with step 5. e.g.
$ apropos sound
- Ask myself would a book have current information? Search amazon and read the reviews to find the best books on the topic I'm after, and if it's current enough. Is it in another book I have? e.g. I have a book on OpenBSD, and a book on "Building Internet Firewalls", maybe it's in there.
- Consider how soon I want the information. If it is not time critical, I might ask on the forum. People are more inclined to help if they know that their answer will help other people rather than be confined to irc log wasteland.
- At this stage, I usually decided that I can't wait that long and so I try some more iterations of my algorithm from the beginning, with new search terms. Or actually reading something from the handbook or the man page. For example, to learn more about ZFS I printed out the man pages for zpool and zfs. Often I find I solve my own problem if I actually take the time to READ what I have googled.
- Ask on IRC, in the manner of the very first link I posted. Think of how you can give back to the community though - maybe write a howto or something, so that some benefit comes from their help, and if you are serious, phrase it that way. And don't expect very much in the way of a response, not more than a line or two. Take what you have given, and apply it through the steps above (e.g. use it as the search terms).
- And at the end - DOCUMENT WHAT YOU FOUND. What is the point of going through a process that may take days, weeks or months, only to forget it all again? And consider giving that documentation back to the community. There is a self-interest aspect here too - every time you give back quality stuff (code, documentation, newbie help) to the community, you build your reputation. That's like depositing money in a bank that you can later withdraw from in the form of help when you need it. Nothing is guaranteed of course, but it certainly doesn't hurt.
Some other things - don't bite off more than you can chew. Running FreeBSD straight after windows would have been too hard for me. I started off with Ubuntu after trying various Linuxes and BSD. To do it I ran it as my primary OS, ditching Windows completely. Know which apps you are going to be running first though, otherwise the culture shock will be huge. Then migrate the OS.
Good luck.