Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Learn Linux The Hard Way (β version) (nixsrv.com)
145 points by 0x1997 on Dec 21, 2012 | hide | past | favorite | 78 comments


Hey @mwargh could you email me at [email protected]? I got awesome goodies for you.

I ended up completely redoing the LxTHW base structure and converted all my books to it, but I haven't got around to updating the repo with the new gear. If you email me I'll hook you up with the latest.

The new gear uses dexy (http://dexy.it) still, but uses all the features of the newer dexy and switches to rST intead of latex. I also have a converter that converts from the old latex structure pretty well. The results are much easier to host and convert to pdf, mobi, epub, html, etc. and easier to write.

So, contact me (or anyone looking to do one of these).


+1 for being a sport.

Your convivial reply on this thread also probably puts to rest speculation around whether it is OK to name open tutorial projects in this way or not.

It's great what you are doing with the "hard way". I wish you well, and hope you keep doing it for a long time. :-)

The site finally loaded for me, and I think it is great what the author is doing there.

Good luck, @mwargh!


I wrote you.

Thanks for inventing LxTHW guide format and for suggesting to help.


Love the idea, the context, and the execution. It's a great project. Not a fan of the name.

Zed Shaw has a well-established series of "Learn $topic the Hard Way" online books, with Addison Wesley publishing a 3rd edition of his "Learn Python the Hard Way" this spring. He is building a brand and a business around this name.

I'd be surprised to learn that "Learn ... the Hard Way" isn't trademarked, but even if it isn't, it strikes me as disingenuous, misleading, and potentially confusing to name your work after his.

As far as I can tell, Mr Shaw has nothing to do with this project, but then the "Learn Linux the Hard Way" name might, to some, imply that he does.

Edited to add: I do not have a dog in this fight, just pointing out a potential conflict.


Actually, my understanding is you can't really trademark titles of things. That's why you'll see books and movies with the same titles and nobody getting sued.

There's also a Perl book that predates my book which I didn't know about, so there's precedent for people to do this already.

Finally, I really don't care so much about the title, I care more about people getting the method right. It looks like this was taken down so I can't comment on how it's written, but my typical beef with these books is they use the title, then they proceed to write a completely different book that doesn't follow the method at all. To me that's just obnoxious arrogance on their part and typical programmer "I can do it better" crap. There's a reason my books are structured the way they are, and just taking the title to pimp a book that isn't even close to the same structure just pisses me off.

But, I haven't seen this book yet so I don't know what it's done.

EDIT: Ok found the google cache, and it looks like this one's doing it right. I officially bless this title in the name of ... like whatever and shit.


IANAL, but I'm pretty sure you can trademark titles. An example is the "X for Dummies[1]" series that has at least threatened to sue people[2].

People currently associate "Learn X the Hard Way" where X is computer related to your lcthw project. If you let other people use it, that distinctiveness will go away and it will likely not be something you could trademark

[1] http://tess2.uspto.gov/bin/showfield?f=doc&state=4009:ae... [2]https://www.chillingeffects.org/protest/notice.cgi?NoticeID=...


Very cool. Thanks for the clarification.

Also: I'm not an expert, or a lawyer, but it's my understanding that you can't copyright titles, but you can trademark them, or portions of them.

The guys (IDW?) that publish the "For Dummies" book series regularly enforce the trademarks around their name and cover design.

Hollywood often gets around the copyright problem by trademarking some film titles (this is why it's always "Disney's The Lion King" and not just "The Lion King.")


Would be great that you do the Linux book whatever the title may be! )


Thanks for you appreciation :)

As to naming, Zed Shaw is OK with this: http://sheddingbikes.com/posts/1288945508.html


Agreed, it's a great project and I applaud you for undertaking it and pushing it so far. Takes a tremendous amount of work and self-motivation to do something like this.

I read the linked post top to bottom twice and I don't see Zed anywhere giving blanket permission to use his title. He is responding to people who ask him if they can port LPtHW to another language, by saying "here's how to write your own so you don't have to port mine".

You should change the name unless you have contacted Zed directly for permission, IMO.


In this skeleton book he offers he does seem to imply that anyone can use similar names: https://gitorious.org/learn-x-the-hard-way/learn-x-the-hard-...


Great, but Addison Wesley, publisher of the paper versions of some in the series, may not be, and at this point, they might be able to make the call.


It's a potential point of conflict, but it's a pretty generic naming convention in my view and I'd be dissapointed to see that Zed has slapped a trademark on it. Even if he is building a brand around the name I don't see why he wouldn't be open to letting some other technical authors in under the same umbrella.


You don't understand how trademarks work. Zed automatically has a trademark on it. The question is whether or not he goes through the trouble of enforcing it. If he doesn't, he gives up the mark. Federally registering a trademark is really only to show the due process of protecting your mark.

Copyright is in the same boat.

Also, this is not nearly a generic enough name for it to be ineligible for trademark. It appears that Zed isn't interested in protecting this mark, but that doesn't mean he wouldn't have a case.


I have a puppy in the fight - I started a ruby tutorial titled "Teach Yourself Ruby the Hard Way", but didn't make it past chapter 1, so when Zed released his book I figured it was only right to let him have the name, and rename mine if I ever get around to completing it (2013 resolution!).

So from that perspective, I can't help but agreee that even if Zed is fine with this project, it's a bad idea. It's an unnecessary muddying of a "brand" that has had a lot of work put into it.


I'm not sure it's a good idea to try to stuff vim in there. It's hard enough to try to learn unix command line skills, throwing vim in to the mix is just a detour. Nano is good enough for tutorial purposes.

And I'm a hard core Vim user. I have no strong opinions for or against specific text editors but any hacker worth their salt should know Vim and/or Emacs to be able to use a powerful text editor when stranded in the console for one reason or another.

But this kind of superficial introduction to Vim is a big disservice. The last thing we need is people who hate Vim because they understand it poorly based on a short tutorial.


As an enthusiastic-but-incompetent vim user, I concur. Reading through that laughably brief introduction is going to scare off a lot of people, and makes the whole exercise much harder than it needs to be.


True, but one thing I noticed is that some command line tools like to just throw vi at you unannounced when you do something that required editing.

This was one of the most frustrating things when I was learning linux, "I press buttons but nothing happens, how do I get out of here?"


EDITOR environment variable usually takes care of that for most of them.

An esoteric example from my MacOS X:

sh-3.2# EDITOR='cat' vipw | grep root:

root::0:0::0:0:System Administrator:/var/root:/bin/sh

daemon::1:1::0:0:System Services:/var/root:/usr/bin/false

vipw: no changes made

vipw: /etc/master.passwd: unchanged

_cvmsroot:*:212:212::0:0:CVMS Root:/var/empty:/usr/bin/false

sh-3.2#

Great excuse to talk about environment variables and changing/examining them...


Yep, I agree: just the feeling of pressing something and nothing happening is too hard for a novice. Thanks for saying this.


I can recall a situation in one of my first experiences with linux where I wound up rebooting a machine because I couldn't figure out how to get out of vim.


My first vi experience was on a Unix terminal in a CS laboratory with a lot of people doing serious work and I just hitting keys to see if ANYTHING could take me away from that and the thing just BEEEPed...


But isn't that a good reason to learn the smallest basics of vim? Maybe it's just me, but after I had my first bad experience with vim, I tried learning the basics so that would never happend again.

Since this is a guide for linux, this is a natural step in the linux learning :)


I wrote this guide and I'm convinced basic vi usage is essential to learn. I have to encouter a system without vi yet.


I absolutely agree — vi knowledge is essential, and I don't have it yet. Don't capitulate and let others be like me.


The first time I go to a machine for the first time, and I need an editor, I fire up emacs. If it isn't there, I do [apt-get|yum] install emacs, and then I fire up emacs.


Lucky you :) Good luck running emacs on some embedded things.


If you want to learn linux, you will need to learn vim.

It's pretty much the only decent editor constant in all linux distos. I think it's better to get it out of the way or the linux user won't be able to edit a file properly.


Uhm.. no.

I know _way_ too many sysadmins, even distro maintainers, seasoned devops engineers, who have stuck with nano, joe, etc. for years and years and still stick by it. Although I am glad that I learned vim when I was starting out some 6 years ago, I wish I had spent all that time learning Python or Perl well. Too often the importance of vim is over-inflated as a necessary skill -- but it's just one _tool_ (besides emacs) that gets you some efficiency. That is all it is. I would _never_ advise someone starting out with Linux to spend huge amounts of time learning vim/emacs, it's too much of a distraction in the beginning.


The big difference between vi and all the other editors out there is that some version of vi is installed by default in just about every variation of *nix you're ever likely to encounter. Vi doesn't have to be your favorite editor, and you don't have to be a power user, but you have to know at minimum how to edit a file with reasonable proficiency, so you're not completely lost the first time you ssh into a box that doesn't have your favorite editor installed.


Couldn't you just pull in a nano binary (assuming you've no access to a package manager on the remote host) if you've more than a few lines to edit.


Assuming you have one handy that is statically built against the the right libraries for the right architecture and the right OS, and assuming the machine (and network) is in a state where you can get at the place where the binary is stored. But that is a lot of assumptions and I would rather just take the time learn the basics of vi rather than hope that all those assumptions always happen to be true.


It's not about being able to install your other favorite editor. It's about knowing how to use the one common editor between linux distros.


If you're a system administrator, it's highly likely that solving this problem is probably as difficult as the original task you had to do.


But I never said you have to spend huge amounts of time learning vim. You just need to learn the basics and it will help you a lot more than not covering it at all.


All you need to know is:

press

   i
to start editing text

to save and quit, press

    ESC + : + w + q + ENTER


or just :x


or Shift+Z-Z


IIRC the basics are ":wq"?


I think the biggest confusion in vi is the insert/normal mode. Unexperienced people tend to think on a text editor when you type ":" you add that to the text, while in vim it's the start of a command :D


More like "Learn scaling your web app the hard way" ;)

(Page isn't loading for me)


Page is down for me too.

The only mirror I found so far is the Google cache: http://webcache.googleusercontent.com/search?q=cache:http://...

Other caches (e.g. CoralCDN) don't have the page yet...


Ain't no webapp, just a wiki. Fixed already, anyway.


Did you?

At least for me, the site is still down.


I wrote this guide, sorry for 502. I wasn't really anticipating this much interest. I'm doing something about it now.

Also you can blame me for including vim, but I'm conviced that basic vi knowledge is essential.


"Also you can blame me for including vim, but I'm conviced that basic vi knowledge is essential."

It is, don't let them get you down. Who would call themselves a Unix professional without knowing vi? 'Uh yeah I'm a professional driver, except I don't know how to drive a stick shift'. Sure buddy - NEXT!


No need to be sorry for not assuming your web page would make the front page of HN.

I guess...


This looks like a great guide. One piece of advice I was given early on was to start with a minimal distribution like Gentoo. While not as essential for day-to-day use, knowing about how the various lower-level components interact has gotten me out of a lot of otherwise catastrophic situations across several operating systems - FreeBSD especially and occasionally on OSX. Thanks for writing this guide, it is sure to give a sturdy foundation in *nix usage to the ambitious beginner who follows it.


I'm biased in favor or Arch Linux. It's fairly similar in spirit with Gentoo, but offers binaries rather than forcing users to build everything from scratch.

AUR packages usually require compiling from source code though.


That is exactly why I switched to Arch linux a few years ago :)

I love Arch's KISS approach and the ease of administration. Gentoo is an incredibly customizable distro that leaves quite a lot up to the end user, and because of that it can be a great learning distro for some people. But yes - at the time I made my switch I was becoming impatient with time time I was putting into administering it.


Also, their wiki is amazing


I wouldn't recommend gentoo as a beginner's distro. Way to throw a newbie into the deep end and potentially alienate them to linux forever


For many, it might be too much. For me, and possibly others, it was exactly what was needed. I wanted to learn about things like partitioning (I had just destroyed my family's HDD while using another distro's GUI installer, and wanted to know how do it the right way). I tend to be a bottom-up learner. Years later, when I started studying computer science at a university, I would be more interested in assembly than java. The approach has served me well, but others certainly benefit from learning in other ways.


It's the deep end, but there's VERY detailed and explicit instructions on how to swim. And almost zero risk of actual death.

I wouldn't recommend it for someone who's never touched *nix before, but if you've installed Linux, and run apt-get a couple times, it's enormously edifying.

I never felt like I "got" Linux until I installed Gentoo.


Most of the things you'll "learn" with Gentoo are how to get such-and-such a package to agree to build & install. Gentoo is all about groveling through configs because you're stuck in a 1993 mentality of trying to save 100 kB in your binary by excluding GIF support in Firefox and stripping symbols out of /bin/ls.


> I wouldn't recommend it for someone who's never touched *nix before,

But shouldn't that be the target audience of a "Learn to"-style guide?


Other than occasional 502 errors, the site doesn't work for me. Browsers used:

1. FF 17x

2. Maxthon 4x (IE engine)

3. Seamonkey

Chrome is too memory intensive for my machine and the font rendering is poor, so stopped using it.

Any others having problems?


Yep, too many people found about my project somehow, I'm sorry for not anticipating this. Try now.


404 for me.

Make sure to update your nginx/0.7.67, there was a number of security related upgrades.

Don't use the one in ports. Compile or if you are on Ubuntu:

    sudo -s

    nginx=stable # use nginx=development for latest development version

    add-apt-repository ppa:nginx/$nginx

    apt-get update 

    apt-get install nginx
;-)


Thanks, I moved my site to another server. It should be ok now.


Thanks for doing this. I have gone through a similar course on bash commands though it was not interactive but just list of basic commands and explanations. This is very helpful in building Linux knowledge for enthusiasts like me.


The guide could be great, but the JavaScript based shell takes a life to open up and kills the experience. Why not use Linux on a Linux machine than a VM, JS shell etc? This makes it real hard to learn.


Is there some reason you can't do that?


values of β will give rise to dom?


This looks awesome. I've yet to find a really focused and directed guide to learning Linux basics, this looks like it could be it.


502... Bad gateway?

Or I may be missing something deep and hard?


Fixed.


i learned linux the hard way, eons ago: i broke shit. didn't mean to, i just did. then you learn how things fit together when you try and fix them.

(it's also why my shell was ksh for eons, my editor was vi for eons, etc. all stuff you have when /usr won't mount.)


Anyone have a link to the working .ova download?


FIxed. It's in the guide now.


Scary, when you see linux loading in browser


That was actually the point.


If you want to learn Linux; use Linux.

It's that simple. It won't be easy, but it will be worth it. There are no silver bullets. For anything.


[deleted]


What should I be using instead of ifconfig?


ip

Anyways, the guide covers it, I should learn to read.

ss replaces netstat


Didn't know about ss but I use iptraf to monitor connections YMMV.


404 not found..!?


a mirror, a mirror, my republic for a mirror!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: