What clients for web application? - ajax

Is it true that web browsers as we know today have no future? That programmers should write native clients for their application on many devices?
I'm writing web application with AJAX but should I also prepare versions to many mobile devices?

The web will be around and web browsers are available on almost any device. Some say native development is the future, because it is closer to the device and gets the most out of the system. This is true and is applied in various cases, like XBOX games and Apple software that is especially designed for a single device.
Other developments show the other side. Google's OS is barely more than a webbrowser. All applications running on it are merely web applications that should run on any browser. Only difference is that the engine of Chrome OS is put directly onto the hardware, allowing the webpage to get a better performance, because it has only one abstraction layer to the hardware instead of 3 or 4.
So, the only advice I can give is not to worry about it. People on either side have been declaring the other technique to be dead since decades ago, but both are still here. When it is time to switch, you will know. :)

The first statement is definitely not true.
The second one depends on your case, but most things you can just do "mobile-browser friendly". I.e. make a mobile version of the website that looks good on mobile browsers. No need for mobile applications.
Of course, if you have the resources, a mobile app is a good addition to your portfolio / brand.

First of all no one knows and no one can know what the future will bring.
For me though, it is difficult to imagine a world without web browsers at least in the near/mid term future, especially with all the hype/support behind HTML 5.
The big advantage is of HTML 5 in this regard is write once, run everywhere.
My 2 cents ;-)

If anything, it is the other way around. Make a good web application, and everyone can use it. Mobile browsers get better and better all the time. Expect mobile website usage to increase, rather than custom applications for each device. (obviously, applications that need hardware access are not included in this statement.)
Furthermore, expect a convergence between mobile web and desktop web.

Related

Web User Interface design and smart watches. What considerations to make?

I dont know enough about smart watches but i figure that at some point, browsing web sites on them will become a standard feature. The "Web Browser for Android Wear" app on google play has more than 100,000 downloads and the "WebBrowser for SmartWatch" app has more than 10,000
To that end, given that smart watches like Sony's SmartWatch 3 has a 1.6” screen, what should web designers need to take into consideration when making their web pages as portable as possible? Is there a set of standards? What kind of functionality and behaviour should one expect of a page displayed in a smart watch browser?
Although SO isn't the best place for this question, I'll chip in. As far as I know, designing for wearables is still a new thing, and as per say, I haven't come across any standards as such.
But I think responsive web design should do just fine.
People are working on designing websites for smart watches. Here.
However, think about using the standard manufacturer APIs to build more robust and interactive experiences than just relying on websites on tiny screens.
Here's an article from Net Tuts+ that shows you how to design for the Apple Watch using existing web technologies. Bear in mind it doesn't beat native at all.

Web Application in place of a more traditional UI?

I am considering using a web application in place of a traditional UI to control an imaging system. The UI will allow the user to do things like change settings, upload scripts, start/stop data acquisition, view data, etc... Rather than a monolithic UI that "does everything", an embedded controller would interact with system hardware and control the process, receiving commands from the UI over a local network.
I would probably use a javascript toolkit or perhaps some .Net technology to build the web application. A few of the advantages I see are:
Access UI from any browser.
No software to install.
Access remotely if necessary.
View status/data from multiple computers simultaneously.
Modular (separation of concerns)
Data as a web service.
A few of my concerns would be:
Lack of a comprehensive widget toolkit.
Supporting multiple browsers, this may not be as bad as I think now with HTML5.
Updating the UI from the server.
My questions are, Is this common? Is it a bad idea?
If it's really subjective, I understand, however, I just wanted to see if there is an obvious answer, like "DON'T DO IT!!!!"
It is very common. I do it all the time, particularly for a closed community of users such as you will have.
It might be different if this was a public facing device, but it is not.
You are going to support more devices by saying "you must have an HTML 5 browser" than if you said "You must have a PC" or "You must have a Mac"
In terms of your concerns, I do not see any of them as being an issue.
It is easier to deploy a UI upgrade once to the imaging controller than many times to all of the client machines.
There are all of the widgets that you could ever want available for HTML 5 compatible browsers
You answered your own question about cross browser issues. HTML 5 browsers are free so there is no downside for people to upgrade to them and you have the entire weight of the world wide web pushing them to upgrade to take advantage of what can be done with HTML 5 so users have a big incentive to upgrade. I do not run into any push back when I require a closed group to use an HTML 5 compatible browser. And if you want to be kind to those that don't have html 5, you can always use modernizr.
It is a good idea - and there is plenty of examples and ways of doing what you want to do.

Future-proofing Mobile Applications

We're working on the next version of a tracking system. The previous incarnation used an LCD with a simple custom UI however as we've had usability problems and we've found development time-consuming, and as our display is going out of production, we're considering using a regular cellphone or PDA as the interface instead.
Our main worry is whether we can keep such a product on the market for five to ten years without having to continually keep porting and adapting the application to new devices. To make things somewhat easier we intend to bundle the phones with the system, though in an ideal world our (largely non-technical) users would be able to use their own.
So, what's our best bet? Are there a good platform-independent libraries we can count on being supported for a while? Or are we better of betting on a single platform at a time? Perhaps backward-compatibility is more likely to be maintained on a PDA? Truth be told I'm not even sure what language to bet on for the generic parts of the code.
I'm also a little anxious about the link to our hardware. Bluetooth SPP is attractive since it's particularly easy to use and there are plenty of ready-made modules available, but support on the phone side is far from universal.
Any pragmatic advice would be most welcome as I must admit to having no experience with mobile application development.
If you don't control the entire production chain for hardware like Apple does for example, you have no chance on long term. Unless your product is really innovative and market wants it so much, or if you are playing on a market niche (healthcare for instance). My proposal would be to make a market study and check what your customer use as mobile devices first. You should choose one or two top platforms first, and gradually add new platforms if market asks. If you are in US probably iPhone, Android, RIM would be the top choices, in Europe I would have to choose between iPhone, Android, Symbian, Windows. It's the same like developing a website you start with two top browsers and gradually add support for minor ones.
About portable libraries I wouldn't bet on this. Instead I would design an architecture using abstraction layers. For example I would have Bluetooth abstraction layer that would expose functionalities to my Business Logic Layer; underneath I would have BlueZ if I deploy on Android/Linux, maybe GameKit for iPhone, MS stack or Widcomm for Windows and so on.
PDAs are dead, actually they've merged into smartphones and tablets, they were an evolutionary step. So forget them.
HTML5 is a good idea but is only the front layer, you must deal also business logic and lower layers.
Bluetooth SPP is good because it is common, and interoperable it's like the webservices for enterprise. Instead of giving an API that is platform dependent you could provide a set of custom AT commands, that can be used by anyone that can connect on Bluetooth to SPP.
Cross platform sounds like HTML 5, CSS and Javascript, along with some javascript frameworks for mobile development like the ones listed here

Application Development: Cocoa vs Sencha vs Others

I'm a developer most comfortable with web languages (PHP, Javascript etc.). Now, My company wants to start making iPad apps for pharma sales reps that basically gives a nice introduction to drugs.
We used to subcontract it but we want to bring it in house. It's a very big plus for me financially if I can take on the jobs and do them right. Now doing my research, these apps aren't crazy; they just kinda need to act like a powerpoint slideshow with a little animation and interaction.
I don't know Cocoa. I know there will also be a learning curve with it as well. I do know Sencha slightly. Does anyone here have any experience with either of these platforms and do you think it's a "might as well learn cocoa" type of thing? The only reason I like Sencha is becuase you program in Web languages and can port it to app stores. Any ideas? Suggestions?
My answer is always just to learn Cocoa in situations like this, but Sencha is actually surprising not-bullshit. I'm really impressed with it.
However, I wanted to note a few things: I don't know exactly what you mean by "port it to app stores", but I want to be sure you don't delude yourself into thinking than an app written with Sencha would be usable on any platform other than iPad. Of course you could load a page written in Sencha on non-iPad device, but the entire point of Sencha is tailoring your web application to work surprisingly well on an iPad. So, it will be out of place anywhere else, and given the quality of current iPad competitors, it'd be unlikely to perform adequately off of the iPad at this time.
So, if you want to use Sencha, it has to be for the right reasons (of which there are two):
You want more flexibility in deployment: you don't want to have to deal with Apple's Enterprise deployment system. Apple's not interested in apps that only pertain to one company (internal software) on the App Store, so if you want to go the Cocoa route, you'll have to use their Enterprise Ad-Hoc deployment.
You don't want to / can't afford to take the time and learn Cocoa (really, to make an app that doesn't sucks will probably take at least a year of experience, trial and error, etc.; at least, that's how it was for me).
If either one of these things is true, I'd go the Sencha route. But as an advocate of iOS, I really hope you take the time and learn Cocoa! I believe I speak for all the Cocoa developers on Stack Overflow when I say that we'd be happy to help you with any questions you may have as you go. Good luck, whatever you decide!

Web technologies in GUI apps

What's your experience in using web technologies (HTML, XML, CSS, JavaScript) to implement part of the functionality of a GUI application? Pros and cons, please.
No servers, relational databases, AJAX, or cookies for session management, nor an existing webapp either, but rather a GUI app that uses web widgets (like Qt WebKit) to render and handle substantial parts of the UI, while taking advantage of a GUI framework to achieve an even richer interaction and better desktop integration.
I've already validated that the approach is possible using PyQt. Content can be rendered from the file system or from strings, and URL requests (images or clicks) can be captured and served by the form's event handlers. CSS and JavaScript are supported, perhaps with some limitations.
# ...
self.webView.page().setLinkDelegationPolicy(
QtWebKit.QWebPage.DelegateExternalLinks
)
#...
class TotiMainWindow(QtGui.QMainWindow):
def linkClicked(self, url):
pass # events arrive here
Note: This question is different from this one and this one made before, among other things because there is no requirement to use web technologies on the GUI, but there is the requirement that the application should work without a network connection available, and should integrate well with the default desktop over different platforms, without previous infrastructure requirements (no .NET, Java, browsers, or database servers).
Note: I posted a different version of this question on PMS but found very little experience with this approach there.
Closing Note
I just found most of the information I was looking for in a series of blog posts by André Pareis.
I think the largest advantage to using web markup like HTML/CSS and other web technologies is that desktop apps may very well have their days numbered.
As we speak, Google engineers are working on the Chromium OS, which essentially consists of a single GUI application... the browser...
Now, while nothing may never actually come of it, there is clearly a rising trend in the number of applications accessible through a web browser, accessible anywhere. It seems to me that this is the future of application development.
By using these technologies, this becomes one less headache you have to deal with when or if you determine that your app should be available as a web application.
Update: A few years ago, we developed an Agent Desktop for our call center that is essentially a local application that opens sockets to integrate with the phone system. The user interface the agents use is built with HTML, CSS, and JavaScript, and the experience is stunning. When we released our latest update in 2010 with a professional CSS redesign, our agents were all very impressed with not only how easy it was to interact but also how easy it was to use.
In the future we will port this 100% to the browser, but for now it needs to be a local application because of the COM integration with the phone system.
We did exactly this for a project back when Windows XP was new.
This gave my team several benefits:
A good-looking UI with relatively little effort
Easily change the style of the UI in a consistent manner using CSS
Relatively simple integration with C++ (invoking functions from the ui and vice versa)
The drawbacks we saw were:
Some not-so-good firewalls considered accessing internal resources (ie other html pages in the ui) to be a web request
Adding and accessing the needed resources could in some cases be a bit cumbersome
It was possible set properties in Internet Explorer that would prevent JS from running in the application
Note that some of Windows XP:s programs are using this approach.
This probably works best with small, more Wizard-like parts of the ui (which our ui consisted almost entirely of).
I have since then not really been involved in ui projects, so I cannot really tell you whether this approach is still valid... I know that MFC-based applications will let you use HTML-based dialogs though.
In a similar situation in 2005 I created a stand-alone webapp using XForms, CSS, JavaScript, XML and XML Schema for offline data retrieval and verification. With a good XForms -> HTML + JS transformer (Chiba) it did the job with no bug fixes after the initial release. It was used for 6-12 months (IIRC) by about a dozen engineers for a project gathering test data in the tunnel of the Large Hadron Collider. The biggest surprise of that project was just how much you get for free when going for a web platform, even for offline use. Highly recommended.
The major problem is that it reduces your development speed, or the quality of your user interface. A lot. Unless you're using Seaside, it is much faster to develop a desktop app.
There is quite some number of applications built on top of Mozilla platform. It isn't 100% web technology, as instead of HTML you use XML based XUL, but the rest is indeed web stack (JavaScript, CSS). The most successful of these it the OpenKomodo and it's commercial big brother Komodo IDE.
On the other hand, as far as Qt goes, the newest version 4.7 you can build GUI using QML language. Don't let the name mislead you, it's not markup, it acctually JavaScript with app-specific extensions.

Resources