in this series, i will talk about topics i intend to focus on/learn/improve
Scope:
Web Applications
RIA
Desktop Applications
Web Applications/Backend/PHP 5.3 & Zend Framework 2
with Zend Framework 2 still under development, i will not concentrate too much on picking up Zend Framework 1.x anymore. i may explore PHP 5.3 in preparation 1st
Web Applications/Backend/Doctrine 2
like Zend Framework 2, Doctrine 2 is still in beta, i will explore the beta once in a while, read the docetc
Web Applications/Front End/HTML5 & CSS3
the future of applications whatever platform, i think the open web or cloud is still the most promising. however, HTML5 & CSS3 are still under development. like previous versions of HTML, XHTML, CSS, browser support maybe an issue. but even with IE9 looking promising now, i hope for the best
Web Applications/Front End/JavaScript & jQuery
when developing applications using open web technologies, HTML is used for content, CSS for Layout, JS for logic. Great separation of concerns i think… 1 possible downside i think is compared to C#, JS maybe sub standard or slower, i am not sure, but i think JS seems to be faster and faster nowadays.
RIA/Appcelerator Titanium
with this solution using open web technologies to create multi platform apps, this looks like a promising solution, especially if it starts to support Windows Phone 7 then it will be like all desktop and mobile platforms more or less
one major concern using Titanium is that i am not sure using PHP/Python/Ruby in a way its not designed is a great idea. not sure if it will present any problems or bugs in future. maybe speed is compromised too
Desktop/WPF 4, C#, F#, Entity Framework, LINQ
ability of WPF 4 to leverage Windows 7 features, C# & F# a very powerful language, Entity Framework being a great ORM Framework, and LINQ providing great quering capabilities i look forward to learning this topics
only features i am looking for are Syntax Highlighting to post code snippets, a customisable editor like TinyMCE
Conclusion
i think for now i will consentrate on Desktop Development (WPF 4, C#, F#, Entity Framework, LINQ) since most in the web applications category are under development and titanium relatively unknown and in infancy i think sticking to big name Microsoft and its .NET Framework 4 seems like the best way forward for now
The first framework i considered was Adobe AIR. Within Adobe AIR, i need to choose between HTML/CSS/JS, Flash, Flex. At first, i find that Flex seems to be most tightly integrated with Adobe AIR, dunno how true isit. but after some time, i settled with using HTML/CSS which i can more familiar with plus they are existing web technologies.
After some time, i found out about Appcelerator Titanium which allows you to use the same existing web technologies for layout, HTML/CSS, then for logic, JS even PHP, Python, Ruby etc for programming logic.
Then now, while i was exploring WPF/C#/Entity Framework for Desktop apps, i find that it maybe good to choose Silverlight 4 … so lets discuss the pros and cons of each
Features: Use of Web Technologies
1 of the main draw for me is the use of open web technologies. i believe that the web/cloud is where future applications will live. We are now using smart phones or laptops when we are outside home. This increases the need for data/applications to live on the web/cloud.
the downside i think for data to exist on the web is privacy. there is a risk of loss of data or hacking when data is not really managed by you - in desktop applications. also i think “native” desktop applications have better performance
i am thinking 1 alternative is the use of a NAS/Home Server that can act as a server which you can somehow access when you are outside. this still presents the problem of hacking but i think reduced to equals or abit less than your usual networked PC’s. since the server exist within your home network, i think it will be behind the router and protected by NAT/Firewall.
also the use of web technologies will be a great draw for me as a developer as i can use frameworks like Syntax Highlighter to post code snippets, also i can probably port it to a pure web applications with greater easy. probably with Silverlight i can do it by just removing all the “Out of Browser” functions?
Features: Data Binding
with both XAML and Flex, there is powerful built in data binding support, a great feature for any application - this will be lacking in a standard open web language like HTML5, or am i wrong?
Silverlight 4
the main draw of silverlight 4 to be was the use of C# ability to use the MVVM Design Pattern (tho i do not fully understand it yet), powerful data binding of XAML and what seems like positive improvements so far
the downside for me is not using existing open web technologies i am more familiar with and not being able to use many JS frameworks like jQuery, Dojo, Syntax Highlighter (which is great for posting code snipplets), TinyMCE or CKEditor.
hmm not to forget SL4 is used in Windows Phone 7 - probably one of the little draws i have for Windows Phone 7, i think the ability to use Office on the go. and its creative look and feel, social networking integration. but maybe thats for another post (say, My take on Smart Phone Platforms). and i also have to evaluate what features or development prospects Windows Phone 7 has to offer
Adobe AIR was what i started off exploring 1st with Flex which i was drawn to it because of its data binding capabilities, just like XAML. but i soon realized that although Flex 4 is open source, i thought being able to leverage a few open web languages like HTML5, CSS3, JS (jQuery) maybe a better option. so i decided to switch to Adobe AIR for AJAX (HTML/CSS/JS)
then i found out about Appcelerator Titanium a relatively unknown framework.
with appcelerator titanium, one can develop for both Desktop (Windows/Mac/Linux) and Mobile (iPhone, iPad, Andriod) the widest platform support so far (short of Windows Phone 7). plus, it allows you to use existing web technologies both for layout (HTML5/CSS3) and logic (JS/PHP/Python/Ruby). a big plus for me. except that i dunno if the “implementation” of PHP/Python/Ruby etc will be “correct” or present any exceptions/limitations.
another area of concern Appcelerator at least for now is a relatively unknown company, and just in case support for the Titanium platform stops all effort put into learning it maybe abit of a waste (learning will never be totally wasted, after all, there must be something i gain out of the use of the open web technologies i use)
for now, i think i will stick with Titanium. because of its use of Open Web Technologies and the support for the widest number of platforms.
for Desktop applications WPF/C#/Entity Framework + the ability to integrate with the OS (Windows 7) is a great plus. but for Silverlight, at least for now, i think its still in infancy. but i think for big enterprise apps, the ability for Silverlight to use MVVM/data binding is a great plus
as for Adobe AIR 2, it seems like an average framework not much draw to use it now there is Titanium, except that probably Adobe AIR will be more widely used, at least for now
I was looking for something that i can use as a web developer to build desktop/RIA’s with web technologies. I believe that the future of computing is in the web so if i could use web technologies to build my applications that have the power of desktop applications + have the ease of porting the application more simply to the web in the future, it will be great. Plus, i can focus/specialize in a smaller number of programming languages.
The downside of web technologies is they exists in the “web sandbox” so the functions they can perform are limited - eg. file system access. But all this are changing with latest RIA application frameworks.
I considered Adobe AIR 2, Silverlight 4 and Appcelerator Titanium. I seem to find Appcelerator Titanium best fits my needs - it uses Web technologies for layout, HTML/CSS and even web technologies for code/logic, JS, PHP/Python which i think can be compared to languages like C#.
Adobe AIR only supports the use of JS/AS(Flash/Flex) so it seems limited in “power”
Silverlight with C# as its programming language (for logic) seems most powerful but it seems currently lacking in elegance, or maybe its because not many great apps are known and many i see are those ‘demo’ apps that are not well designed. And i also prefer to use open web technologies instead. All these said, i think Silverlight has great potential, i am seeing a lot of potential in WPF/XAML and Design Patterns like MVVM, not to forget C#/F# and other .NET languages tho i am still having difficulties picking them up because of complexities
Titanium seem to strike a balance between using web technologies i already know and the power of RIA and desktop apps. not forgetting it can also be used to develop for mobile platforms like Andriod and iPhone