Updating my internet programming skills

Throughout highschool I was the typical computer nerd, having plenty of free time to keep up-to-date on the latest programming developments and web design trends. Having since entered University, and having since lost any semblance of free time, I feel my skills are stagnating.

Here’s where I stand at present:

  • I know year 2000 html cold. Have there been major changes/updates between then and now? Do people even use html anymore?

  • I’ve played around with TCP/IP programming in C++ using the API. This was fun but I’m not sure its worth the effort to extend my knowledge.

  • I know java reasonably well (could easily learn whatever I need to learn).

  • I’ve played around with php so I at least know what it is.

  • I’ve played around with SQL so I at least know what it is.

  • I’ve played around with CSS so I at least know what it is.

  • What ever happened to CGI? I used to hear this term all the time but now I never do.

Note that I’m not so much interested in the personal webpage side of things - I’m interested more in the development of “internet applications” or multimedia-interactivity/delivery. It seems back in the day the above items were all independent, while today the above items are all integrated to produce a webpage.

So what exactly is my question? (1) What is the current trend in internet programming? SQL to store the data, php to recall it and serve up html code? (2) This is the main one - are there any good online tutorials that cover some of the more advanced programming topics? (Again, I don’t really know what to look up since the internet world today looks quite a bit different from where I stopped keeping up).

Interesting questions, I’m not by any means a hardcore web geek, but I’ve wandered down the road you’re proposing to travel reasonably recently. My opinions are the results of those travels.

With respect to CGI: My understanding is that it’s neither terribly scalable nor terribly resource efficient to hand over a whole bunch of stuff to external programs every time somebody invokes a cgi script, the trend in scripting is toward more tightly integrated solutions where more common data can be retained. Examples include IIS + ASP,Tomcat + JSP and to a lesser extent apache with mod_php (not so sure about that last one)

For dynamic content, this is indeed the case, replacing php with any of the above mentioned technologies and several more.

My personal favourite has turned out to be Tomcat and JSP, with tuturials available just about everywhere. A familiarity with Java will have you writing stuff in no time and once you get to grips with the standard tag libraries, very complex things can be done very quickly.

The tomcat homepage is here

and theres useful documentation about java web services on Sun’s page here

Please note that as I’ve said above, I’m not a professional in this area, but an interested amateur, I’ll be watching this thread for interesting advice myself.

Huh? What’s 2000 html? Never heard of it. Oh! You mean you know the W3C standards for Html 4.01? How about XHTML or XML?

Yes, quite a few still use plain old HTML. Same for CGI.

What you may wish to consider is do you prefer proprietary code from the M$ .NET structure or going to open source like LAMP?

IMHO, the trend is open source, with web standards finally be recognized.

You’re right about CGI; it’s not very efficient, howerver, it’s still around in very large numbers. And I wouldn’t call Apache solutions a lesser extent; currently, close to 70% of websites are using Apache in some form.

[sub]Also, PHP blows. mod_perl is the way to go. :slight_smile: [/holywar][/sub]

Don’t people use JavaScript anymore?

It’s really hard to name the trend in internet programming so I’m going to make some fairly crude groupings up and try not to repeat too much of what’s already been said:

Linux, Apache, MySQL and Perl/Python. This is the open source suite for web development. All the software’s free, right down to the OS, which makes it popular with hobbyists and small-scale operations.

MySQL, while surprisingly good for a free database server, isn’t up to competing against Sybase, Oracle and MS SQL Server, which makes it currently a bit of a niche market.

At larger scales MySQL is usually replaced by Oracle; more rarely by Sybase ASE. Whichever of the database servers you pick about 90% of your skills will transfer to the others - the trick is knowing which 90%.

LAMP occupies, at the moment, the lower end of the marketplace. Small operations, niche applications in large enterprises. Currently I’m not seeing a vast amount of movement of larger sites to this platform (even substituting Oracle as a DB) since J2EE takes over the Unix webserver market fairly quickly.
J2EE is Sun’s proprietary Java development framework, usually deployed in conjunction with Oracle for larger scale applications. Frequently found running on some variant of Unix, often Linux/Apache, but you can find pretty much any mixture of Unix OS and webserver if you look hard enough.

It occupies a wide spread of the marketplace since, on Linux with MySQL, the entry cost is low for the capability it provides.

Development tools are widely available from a number of manufacturers and open source projects, however Sun seems strangely obsessive about retaining control over Java and has resisted all attempts to make the system standards compliant. The attitude’s baffling, but there y’go.

A lot of financial institutions use J2EE as their primary development platform.
This is Microsoft’s older web development model comprising ASP, transactional COM under MTS or COM+ and MS SQL Server. Effectively deprecated and supplanted by .Net, I only mention it because there’s still lots of it around.

Largely based around VB (for the components) and VBScript (for the ASP scripting) .

IIS, ASP and the transactional system are provided for free with all versions of Windows since NT4 (on NT4 you need the free option pack to get most of the stuff). The entry cost is low since ASP can be written in Notepad, but forking out for Visual Studio 6 to take full advantage can be expensive.

Largely proprietary to MS, but there have been implementations for other platforms made by third party companies. No open source or standards support of note.
MS .Net
This is the new MS system. Often accused of being a copy of J2EE (not entirely without justification).

The language of choice is usually C#, similar to C++ and Java in syntax, but the system is pretty agnostic about the actual language you code in and you can get .Net versions of many languages now.

Visual Basic.Net is the other main development language, falling into an odd syntactic gap between C# and Visual Basic 6. Not that you should ignore it - it compiles into the same code (more or less) as C# and can be a very effective language.

C# and the .Net framework are ECMA standards and are available in open source versions for Linux and other operating systems as the Mono project (recently released by arch MS rival Novell, of all people).

Open source development tools are available, but Visual Studio .Net 2003 is the current (and expensive) standard.

MS SQL Server 2000 is usually the back-end. A free version of MS SQL Server 2000, the MSDE, can be downloaded from Microsoft’s website. It’s a complete copy of the full version of the software with the addition of a performance throttle that prevents it being used in high-volume applications.
Java generates the most demand for workers, but my experience working for a large jobs board has shown me that the competition is fierce. The ratio of applicants to jobs is nearly double that of any of the other technologies. I believe it’s now commonly taught in university Computer Science courses, so the uptake by developers is very high.

Beware of the statistic stating 70% of all webservers run Apache. While this is true, it can be misleading. Many of the Apache installations are the large web farms ISPs and other providers use for hosting personal web pages. Others are big web caches.

This is not to say that Apache isn’t a big player, or even the biggest player, but the platform split for commercial website development is much closer to a three way tie than that statistic would suggest.

For the kind of work you seem to be interested in I’d look into either ASP.Net or J2EE/JSP. Your existing skills in Java would suggest J2EE as the natural solution, but you should be able to adjust to C# quite quickly if you so choose.

J2EE skills can usefully carry over into the J2ME (mobile edition) to write apps for things like mobile phones. There’s a mobile framework for .Net as well, but most of the market penetration there is in handheld computers rather than mobile phones. Demand for J2ME skills is quite high at the moment, but it’s hard to say if this bubble will burst or continue to grow.

I’d also seriously look into XML and XSL/T since these are becoming almost as ubiquitous as HTML.

My company’s been doing alot of big expensive internet apps with ASP.NET (C#). I’m not deep into the coding end of it but our tech is really impressed. It does a heck of alot. Kind of like the best of Java, JavaScript and ASP rolled into one. Some of its automated HTML stuff I find to be a little junky (Data Grids for example. oy!) but in general it’s easy to get around.

Nothing has changed in HTML, but I’ve been using alot more CSS lately. But you still have to code HTML and CSS as if it’s 2000 because you have to make things work in all the browsers (including the old ones :frowning: )

For small projects, PHP/MySql is good.

If you’re looking to build applications in a big environment (at a fortune 500), you’ll want to check out BEA’s WebLogic or IBM’s WebSphere.

Perhaps I should have indicated this but I’m NOT doing this for any kind of career advancement. I don’t work in the industry…I’m actually an electrical engineering student. I just really like having a solid background of computer skills. The point being I won’t be purchasing any kind of large development packages. It’ll all be manual notepad type fiddling. And various free compilers of course :slight_smile:

I really should look into XML.