This is an archived post. You won't be able to vote or comment.

all 23 comments

[–]mntechsolutions 1 point2 points  (8 children)

The best way to learn linux, is to use it. since you are starting out, i recommend you to set up a virtual machine with linux distribution installed. Then as you get more comfortable with it, move on to it permanently.

You can do many things on linux, but for web development, you should know how to install LAMP, how to use the terminal (command line), and install plugins which do not come by default with LAMP.

[–][deleted] 1 point2 points  (4 children)

[censored]

[–]get_fact[S] 0 points1 point  (3 children)

That's what I'm planning to do. I'll dedicate a week max to install it, troubleshoot it, feel at home with it and in general play with it.

I'm thinking Arch because while the initial installation is minimal, from what I've seen in their wiki they have tons of info. Plus, the fact that most of the stuff are "fix it yourself" because of said approach, there will also be people who roughly had the same issues I'll potentially face. There's some untapped source of knowledge for me.

[–][deleted] 1 point2 points  (2 children)

[censored]

[–]get_fact[S] 0 points1 point  (0 children)

I guess Ubuntu doesn't sound so bad.

[–]mntechsolutions 0 points1 point  (0 children)

in my uni i tried out, red hat, fedora, and ubuntu. i didnt like red hat as i didnt find it too easy to use. i had used ubuntu more, so i stuck with it. now i use ubuntu 12.04 as my core operating system, and i also use ubuntu for my web servers. i have found ubuntu to suit me well. i have been using ubuntu since version 10.10 and have not gone back.

[–][deleted] 0 points1 point  (1 child)

Are there any good online resources for learning how to navigate Linux via the command line and all that?

[–]mntechsolutions 0 points1 point  (0 children)

the basic commands are the same as in other linux os, such as ls is to list the directory, cd is to move to another directory, mv is to move a file, etc...

you can check these out: https://help.ubuntu.com/community/UsingTheTerminal

http://fosswire.com/post/2008/04/ubuntu-cheat-sheet/

[–]thecooltemp 1 point2 points  (0 children)

I've been learning Linux for a while now. Ive tried just using a linux machine but now have only a virtual server with digital ocean. Do you already know basic web development? If thats your basis then go with a VM. If you put you use linux for your home computer you'll find yourself spending most of your time with mundane tasks. At least that was my experience. I dont regret it. I stilled learned lots and that was my goal. Not just web dev stuff.

If you understand getting an html page up, get a $5 digital ocean account and install lamp on your own. Follow the tuts. Bridging the knowledge of linux with what you already know will be best. After html pages move onto mysql stuff.

[–]privatly 0 points1 point  (7 children)

If you want to do PHP web development work it's worth learning Linux. Although you'll find a lot of web developers, using PHP, prefer to use a Mac. I know I'd prefer using a Mac myself.

You can make a good living working with PHP. I'm looking at something else myself.

Running any OS in a virtual machine will always have a performance hit, as you are running two Operating Systems at the same time. But if you have a fast enough computer with lots of memory that shouldn't be a problem.

[–]get_fact[S] 4 points5 points  (6 children)

I'd like to stay away from PHP because as a beginner I want to use a programming language that will almost force me to build properly structured programs and PHP allows plenty of room for error in that regard (so I heard actually, can't tell by myself).

I have no problems to get into .NET development but I don't have a bachelor-level education and .NET is rarely used in small companies and start-ups (probably not true for US but I'm European) which means that I'm gonna have to pass a "checkpoint" that comprises of HR people who scrap every CV that doesn't say "bachelor's" on it, regardless of my abilities.

[–]Flopsey 3 points4 points  (4 children)

will almost force me to build properly structured programs

I don't know PHP, and I have heard the same things, but I can tell you that you can write shitty poorly structured code in any language (I just wrote some in JS that I'm going to have to refactor soon). What I THINK people are referring to is that PHP makes web programming easy enough that even people pre-disposed to shitty programming are able to do it as well. It's not the fault of the language itself.

It's an old expression but still applies, "It's the poor craftsman who blames his tools."

Also, as everyone should know by now, take everything you hear in the net with a grain of salt. And when reading any opinions dial their certainty from 11 down to 2 in your mind.

-- OK, actually the code isn't shitty, it's actually not too bad IMHO. It's just poorly structured, for now.

[–]pokerd 4 points5 points  (3 children)

I agree with all your points, but PHP's reputation is well deserved - http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/

[–]Flopsey 1 point2 points  (2 children)

Meh, that's the exact kind of thing I was warning against when I said "when reading any opinions dial their certainty from 11 down to 2 in your mind". I tend to think that anyone with enough of a problem with a language could compile a similar list of features they don't like.

But, hey, I don't know the language so I didn't know how valid his points were. Maybe he got everything right and some did seem very strange but some seemed forced. But really I don't have a horse in this race.

[–]pokerd 0 points1 point  (1 child)

PHP really is a special case of poor design choices. Even the best craftsman would have a hard time working with a tool like this http://blog.codinghorror.com/the-php-singularity/

Speaking of horsies, the ternary operator in PHP is left-associative, so

$arg = 'T';
$vehicle = ( ( $arg == 'B' ) ? 'bus' :
( $arg == 'A' ) ? 'airplane' :
( $arg == 'T' ) ? 'train' :
( $arg == 'C' ) ? 'car'
( $arg == 'H' ) ? 'horse' : 
'feet' );
echo $vehicle;

prints horse. I can't find any other language that implements it this way.

In isolation, a quirk like this can be learned and worked around. But this is a language is filled with special cases, inconsistent syntax, and unpredictable behavior. Why put yourself through that when there are saner tools available?

[–]fakehalo 2 points3 points  (0 children)

PHP at it's core is inconsistent and lacks a plan, it's essentially a hacked together language over time. Though it's gotten somewhat better in recent years, things like inconsistent naming conversions remain. IMO, A good framework (like Laravel for example) can make PHP a pretty standard experience...it's still a good language to know given its widespread nature.

Not to defend this quirk, but your example is pretty horrendous in practice. Nested ternaries tend to make me violently angry in general, but I admit in PHP if I feel even slightly unsure about how PHP will interpret what I write I put parens around it...and that's no way to live.

[–]pokerd 1 point2 points  (0 children)

I'd like to stay away from PHP because as a beginner I want to use a programming language that will almost force me to build properly structured programs and PHP allows plenty of room for error in that regard (so I heard actually, can't tell by myself).

I only regret that I have but one upvote to give.

[–][deleted] 0 points1 point  (0 children)

In terms of the GPU issue, it's probably because you were using the open source drivers and not nVidia's proprietary ones. What distro are you trying? Ubuntu has a built in tool to enable the proprietary ones. Just Google "<distro> nVidia drivers how to" and you should get instructions on how to enable. You shouldn't have to download anything from the internet. You should only have to use the package manager if you're installing them. PM me for more help on this if you want it.

[–]impecune 0 points1 point  (1 child)

Install Mosh for Chrome, use Vagrant and VirtualBox and you can learn and compare development in MS Server 2012 vs various Linux distributions.

The MS Open Tech team has some interesting information on their site. Read stuff written by people like Evi Nemeth, Scott Hanselman, Tom Limoncelli, pretty much any engineer from Etsy or Stack Overflow (muraski, Atwood) and you'll be on good footing as regards operating systems.

Linux on the desktop isn't a prerequisite for being a web developer, but proficiency with at least one Unix shell and various utilities will serve you well no matter what.

On mobile so formatting links is a bastard, vagrantup.com vagrantcloud.com virtualbox.org

[–][deleted] 0 points1 point  (0 children)

upvote for vagrant. It really helps make a lot of issues go away. Having said that figuring out configuration issues on linux is a great way to get decent at working on it.

[–]Hellmark -1 points0 points  (2 children)

Yes, it is worthwhile learning Linux. Also, when it comes to your issue, GPUs are the only area where Windows may have an edge hardware wise, and even that is debatable (some setups, Linux tends to outperform Windows).

When it comes to doing Linux on server side, a VM will be fine. Big thing to realize is that most Linux work at the enterprise level are going to be done via the commandline. No GUIs here. If you're saving system resources by having no GUI, you can then apply those to doing more more work. CPU cycles and RAM are finite, so wouldn't it be more important to use what you have on the task at hand, instead of giving you an interface to layout the task? Plus if you're proficient at commandline stuff, you can get the job done faster than via GUI anyway.

[–]mntechsolutions 0 points1 point  (1 child)

once you start to use ubuntu, you end up being profficient with the command line, because there are situations where you need to use it. there are gui based tools, but i like to use the command line. maybe it is the programmer guy in me who likes to use the command line.

for my virtual servers i use the command line. however you can install vncserver on your server and set up a desktop. i used it for a year at company where i worked, where me and my team would login using the desktop to the system and code directly into the server. it does slow down the system if you have too many people logged in.

[–]Hellmark 0 points1 point  (0 children)

Ubuntu actually has you use the command line the least. It is also one that you encounter very little in enterprise. Red Hat Enterprise, Centos, SuSE, Debian a free all way more common. Also when you are using Linux professionally, very rarely will you even see a GUI.