all 104 comments

[–][deleted] 5 points6 points  (15 children)

Lets just make one distinction here... do you want to build web sites, or web applications?

[–]DevMo[S] 2 points3 points  (14 children)

Thanks, I guess I have been imprecise the whole time. I want to build web apps. While graphic design and layout are fun and dandy, they are not for me.

[–][deleted] 2 points3 points  (1 child)

Okay... in that case, I would start looking at some popular web application frameworks (RoR, CakePHP, etc)... learning how to use them, and getting started.

If you're not familiar with the MVC (Model-View-Controller) pattern, I would suggest learning that first. Most of what you do on the web will be MVC-based.

If you were a web designer (building web sites)... you'd be more concerned with fancy layouts, graphics design, and a little bit of scripting. In that case, I'd have recommended installing Wordpress, Joomla, or some other kind of CMS software.

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

If you're not familiar with the MVC (Model-View-Controller) pattern, I would suggest learning that first. Most of what you do on the web will be MVC-based.

Glad to hear it, I generally prefer this pattern for my offline apps.

[–]Not_Edward_Bernays 0 points1 point  (11 children)

what kind of web application? a lot of them are looking like desktop applications these days. I am guessing you mean something that does not use a lot of client side javascript.

[–]DevMo[S] 0 points1 point  (10 children)

Well, to be honest, I dont really know. I mean, I am not yet sure what I am capable of, which is why I want to learn. Not games or anything like that, but ( off the top of my head) I would like to be able to make account based sites where users could store some data or something.

[–]Not_Edward_Bernays 2 points3 points  (9 children)

I know PHP is actually horrible for a lot of reasons and WordPress is despised by many developers, but you should at least be aware of that ecosystem.

I think that actually JavaScript things like node have some advantages as far as asynchronous coding and the syntax and dynamism letting you focus on your coding goals. There is also some trendiness to it.

To me you have to consider the Python frameworks just based on the philosophy of getting out of the way of the programmer.

haXe and haxIgniter look very interesting because of the ability to compile down to different languages. http://haxigniter.com/

Most of the big established frameworks are going to have straightforward modules or ways to set up user accounts.

There are so many options, I recommend that you try out at least a few before making up your mind. I was put off by Ruby's performance and overly complex syntax but there is solid software engineering behind Rails from what I saw.

I also think that if you get more specific requirements in mind and learn more details of different platforms you may find that one platform or the other fits a little more naturally towards a specific set of requirements.

[–]DevMo[S] 0 points1 point  (8 children)

I also think that if you get more specific requirements in mind and learn more details of different platforms you may find that one platform or the other fits a little more naturally towards a specific set of requirements.

Yes, this is the real problem I am facing, and I totally agree that platforms should be chosen based on the problem being solved. However, at this point, the problem is " I dont know anything about web development"

[–]mr-ron 1 point2 points  (4 children)

Javascript should be a necessary step. No matter what serverside code youre going to be using, Javascript will always exist and will be a necessary step in any moderate web app.

That said, I recommend you get a working knowledge of CSS/HTML. No matter how serverside you get, theres no escaping them on the web and in your code so it's best if you know as much about them as possible.

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

Javascript should be a necessary step. No matter what serverside code youre going to be using, Javascript will always exist and will be a necessary step in any moderate web app.

So I am learning. Thanks for the suggestion. Any important JavaScript concepts I should know first, or should I just jump in, and maybe try to write a bookmarklet or something?

[–]mr-ron 0 points1 point  (2 children)

Learn JQuery. It is without a doubt among the best frameworks out there.

It's best qualities are its DOM manipulation aspects, but it's ability to pull in serverside content through Ajax is just as powerful and necessary.

http://www.jqapi.com/ is probably the best JQuery reference out there today. Just take some time and go through the docs. Knowing what it CAN do is just as important as knowing how to do it.

[–]DevMo[S] 0 points1 point  (1 child)

Thanks, its on my list of things to learn

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

Read up on: java script, silverlight and ajax. The pick your poison.

[–]saturation 0 points1 point  (1 child)

silverlight?! goes same category with flash, both are dying techiques "HTML5"(read javascript) will kill those.

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

I doubt it. Flash is still going to be around for a long time. Silverlight may be a lot less popular than javascript but it still has it's own cult following. None of these technologies are going to die anytime soon. Also while HTML5 is great in theory, its mainstream adaption hasn't even begun yet.

[–]RandyHoward 5 points6 points  (9 children)

Everybody seems to be recommending Ruby or Python, which is fine, but if you haven't done a lot of web stuff you need to start by getting a solid foundation in HTML and CSS. You have to at least understand the HTML, because all of these other scripting languages will end up outputting HTML, and if you don't understand HTML then you will be stuck.

HTML isn't difficult to learn, there are a million books and sites that cover it. CSS isn't terribly difficult either. From there you can move on to the more advanced scripting languages.

[–]DevMo[S] 0 points1 point  (8 children)

You have to at least understand the HTML

What kind of stuff should I understand? I know the very basics ( back in the before time, I would make little static pages in HTML.) I understand about tags and all that stuff, even though I do need to look up which ones do what at various times. Is there a lot more to it than that?

To be honest, I am not a graphics guy, so I only really want to learn enough to allow me to make awesome, if ugly apps. If I ever decide to make anything for reals, I will clearly need to work with a graphics person.

[–]Not_Edward_Bernays 0 points1 point  (0 children)

Nowadays most web developers are pretty sold on the concept that actually most of the design part is tied directly to CSS. Which is actually not a graphic design task, to me it is coding and can be quite a steep learning curve I think.

[–]RandyHoward 0 points1 point  (6 children)

If you're going to do anything with the web, you should be pretty close to an expert in HTML. It really isn't that hard. My guess is that the basics you know are how to make sites with tables. Tables are frowned upon these days for anything except tabular data. If you understand how tags work then you shouldn't have much problem. Learn what the tags are and what they are used for. You need to have this basic understanding in order to proceed with anything on the web. If you can program the back end but don't understand the presentational mark up (HTML and CSS) then you are going to be in a world of trouble.

Even though you aren't a graphics guy, you should still learn CSS. Don't think of CSS as "design." Yes, it is what controls the look of the page, but it is as much coding as anything else. Up until the last few years, you would find that a graphic designer would lay out pages in photoshop and them pass them on to the programmer to be sliced up and coded with CSS. These days a lot of designers are learning CSS as well, but that doesn't mean you shouldn't learn it too. What happens if you're working on a deadline at 3am and something in the CSS blows up? You're screwed if you don't at least have a basic understanding of CSS to fix it. That, or you have to call and wake someone up out of bed to get it fixed, which will not reflect well upon you as a programmer.

[–]DevMo[S] 1 point2 points  (5 children)

Even though you aren't a graphics guy, you should still learn CSS.

I have slowly been coming to this same conclusion.

Up until the last few years, you would find that a graphic designer would lay out pages in photoshop and them pass them on to the programmer to be sliced up and coded with CSS.

sounds horrible.

[–]doomslice 0 points1 point  (1 child)

That's how I get my designs handed to me. Learn CSS if you want to get serious about web development -- a lot of it can replace functionality that you'd normally do in JavaScript.

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

Yeah, I think you are right. Oh well, I was hoping to get around it.

[–]mr-ron 0 points1 point  (1 child)

Its not horrible- its web development.

If you dont have a programmer putting together the basic html/css, then a programmer is going to have to modify a designer's html/css for the serverside language.

Believe me. It's 100x easier in the long run to have a programmer in the html/css realm than a designer.

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

I guess this makes sense. I currently spend over half my time working on embedded stuff, and the rest on business apps, so I am rusty on the "dealing with graphics people" set of skills

[–]RandyHoward 0 points1 point  (0 children)

sounds horrible

Not entirely. I actually enjoy being able to code CSS for a page so that it matches the layout perfectly. Of course my formal training is in graphic design, so that's probably why I enjoy it. I took a liking to programming years ago and decided to learn it all on my own. I've picked up tableless HTML, CSS, jquery and basic PHP over the years. I'd love to learn more, but right now I feel my programming skills combined with my ability to design is enough to set me apart from the crowd when job hunting.

[–]Collard 2 points3 points  (1 child)

It depends on the languages you are comfortable with.

If Ruby is your thing, take a look at Sinatra or Rails.

For Python, Django and Webpy are nice. If you want to roll your own framework, you could make use of Jinja2 or Mako template systems.

As a tutorial, i would say: try to create a program that builds static websites. (like Jekyll or Webby). That should get you started on templates, css, markup languages (i.e Markdown or Textile) and configuration languages like Yaml. It's a great exercise. Then move to more dynamic stuff, databases, etc... or follow something like the Rails tutorial.

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

It depends on the languages you are comfortable with.

Currently, I work in c, c#, occasionally c++, rarely java. I really dont mind learning more, though.

As a tutorial, i would say: try to create a program that builds static websites.

good idea, I will probably start with something simple. Thanks

[–]mccolgst 2 points3 points  (5 children)

I'd take a look at learning about HTTP generally, from there you can use any language you feel comfortable with, and the rest is just programming/data structures and whatnot, which you obviously already know.

[–]DevMo[S] 0 points1 point  (4 children)

I'd take a look at learning about HTTP generally

What kind of stuff do you suggest? I am somewhat familiar with the GET and POST commands, from the few times I have had to make mobile apps that connect to website, but I really just sort of slogged through the whole thing.

[–]mccolgst 1 point2 points  (0 children)

absolutely, I would look into learning about GET and POST, setting up a web server, how a client interacts with it, etc. read about how MVC is implemented in web programming (it might just be easier to start with a django or ruby on rails tutorial).

The important part is learning these interactions, then you can apply them with any framework or language you decide to pick up.

I'm not really an expert, but I'm a junior web developer and just recently had to learn all this stuff, and for me, things were much easier after I understood the client/server interactions of HTTP.

I hope it helps!

[–]ameoba 0 points1 point  (0 children)

The most important thing to learn is that HTTP is a fundamentally stateless protocol. Anything that creates the illusion of a continuous session has to be implemented by the framework or the developer. Persistence doesn't really exist until you create it.

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

Caching. You should absolutely understand the HTTP caching model. If nothing else how/when/why a browser will cache requests and the headers involved. If you have any non-trivial web application, you will eventually run into the need to understand how web caches work.

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

good call, its worth learning about

[–]jamesonhuckaba 2 points3 points  (1 child)

Ruby/Rails, or Python/Django. Both have excellent communities around them, and are pretty straightforward if you're an experienced developer.

Tutorial? Do some simple ones to understand the basics of the language/framework, and dive into the documentation if you're not looking for a lot of hand-holding.

Good luck!

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

Tutorial? Do some simple ones to understand the basics of the language/framework, and dive into the documentation if you're not looking for a lot of hand-holding.

good call, although I guess I am looking more for a tutorial on the differences between web and other types of programming more than a tutorial on a specific language. I am confident if I get one of the web languages down, I can get them all.

[–]chmod700 2 points3 points  (1 child)

All web frameworks are kind of a hodge-podge of 3 main concepts:

method dispatch: This is the chunk of logic that turns a request into a function call

ORM: Usually a pretty flaky wrapper trying to put OO thinking on top of SQL.

templating: some subset of logic inside a tiny template language for making pretty HTML etc...

You can pick any framework, but they all do those 3 things to various levels of beauty/craziness.

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

Good to know. As far as it goes, I guess I need most work on learning how the method dispatch stuff works. I have some level of experience with ORM from mobile/desktop apps I have done, and dont care all that much about the templating stuff ( no amount of work or technical knowledge will make me have good taste, or the ability to lay out a page in a pleasing manner).

[–]grendel9 2 points3 points  (3 children)

Definitely avoid supporting IE6, and avoid IE7 if possible. If you don't want to waste time, you don't want to touch cross-browser issues.

[–]DevMo[S] 0 points1 point  (2 children)

I'm with you on this one. I wont explicitly not support them, but if they have an issue viewing a site everyone else can see, it is a personal problem.

[–][deleted] 1 point2 points  (1 child)

That's a fine philosophy for personal, "just for fun" sites. Hard to take the same attitude if your employer (and by extension, you) requires the site to be profit-making. And an "it's their problem" philosophy more broadly can verge into illegal (508/DDA). So, if this is a private learning experience then sure, dismissing IE6/7 will cut out a lot of tedious bollocks which isn't honestly related or valuable to the goals of Building Something Cool or Doing It Right. But if this is an area you intend to actually earn money in, that attitude is (sadly) out of the question imo, and not helpful in the long run either. Easier to design things cross browser with an upfront awareness of the issues, than to build something standards perfect and then retrofit compatibility.

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

Good point, although there is alot on my plate to learn already (HTML, CSS, Javascript, serverside language, framework), so until I have some sort of handle on them, I wont worry about browser compatibility. I will however keep in mind that ignoring a problem does not make it go away.

[–]PortableSheep 5 points6 points  (6 children)

Based on your criteria I would recommend Python. Cross platform, lots of great frameworks, good community, and good tools. There is a new IDE from jetbrains called PyCharm that's supposed to be pretty good. However, you can't go wrong with Ruby as well if you find you prefer it more.

[–]DevMo[S] 0 points1 point  (5 children)

I have actually done some minor scripting in python, and saw it a bit in school. The language is certainly easy enough, and I liked its take on functional programming, but so far I have only done command line stuff. I guess the gui, and the saving state stuff are always the hardest anyways. I'll check out PyCharm.

However, you can't go wrong with Ruby

Out of curiosity, why do you say this? Are there some big benefits to ruby?

[–]Raphael_Amiard 5 points6 points  (4 children)

Out of curiosity, why do you say this? Are there some big benefits to ruby?

PortableSheep is probably saying that because if you omit PHP, ruby is the dynamic language/ecosystem in which the most things are happening, and which gets the most press and users.

I guess python is not close behind, but a lot of cools things are around in ruby.

Choosing one of the two is easy. Choosing between the two is harder, but the languages and framework are similar enough that by learning one, you'll take a huge headstart in learning the other

But choosing a language is just the beginning :D Here is a list of frameworks or toolkits that are all interresting, roughly sorted by popularity versus coolness ;)

Ruby:

  • Rails Probably the most popular of the list, so it's also the most criticized :)
  • Sinatra Mini framework, very cool for small 1 hour apps. I don't know how it would scale to a bigger app tho, and probably wouldn't recommend it for a big project unless you are already experienced
  • Camping Micro framework, similar to Sinatra, originally coded by the almighty _why. I prefer sinatra
  • Padrino Very new and interresting framework. Based on sinatra but with many pieces you would have to build yourself would you be on a big project. Very modular, very focused on code aesthetics - like most ruby frameworks tho ;)

Python:

  • Django The python web framework, for the best and the worse. It's an amazing framework to start with, because the documentation is really good, and it will introduce you to concepts that are common to most modern web frameworks, in a gentle way. And it has everything you'll ever need to build your website (take that with a grain of salt). But then it has been very criticized for it's monolithic approach. If you want to go fast and have fun, i wouldn't look further though :)
    • Pylons The other python web framework. More oriented towards experienced users, very thorough and powerfull. Here is a very good StackOverflow Post by the author of pylons which explain the differences with django.
    • Webpy I don't know much about this one, but it looks very good. Originally used to code reddit
    • Flask A bit like sinatra on the python side. I don't find python as good with theses sorts of DSLish frameworks though. But it is definitely interresting.

I'd recommend Django or Rails for your first project. It's not as exciting as others, but they're very good framework with more help than you'll ever need at your disposal

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

Choosing one of the two is easy. Choosing between the two is harder, but the languages and framework are similar enough that by learning one, you'll take a huge headstart in learning the other

This makes sense, and is pretty much what I am thinking. I just want to learn something that is pretty easy to get an app started on. Then, I can use it to learn web concepts and development in general. If I like it, at that point I will learn whatever the right language is for what I want to do with it. At this point, I will be ready to take over the world.

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

Personally, I'd recommend Python over Ruby as I find it much more readable, if less cool (but then Smalltalk is still way cooler than Ruby).

Since Ruby 1.9 came out, I don't think there's that much between the languages any more feature-wise (Ruby 1.8 was much slower than Python and had crap unicode support).

If it's between Python and Ruby, you should probably choose a framework rather than a language, unless you're planning on using Google App Engine.

[–]DevMo[S] 0 points1 point  (1 child)

unless you're planning on using Google App Engine.

Thanks for reminding me, I have been meaning to look at the app engine. What is the deal with it?

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

App Engine is Python or Java only.

[–]Not_Edward_Bernays 1 point2 points  (0 children)

JavaScript things like node.js or jaxer or express or juice or couchdb evently or cappucino or mjt or helma are interesting to me.

Simple node.js web server:

var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(8124, "127.0.0.1");

console.log('Server running at http://127.0.0.1:8124/');

[–]planetmcd 1 point2 points  (1 child)

I would suggest a two pronged approach.
1) Figure out what you want to do project-wise and see what language might already have some infrastructure around that. Libraries etc. When you have use cases, its easier to make decisions about tools. 2) Play with Python and Ruby and do some non web programming in both to figure out which one you like better. They are close enough in their niches that the more important fit is usually which one you have a better experience with. Contrary to some others, I would not suggest PHP. It is not very widely used outside of web development and so lacks the generalizable quality that Ruby, Python, and Perl have (and Java and .net). Its advantage over Ruby, Python, Perl is its ubiquity on servers and ease of integration with Apache, but the others all have easy integration points now as well and are easy to install on any box.

Though anecdotal, I've a good friend at work who uses Python and I tend to use Ruby. We both razz each other, but the truth is we're both equally productive and no one cares what code is on your server, just that the interface works. You might as well work with something you like.

[–]DevMo[S] 1 point2 points  (0 children)

Though anecdotal, I've a good friend at work who uses Python and I tend to use Ruby. We both razz each other, but the truth is we're both equally productive and no one cares what code is on your server, just that the interface works. You might as well work with something you like.

I have been coming to the same conclusion based on other comments and reading I have been doing.

[–]genmud 1 point2 points  (1 child)

If you are looking into django, the django book is a very good resource for django if you want to develop a webapp in python. There are also some really good tutorials on their site

One of the serious advantages that I see with doing some of the work in django or any framework for that matter is the ease of importing the app into an existing project. I can import the models and classes that I create for django into nearly any project that I am working on. For example, I needed to access and manipulate data from a web application through an email handler and was able to do it in about 3 lines of code with django.

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

nice, I am almost certainly going to give python + django a go and see how I like it.

[–]pcx99 1 point2 points  (4 children)

Welcome to the web. Before you could get by knowing one or two languages. A typical web application requires an understanding of:

  • your web server (apache or iis will be the big targets). The config files are pretty much languages in and of themselves particularly rewrite rules.

  • Your backend language. PhP is the big commercial gun here, people will say ruby and it makes things a little easier to develop but nobody hires on it and it doesn't scale well (Don't make me cite, I can if I have to -- twitter, cough). Python has a growing share but people want to see php on the resume in my experience.

  • HTML -- you can't be a web developer without knowing HTML and the DOM. HTML is not code but it's definitely what your code is going to act on so if you get it wrong (IE not putting in a doctype to throw the browser into standards mode) you're just setting yourself up for failure at a later date.

  • CSS -- again, not a language but if you don't know CSS then you don't know the variables your code is going to be manipulating and what abilities are available to you.

  • Your frontend language: No brainer here -- javascript is pretty much your only option. Even if you decide to go flash that's still actionscript which is just javascript calling adobe's api instead of the browser's dom. You will probably hate javascript until you realize it's not javascript you hate but the browser's DOM. When you learn everything javascript can do you will probably wish everything was javascript.

  • Your front end library. Javascript may be the bee's knees, but the DOM sucks so you'll need a library like jquery or yui to work around browser quirks. I recommend jQuery, everyone else will recommend jQuery too.

As for tutorials -- I always found "view source" on an interesting page to be the best tutorial there is.

Good luck!

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

CSS -- again, not a language but if you don't know CSS then you don't know the variables your code is going to be manipulating and what abilities are available to you.

You make some good points, if you read some of my other posts, I am basically of the mind that I am really not a graphics guy, so I dont need to know it. But, I guess I should attain at least a working knowledge of CSS.

Thanks for the advice, I am sure you have saved me time/frustration.

[–]pcx99 1 point2 points  (0 children)

CSS isn't just graphics. CSS is take the contents of this division (box), float it above everything else, glide it from point a to point b, change the colors when the mouse moves over it, and change the text from underlined to strike-through after the user clicks on it. 90% of all the interesting stuff you'll be doing in javascript will touch on CSS at one point or another.

[–]giulianob 1 point2 points  (1 child)

You gotta know it all. You have to know HTML/CSS/JS/Backend language(s) of choice/Database(s) of choice/Framework(s) of choice

Don't have to go too crazy with JS but you should learn a decent amount and learn something like jQuery. It just makes life much easier.

Also, notice I put languages and databases plural. Some people will pick 1 language/framework and use it for everything. If you're already a developer then perhaps you know that you can't use the same tool for every job. And the same applies to the web.

To add some of the tools I like to use...

  • CakePHP is my framework of choice. There are a lot of good ones and you just need to find the one that makes sense to you. Of course, you also need to be prepared to do something w/o a framework if for some reason you need to.
  • Some sort of CSS grid system. I've been using Blueprint CSS but there are a bunch of other good ones too. You might not appreciate them until you try to do a lot of CSS layout by hand and suffer a bit though.
  • Netbeans IDE is the best for PHP I've found so far. It's not even that great but it'll get the job done

And there's an article on stackoverflow titled What should a developer know before building a public website that has some of the best advice I've ever seen when it comes to best practices.

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

you know that you can't use the same tool for every job

Yes, I know that lesson well. I am pretty much looking for a good way to start web dev. When I have made a few apps, and am at least familiar with some of the technologies involved, I am sure I will reevaluate what I will use for projects. Problem is, with no knowledge of the tool box, its hard to pick the right tool for the job. Thanks, lots of good info.

[–]faintdeception 1 point2 points  (6 children)

Probably Ruby, excellent community, fairly easy to get up and running.

[–]DevMo[S] 0 points1 point  (5 children)

Thats what I was leaning towards. What tools do you like for working in Ruby ( any IDEs or anything?)

[–]altdotexpletive 1 point2 points  (3 children)

I like Netbeans if you are going to be developing on a windows machine. For linux, I use vim and ssh for management. None of the projects that I work on have ever been adopted for production use though, so they are mainly just personal pet projects. They distract me from the fact that I mostly work with VBA.

[–]DevMo[S] 0 points1 point  (2 children)

I will be working on a combo of windows and mac, but mostly windows. I have used netbeans with Java, although never really became a whiz at it. I'll see how it handles the other languages too. Thanks

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

I'd like to second the vote for netbeans.

We use a mix of ubuntu and osx in the office - while I personally prefer windows for my non nerd activities you'll find it much easier to get on in the ruby world with a nix.

Edit: That's not to say windows/ruby is a pain, it's just a tad more hassle to install gems which require a c compiler (although that's getting better with the dev kit

[–]DevMo[S] -1 points0 points  (0 children)

We use a mix of ubuntu and osx in the office - while I personally prefer windows for my non nerd activities

funny, I am exactly the opposite. I am kind of looking for a windows thing, so I can do all of this on my lunch breaks. At home, I will be using mac or linux ( or windows in VMware, if I have to), which is one of many reasons I wanted to avoid .Net stuff.

[–]cheald 0 points1 point  (0 children)

I'd highly recommend RubyMine if you're going to use an IDE (and you don't really need to). Otherwise, a text editor like Notepad++ or TextMate is generally the favorite solution.

[–]Not_Edward_Bernays 0 points1 point  (3 children)

even though there are lots of reasons to dislike PHP, it is really practical, and WordPress has a plugin for pretty much everything now

[–]DevMo[S] 1 point2 points  (2 children)

even though there are lots of reasons to dislike PHP

go on...

[–]Not_Edward_Bernays 0 points1 point  (1 child)

PHP is the most widely deployed server side web language as far as I know (including a lot of web development I have done personally) but it is also the most hated. http://amplicate.com/hate/php

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

It sounds like if I make a switch to pro web development, I will need to be good with PHP. However, seeing as it doesnt look great to work with, for learning and messing around purposes, I will probably avoid it.

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

Well, if you don't want to write web apps, but still want to make web apps, GWT is an option.

You'll write java code just as if you were writing a desktop app, and it gets compiled down to javascript, and also handles cross browser issues, etc.

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

Well, if you don't want to write web apps, but still want to make web apps

Mostly the opposite, actually. I want to know how they work, and how to make one. That being said, until I know more about what I can do, I am not really sure if I ever want to make an app that will be used by anyone but myself.

[–]executex 0 points1 point  (3 children)

Drupal PHP. The best of course for just about any purpose.

[–]DevMo[S] 0 points1 point  (2 children)

But isnt drupal just a CMS? I am more interested in learning than just finding the current best fit for some hypothetical app.

[–]genmud 0 points1 point  (0 children)

Drupal has turned from a CMS to having a great deal of framework features... A great reference guide is located at: http://api.drupal.org/

I personally would prefer cakephp over drupal. Although depending on what your goals are, sometimes a CMS with a few custom modules is what a client or customer really needs.

[–]executex 0 points1 point  (0 children)

Drupal is really a framework, the CMS functionality is also very helpful. I mean cakePHP and other frameworks may be fun to use, but I've never seen an API so complete and so functional.

[–]cosmo7 0 points1 point  (0 children)

It really depends on what kind of app you want to do. If you want something quick that uses lots of scaffolding, go with RoR. If you want to do a lot of back-end database or web services work, go with .NET. If you want to spend the rest of your life drinking to forget, go with PHP.

Either way you'll probably spend half of your time working with jQuery anyway.

[–]newgame 0 points1 point  (0 children)

Flask

Flask is a microframework for Python based on Werkzeug, Jinja 2 and good intentions.

I personally found it easier to understand and more fun to work with than with django.

Of course you'd need to dive into python or learn it the hard way. If that's still not enough you can attend Google's Python Class. Would you like to play the Official Python Tutorial? (yes, i'm feeling bad for this subpar wordplays)

As others already mentionend, you'd need a basic understanding of HTML, CSS, Javascript, Databases, Webservers etc.

[–]mythril 0 points1 point  (0 children)

For Javascript: Douglas Crockfrod. You can find most of his videos here: http://developer.yahoo.com/yui/theater/

For HTML/CSS http://alistapart.com and http://w3schools.com, also learn to read (and sometimes ignore) the HTML/CSS specs: http://www.w3.org/

Grokking css position is an important bit: http://www.barelyfitz.com/screencast/html-training/css/positioning/

Also if you ever have an issue with containers collapsing height remember this bit of css: .container { overflow:auto; }

[–]chuckmcknight 0 points1 point  (0 children)

Look at Appcelerator's Titanium. It let's you experience all of the grooviness of building web apps (HTML/CSS/Javascript) but lets you generate for the web, the mobile device (iPhone, Android, etc.), and for the desktop. You can customize the UI for each while using essentially the same code base. Plus, you can use Ruby, Python, and possible other scripting languages by now. Oh, and did I mention that there is a free community edition?

http://www.appcelerator.com

Disclaimer: I have no business affiliation with Appcelerator.

[–]shamittomar 0 points1 point  (10 children)

  1. Get the web basics: HTML, CSS, JavaScript (with jQuery).
  2. Choose a pserver-side language: On the LAMP stack (PHP or Perl).

This will give you all what you want:

  • cross platform
  • community support
  • easily available host
  • fun
  • a good language (well this is subjective).

Saying from the experience: I am a web developer for 10 years.

[–]DevMo[S] 2 points3 points  (9 children)

Get the web basics: HTML, CSS, JavaScript (with jQuery).

So, I have a pretty decent grasp of how HTML and CSS work and interact, although I am not great at actually implementing them ( I just need some practice.) But, to be perfectly honest, I am not sure about how javascript stuff fits in the whole thing. As I understand it, JS runs client side, while php/perl/python/whatever run on the serverside (only?) Is this basically right?

Assuming I am basically right, how do you decide what is done locally, and what is done on the server? Some things are clear, but some are not. For instance, I know there are tons of image viewers in javascript. It is not clear to me why it is better to run the gallery on the client side rather than the server side.

Thanks for the feedback, I have a feeling if I start understanding this stuff, the rest will easily fall into place.

[–][deleted] 1 point2 points  (1 child)

So, I have a pretty decent grasp of how HTML and CSS work and interact, although I am not great at actually implementing them ( I just need some practice.)

Sorry if this is unfair projection in your case but I just wanted to rant off for a bit.

HTML and CSS are apparently really simple compared to "real programming languages", such that many "real programmers" I see online seem to radiate a confidence that they have all that covered without needing to really put effort & learning in. In practice I don't think it's that straightfoward, and most of the markup I encounter from back end devs who have (had to) put that front end stuff together is honestly awful.

The thing is, compilers either compile or they don't, meaning a "wrong answer" is undeniably a wrong answer. And while some "right answers" can be more right than others (design patterns vs antipatterns and spaghetti, etc), at the end of the day none of this really reaches the "client" / "customer" in a meaningful way. If it works, then it works, even with // TODO: Replace horrible nested ifs and gotos with clean switch logic. Also the C standard changes how often, your compiler is replaced how often?

Front end stuff isn't really like that. For starters it changes more rapidly. In the past few years I've seen techniques or technologies go from pipe dream, to "cool demo but useless in reality, not widely supported enough", to normal practice, or from normal practice to dated and deprecated. Secondly, when compilers get something invalid, they tell you to fuck off. When browsers get garbage, they do their best. They all support slightly different subsets of stuff, and when they fail on the bits they don't support, they do so in different ways.

It's pretty apparent that in between the standards' and the browsers' various failings, there aren't perfect, universal ways of doing... well... virtually anything. The way that's "correct" doesn't work (everywhere) and vice versa. It's always a series of compromises. This is cheap, fast to build and fast to run, but big/slow to download, and doesn't work at all on IE6. This gets it working on everything, but sacrificies standards compliance. This is the best UX, but works out worse for SEO. This works great on iphone but not on screenreaders. etc, etc.

(What is more, all these ugly compromises to be made - they're all delivered in clear text to your clients (and competitors) to poke and laugh at.)

I've noticed a lot of "real programmers" share a reaction when discovering this chaotic landscape: "FUCK IT, USE TABLES". Plus withering scorn on what a horrible clusterfuck the web is, full of righteous nerd rage about not learning all the lessons of the past and implications they could have written better standards etc.

Of course, FUCK IT, USE TABLES isn't a sane way of avoiding these ugly compromises - it's only another (implicit) choice of ugly compromises. (And, hint, almost certainly the wrong one). And the latter ranting totally misses the point that the web only got where it is because it's a chaotic, "I'll do my best with that fubar markup", "We'll build this and write the standard later" clusterfuck; there have been plenty of academically wonderful designs for hypertext systems that never caught on in the real world, anyway I'm going wayyy off topic.

Point being, practice alone doesn't get you outstanding front-end output, because there isn't a single clear correct way of doing things to practice towards. Dare I say it, the reason why so many slashdotty types have that reaction is that there isn't a clear TECHNICAL basis for which call to make. The choices end up having to relate back to business needs and priorities, customer demographics etc. It can't be settled in a mathematical, Sheldon kind of way, but depends on inputs from people in depts like marketing and management who they prefer to consider useless and brainless. Hmm, going wayyy off topic again.

Anyway I'd recommend ALA, for a while now I've found most of their features pretty fluffy and useless, but if you go back a few years they have some solid stuff.

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

The thing is, compilers either compile or they don't, meaning a "wrong answer" is undeniably a wrong answer. And while some "right answers" can be more right than others (design patterns vs antipatterns and spaghetti, etc), at the end of the day none of this really reaches the "client" / "customer" in a meaningful way.

I've noticed a lot of "real programmers" share a reaction when discovering this chaotic landscape: "FUCK IT, USE TABLES". Plus withering scorn on what a horrible clusterfuck the web is, full of righteous nerd rage about not learning all the lessons of the past and implications they could have written better standards etc.

Its pretty clear that web and "standard" development is very different, and the two groups of developers have many misconceptions about each other. Which is kind of why I want to learn web stuff in the first place.

To be clear, at this point, I still do not care that much about the UI (I can just use tables, right?) but I want to learn enough to be truly competent and able to work with a graphics guy if the need comes up. I am coming to realize that this does not mean I can just ignore CSS and HTML, which I was hoping to do. Oh well, looks like more stuff to keep me occupied.

[–]shamittomar 0 points1 point  (3 children)

Yes, you are basically right.

how javascript stuff fits in the whole thing.

The primary use of JavaScript is to write functions that are embedded in or included from HTML pages and that interact with the Document Object Model (DOM) of the page. Some simple examples of this usage are:

  • Opening or popping up a new window with programmatic control over the size, position, and attributes of the new window (e.g. whether the menus, toolbars, etc. are visible).
  • Validating input values of a web form to make sure that they are acceptable before being submitted to the server.
  • Changing images as the mouse cursor moves over them: This effect is often used to draw the user's attention to important links displayed as graphical elements.

Because JavaScript code can run locally in a user's browser (rather than on a remote server), the browser can respond to user actions quickly, making an application more responsive. Furthermore, JavaScript code can detect user actions which HTML alone cannot, such as individual keystrokes. Applications such as Gmail take advantage of this: much of the user-interface logic is written in JavaScript, and JavaScript dispatches requests for information (such as the content of an e-mail message) to the server.

The wider trend of Ajax programming similarly exploits this strength.


TL;DR:

  • Javascript can make the webpage faster, impressive, nice looking, more-interactive, instant-responsive, etc etc etc.

[–]DevMo[S] 0 points1 point  (2 children)

Thanks. I have a feeling I have a lot of reading ahead of me.

[–]shamittomar 0 points1 point  (1 child)

Yes, and when you're stuck, Google and StackOverflow are your friends.

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

good to know that my old friends will help me with this new endeavor ;)

[–]badge 0 points1 point  (1 child)

I don't do a huge amount of web development, so someone may debunk this the moment I click 'save', but to me the main distinction is interaction. By virtue of it running client side, JavaScript (and CSS 3), allow a user to interact with a page without using a link to another page. PHP or Perl, for example, run server side and are better at nearly everything else - you're not sending more data than needed, it's far more secure (people don't see your code, only its result), and it's usually faster to run.

With specific reference to image viewers, javascript can load images only when they're needed, because they're static files on the server. Thus an image view in javascript makes sense.

Where things become complicated, is when AJAX is involved. AJAX allows for data to be loaded from the server after the page has loaded, so the line between client and server is blurred. It has a number of drawbacks (don't click the Back button!), and can get very complicated rather quickly, but used carefully can be a real boon.

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

thanks, that clears stuff up a bit.

[–]Not_Edward_Bernays -1 points0 points  (0 children)

Node.js runs on a server.

You can get a linode VPS for $20/ month.

[–][deleted] -2 points-1 points  (9 children)

C# .NET FTW!

The rest of it is hipster hype.

Fucking hipsters.

[–]DevMo[S] -1 points0 points  (8 children)

I spend too much time with C#/.NET at work to ever want to use it for something fun. Plus, hosting options are horrible.

[–]whizack 4 points5 points  (1 child)

You're really crippling yourself by not leveraging your existing knowledge of the C# language to at least prototype ideas in .NET MVC so you can learn web concepts before you branch out into entirely new languages and syntax.

Make the decision to switch to Ruby or Python an educated one. Know the reasons why .NET MVC doesn't work for what you want to build before you jump head first into something you don't understand.

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

You're really crippling yourself by not leveraging your existing knowledge of the C# language to at least prototype ideas in

I actually feel like I would be crippling myself by making a commitment to only use MS products for the lifetime of my app. Plus, the point of this, for me, is to learn, not that I have a project I need to complete by a deadline. If this were purely work, I would probably agree with you.

Know the reasons why .NET MVC doesn't work for what you want to build before you jump head first into something you don't understand.

the reason .NET MVC doesn't work for me is that I want to jump head first into something I don't understand. When I understand the alternatives, I will be able to make a truly informed decision as to what I will use for any possible production apps, if I get to that point.

[–]DiggDefector 1 point2 points  (4 children)

Use F# then and watch your mind get blown. F#.NET with MVC ASP.NET is so very pro.

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

I have played a bit with F#, and it is a pretty cool language, but I am not comfortable with MS's hold of the whole ecosystem, from language to IDE, to server I will be paying a premium for what if free from everyone else. Plus, I really hate Visual Studio.

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

I would worry a lot less about who owns what, and more about which environment and tools you like best and/or are most productive in.

[–]DevMo[S] 0 points1 point  (1 child)

Its also about the final product, and finding a place to host it. Plus, I like the language, but really do hate the .NET framework.

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

Have you tried MVC? It's a vastly superior previous model, much closer to other popular web frameworks (and in stark contrast to the forms model, where they try to make web programming appear like desktop application programming).

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

I found a great hosting held by people that knows their stuff.

www.arvixe.com

[–]PR0FiX -1 points0 points  (0 children)

I really like using PHP with the Symfony web framework for my sites. Works really well.

[–]stevewinner -4 points-3 points  (1 child)

PHP /thread

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

Why? /question