Archive for the ‘Tech Future’ Category

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: #29



So what are component based applications? A developer can think of a component as a small, portable, reuseable facet of an application. Component based applications are simply applications comprised of a set of small, protable, reusable webapplications which are leveraged for a particular purpose.

I have met many developers that are great at building webapplications, I have met not nearly as many that componentize their applications on a day-to-day basis. Next generation webapplications are already beginning to focus on delivering their platform out to developers (such as facebook apps, iphone apps, etc). Where can we find real world examples of a componentized application? I would point out that many facets of webapplications such as wordpress have facilities which have been turned into components. Infact through the magic of plugins, you may even add new components to your wordpress workspace.

Other examples of componentized webapplications include things like remote flash video players,

Oops this wasn’t supposed to go out yet. Stay tuned for the completion of the article, I thought this was set for saturday.

  • 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

1.5 Web Development And The Future

Page: #28



Browser based desktop applications is an area of software that I feel has not been fully realized yet, we still have yet to see any real killer application which will drive the wave of innovation. What are these applications? Well many of the applications that you get today for your computer comes on cd’s, or sometimes they are downloaded from the web regardless traditional pc applications require installation on your pc. Browser based desktop applications, also come from the web but rather then having to install and run the software on a windows,mac,linux,etc computer these applications run from a browser environment instead. Thus any computer that supports a browser will support these applications.

Well that’s what web applications are, how are these applications different? Well they are not; except for one specific quality, a person able to run these applications from their computer when the computer is not connected to the internet. How cool is that? So imagine twittering about something you did today from your netbook in the park, and the computer updating your account as soon as it is able to get on any internet connection. This is the core focus of browser based desktop applications. They are not exclusively for the web and they are not exclusively for the desktop, rather something in-between that syncs up with the net when required but it is by no means necessary.

This is the future of how applications will be delivered to people. There is already well known technologies out there that do this as well as some not so well known ways of doing it without additional plug-ins. Some examples of technologies that allow you to deliver webapps offline include.

  1. Adobe Air
  2. Google Gears
  3. Java Applets/Web Start
  4. Javascript, through certain development techniques, and sometimes frameworks (dojo) discussed later in the book.

The advantages of delivering browser based desktop applications has everything to do with keeping software up-to-date, control of the software, as well as other things such as the ease of delivery vs. traditional methods. These applications do not always require installation and some may be installed as easily as hitting “File>Save” on your computer. From the perspective of a online company these technologies are very very useful because it will allow customers to use the products even more frequently then they already do. Finally, browser based desktop applications are a much better solution if you are trying to develop software that is cross platform all of the technologies listed above offer a well rounded level of compatibility across platforms making them excellent solutions maximizing the potential of a software product.

There are advantages and disadvantages to each of these technologies, in fact all of the technologies listed above require the customer to install a specialized plug-in just to work (EXCEPT the javascript based applications). Another disadvantage is that you may not always be able to achieve 100% market penetration, this is because any of these technologies can also be turned off. Although, as the internet progresses this is becoming less and less of an issue, it is often attributed to neo-paranoid system administrators (not as many of these as say 5 years ago) this isn’t as big issue as it used to be. To be honest, most system administrators will just ban your site on their network if they do not like what you are doing (which is reasonable, you shouldn’t playing at work anyway!).

We will be going through how to build Offline Air, Gears, and Javascript browser applications later in the book.

  • 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: #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