Which technology for business web application? - ria

I am pondering on building a CRM for consulting business and am looking for best technology to build on. It will be web based with maybe a plugin that integrates with Outlook. What I don't want is to spend a lot of time doing HTML-fu and CSS-fu just to get basic grids, data entries and so on up. I don't mind picking up a new language. Preference goes to FLOSS projects. If it works with Python + 50 points :)
Projects on my mind:
Google's GWT - great ecosystem. Pity that it is in old-fashioned Java, but there's Pyjamas too!
Django - has all the nice widgets for web, but requires maintaining essentially a dual code base - backend language and front-end. Does not work with JS challenged browsers :(
Any suggestions how to quickly build and maintain web based business app are welcome.

My vote is with Adobe Flex. Some high-level advantages of flex:
Browser compatibility: any browser with a flash player will run the site (currently over 90% I believe). No need to fudge with html/css.
Data binding: the flex framework's strongest suit is dynamic scalable data binding.
Server-side technology: Flex can couple with any server-side technology for back-end operations (Java, PHP, RESTful web services, and Coldfusion to name a few)
Open source: flex is open source (however, buying the eclipse-based Flash Builder is usually a good idea)
Customization: every flex component is completely customizable and skinnable. Nice for business apps that do not want to simply look the same as everyone else.
Desktop: Using Adobe AIR Desktop Environment users can interact with the OS.

Related

XPages for iPhone6: Which controls or framework do you use?

Just got a request for a fresh XPages project where an existing traditional Domino Web application should be modernized and mobilified (iPhone 6 being the target).
I'm comfortable with Boostrap, especially Mark Leuksinks add-on, and that is my first gut feeling.
On the other hand I'm aware of specific Mobile Controls, both from IBM and from Teamstudio, and was wondering if there is a 'best way' you would recommend.
I can pretty much control everything on the server. I'm aiming for quickest effect for minimum effort.
TeamStudio tools are good if you want offline or do other development that does offline (XControls can also be used online, so could give consistent look and feel and development experience).
XPages Mobile Controls require a single XPage in order to get transitions. So if it's a large application, that can make the XPage quite cumbersome. You need to become comfortable with the settings on each mobile page, to know when to refresh and when not to.
If you're familiar with Bootstrap and can "encourage" the end users towards your preference, then as a developer, that would make sense to me (leveraging existing skills means quicker development).
If you're comfortable with Bootstrap and responsive design, we'd certainly encourage going down that route. I take it you are aware that Bootstrap is now part of the XPages Extension Library on OpenNTF ? It was first released there in Nov 2014 and has been continuously updated since. And it will migrate to the core XPages runtime as part of the next GA release
I would use the DAS components and let Domino read/write JSON and implement the frontend using the IONIC framework. It uses AngularJS as JS framework, is conceptually not that different from Bootstrap l, but has all the hooks (using Cordova) to use native phone features.

First Time Developing Web-Based Geographic Information System

I'm assigned to develop web-based GIS, but I'm new with web programming. So, Where I can get an insight to start develop web-based GIS?
thank you before
regards!
You have to know about the 2 main components for web programming: front-end and back-end.
Front-end, is how the results/graphics are going to be displayed in the client (pad, monitor).
The most common tools are the javascript libraries like ArcGIS API for JavaScript, or OpenLayers.
For front-end you need to learn about html, css and javascript.
Back-end, is how you will manage the architecture (models-databases) of your project. There are many technologies to choose, for example, Java (J2EE) or .NET. For geodatabases there are systems like SQL server or PostGIS. Back-end is normally placed in the server.
In GIS you would also need a web mapping server (for sharing data, for instance), you can use GeoServer or ArcGIS for Server (commercial).
In my experience, I like to use django as back-end, this is a framework for web development using python (There are also many libraries for GIS using python which you can integrate). With django you can use a model-view-template controller to manage data to the web pages in a simple and fast way. Django has also a module called geodjango, to manage geodatabases, but not strong as GeoServer.
Start with "Requirements". To understand what requirements is, please start with a book on software engineering.
Once you have the requirements, you need to "Design" - what tools/technologies/languages to use. If you are just beginning programming, you typically get a senior to do the design
Then you get to a task, such as rendering google maps on a web page, that can be answered in something like stackoverflow.

Chrome Apps UX guidelines

In the Google Cast SDK Overview video published on YouTube by Google, the presenter says
There are design implications that are driven from the Design Checklist so in addition to the platform specific guidelines for Android, iOS and Chrome, it is important to do a thorough review of the Google Cast Design Checklist.
The sentence reads like legal-speak, but more importantly, it mentions existence of platform specific design guidelines for Chrome. I never knew that there is anything like that. I attempted googling around, I could find guidelines for Android, iOS, but nothing for Chrome. Does anybody know where the Chrome guidelines can be found?
The design checklist is here: https://developers.google.com/cast/docs/design_checklist
The starting point for Chromecast developer doc is here: https://developers.google.com/cast/
There is an unified design guide for both Android and Web Apps that was announced on June 25 2014 at the Google I/O keynote. It is available at the https://www.google.com/design/ site. Regarding Google endorsed UI frameworks, there are two. Polymer Paper and Google Web Starter Kit. Additionally, there are stylesheets on GitHub from various people that aim to replicate the look and feel of the Chrome Settings page as well as various widely-used opinionated Responsive CSS Frameworks that can provide design clues, most notably Twitter Bootstrap and Foundation.
Polymer Paper
Polymer Paper is a set of Polymer Web Components which implements the unified mobile and web UI concept called Material Design. Some of the distinctive characteristics is the use of drop shadows and animated transitions to hide latency and give feeling of responsiveness. The components are built with the Polymer framework on top of web components, so it works best in cutting edge browsers.
Google Web Starter Kit
Together with the Google Web Fundamentals developer guide the Starter Kit provides a starting point regarding look and feel for your web app (a style guide with UI elements, e.g. sandwich sidebar), as well as preconfigured selection of helper tools to better manage your CSS styles, minify resources, keep performance considerations in mind and so on. The Starter Kit employs production ready tools and procedures that can be used today.
There is nothing like that, the presenter probably just misspoke. The Thinking in Web Apps page on Google Developers could give you some hints, but it feels outdated in many aspects.¨
Just some more general advice on that:
People tend to gravitate towards Twitter Bootstrap these days, so base your design on that and you will play well with others.
Watch the trends and adopt what the big players are using. For example, the sliding drawer on the side seems to be big now.
Regarding the ongoing effort by Google to allow easy porting of Chrome Apps to mobile phones, looking at the Android and iOS guides may help. Most importantly try to optimize your app for touch, avoiding hover, right clicking and minimize the need to type.

Switching from desktop development to web-based development

I was thinking recently about changing my main profile as a developer and I want some opinions and insights about this.
I don’t live in Silicon Valley, I’m in an eastern European country where the valley’s buzz arrives about 5 years later, if it does at all. Python, Rails, node.js is not as mainstream or “hip” at all, everything revolves around PHP, Java, .NET.
I’m not saying that we produce crappy code, there are many great developers, I’m just saying that technology-wise, we’re a little behind.
My experience is with C# desktop mainly, but I worked with PHP and Java as well, 2/3 part desktop applications. As of recently, I’m digging deep in JavaScript technologies and Python — and I really like it!
I decided that I want to shift towards web technologies primarily, involving technologies which can be transmitted to desktop area as well.
For example:
Recently I got a project which involved a desktop app. The customer doesn’t really care what technology I use, but I choose C# WinForms as I have most experience from it. However, this could be done easily with anything else and I was thinking that maybe there’s a solution for a JavaScript-based app, or something else, I don’t know.
My question is what languages do you guys suggest which can be applied to both desktop and web.
I was playing around with node.js and Python but not very familiar with the possibilities to be honest. I see the future in cloud applications and mobile development, so my decision is a strategical one.
Please omit the “if you like desktop development, stick with it”, because I like web development as well, I just want to shift to it primarily.
If you are doing app that can be done as web app, but you just want it to sit on user desktop and work without Internet connection, then you should go web development IMHO
The main challenge will be packing web server application in a way that is easy for desktop user.
There are 2 solutions I know:
Package your web application with all dependencies into single Java EE .war file, and put it on desktop with simple Tomcat web server (this can be done with JRuby/warbler).
Alternative could be to create VMware Image with web server (web server will start in server start scripts, so user needs just to start the VMware instance).

Lotus Notes Application, Web Based Converting

Does anyone have tips or an ebook that can give me a good foundation on how to create applications in lotus notes using web browsers instead of clients. Links or tips are much appreciated.
Thanks!
Books are a good starter. But you'll find there is alot more to it than you see in books. So, here is a quick list of places to look.
Books
You've got these options for books (all downloadable as eBooks to)
Classic Web development prior to Notes 8.5 -- Reviews here and here
Latest Web stuff with Xpages if you have Notes 8.5+ (kindle/paper)
There are IBM wiki's (html). But have found the IBM wiki experience underwhelming. (The adjectives "half-ar$ed" and "piece-meal" comes to mind alot when reading these.)
IBM's redbook site (pdf/html) has better produced content than the wiki's.
Sites
One of the best web development tip/technique sites for the trickier problems is codestore.net and nsftools.com
OpenNtf a well used site for free code and solutions written by alot of smart people.
Quite a few good bloggers have "coagulated" on planetLotus
Try Searching for XPages in Google. Or start here
If you enable http on the server, you should be able to see your domino applications from the web. You then need to modify them to make them a bit more web friendly. The basic technique for this is to have 2 design elements with the same alias, hide one from notes and the other from the web. This will make it a bit easier to make it functional from both the client and the web browser.
Other functionality which makes this a bit easier would be 'Pass through HTML', the Domino CGI Variables and the 'WebQueryOpen' and 'WebQuerySave' events. As Jasper points out, XPages is the new sparkling way to do this, but it might not be an option for existing systems (It requires the latest version of Domino server). Good Luck!
What version of Domino are you running? If it's an 8.5 variant, I would suggest you use XPages to bring your old client apps to the web (XPages are not an option in releases prior to 8.5).
As to how you go about this, that's well beyond the scope of an answer on Stack Overflow: it's a book in and of itself! To learn about web development with XPages, I suggest visiting some of the well-known sites out there, and perhaps picking up a course or two. Here are some links:
http://xpages101.net
http://www.qtzar.com/blogs/qtzar.nsf/htdocs/LearningXPages.htm
http://notesin9.com/
(Also, IBM publish a book on XPages development, although I've not read it).
With regards "classic" Domino development, your best bet is to view your existing Notes app in a web browser and then start hacking on the default HTML generated (which is nasty). The best single resource out there for classic Domino web development tips and hacks is Jake Howlett's Codestore
Start small, build yourself a small database with a subset of data and explore what you can do. I've been a notes client developer for 10+ years and doing domino web work for last three or four years and still on steep learning curve. Its a very powerful platform but you also need to know html as on many occasions the html that you see in the browser helped me pin down the faults in my application code.

Resources