Web Developers: What tools/technologies do you use?

I’m getting back into the web and software development world after an on and off sabbatical of a few years, and I’m trying to figure out what technologies are actually being used these days especially for web development.

I’d also like to know exactly what you do with some of these things. Take Ruby, for example. I know it’s an object oriented programming that’s somehow used in web development, but what can you do with Ruby that you can’t do otherwise?

For starters, what IDE do you use? Is Dreamweaver still the de facto standard?

I use Dreamweaver to code in PHP with mySQL DBs.

PHP is sort of the standard for quick development of dynamically driven websites. It CAN work in huge, enterprise solutions, but it usually isn’t.

In my experiences, enterprise solutions usually develop in .NET with whatever programming language they want. In my day job at an insurance company, our backend is all run using .NET with C#, and written inside Visual Studio. I have virtually no experience in any of these platforms, but I do design the front-end of the website and get my hands dirty within .NET editing some of the files I need to (CSS, ASPX, MasterPages) but none of the really in depth stuff I know its capable of.

My side work is all done in PHP, and I design and develop the front- and back-end of the sites I do on my own. PHP is free and open source, so there are a metric ton of free scripts out there to download and use for your own purposes.

PHP’s Microsoft equivalent is ASP. It’s roughly the same idea as PHP, but less popular.

If Dreamweaver is an IDE then my rollerblades are a helicopter.

I like to kick it old-skool. I do all my development with Emacs. Apache with mod_perl is my environment of choice. I use subversion for version control, and Trac (a great tool written in Python) for issue tracking and bug reporting. I use Template Toolkit for the front-end views, and the DBIx::Class library for backend lazy-loading ORM. I prefer simple frameworks like the CGI::Application[sup]1[/sup] library which allow me to set up a very quick MVC design with a minimum of fuss, and do it properly with inheritance and sensible OO design, rather than lazy code-generation techniques like Rails or Catalyst.

[sub]1. Despite its name, it works great fully-integrated with mod_perl and does not rely on plain CGI[/sub].

Wow, friedo, I have no idea what you’re talking about, but it really sounds impressive.

Yeah, well, that’s why I get the big bucks.

XHTML, PHP, MySQL

My editor is UltraEdit. Been using it for almost 10 years. Dreamweaver is just to big and clunky.

Also, I’ve just recently started using drupal. It’s a great CMS framework.

I’m looking for excuses to use jQuery.

We use ASP and SQL Server. We’re old fashioned like that.

We were using ASP.NET for a while.

I had a longer post typed out but I don’t want to get into any arguments so…

You need to choose a path and go down it and become proficient in the tools that help you along the way.

I’ve been in the Web design industry for a little over 10 years now and except for a class in college, I have never used Dreamweaver. I used Notepad then HomeSite (which is nice like UltraEdit). Then I moved up to Visual Studio (which I used like HomeSite with VSS) and now use both VS and VS.NET.

Other than those tools I also use a free FTP program and Photoshop, and the SQL 2000 and 2005 client tools.

I happened to take the path of HTML -> ASP (vb) -> ASP.NET (C#). If I had chosen to go the PHP route I may have ended up using different tools. There’s probably other people who took the same path as me but use different tools as well.

If you want my advice on “where to start these days” it would be to get the free Visual Studio.net Express and free SQL Server 2005 Express and start poking around from there. You could get books, or not (lots of free help online).

But you can also explore free Apache-based tools and environments.

Then, see where that takes you.

What’s a good, GUI-oriented html editor? I tried Dreamweaver, but it’s obviously designed for people who want to hand-write html code. I don’t want something that’s necessarily simple, but something where I draw what I want the page to look like and not worry about the code itself.

We use Dreamweaver for editing and our main language is ColdFusion, we’re on Windows machines exclusively. I personally don’t mess with the ColdFusion too much - I do ‘design implementation’, which is the boss’s fancy way to say ‘I’m that chick that takes the designer’s Photoshop files and skins our CMS’. Dreamweaver does decent code highlighting and hints for ColdFusion.

Photoshop is still the imaging tool of the trade, and I move between Dreamweaver’s hideous built-in FTP client, WS_FTP and LeechFTP.

Alex_Dubinsky, make a program that does that well and you’ll become a millionaire.

OK. Here’s what I’m hoping to accomplish with this thread. All these tools and technologies that we’re talking about here - what are they good for? What is the niche that they fill? Why should I (or anyone else) invest the time in getting up to speed with one or another?

Let’s start with the basics:

**HTML **- Hypertext Markup Language - This tells browsers how to display the page.
**XHTML **- The latest markup standard and intended to replace HTML.
**CSS **- Cascading Style Sheets - Used by browsers for the presentation of a page. The basic idea behind CSS was to separate the look and aesthetics of a page from its content. This way you can have the color scheme, fonts and positioning specifications in a separate CSS file leaving the web page itself with only content and minimal HTML markup.
**JavaScript **- A client-side scripting tool. By itself, an HTML page is static (unchanging). JavaScript gave web designers the ability to make their pages dynamic. You can embed snippets of JavaScript code to react to events (e.g. when a user clicks on an HTML element), to validate user input on forms, or to create content on the fly. JavaScript is normally limited to working on the user’s machine (client side).
**PHP **- A server-side scripting language. While JavaScript does it’s thing on the client’s machine, PHP does its work on the server itself. Typically PHP is used to interact with a database to pull down records, update the database, etc. PHP is normally used with Apache servers and you will often hear about the LAMP platform: Linux, Apache, MySQL and PHP.
**ASP **- Same idea as PHP except that it runs on Microsoft platforms.
**Notepad **- The most basic source code editor for creating web pages.
**Dreamweaver **- Notepad on steroids. Lots of steroids. And cocaine. Dreamweaver gives you some basic WYSIWYG functionality, code validation, and the ability to develope an entire web site all within a single application.

OK, that’s about it for me. Notice that I’m not going on and on about all the things a tool or technology CAN do. Pliers CAN be used to drive a nail or tighten a screw, but that’s not the niche they were designed for.

So friedo, you say you develop with mod_perl. Well, OK, but what is mod_perl? What does it do for you? Why is it better than Product X? What’s its niche?

See where I’m trying to go with this?

Apache is the most commonly used web server software today. It works great for serving up static files and such. Now, if you want to create dynamic content, there’s (basically) two ways to do it:

CGI – this is a set of standards that allows a web server to launch an external process, feed it the information from the HTTP request, and read a response back. A CGI program can be written in pretty much any programming language, like Perl, C, PHP, etc. CGI also works the same on Apache, IIS and most other web servers. But it is limited and doesn’t scale well. I got my start writing CGI programs in Perl.

Apache module – This is an extension of the Apache server itself, and can be used to modify the server’s behavior in any way you can imagine by writing new code. mod_perl is an Apache module which gives the Perl language access to the Apache API. So now, you can write a Perl program to interact with and control the entire Apache request cycle. This isn’t limited to Perl – there is a mod_python too, for example, which does much the same thing for Python.

Using mod_perl provides numerous advantages over using plain CGI with a Perl script:

  • Persistence: The Perl code you write remains resident in the memory of the Apache process, rather than getting reloaded and recompiled in a new process on every request. The speed improvement is redonkulous, especially for high-traffic sites.

  • The guts: The Perl code you write has full access to Apache’s internal API. This means you can write Perl code to deal with any phase of the Apache request cycle, such as the URI-handling phase, authentication, authorization, logging, cleanup, etc. CGI can only provide dynamic content to send to the client; it can not control any of these other things.

The disadvantage is that since mod_perl code relies on Apache’s API instead of a standard interface like CGI, it can only work on an Apache server. That is not a major disadvantage for the stuff I work on, since we run it ourselves and have no plans on distributing it to people using IIS or anything else.

Ya know, I have/use all those fancy schmancy tools as well, but at the end of the day, I get it all to work properly with WD40 and duct tape.

If you don’t have WD40 and duct tape in your web toolbox, you just ain’t.
:smiley:

Ok I’ll take a crack at this…

**HTML **
Anyone who does any work for the Web (except MAYBE graphic designers who know they won’t be doing any markup) needs to know HTML. No matter what sorts of exciting things you do in code, and no matter what language you use to do it, you ultimately need to spit out some HTML on the other end so whatever you just did shows up in a browser.

You can focus on HTML itself and make nice-looking Web pages that don’t “do” much, or you can learn it as a necessity for displaying the output of your highly technical code.

Personally, I started out by becoming proficient with HTML and set myself up in a position where I added the good HTML to someone else’s poor-HTML-as-a-result-of-awesome code. But that was just my luck - I don’t know how it works in the real world.

**XHTML **
If you’re going to learn HTML just learn the XHTML standards. Consider it like learning proper Modern American English instead of learning Olde English or something.

**CSS **
Think of CSS as a neat and tidy replacement for HTML. For example, you can either have <font color=red size=2><b><u>My Headline</u></b></font> (and write that same code for every headline) or you can have <span class=headline>My Text</span> and define the class called “headline” with red color, size 2 font, bold and underlined, and in the HTML assign that class name to all of your headlines. Then if you decide all headlines should be green, you go edit the headline class in your .css file and now all your headlines are green.

There’s much, much more to it. That’s the general gist of it, though.

Personally I don’t use it as the be-all-end-all to making my site “configurable with one defining sheet” - because I do mainly dynamic code utilizing include files and master pages which means if I set something as aligned right in my header (which is included on every page) and I want it to be aligned center later, I just go change the one header include file. But that’s just me because I don’t have the time or inclination to fight with CSS define every single aspect of my sites.

I do use CSS aplenty, though.
**JavaScript **
Javascript is a client-side code - it controls the client (the browser). There’s objects on the page that have methods and the methods can be assigned to trigger Javascript events (functions). So an HTML form button has a method called OnClick and the browser knows that OnClick = when someone clicks the button, and you can tell the browser “On Click, evoke this Javascript function” and there you have it. You can write your functions to do pretty much anything if you’re good at it.

Javascript is a much more “strict” language than HTML (or even VBScript) and there’s a lot of nice little easy things you can do with it or you can make it as complicated as you want.

Personally it took me forever to learn it, and I still wouldn’t say I am an Expert at it, just Intermediate, after 10 years. I think it’s because I have 0 programming background.

DHTML -
You didn’t add this but I’ll add it for you. DHTML is pretty much using Javascript to change CSS properties of objects on the page. If you click a button on a page and a table cell turns red, that’s DHTML. You would write a function in Javascript that is fired OnClick of the button that sets the background color style property of the target table cell to red.

Obviously it’s more complicated than that, but there’s the gist of it. I don’t know why it has its own acronym, but I guess it’s better than having to say “Javascript controlled style properties.”

**PHP ** & ASP -
Normally one would find PHP running on an Apache Web server on a Linux box, and the code/project would be connected to a MySQL database (all of those items are free - open source) (it is also possible and pretty simple to run all of those items on IIS on a Windows box)

ASP would be found running on an IIS Web server on a Windows box, and the code/project would be connected to either an Access database or a MS SQL database.

Both include functionality that comes from the server that lets you do specific dynamic-type things you can’t do with just plain HTML. They also do not require the use of a database. For example you can write out an array of items, reference the array of items, and display one particular item from the array without a database. You can write out the current time, or yesterday’s date, or a whole slew of date things without a database. You can submit a form and send the form’s contents via email without a database. All sorts of things.

You can also securely connect to a database, use PHP or ASP functions to get the data you need (by sending the proper database query), then “spit” the data back out to the browser wrapped in HTML.

So if I wanted to display a list of products to a customer, I use my code to send the proper query to the database which sends me back a bunch of records in an array. I then use my code to take each record that is returned and wrap it in some HTML (say, a table) and then use my code to print out some HTML.

Since PHP and ASP are server-side languages, the code is never visible to the person viewing the resulting HTML page. If, in ASP, I say <%=Now()%> the server sees those <% %> tags, processes the function called Now(), prints the date “in” the HTML and when the page is shown all the user sees, even if he views the source, is the date/time of now.

Its oodles more complicated than that, but there you go.

ASP.NET
You didn’t add this but I’ll add it. It’s harder to explain than PHP/ASP. But…it’s a Windows server technology that takes anything you ever thought of doing in ASP and does it for you (this is at the absolute lowest level of thinking). You want a login? Add a login control and it’s done, in what previously took about 100 lines of code. You want to display some database records in a grid? Put in a grid control, connect it to a data source and it’s done. Much less code.

I’m sure I’m not explaining it well, even in this lowest-level example…but it’s an extremely powerful tool (and can be written in a few languages - C#, VB, J#…maybe more?) and is “all the rage” and I predict it is here to stay.

**Notepad **
Not exactly a code editor. It’s the lowest level of typing text into a Windows computer without having Windows add anything else. You can use it to type a note to yourself and save it on your desktop with the file extension .txt. Or, you can use it to write an entire HTML page in plain code and save it with the file extension .html or .htm, upload it to your Web server and now you have a new Web page.

Typing into Notepad is pretty much like typing into the reply box here on the SDMB. Some people can use it to write HTML or other code because they are that good at coding and know how to write HTML off the top of their head without the need for graphical cues (like colored tags).

You definitely do not NEED to use it. Even I don’t use it anymore, because while I could code an entire Web page off the top of my head, the longer the code gets the harder that is to accomplish. It’s just easier to use an editor - any editor - that at least colors your tags for you. Using HomeSite or UltraEdit is LIKE using Notepad in that those sorts of apps color your code but absolutely do not fuck with it, while WYSIWYG editors tend to decide for you what they think is best.

**Dreamweaver **
DW is just one example of a WYSIWYG editor. There’s also FrontPage, Adobe GoLive, HomeSite (in design mode), Visual Studio 6, Visual Studio.net…there’s tons but those are the “big” ones. All of those apps let you work in HTML-only mode but at the same time if you try to use their “design mode” (which shows you how your code looks in a browser and lets you manipulate code by point and click) your nice neat code gets fucked up.

Some people hate visual designers and some people can’t get around without them. Personally, I am not a fan. The guy who does our graphic design lays out pages in Dreamweaver and sends them to me. I spend a day or two stripping out Dreamweaver’s code and making it readable in HTML mode in Visual Studio. I’ve also gotten code from FrontPage and GoLive and I’d say those are the two worst offenders.

For the most part, any HTML editor will give you control over your code if you want it, plus give you hints (if you turn on that option) and let you manage your project all in one place. Dreamweaver is not the be-all-end-all.

I don’t know how it works with PHP but I would not work with it with ASP - I use Visual Studio for that. It’s super for just plain HTML, though.
Did that help?

Wow, I don’t really want to write a book here, but if you’re interested in an IMHO-style poll:

IDE: Eclipse, FlexBuilder, (the now-defunct) Crimson Editor
Server-side: Java, JSP, Struts, MXML
Server: Apache 2, Tomcat 5.5
Client-side: Javascript, DHTML, HTML, Actionscript, CSS

IMO, Dreamweaver is more of a tool for web design than web development. It’s a fine distinction, and there’s no reason you can’t be both a designer and a developer, but you don’t really create web applications with Dreamweaver. Unless it’s changed a lot since the last time I used it.

QFT. I don’t think I’ve seen HTML generated by FrontPage or GoLive, but I’d like to submit MS Word as a heinous offender in this department. “Hello World!” saved as HTML in MS Word gives you a 24KB file.

There are two plug-ins for Firefox that are great for web development:

  • Web Developer
  • Firebug

I’m in the same camp as friedo.

On the backend, we use perl with apache/mod_perl or for smaller projects just perl CGI. To switch it up, my current project is python with apache/mod_python. A few projects ago, we used ruby on rails with mod_fcgid (a fastcgi variant), but as friedo touched on I found the loss of control (and inherent coding laziness) of Rails too hard to deal with. You end up fighting Rails to make it do what you want instead of how it wants you to do it (not too mention Ruby is slow - I hope I’m not starting a war). Finally, we do all of our Math/Statistics/Plotting in R. Personally, I’ve been dabbling in Java Tomcat but have only done proof-of-concept type stuff at work with those technologies. If I was forced to use only one language, Perl would win easily. If you haven’t guessed already, our web-servers are all Linux.

Of course all of this code uses XHTML, DOM manipulation, and tons of JavaScript.

I’ve coded before in PHP and ASP but have found both limiting compared to the power of the big 3 scripting languages Perl/Python/Ruby. I’ve never touched ASP.NET, although I’ve done some desktop apps in C# and VB.NET.

For an IDE, I use Eclipse with EPIC (for perl), pyDev (for python), RadRails (for Ruby/Rails), and subClipse (for hitting our Subversion version control) plugins. I love Eclipse.

Sounds to me like ASP.NET is the Windows answer to Ruby/Rails.

When I first got introduced to it with version 1.1 I had a lot of problems being frustrated with not being able to make it do what I wanted to do - loss of control, like larsenmtl said. ASP.NET 2.0 seems a lot better but as I get deeper into it I still run into snags. I haven’t checked out 3.5. Or, stuff can be manipulated but it takes a whole lotta code and it leaves me saying “well this would have been easier in classic ASP!”

I’ve never used Ruby/Rails but I’ve always wondered “what” it was. I think now that I know better what ASP.NET “is” it helps me understand.

I think Rails might be even more over the top hand-holding then ASP.NET. After all, their slogan is “Convention Over Configuration” or something like that. Rails uses an MVC set-up. Each database table gets automatically mapped to a (M)odel, each (C)ontroller contains a sub-set of actions that your application might do, and has a corresponding (V)iew which allows your to mix HTML with dynamic code like ASP. All of this set-up happens automatically when you create your application. For example, if you look at the url myapplication/controller_name/action_name/somevalue, this would automatically fire the method of your controller class named “actionname” and automatically map the somevalue to the variable id. After the method code finishes it automatically renders the corresponding view.

This whole process certainly speeds up development until you want to do out of the ordinary.