Archive for the ‘Technical’ Category

A while back I had written a new documentation system called unidoc, this technology is different then most other systems out there because it is a language independent. Rather then trying to decypher what is going on within a bit of code the parser leaves that up to the developer (which is what most documentation systems do anyway). Documentation of what various bits of code are doing is first defined through a very rudamentary language.

The parser extracts out the comments and generates a xml data stream sending it to a langauge-specific xslt template, some data items are parsed in such a way that the xslt can further process, define,  and lay out langauge specific properties.  In the end generating language specific documentation through a xslt definition. Right now things are pretty simple, it took a weekend to write the whole thing but what I would like to do is re-write it using antlr+xslt, because right now things are just a simple regex parser that I wrote.

I also have a planned extension to the processor which focuses more on outputting a data format instead of documentation, and finally I think it would be neat to wrap this all up with a publishing system of some sort effectivly allowing people to comment on documentation.

I would also like to create a few simple xslt templates as proof of concept, so if anyone is interested in any of what I am talking about drop me a line and I will have something for you to do.

~matt

  • Reddit
  • StumbleUpon
  • Bebo
  • Yahoo Buzz
  • Delicious
  • Twitter
  • LiveJournal
  • Netlog
  • HelloTxt
  • Share/Bookmark

The Future Of the Internet

Author: mprokes

Alpha Edition!, e-mail spelling/grammer/topic suggestions to mattprokes@gmail.com

previous1next1The Professional Developer Series
Volume 2, Web Development

1.5 Web Development And The Future

Page: #27



The internet today is what we consider web 2.0 to be. That is people may easily contribute content to the internet from a large variety of services.  Web 2.0 also starts to view the web as an application platform, rather then just a platform to deliver content. Things such as video, audio, social networks, blogging software, web office software etc are all results of web 2.0 innovations. So lets discuss a little bit where the internet is going, by understanding the fundamental path of the internet you may also begin to align your career, organization, and software systems with where the internet is heading.

Web 3.0 or more specifically the semantic web, currently is and will continue to be an emerging trend on the internet. Something interesting about the next revolution of the internet is the fact that it will not necessarily change the way we see the internet, but rather the way we work with it.

The semantic web envisions an internet of data with meaning, an internet of descriptive content and syndicated data, web services, and dynamic data driven applications are all visions of the semantic web. So where can we see examples of the semantic web? Well tagging for one is a light weight version of the semantic web.

Since the purpose of tagging something is to categorize content, effectively saying that a specific set of content is synonymous with a category. This not only allows us to group content, but also to help the computer understand and analyze what properties similarly grouped content has in common. If a category is tagged frequently enough, the computer can even start to tag content on its own through analysis.

Other forms of the semantic web are also beginning to show some promise. For instance, tagging photos with specific people helps a computer (through image analysis) understand what a specific person looks like, in the future if its done enough, the same person may be identified in a random picture without any human interaction (through heuristics). Tagging of photos, and video content will also allows computers to be able to perform searches on this media accurately. This will also be a time when the physical world around us begins hooking up to the internet (microwaves, home heat, maybe even all the way down to your clothing steam iron that you use in the morning).

Though the semantic web is about more then just tagging, a more advanced type of tagging called RDF or the Resource Description Framework aims to turn the web into a huge global database through the linking of data (in a similar way to how html documents are linked). At the moment, frequently publishing public sets of data like this is un-feasable, partly over privacy concerns (and rightly so). Though RDF may be used within an organization internally to deliver data to secured external partners. Although, if you are just delivering data for content that is not of a sensative matter RDF may be perfect for seaching of that content on a public network. So while the web 3.0 is still in a very infant stage, it has recieved luk-warm, acceptance as people begin to implement it. Web 3.0 should allow for better searching, and better understanding of content in general. It may be another 10 years yet before web 3.0 is fully realized.

Web 4.0 (speculative) will give rise to the “a learning web” or a internet which is now able to begin working as a “assistant” along side humanity. The ultimate goal of the learning web will be for the internet to solve large scale problems presented by humanity through analysis of the vast amounts of data provided by humanity.

Anything from obesity to assisting in curing diseases the web 4.0 will act as a digitial assistant helping to solve problems as well as enhance humanity. I often see this happening through something called “crowd sourcing” solutions regarding specific topics. I believe that the web 4.0 is actually in a very infant stage on the internet at this moment, but I do see examples of it here and there (particularly in dating/matchmaking sites). Eventually the web 4.0 will begin to give rise to a global artificial intelligence, or several which may collaborate and act as assistants to humanity.  A virtualized web will also begin to be more common place. I believe it will take 20-30 years from the peak of web 3.0 before web 4.0 is fully realized.

Web 5.0 (very speculative) Now we are starting to really push the bar, but I see web 5.0 being all about “a web of humans” or a web of interconnected beings. When we start to talk about humanity and telepathy, this is probably the most likely way humanity will achieve it. Living in a web 5.0 world it is likely that humans will no longer need to attend school as children because the sum of human knowlege is just an extension of each human.

We will probably be able to express ourselves through thoughts rather then words. The ability to control the things around us with thought will probably be commonplace by this time since almost all devices will in some way be connected to the internet. Chances are our entire body health will be monitored in realtime, distance will have no meaning any longer since we will be able to share thoughts and experiences. Machines that we use will most likely be integrated with “specialized assistants” from a web 4.0 era.

Personal simulations, will be possible.  Shared data and memories will flow like water, and you will never forget anything ever again unless you want to. The technology at this point will be so integrated that there is a good chance we will be able to build and create facilities of society with our mind, storing them on computers to echo back to other users for later  (i know its pretty out there but very possible).

An internet like this is at least 90-120 years away, after web 5.0 phase is complete the web as we know it will cease to exist and be replaced with the concept of a “virtual society of thoughts”. The web 5.0 by far will take the longest to build, there may be 40-50 year gap between web 5.0 and web 4.0.  I would expect there will probably be several “versions” of the web 5.0 before we finally “get it right”.

http://en.wikipedia.org/wiki/Resource_Description_Framework
  • Reddit
  • StumbleUpon
  • Bebo
  • Yahoo Buzz
  • Delicious
  • Twitter
  • LiveJournal
  • Netlog
  • HelloTxt
  • Share/Bookmark

Alpha Edition!, e-mail spelling/grammer/topic suggestions to mattprokes@gmail.com

previous1next1The Professional Developer Series
Volume 2, Web Development

Chapter 1.4 Web Development Trends

Page: #26



With great tools comes great power, and virtual machines are great tools! I do not think that I have mentioned this yet, but I am a huge linux fan. I have been using the operating system at home, and at work for nearly 10 years. One of the problems I had with linux early on though when it came to web development was the fact that internet explorer was not able to run on the operating system.

Linux back then had better development tools for programmers (as is the case today as well). So I was torn between wanting good development tools and needing to test my development with the most used internet browser (explorer).  At first I reverted to something called dual booting, this didn’t work out to well though because I would need to constantly shut down an operating system and start the other one.. Gahh.. Whats a programmer to do?

After searching and searching, it became clear that maybe I should start getting into virtual machines. Back then the only one that was any good was a product called VMWare, it costed money but it was well worth it at the time with the increase of productivity. These days you can find free virtual machines for pretty much any platform out there, my favorite is virtual box when it comes to linux.
virtualbox

As you can see starting up a windows environment using virtualbox is a snap, there is no need to re-start my operating system! I can test everything within the virtual machine and be confident everything all works. Todays virtual machines make things even more easy by allowing the host operating system (in this case linux) and the guest operating system (windows) to share a folder. Thus making it even more easy to work with files on both systems seemlessly.

For you mac users out there, you have several choices of virtualized software including parallels, virtualbox, vmware, and many others. Virtual environments are also used by administrators to set up development environments, and are very handy if you need to emulate a development server. Just ask your administrator to re-create a development server on a virtual box image, and send it to you. Allowing you to run a virtualized development server on your computer.

The core concepts of cloud computing and VPS’s (virtual private servers) are for the most part virtualized server environments often using a Xen hypervisor to manage resources or some other virtualization software (bochs, vmware, virtualbox, you name it). Cloud computing may leverage other technologies.

My favorite use for virtual machines though is still to leverage them for testing and development. Some things to note though, virtual machines can have significant resource overhead. So that is something to watch out for if you do not have a particularly powerful machine. Although if your machine was built in the past 2 years optimizations for VM’s have been integrated into the hardware to make these applications less of a problem.

I hope everyone goes out and tries out a virtualized environment, especially if you are a windows user. Go out and get a virtual machine, and download a version of linux (this one is open geu), and play around with it (can’t hurt anything). There are several tutorials out there on how to install linux under virtual box, so just kinda search around.

Here is a compairison list of all the virtual machines out there.

  • Reddit
  • StumbleUpon
  • Bebo
  • Yahoo Buzz
  • Delicious
  • Twitter
  • LiveJournal
  • Netlog
  • HelloTxt
  • Share/Bookmark

Audio and Video Trends

Author: mprokes

Alpha Edition!, e-mail spelling/grammer/topic suggestions to mattprokes@gmail.com

previous1next1The Professional Developer Series
Volume 2, Web Development

Chapter 1.4 Web Development Trends

Page: #25



Audio and video content are just some of the latest additions to the web development world, and web based media players have existed as recently as 2002. Some of the current limitations of media is the fact that there is not yet any standardized audio and video protocol built into the browser, although recently a video player was built with javascript (but it has no sound). Meaning that these technologies can only be leveraged through third party plugins like flash, java applets, quicktime, and realplayer

Audio:
Audio is also a continuing trend on the net, I expect that to continue, most audio players are based on flash based mp3 players these days, and you often see audo used on social networking sites particularly myspace. I will also expect to see crowd sourcing efforts with audio in the future, but I won’t clutter this book on what that might look like. Html 5 is also mandating native support for non-synthasized audio in the future.

Native Music Formats:
There is a couple natively supported audio formats in the browser; one is called .midi, although .midi media is not very good since it is an “instrumental” based media format, midi is basically synthesized music. The music  generated and played from the format that is similar to a sheet of music. Thus you can’t actually “record” music and play it back in .midi, for example you could never listen to the latest metallica recording through the midi format.

If I were to compare midi to an mp3, its a bit like comparing clip art to a picture of a person. They are both images, but one is very realistic, and the other is a drawing and not so realistic. Midi music usually sounds like the keyboard music heard back in the 1980′s, and it doesn’t always sound the same computer to computer, since it is synthasized. One advantage of midi is that a 4 minute song can usually be crammed into 70k to 80k, versus a mp3 which would be a solid 4MB to 5MB. Midi, can be leveraged to add short little sounds to you web application, and it is very efficient, and relevant in that case.

The second supported format is .wav, the wav format is similar to the one used with cd-roms (cdma) that being .wav is a loss-less format meaning that .wav audio is an exact binary copy of audio (with no compression loss, as mp3′s have). While being a lossless format is great from a quality of sound perspective, compression not being available for wav format is huge issue because a wav file can consume as much as 10MB just for 1 minute of audio. Compared to mp3′s, wavs take 10-11 times as much bandwidth and disk space, thus wavs are not really used to much in internet media because of this very issue.

Video:
Video was originally leverage (as so many things are) by porn sites, but later many popular video sites started springing up all over some of the best ones are youtube, internet archive video, hulu, and hundreds more, including many that are built into blogging software like wordpress. I expect videos to become an even more populat trend on the internet. Infact the next big fronteer for video will probably be intelligently integrating and tagging, and commenting on top of the video in real-time. This will allow search engines to begin searching video based on what people tagged and commented on it. Nothing like this exists yet, but here is a simple example.

videocomment2

While we are starting to see tagging like this on photos I expect to see comments also strapped to video and audio timelines in the near future. This will also open up a whole new world for things like video tutorials, etc.. all this can be done outside the video leveraging javascript, and then the data generated by users index and made searchable. Later in the book I may break out a javascript project which does exactly this. Crowd sourcing to the collaboration of a community to create content, and is a perfect example of crowd sourcing.  Html 5 mandates native video support for browsers, the jury is still out on the official codec that will be used although word on the street is it will be ogg/vorbis.

Media, and Bandwidth
If you decide to travel down the path of media, something you should be aware of is the intense amounts of bandwidth that it consumes, while media is excellent for a user experience at this time its bandwidth cost/profit ratio is not so good. Although you can often offset the bandwidth costs by uploading content to free services like youtube, and internet archive. Keep in mind though if you do this, the content service often mandates an open/free copyright of content on their system.

So really it is all about control of the content, if you are just planning on giving your content away, then upload it to a free service all you like. Although, if you absolutely need to retain copyrights, and don’t want to fumble around with all the legal issues associated with protecting your content on a free service, then you will need to host the content yourself and take a hit with bandwidth costs.

I expect that eventually a client technology will come along that will allow browsers to effectively make themselves a sort-of, bit-torrent-like type of technology which will allow for streamlined distribution of all web content including video. Several things need to happen though for that to become a reality, so you probably should not expect it to happen anytime soon (next 10-15 years).


  • Reddit
  • StumbleUpon
  • Bebo
  • Yahoo Buzz
  • Delicious
  • Twitter
  • LiveJournal
  • Netlog
  • HelloTxt
  • Share/Bookmark

Templating

Author: mprokes

Alpha Edition!, e-mail spelling/grammer/topic suggestions to mattprokes@gmail.com

previous1next1The Professional Developer Series
Volume 2, Web Development

Chapter 1.4 Web Development Trends

Page: #24


Templating is something that has been around for a while, wheither you are creating a presentation or are trying to leverage a brand through media chances are that you are in some way using a template of some sort. Programming is no different, templates are used all the time and they are important because it helps us get our job done faster.

templateexample1

What are some common examples of templates on the web? Well CSS for one is a langauge which creates a templated style for a website. Take the website that you are reading right now for instance, CSS is the reason why when you go from one page to the next the only thing that changes is the content. This is a perfect example of a styled template.

There are many different kinds of templates technologies available, but for the most part templates have a few specific things in common.

  • Use of markers for labeling where data should go, and will automatically place data at marker locations.
  • Some allow logic, to generate the template.
  • Exist to make generating styles or content more easy, and reusable.
  • Straight forward.
  • Some allow easy retrevial of data (data binders, and getters)

Many of the web standards available today focus on templating specifically since a focus of web technology is to make data more available and easy to read much of this can be achieved with templating technologies. Some of my most faviorite templating technologies out there is PURE (for javascript), XSLT, CSS, Java Swing, Flex, and many more.

  • Reddit
  • StumbleUpon
  • Bebo
  • Yahoo Buzz
  • Delicious
  • Twitter
  • LiveJournal
  • Netlog
  • HelloTxt
  • Share/Bookmark

Alpha Edition!, e-mail spelling/grammer/topic suggestions to mattprokes@gmail.com

previous1next1The Professional Developer Series
Volume 2, Web Development

Chapter 1.4 Web Development Trends

Page: #22


Javascript, now more then ever is becoming of increasing importance. For those companies that want to deliver rich platform agnostic applications out to their users, javascript is the only way to get it done. The best part is, possibilities that javascript opens up are endless and its this authors belief that we will be talking about the langauge for years and years to come. So what are some of the javascript based trends that we are seeing today, and will be seeing in the future.

Trend 1:  Stop delivering dynamic server generated web content. As webapplications progress more and more companies are finding out that really all they need a server to deliver these days is web application code, and data. Javascript is slowly trending toward being server technology agnostic, especially with the advent of json it no longer matters where the data is coming from as long as there is data, thats all that matters (data driven applications). Pretty much all web applications these days can be delivered as flat .html files.

Trend 2:  Rich Browser Applications. As web applications evolve we are finding that in many cases you can save the webapplication to the desktop and use it regardless of wheither it is online or offline! Basically allowing a person to use a browser based application as a replacement for a regular desktop application, all that is required is a javascript based browser. Technologies such as Google Gears, Dojo, and a few new ones presented in this book allow such applications to exist. We will be building a few rich browser applications throughout this book.

Trend 3:  Data Mashed Web Applications. Need to get data from many locations to build and analyse useful information? This is what data mashing, and data mining is all about. You can use javascript these days to build dynamic map content, and create collaborative information sets for your users. Information services such as Yahoo Pipes, Popfly, and Semantic Web Pipes .

Trend 4: Intelligent Web Applications. When people think artificial intilligence, often I see thoughts conjured of a computer that knows all, sees all, and can communicate fluently with humans, solving all the worlds problems. In reality AI won’t probably be something that arises from the ashes of a genius programmer that created the next HAL system. No, what is most likely to happen is the development of a system which is asked questions, and is able to dynamically analyse correct sets of existing data and come up with a solution. Computers’ intelligence based on the current state of technology is completely dependent on what we contribute to them. We often call this computational analytics, today javascript is often used to drive the next generation of intelligent web based applications.

Trend 5: Collaborative Media Applications/Groupware. This set of javascript applications is specifically targeted at collaborative media, and and communication. Applications such as google docs, facebook, myspace, youtube, and more. All of these media companies provide javascript based collaboration. Probably the most striking would be google docs collaboration tools that allow you to write a document in a tool similar to word, but it also allows several people to write a single document all at one time! Another example is chatting on facebook, you can communicate with your friends right from the website using a javascript based chat application. I expect in the future to only see more and more of these applications as their popularity increases.

Trend 6: Javascript Frameworks. Javascript as a language and native api is actually very small compared to other langauges out there. While very small, the functionality the langauge provided was very powerful. So what people started doing is building up API’s around the langauge which they could leverage to make their job of programming more easy. Frameworks were a great innovation for the language, and it is very likely that people wouldn’t think to build the collaborative applications they do today with javascript if great frameworks for the language didn’t exist. A good list of frameworks are JQuery, Dojo, YUI, MooTools, and many others. Often libraries attempt to make up for javascripts cross platform compatibility issues, and also try to make the language more easy to code.

Trend 7: Taking javascript beyond the web. I don’t know how many people know this but firefox is actually coded in javascript. Now you may sit back and wonder how can that be? The number of non-web-browser technologies based on javascript  is actually increasing, and since it is the most popular programming language in the world many organizations are beginning to offer javascript apis for their products. See, just like xml, there are many technologies out there that understand the javascript language. Projects such as firefox, linux gnome, jaxer, and many others are beginning to implement these “javascript interpreters” and thus are able to extend their applications using the javascript langauge.

Trend 8: Javascript is becoming the new duct-tape of the web. Like Perl was a few years ago for getting things done, javascript is beginning to increasingly replace that role, expect that trend to continue as we me toward a more and more online world.

  • Reddit
  • StumbleUpon
  • Bebo
  • Yahoo Buzz
  • Delicious
  • Twitter
  • LiveJournal
  • Netlog
  • HelloTxt
  • Share/Bookmark

Alpha Edition!, e-mail spelling/grammer/topic suggestions to mattprokes@gmail.com

previous1next1The Professional Developer Series
Volume 2, Web Development

Chapter 1.4 Web Development Trends

Page: #23


The Model View Controller (MVC) pattern has been around for years, and now more then ever it is being applied to web applications. We will be discussing more about how to implement it in your webapplications later on, but for now we just need to familiarize ourselves with what it is all about. Originally MVC was based on research done by Xerox in 1979, but really microsoft made it popular during the 90′s, when at that time a rapid evolution of user interfaces was occuring and a architectural pattern was required for managing the new complexity desktop applications were presenting.

Lets fast forward to 2008, MVC is used more then ever, and even after 20 years of popularity it is still very relevent. While not all web applications have completly migrated to using MVC, it is a trend that is still evolving and emerging as web applications (like desktop applications) become more complexed and require an architecture to manage that complexity. As a result, projects which we develop in this book will also follow a model view controller methodology.

The thing that makes MVC so great is the natural seperation of functionality, it does this by splitting applications up into natural components which serve a specific purpose such as data access (Model), Execution, and Initialization (Controller), and Interface Code (Controller). These days MVC may actually be implemented on the server side to deliver data to a client, as well as on the client side. MVC is just one of many architectural patterns, and is often mixed with other patterns that we will talk about later in the book (part 2).

This book is not about design patterns, though we will be leveraging some. I would suggest though that you read up a bit on some traditional design patterns after completing this book so you can get an idea of how you might architect your own systems in a more straight-forward manner. What we will be using is design patterns that are highly relevent to todays’ webapplication systems. You will find nuggets of web architecture suggestions later in reading.

List of architectural patterns, application architecture (simlar to house architecture).
List of  design patterns, code architecture (or common patterns in code styles)

  • Reddit
  • StumbleUpon
  • Bebo
  • Yahoo Buzz
  • Delicious
  • Twitter
  • LiveJournal
  • Netlog
  • HelloTxt
  • Share/Bookmark

Alpha Edition!, e-mail spelling/grammer/topic suggestions to mattprokes@gmail.com

previous1next1The Professional Developer Series
Volume 2, Web Development

Chapter 1.4 Web Development Trends

Page: #21


Several new trends have emerged over the years as web development continues to evolve and progress. Though many companies still are attempting to get it right we are starting to see signs that things are going in the right direction! Part of the problem is that web technology is still so new that many fundamental establishments of the past no longer apply and companies essentially have to take guesses on moving targets. Anyway, so lets talk about some trends that we will be seeing now and over the next few years as webapplications evolve even further!

Web development traditionally has unnessesarly been a very server heavy activity, a trend that is starting to emerge (progressivly) is a reversal of this. Since very early on it has always been this authors assumption that in order to drive the next generation of web applications as well as increase server efficiency companies will more and more start to hand off things that servers used to do to client side browsers.

What this does, is let clients more computations instead of the servers. Infact with all biase aside; and coming from both ends of the development spectrum, in the future many things that servers used to do will probably be reduced and we will begin to see a rennesance in networked applications. Although that doesn’t mean servers will be less important, quiet the reverse actually. Rather then servers delivering dynamic content as many do,  in the future servers will most likely deliver application code and dynamic data instead.

legacy-and-future-web-applications

This is a good thing! For both the web and server technology. Moving all content processing from the server to the client reduces technical debt. How? Well as long as the data fields and structures delivered to the user are always the same, it doesn’t matter what technological server platform delivered that data. In the past, often systems which would generate content would be strapped to platform specific properties, and api.

Second, notice that the content processing on the legacy system happens on the server versus future web application systems which move all that content processing to the user instead. Effectivly, reducing the amount of processing a server needs to do as well as faster server responses, and the ability to hand many many more users on a specific server when conpaired to a legacy system. The change of where processing is actually done can also from a cost perspective save on equipment, and energy.

Third, applications developed in this manner are simply more easy to debug, and greatly simplify server code. Since most business logic, and application properties are migrated to a client when something goes wrong all one really needs to do is check the data being passed back and forth between the user and the server. Firefox makes this VERY easy to do, in effect giving you a quick answer of where the issue is. From there it is just general debugging but by having at least having a required physical seperation of two primary application components, it makes debugging more easy.. more on this later. At the very least understand that a “natural seperation” of application components is often a nice side effect.

Fourth, user experience for these applications is greatly enhanced, you are able to offer features like animation, realtime data, control data flow much better, and in many cases develop a much better experience then traditional applications. You are also able to make your new program feel much more like a desktop application, as well as better performance, and features that previously would not have been possible.

Fifth, since your application is now driven by data you can virtually deliver that application not only to a user but to any system that knows how to leverage your application data! So say that company x wants to pay you $500,000 to leverage a database of yours you can do that simply by pointing them to the same server that your application uses. Simply put, mashing up the results and adding features to your application is now an easy feat, and you can extend your application to other third parties.

Wrapping things up the point we are getting to here is that web based applications are increasingly becoming more and more browser heavy. Do I see a day when servers will no longer generate content dynamically? Most definatly, as such client heavy applications are a trend that we are seeing now and will probably see well into the future.

  • Reddit
  • StumbleUpon
  • Bebo
  • Yahoo Buzz
  • Delicious
  • Twitter
  • LiveJournal
  • Netlog
  • HelloTxt
  • Share/Bookmark

Alpha Edition!, e-mail spelling/grammer/topic suggestions to mattprokes@gmail.com

previous1next1The Professional Developer Series
Volume 2, Web Development

Chapter 1.3 Web Development Today

Page: #20


So Aptana and Eclipse are our first examples of an IDE or (Integrated Development Environment.) The book will not be using the editors in examples, the reason being tools such as aptana and eclipse would only hinder the objectives with environment theologies. It would also strap the reader to a particular development platform when really I just want you to find out what works best for you (as a developer).

IDE’s objectives are to offer a “packaged solution” for developing in a particular technology. Meaning that when using a technology specific IDE, you will most likely have all the tools you will need for deployment of that technology. While this is great for beginners, there are also serious limitations with ide’s.

IDE Limitations:

  • Just because a tool is included in a packaged solution, doesn’t mean that tool is “the best solution”. Often individual tools will trump tools included in an ide. It is this authors viewpoint that the operating system which you work on is the best IDE around; because you can use any tool, and not just the tool which works with a development environment.
  • IDE’s consume considerable amounts of memory usually do to the amount of tools included with the environment, these development environments are also not usually very fast either since they do large amounts of analysis. This effect is multiplied with each file you have open, and since developers often have several files open at one time (usually in my case about 20), memory and speed can be a big concern. In the case of web development they just get in the way of developing. Although this is not the case for other forms of development (such as java).
  • In the case of web development specifically development from an IDE can often take more time, and be more troublesome. Most web development that we will be doing will be in a more realtime manner not particularly suited well for IDE’s.

IDE Advantages:

  • If you are just starting to do web development, and you need hand holding IDE’s are the only way to go. This book will substitute IDE hand holding with pure tips and tricks on getting things done. Although I suggest you at least download Aptana, and go through the first few chapters with it if you are a beginner. A programmer can learn a text editor any day of the week, but its a career advantage to be familar with development environments since many companies come from traditional software  (IDE’s are popular with traditional software big time), they often have the belief that they are nessesary for web development.
  • IDE’s often come with documentation packages, which will look up things like Javascript API’s automatically as you type in code. This is great if you need to become familiar with a particular library. IDE’s usually come with a good amount of documentation and tutorials in general to get you going.
  • IDE’s usually come with all the facilities that you will need to technically get the job done that you are trying to do. If you do not care if the tools aren’t the best out there, and you just want to get going IDE’s are a great way of doing that.

So really when deciding what to use it is going to be all about the best tool for the job. If your job is web development you need to figure out what the best tool for you is. There is no right way to develop software, their are only ways.

This book will not be pushing the concept of IDE’s to much because in the professional web development world many of the best tools are not centralized on a single platform. Although certain tools which exists on IDE’s (such as oXygen) may be the best tool for a particular job (xslt) this book looks at ide’s as a tool, rather then a centralized development platform.

  • Reddit
  • StumbleUpon
  • Bebo
  • Yahoo Buzz
  • Delicious
  • Twitter
  • LiveJournal
  • Netlog
  • HelloTxt
  • Share/Bookmark

What Is A Server?

Author: mprokes

Alpha Edition!, e-mail spelling/grammer/topic suggestions to mattprokes@gmail.com

previous1next1The Professional Developer Series
Volume 2, Web Development

Chapter 1.3 Web Development Today

Page: #12

A server can actually be many things, but the primary purpose of a server is to serve (or transmit) data, or data service(s). The more common definition of a server would be a software package that is available on a computer, which would transmit data through a network. There are several different kinds of servers, and several different ways of using them. So lets go through a few common ones.

  • Web Servers: Transmit web content and data via a http GET and POST requests (i’ll explain later). Web Servers usually are only able to transmit static files. Webserver content is most often viewed by clients which understand html, and other web technologies such as web browsers.
  • Application Web Servers, can deliver either be dynamic or non-dynamic content by leveraging server based programming languages which are able to deliver dynamic data to a web client.
    • Difference Between: Application Servers, and Web Servers? Not a whole lot! The only real difference is what a server can actually do, for instance the functionality which makes application servers unique is the ability to return dynamic sets of data and content back to a web client. All servers transmit the same type of content to web based clients, regardless if they are an application server or not.
    • Application servers generally have many (but not always all) of these unique properties:
      • A type of deployment environment.
      • Very basic authentication services.
      • Come pre-packaged with frameworks.
      • Contain database management systems.
      • Associated with a language for dynamic processing of data.
      • Application servers focus on serving dynamic data, thus facilities are more focused on satisfying business logic, and data requests. Webservers are more or less “generic” and use agnostic.
      • Application servers contain facilities to package up, and execute business logic.
      • Contain unique webservice facilities, specifically:  binary/bytecode object transmission systems for third party plugins, or platform specific technologies.

      Today, application servers are the only way of delivering dynamic binary data over the internet leveraging (CORBA, RPC, and other non-XML data transmission technologies), though these technologies are not used as much as they once were. What happend was when xml came out, it offered a platform agnostic way of transmitting data through the internet, unlike many of the plarform specific standards. Thus allowing any platform that understood xml to be able to send and recieve data through the internet.

  • Database Server: Is simply software which provides access to a database through a network. Database servers are often bundled with the actual database which they service. The primary function of database servers today is to accept SQL based “queries” (requests), and retrieve/store data, images, text. There are several different kinds of databases, but that is a discussion for a different book.
  • File/FTP Server: Is a server which delivers files through a network. There are several different kinds of file servers, including P2P, Torrent, etc.. The most popular on the web today (and also the oldest) is a FTP Server or File Transfer Protocol. This protocol is built into almost every web browser available. So if you ever need to distribute a file FTP is the way to go. As a side note, most browsers these days also support HTTP based transfers; meaning if you have a file, you can just put it out on the webserver and as long as it is not a format that the browser knows of it will download it.
  • Proxy Server: Is a “proxy” representative of a real one. It is generally the job of a proxy server to forward requests made to it from another computer, and then return the results from that request back to the request(or). Proxys are also sometimes used in filtering, and they are an essential part of routing technology.
  • Reddit
  • StumbleUpon
  • Bebo
  • Yahoo Buzz
  • Delicious
  • Twitter
  • LiveJournal
  • Netlog
  • HelloTxt
  • Share/Bookmark