Running Elasticsearch server on a mobile device (android / iphone / ios) - elasticsearch

I would like to know if it is possible to run an Elasticsearch server on a mobile device (android / iphone / ios) and if so, how I should go about doing it.
In my case, the reason for doing it is to have an offline database on the device that is easily searchable (with all elasticsearch advanced functions)
Optionally, I would maybe also use elasticsearch's cluster/replication capacities to keep the offline data on the device synced with a server.

Well, maybe (at least on Android, for iPhone the answer is no). Others have discussed it not certain that anyone has succeeded. The Android Dalvik is a JVM, just missing some things that are typically not required for mobile apps. In theory you should be able to try to compile ES and run it on Android. However, you are likely to run into issues with missing libraries and apis that ES requires, so it all depends on how comfortable you are diving in to ES source code to resolve them.
This previous discussion might be of help, you might try to reach out to those on the thread to see if anyone succeeded:
http://elasticsearch-users.115913.n3.nabble.com/ElasticSearch-HTTP-Server-on-Android-td4056423.html

I'm also looking for a fulltext search engine for Offline First mobile apps.
I haven't developped anything yet, but I think the easiest solution can be using the Clucene Library (a C++ version of Lucene) as fulltext search engine instead of ElasticSearch (which is based on Lucene - Java).
In fact, we don't need all the features of Elasticsearch for the mobile, such as webserver, restfull api, etc...
You can find some work around on Google:
https://github.com/asheeshv/CLucene-iOS-Android-Win8
https://github.com/saturnman/clucene-iOS
https://github.com/hurongliang/clucene-ios-example
Still looking for a Cordova/Phonegap solution...
Hope it can help.
Edit:
I have found this tool that provide Offline First capabilities in Javascript.
It will work with Cordova/Phone Gap and maybe with ReactNative:
http://elasticlunr.com/

No, you can't , at least for now there is no official build that can run in mobile devices.

Can you not use regular ajax calls in your app to connect to elasticsearch? I'm not sure if it would be the best way but that's how I have it going.

There is the ElasticSearch4Android project that seems to try to do just that, but I am not sure it is not dead.
It has total 6 commits 3 years ago.
Maybe we can put one shoulder there, and help build it.
I will contact the author to see what is the state of the project.

Related

React Native Expo Best Practices for Sharing Code Base & App Experience Virtually

I am building an app with React Native using Expo and I am trying to collaborate with a third party virtually via Zoom. Ideally I would like that individual to see not just my code base (I can share my screen easily for that purpose) but what the app looks like/functions once i log in. To my understanding, I can use either the Expo app and/or Xcode. The expo app doesn't work here because you need to share the same wifi (at least I believe that's how it works) and Xcode isn't working for me because it takes up so much space locally (I have over 20 gb of free space and it still wont allow me to download). So is there a third option that would solve this problem? Am I overlooking something here? Any help would be immensely appreciated.
There's a guide on how to do what you want to do.
Alternatively, you should be able to share your Expo project with someone by sending them a link, then conference with them using Zoom, if you wish.
Another option would be to use a different IDE, for example VS Code, which has a live share plugin

When will Nativescript for Windows mature past the proof of concept stage?

The readme.md at https://github.com/NativeScript/windows-runtime says that the Windows runtime for Nativescript is in proof of concept stage, and then lists what I understand to be very deep language features that are not implemented yet.
The tone on the https://www.nativescript.org/blog/nativescript-runtime-preview-for-windows-10 announcement seems a bit more enthusiastic about the current feature set.
Being able to use Nativescript on Windows Phone (and any other platform) is incredibly appealing.
TJ, a core team member, recently posted on the forums about this:
Hey #NezzaGrey,
Thanks for reaching out, and awesome that you’re liking NativeScript :smile:. >Straight to the point though—we’re not actively working on UWP support because >1) it’s a ton of work to add a new platform and commit to supporting that >platform indefinitely, and 2) we’re not seeing nearly enough demand from our >community to justify taking on that work.
That doesn’t mean that UWP support in NativeScript will never happen, but it’s >not coming in the short term because we’re just not seeing the demand. That can >always change though. I’d encourage you to add your use case to the GitHub >issue open for adding UWP support in NativeScript: >https://github.com/NativeScript/NativeScript/issues/254. Yes, the issue is >somewhat ancient, but we really do pay attention to well-thought-out comments >during roadmap discussions.
I’ll note two other things. First, our initial work on making a Windows runtime >is completely open source and available on GitHub: >https://github.com/NativeScript/windows-runtime. We’d love to have community >?>help to make the new runtime a reality.
Second, one option you have is to build your iOS and Android apps with >NativeScript and Angular, and to use our code sharing approaches (see ?>https://www.nativescript.org/blog/code-sharing-between-web-and-mobile-with->angular-and-nativescript1) to share your Angular code with other apps. You >could take that approach to share Angular code between your NativeScript apps >and your UWP apps if you use something like Electron. This approach isn’t >ideal, as you’d probably prefer to build a completely native UWP app, but it’s >something to consider if you’re open to using Electron.
Anyways, hopefully you found some of this helpful. If you have any other >questions feel free to follow up.
Source: https://discourse.nativescript.org/t/windows-uwp-support/2659/3

App Development - Finding the right platform to migrate to from an existing infrastructure

We have an existing cross-platform Mobile Application, that also has an accompanying web application, that uses AWS as a back end (RDS for Database, Four server instances, and a Load Balancer to distribute traffic). APK and IPA files are packaged and sent to the stores, while components are retrieved from our server per request, which enables us to reduce the number of store builds, and make the process easier for getting changes out to clients.
We are at the stage of Development that we need to move to another platform to better facilitate our fast growing client base.
Due to the conditions upon our clients, these things must be considered.
must be cross platform (Android / iOS).
must be offline based (users need to be able to access without an internet connection)
must be able to sync with an existing database when there is a connection
requires Authentication
Cloud based (? may not be the right term, but meaning the ability for us to store components on a server and have a device check for updates and download a local copy - enabling us to work and distribute fixes faster)
Ideally compatible with AWS
We are currently looking at Xamarin to facilitate us for this move, however there is a lot of documentation and plugins out there to do all sorts of different things.
As developers, we all have some .net / c# experience, however none particularly with Xamarin.
We have a particular timeline that we need to adhere to (and need to ramp up in the next couple of weeks), and right now are essentially stuck in Limbo in a research phase, as we can't afford to get some things right. We are unable to move forward until we know Xamarin (or some other framework) is able to do everything that we need it to do.
It's hard to escape from the 'code it all ourselves' mentality - especially as we don't know where to start looking in terms of third party packages for Xamarin, and their documentation itself.
A lot of documentation mentions various systems of Azure - we would not be against moving to Azure over AWS if it _had to be done*, but because of the existing infrastructure with AWS - staying with AWS is obviously the preferred option (users need to access the current system whilst we build the new system)
This stack overflow post is to ask for recommendations, comments, or other observations on anything and everything involved with the process in regards to choosing frameworks, design patterns, methodologies, third party packages, etc.
Obviously we would like to use best practises for everything moving forward for optimum scalability and cleaner, more robust code. It's just hard to know where to start!
Any input will be highly appreciated.
Cheers!
edit: I am aware that this is 'asking for recommendations' which is 'specifically off-topic'. I have read the posting guidelines about open ended discussion, and am quite confident that this case is different. There is an underlying problem here, in that we are seeking advice on combinations of frameworks and plugins that are fully compatible with all of the items in the list (above)
Let's try to breakdown each of your requirement and constraint mentioned in the question.
1. You need a offline first architecture (With Sync mechanism)
Xamarin + Azure would make a good comdo for you, as it would support offline storage out of box (With a simple PullAsync call).
Albeit there are AWS SDK available for Xamarin. Here it goes http://docs.aws.amazon.com/mobile/sdkforxamarin/developerguide/setup.html
So the call is yours. There are few other ways to achieve caching offline storage in Xamarin, you can build upon those strategy in your logic. Alternatively there is a very interesting C# library Akavache for caching and offline storage.
2. OAuth 2.0 Authentication
Xamarin has a very good library named Xamarin.Auth. Though I would not say it is very easily extendible at this but there has been some serious work going on from Xamarin on this library.
But I would say it is very easy to use. The apps I have developed so far that includes - Google OAuth, Facebook integration, Microsoft account integration. It worked fine for all of them.
3. Cloud based distribution
There are nice tools available with Microsoft. Which makes the distribution easy. Have a look at https://mobile.azure.com . Also hockeyApp is good for distribution I found.
Where to start:
A very good starting point for you would be https://channel9.msdn.com . Just go there search with keyword "Xamarin" and view some videos. May be all these cross platform dynamics will be much easier for you.
Overall I found Xamarin a cool product to work with. Because anything that can be done in native Objective C/Swift or Java can very well be done in Xamarin using C#.

DJI Phantom API or hackable procedure

Maybe I have't looked hard enough, but I spent yesterday googling for a bit and found no relevant projects on hacking the DJI Phantom Drone in order to create new coordinating apps. This is besides the app for coordination DJI currently uses for their drone. I'm trying to see if there's a way to communicate with the Drone with a specific protocol in order to accept a set of procedures.
Any help would be awesome,
Thanks.
Great News for you and all us Droneys! DJI has launched their SDK since you asked this question. They released it last November and you can now apply for a license and write your own apps for the Phantom2 Vision+ using their SDK.
Check it out at https://developer.dji.com/
I am already building a project using the SDK - you can follow my progress on my blog / product site. I will also try to update it with good DJI related development links and tips.
This post is old but I think it is good to leave a foot print for others :)
There is this new company called NVdrones, which created a peace of hardware that you can attach to any drone (you need physical access to the flight controller), and once you do that you can use their SDK (Arduino, Java, Android and Javascript) to write your app without the need of hacking, soldering or anything else. It is just plug and play.
Another benefit is that you are not locked with a specific drone (DJI SDK or 3DRobotics SDK), you can use the board on anything you want. Which gives lots of flexibility.
The developer site is http://developers.NVdrones.com
Hope this helps.
This is a great topic!
You could check how to hack your copter here: https://github.com/flyver/Flyver-SDK/wiki/-2.2--How-To:-Flyver-Hack-a-Copter
By opening the drone, taking out the original controller, soldering a few wires and sticking an Android phone to it, you will have the ability to program your Phantom in a modern manner with an open source SDK and application based development. This means that you could add computer vision to it, automation or additional hardware. You could also use smartphones, web and other interactive devices for remote controlling the copter instead of using the standard remote controls.
The Phantom, however, is offcenter balanced due to the fact that most people use gimbal with it. Without the gimbal is a lot less stable from my experiments so you will have to put some extra work in center balancing it.

Best way to approach WP7 app development?

I have some knowledge of basic PHP developing however right now I am thinking about developing a phone app. I do however have a bit of a conundrum in that I love WP7 and I have so many ideas for features which can't be done on iOS and Android, however at the same time I am completely aware that my target users (filmmakers) generally have iOS or android phones.
Is there a way I can develop the app, which I will get a developer to do rather than myself, with WP7 as the lead platform and then make a relatively simple conversion to the other platforms or do apps generally have to be completely reworked for each platform?
Also, just to though it out there, any idea of where to go to find a freelance app developer?
Thanks
James
I think you have a few options, but the first question I would have is: where comes the data from. Are you the owner of the data, and do you already have a datasource from where you can get the data from? If not I would suggest take some time to write a decent 'backend' from which the different platforms easily can get the data from.
Also all different platforms have their own pro/cons which you cannot share that easily. If you build a WP7 app in silverlight/xna, you cannot directly port it to a ios/android variant, also functionality will probably look/react different. You will need different solutions foreach platform with this approach.
Another option would be to use an platform like phonegap which can create a solution that will work on multiple platforms. (It uses HTML5 to get it work on the different platforms)
Build your app on iOS and android first, and when you have an app to base WP7 development then contact a developer that has made similar apps to yours.

Resources