<div dir="ltr">Hello Yavuz,<div><br></div><div>thanks for the interest in AeroGear and sharing your feedback with our community!</div><div><br></div><div>We are for sure interested in how we can improve the experience. We really appreciate your comments!</div>
<div><br></div><div style>A few comments in-line!</div><div style><br></div><div style><br></div><div><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jun 5, 2013 at 12:04 AM, Yavuz Selim YILMAZ <span dir="ltr"><<a href="mailto:yavuzsel@buffalo.edu" target="_blank">yavuzsel@buffalo.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Hi All,</div><div><br>
</div><div>I am trying out the AeroGear libraries to get a sense of them. As a newbie to the libraries, I took some notes about my first experience, and would like to share my notes with you. Comments, directions and suggestions are most welcome.</div>
<div><br></div><div><br></div><div>General:</div><div> </div><div>- It's not clear if I can use the client libraries with my own server side, or if I can use the AeroGear controller without using the client libraries. </div>
</div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div>
So, my initial thought was, I definitely need the AeroGear controller to integrate my AeroGear powered client app with my RESTful backend.</div></div></blockquote><div><br></div><div><br></div><div>As you (probably) noticed, they can be used individually. Do you think we should phrase that different on the side, or in the docs ? <br>
</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div>- Maybe it is because the external libraries/tools used in the documentation apps releases new versions so fast, but getting the example app from github, running it on my machine and then modifying the app to play with it was harder than creating a new app and using AeroGear libs in them directly.</div>
</div></blockquote><div><br></div><div><br></div><div style>That's an interesting comment. You are basically say the demos apps where broken? Or update too often ? If the too often, please have in mind that we are early stage, and that things are changing on a fast pace </div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div> </div>
<div> </div><div>iOS:</div><div> </div><div>- iOS API Cookbook is a really nice doc to get to know about how to use AeroGear iOS API.</div><div>- It is not clear enough how the backend side should be designed to work with client libraries, and this is problem if you start using AeroGear with client side libraries (a mobile developer will probably start so, like I did).</div>
</div></blockquote><div><br></div><div style>The backend should be pretty independent. For iOS, we do have integration tests against different cloud services (not only against our backend):</div><div style>- World Of Warcraft: <a href="https://github.com/aerogear/aerogear-ios-integration/blob/master/AeroGear-iOS-Integration/AeroGear-iOS-IntegrationTests/WorldOfWarcraft_PipeTests.m">https://github.com/aerogear/aerogear-ios-integration/blob/master/AeroGear-iOS-Integration/AeroGear-iOS-IntegrationTests/WorldOfWarcraft_PipeTests.m</a></div>
<div style>- Github's GIST API: <a href="https://github.com/aerogear/aerogear-ios-integration/blob/master/AeroGear-iOS-Integration/AeroGear-iOS-IntegrationTests/AGPagingWebLinking_GitHub.m">https://github.com/aerogear/aerogear-ios-integration/blob/master/AeroGear-iOS-Integration/AeroGear-iOS-IntegrationTests/AGPagingWebLinking_GitHub.m</a></div>
<div style>- Twitter's Search: <a href="https://github.com/aerogear/aerogear-ios-integration/blob/master/AeroGear-iOS-Integration/AeroGear-iOS-IntegrationTests/AGPagingBody_Twitter.m">https://github.com/aerogear/aerogear-ios-integration/blob/master/AeroGear-iOS-Integration/AeroGear-iOS-IntegrationTests/AGPagingBody_Twitter.m</a></div>
<div style><br></div><div style>We do not even know what they used for writing these backends. Do you think the different client libs should state more clearly that they can be used independently? </div><div><br></div><div>
</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div> If an iOS developer wants to use the library, she should go through AeroGear Controller docs to know how the server side should be. And here "AeroGear Controller User Guide" is not enough to figure the things out. Therefore, one needs to go through aerogear-controller-demo on github to understand the details (e.g. after struggling with how the server side APIs should be, it turned out that REST API itself was what i was looking for - so easy if it was stated clearly [see general section above for why I find this difficult]).</div>
</div></blockquote><div><br></div><div style>Looks like the controller guide needs some improvements? Or being more clearly on the REST API (which is what you really need). Feel free to suggest changes to our docs! We are more than happy to improve, especially based on user feedback</div>
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">
<div>- xCode template is a really nice start, as it makes getting the first app running quick. But template creates a part of todo app which doesn't have authentication and therefore the app isn't functional.</div>
</div></blockquote><div><br></div><div style>I am sorry to hear, but that has been changed recently - So I guess you are a "victim" of this fast pace here. Have a look at the template's "login code":</div>
<div><a href="https://github.com/aerogear/aerogear-ios-xcode-template/blob/master/AeroGear/Application.xctemplate/ViewController.m#L26-L44">https://github.com/aerogear/aerogear-ios-xcode-template/blob/master/AeroGear/Application.xctemplate/ViewController.m#L26-L44</a> <br>
</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div> </div><div> </div>
<div>Android:</div><div> </div><div>- Unlike iOS development, developing Android apps and compiling them has many different alternatives. But as a maintainer of Android, Google puts Eclipse + ADT option in the first place. So, I think at least there should be an option for AeroGear to use it with Eclipse + ADT setup. </div>
</div></blockquote><div><br></div><div><br></div><div style>You mean integrated into the Eclipse Tooling? We do have guides for Eclipse for instance:</div><div style><a href="http://aerogear.org/docs/guides/aerogear-android/">http://aerogear.org/docs/guides/aerogear-android/</a><br>
</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">
<div>Especially using community tools to build is initially harder for newbies (e.g. I tried to get maven running on eclipse using m2eclipse, and todo app does not compile on my eclipse while it does on terminal). Some bugs and configuration changes in maven, maven-android, android-sdk-deployer and m2eclipse slowed down the initial steps, i.e. it was not as quick and straightforward as AeroGear iOS API to get the first app running.</div>
</div></blockquote><div><br></div><div style>Is that because on the documentation ? </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div>- Sending query parameters to server side is slightly different on iOS and Android (or maybe I couldn't find the same way, but Android sends where clause as JSON object, while iOS sends key-value pairs as HTTP GET query parameters). So, I needed to update my server side (which i developed for iOS) to use it for Android (or I could build my where clause in iOS manually).</div>
</div></blockquote><div><br></div><div style>in iOS the idea was to have a generic "parameter provider", since the "where" is pretty much dependent on the server. So configure your own "params and their values" was the idea behind in iOS. I think that the "where" is gone (or going away) in Android land as well </div>
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">
<div> </div><div> </div><div>HTML5:</div><div> </div><div>- As AeroGear.js uses AJAX to connect to the backend, and in my case (also I believe in most cases) as my RESTful endpoint was not residing on the same host with my app, I needed to use jsonp data type, which requires different response format. Therefore I needed to update my server side (again - it was designed for iOS and updated for Android).</div>
</div></blockquote><div><br></div><div style>CORS support is available in the AG-js library, but yeah that's something your backend needs to "setup" as well. </div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div>- When I create a pipe, I specify the baseURL and my endpoint, but I needed to specify the data type when I was actually reading from the pipe. I felt like if I know what my endpoint returns in terms of its data and application type, then I should be able to set data type while creating my pipe.</div>
<div>- Although documentation is not complete yet, AeroGear.js file is well commented (going through the comments, it's easy to understand what and how to do).</div><div> </div><div> </div><div>Hybrid with Cordova:</div>
<div> </div><div>- The documentation for converting HTML5 + REST apps to Hybrid apps uses some directory names (e.g. "ios") which causes confusion (when I read, I got confused about whether the directory named "ios" is what I can choose its name or it is something Cordova or Xcode creates and so it is a required name or directory in all apps).</div>
</div></blockquote><div><br></div><div style>Cordova names their supported platforms that way (ios, android) - we can not do much about this, also I think it does make sense (since they generate the bindings and abstraction for that particular platform (e.g. iOS or Android or whatnot :))</div>
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">
<div>- HTML5 documentation and example app employs modernizr for feature detection (mobile or desktop) and to load appropriate libraries accordingly. However, modernizr does not load fast in hybrid app (though hybrid app is for sure mobile, I first kept all the implementation as it is to make it "implement once and use for all builds -HTML5, iOS hybrid and Android hybrid-", but it didn't work). After removing modernizr from HTML5 implementation and loading only mobile libs, it required no more effort to make html5 app hybrid (it just did work).</div>
</div></blockquote><div><br></div><div><br></div><div style>You are talking about the Kitchensink example, right ? I think that is generally a bit older now... I will have Luke/Kris comment on the future directions there :-)</div>
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">
<div><br></div><div>I also have a question, and your answers and/or directions are appreciated in advance.</div><div><br></div><div>- For now, I created some simple REST API's in PHP to try the mobile side libs.</div>
</div></blockquote><div><br></div><div style>that's perfectly ok!</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div> What is your recommendation of building server side (which uses existing database let's say) if it is going to be used with AeroGear? I mean, is it OK to go with PHP to provide REST API, </div>
</div></blockquote><div><br></div><div style>if your backend devs are PHP guys -> go that route</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div>and then add another layer using AeroGear controller? Or should I go with Java implementation from the start?</div></div></blockquote><div><br></div><div style>Not needed. If you feel comfortable with Java, feel free to use the AG-Controller or straight JAX-RS. It's up to you. See the integration test examples I shared above: We basically have no details about the backened - we just leverage their REST APIs </div>
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">
<div> So, to restate and simplify: my AeroGear controller needs to connect to an existing LDAP instance. What's the AeroGear recommended approach for this?</div></div></blockquote><div><br></div><div style>Good question :-) Do you mind starting a new thread for the LDAP connection issue?</div>
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">
<div><br></div><div><br></div><div>Thanks for your time to read (and respond). Cheers,</div></div></blockquote><div><br></div><div style>Yavuz, thanks again for trying AeroGear and giving such a detailed analysis! We truly appreciate it!! I hope some given answers make sense. Let us know if you need more, or feel free to suggest improvements. </div>
<div style><br></div><div style><br></div><div style>Thanks!!!</div><div style>-Matthias</div><div style><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div>
<div style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px">
<br>---</div><div style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px">
Yavuz Selim Yilmaz</div><div style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px">
SUNY at Buffalo</div><div style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px">
Computer Science and Engineering</div><div style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px">
PhD Candidate</div>
</div>
<br></div><br>_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Matthias Wessendorf <br>
<br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</div></div></div>