JSPs for a simple Project Reporting Web App? - google-app-engine

I'm about to start developing a simple reporting tool for tasks in international projects. In a nutshell: using the tool, a project is created, defining team members, tasks, and work packages. Team members will be asked to periodically submit reports on the work they've done (related to tasks and/or work packages). These reports will be stored and accessed trough the tool.
I'll use Google App Engine (client requirement) and its datastore (using JDO). But I want to ask you for advice on the frontend part: JSP looks pretty messy for non Java developers... any other idea???
Thanks!!!

Seems like at the moment it's either java or python. However, you may want to look at Grails. GSPs might looks a little less 'messy'. I'm suggesting Grails based on your description of the project, that I suspect will turn out anything but simple later on. You might end up being glad for the mix of constraints and flexibility that Grails will afford.

JSP doesn't need to be any messier than other similar HTML presentation frameworks, it really comes down to implementation. That being said, it is old Java technology which means it's not being kept up to date, and finding a good single source of documentation is difficult.
If you don't want to use JSP, there are other frameworks you can use, you just need to make sure they're compatible with Google App Engine.
The new kid on the block is the Play framework, and that's a Java MVC framework similar to Ruby on Rails. You can find a tutorial here: http://viralpatel.net/blogs/first-play-framework-gae-siena-application-tutorial-example/
If you're going to use Spring, check out this question: Alternatives to JSP for Spring MVC view layer
For a front end developer, if the code is separated correctly, you won't have to know anything about Java since there shouldn't be any Java mixed in with the HTML. If that's your only worry, then I would just go with JSP to keep things simple unless the team has experience with another technology.

Related

What tools should I use to develop a device neutral web application?

I am a computer science student in my senior year at my local university. I recently was hired on as an intern to create a mobile web application. The mobile web application is very simple; it needs to interface with a data base to both give a full data base view for an administrator and for end users to fill out a simple survey. I have never done anything in web development before, so I did a little research and the tools that kept coming up where html, css, java script, and php. However, I also ran into other tools with different applications, like AJAX with Jquery, HTML5, and micrsofts asp.net. I have a basic understanding of html and css, but I haven't committed to a development platform yet. I wanted some advice on which one to choose, based on the following criteria:
1) I want to develop a website that is device neutral. So I want it to work well on both desktops and mobile devices.
2) No one knows the future, but I would like to use the development platform that is likely to become or remain the standard in the future.
3) It needs to be available as a part of a standard server platform for a typical web host
4) It needs to be able to dynamically generate web content and interface with an SQL data base.
I would really appreciate some advice, input, ect. I don't know if I will pursue a career in web development, but sense I already have to learn at least one development platform, I figure I might as well learn the right one.
Thank you for any advice and input.
If you don't have a web developer background and don't want to spend time learning it thoroughly, I would recommend using Google's GWT. It provides you with all the tools to implement your application purely in Java, without caring too much about the front end. As the whole thing's in Java, all the SQL handling can be done there, with the results sent to the front end.
Then, you can add built-in elements (flexible tables, panels, buttons, images, etc.) to the app, again, using Java only. You can get some CSS templates from the web and apply the styles without any HTML knowledge at all.
Once ready, you can compile the whole thing into JavaScript, with several permutations of the code compatible with most of the modern browsers. Then all you have to do is to deploy these generated JavaScript and HTML files onto your HTTP server and enjoy :) You can also touch the HTML directly if you have something that can't be applied through GWT but in the case of a simple webapp this won't be the case...

Expert developer on the Microsoft stack, can't decide between GAE or Microsoft stack

I am creating a website with a friend to try and make some money. Basically, we want to let users aggregate data from different social networking site's APIs (FaceBook, Twitter, etc.) and do some cool things with the data.
My non-developer friend is sold on the Google App Engine because it costs nothing at first, and then you pay as your traffic/data increases. I am torn. I like being able to bootstrap the business like that and have no startup costs (other than time) but I am worried about learning a whole new "programming world" as Joel Spolsky would put it.
I am so comfortable with C#, ASP.NET MVC and SQL Server that I think moving to something like Java or Python on top of BigTable would end up taking about 3x longer to develop (if not more).
Can anyone give me some guidance on this? Basically, I am wondering if there is any way I can have the following with the Microsoft stack:
Free hosting up to some limit of traffic
Ability to scale out at a cost similar to what Google offers with GAE (maybe the hosting service would need to have support for a good scalable persistence solution--like Couch DB?)
For #1, I am OK if that means hosting it on my own server for the ALPHA/BETA phases. For #2 I am hoping that there is a good hosting service out there who can put me on shared hosting servers and charge by the traffic. Does that exist? Thanks!
Unfortunately when it comes to a similar platform then you won't find a MS Stack version. Windows Azure comes close but this is more akin to Amazon's EC2.
The python stack in GAE is really easy to use and was able to make the transition quite quickly. Django is a MVC that is really popular and quite simple to use. It also gives you a ORM to write to BigTable which means you don't actually have to care about it.
The Java implementation is very similar and you can use really well know MVC frameworks for creating your app like Spring
I am also a .NET expert, but I have been using Python-AppEngine for hobby/entrepreneurial purposes specifically because it allows me to bootstrap an new web application at no initial cost. That is critical for me, as I have no budget at all for side projects, and so far, with many deployed AppEngine applications, I haven't spent a penny on it.
Learning a new language can seem like a drag at first, but I have come to find my new expertise in Python to be invaluable. Remember that the best and most employable developers are usually generalists with a broad and flexible palette of skills. My resume features C# and .NET as well as Python and Ruby/Ruby on Rails, and I have gotten very positive reaction from potential clients and employers.
Learning Python was dead easy. Getting a handle on WebOb and Django templates took more effort, but nothing extraordinary. Over time, I built up my own framework layer on top of those things that incorporates the best ideas from Rails and ASP.NET MVC that I missed. You can take a look at it on Google Code, and you will see a number of ideas that specifically borrowed from ASP.NET MVC.

I want to build a Google-friendly web app, where should I start?

I have only very basic experience with HTML/CSS and have quite a bit of experience with testing software and web apps from a consumer perspective. I'd love to launch a web application that plays nicely with Google services, similar to some of the apps you'd find on the Google Apps Marketplace, such as ManyMoon, time to note, Socialwok, etc. I'm a huge Google fan and would like to build something that's well integrated with other Google services.
If you were a total beginner and wanted to build a complex app like one of examples above (project management, CRM, etc), where would you start?
If you worked your ass off 18 hours a day, 24/7, how fast could you do it?
I've dabbled into various languages and development frameworks, and read about which apps are using what languages but it's hard to figure out what would be most beneficial to jump into. Ruby on Rails, PHP, Google Web Toolkit, AppEngine. The list goes on and on. I want to be able to build and launch my own scalable web app.
Thanks.
One bit of advice: There is no shortcut for proper experience. It took me 4 years to come to a point where I can build enterprise level web apps - even though I had the dream of building one immediately, right from the beginning. Start small and build your way up.
Even though I did hate this advice when I was receiving it... Don't try to build the next Facebook platform right now.
Now, to answer your question:
Skills:
You must be absolutely clear about server-client interaction with respect to HTTP. You will never understand AJAX fully without understanding HTTP and behind the scenes of browsers. Note: being clear and knowing everything are two different things. Be clear about HTTP.
Learn about HTML/CSS and JavaScript standards to some extent to know that they bahave differently in different browsers. In the grand scheme of things, they are not that important if you are okay with some framework that handles these for you (I recommend JQuery and JQuery UI).
Learn a little about Linux, Apache, PHP.
How to go about it:
To develop web-apps, you could start with the LAMP stack - Linux + Apache + MySQL + PHP.
First build a small web app that does something trivial - like saving and retrieving user's stuff using AJAX and a nice UI or something. I'd recommend jQuery and jQueryUI for JavaScript and UI frameworks.
Then, build a small web app that just gets data from some Google service, given a user's credentials.. I am not Google expert but I guess Google provides APIs for some services(?).
Then build an app where two people can share their data coming from a Google's service or something to that effect.
Then add your own fancy stuff.
It goes on like that.
If you are a .Net person, you could go with.. Windows + IIS + MS SQL Server + ASP.Net3.5/VB/C#. Guess what? StackOverflow is build on that stack :)
Learning about and using an MVC framework is also a good idea - ASP.Net MVC or something similar for PHP.
Minor clarification - By Google-friendly did you mean SEO-friendly? If so, Google-friendly and web-app don't go well together.
It makes sense to build a Google-friendly website not a web-app.
I would start by
brainstorming a hands-on project
identify the skills you will need to achieve it
learn them as you work through the project
set progress goals and celebrate small victories
For most people 18 hrs/day 24/7 sounds a little overly optimistic. A reasonable goal would be to form an interesting project idea and research the needed skills the first week, work through a few tutorials and maybe apply your own functionality the second week, build something 'complete' the third week, then take a step back and take another look at your original goal.
As far as choosing a project, I find a notepad helps. I'll be somewhere and think, 'wouldn't it be nice if...' and I'll go look for a solution that provides that 'what if' and find it doesn't exist. So there you go.
I would also have a look to one of the top voted questions here on Stack Overflow:
What should a developer know before building a public web site.

GWT now has spring roo support, what will this mean to GWT developers?

I have been using GWT with App Engine for a while now. Recently there was an announcement that GWT will support Spring Roo and SpringSource Tool Suite. I am having trouble seeing the big picture from the Google announcement page. For those without much knowledge of Spring what does this mean for GWT developers used to building swing-like gui's?
My understanding is that Spring-Roo simplifies creating the server side component as well as making a rudimentary GWT front end for you. Then as a GWT developer, you can take the generated GWT front end and further embellish it. So, if is as good as they say it is, it makes your life as a GWT developer much easier and makes you more productive.
My first impression on Spring Roo is just a code generator. But after I learn a few things about the files AspectJ created in the project, my view was totally changed. I took one ERD diagram from databaseanswer.com and created the entities with Roo, generate the web controller. Straight away I got an application within minutes. All I needed was an ERD diagram and what I got is the well written application in Java based on the fact that AspectJ codes are Java codes. If I want to write the complex code for reporting. I can write them either in one of the Entities or custom service classes. Not only GWT, any support or add-on Roo will ease my development. Struts 2 addon for Spring Roo in the future ? Yes, please.
I think that this alliance enables developers to design complex and high performing applications even more easier. Concering GWT applications Spring would offer the server-side part with the many aspects provided by the framework (e.g. dependency injection, architecture, securits, data access ...) you might need in an enterprise application.
As far as I understand Spring Roo is a framework for rapid developement. Using GWT in combination with this, GAE and other mentioned spring technologies you'll be able to quickly start developing app engine applications (for example).

Is NetBiscuits any good?

Has anybody got any real world stories build mobile web sites with NetBiscuits?
Someone told me it was the next big thing in mobile development (http://www.netbiscuits.com/home) and it looks pretty good from their site. Just wondered if anybody (besides them) has actually used it.
From a few months time working with it, I can say that they're indeed one of the best (if not the best) out there. The support is also insanely quick and good.
Only thing making me stop using it is the price. Especially if you're a small company and want to use their POI feature.
However I have yet to find a good replacement. May end up rolling my own version...
Edit: Related question.
They have created an entire xml (bml) based markup language that emulates html that has a very steep learning curve. I would seriously reconsider using it.
I have seen it working nicely. It also supports ASP.NET controls SDK that can be used to write ASP.NET app from Visual Studio. Once this app is deployed on your premise, you can use live bridge agent to connect this app to a Live Bridge server that Net Biscuits hosts. Your app is called a backend app in this case. This is a very useful feature when you do want to have Forms capability in your app and also want it to be accessible on NetBiscuits platform.
Check http://kb.netbiscuits.com/tactile/edc/livebridge_help.html. BiscuitML is also easier to grasp.
Look out for performance issues though. Customers in Australia have had response time issues - probably due to the Cloud Platform being located in USA/UK.

Resources