Looking for app developer

U

Unregistered

Guest
I stumbled upon basic2ppc.com yesterday, and we had originally created the following job description for odesk. I don't really know if b4a has the full capabilities that we need, especially in the area of performance, but I am open to hearing from some of you that might be able to take on the following project. I can be contacted at: [email protected]

----------------------------------------------------------------------------------

We are looking for an Android app developer. The app will be required to display local business information and local organizations such as city, county and school contact info to the end user. In simplistic terms: it will be a local business directory for a single small US market. The app will need to remotely pull data from an existing MS-SQL db. We will provide an ip address and credentials for the developer to connect to the SQL Server db. We can also supply the select statements or views for each section of the app. The developer will not have to do any of the SQL db source work – it will be our responsibility to organize the SQL data into appropriate categories and subcategories etc.

The app will not require any writing to the db, only reading and display of data. The app will also have to display some small jpg business storefront images which will be supplied via url. We can supply any optimized icons or graphics the developer may require. We may decide to include features such as: click to call, click to sms, and links to mobile pages. Ideally any mobile pages linked to a business or organization would have to open in the app itself and not the device browser, we want the user to not leave the app when navigating to a mobile page. Some basic search functionality would also be required. We’d like a relative layout that can scale to multiple screen resolutions. The layout should also be able to rotate between portrait and landscape orientation. Overall - we want a simple, robust and well performing app.

One of our main concerns with this app is performance, with the pulling of remote data, how can the developer optimize the performance of the app? Another area of concern will be the robustness of the app. We prefer performance and quality over features.

At the completion of the first phase of the project, we’d like to take ownership of the code. We’d like the developer to assist us in setting up the development environment and source code on a Windows PC. Ideally, the developer would use Eclipse, but we remain open to other platforms.

There will be multiple phases of development:

Phase 1: feasibility – Is the project technically possible? Can a simple application pull data from a remote ms-sql db with acceptable performance?

Phase 2: prototype/sales demo – If Phase 1 is completed, developer should then configure an app that can be used in sales demonstrations and loaded onto a few Android devices (most likely Droid X)

Phase 3: release public app – a refined code base of Phase 2 will be released for public download on the Android Marketplace and for web download.

Phase 4: iOS version of same app

If you’re an Android optimization nut, then you might be a good fit for this project.
 

bluedude

Well-Known Member
Licensed User
Longtime User
Can be done

Hi,

This is all very doable just as it would work with iOS. Performance wise it might actually be faster because some Android devices are blazing fast.

You could use a combination of local encrypted cache (even server cache like APC) and an API to do the database access.

Unfortunately i'm not available right now. What you describe will be covered by a complete framework i'm working on:

- scalable backend infrastructure;
- API to access data;
- server and client caching;
- Location Based Services integration;
- unified UI;
- user roles model on the backend side;
- authentication (both oAuth or custom);
- statistics;
- etc;

When this is done any application can be done fast. So all the points I mention can be done in Android for sure.

Hans Blaauw
things.io
 

NeoTechni

Well-Known Member
Licensed User
Longtime User
Phase 1: feasibility – Is the project technically possible? Can a simple application pull data from a remote ms-sql db with acceptable performance?
yes. I've done it. But this isn't how you should do it. Outside sources should never have direct database access. You should have it go through a filter (ie: a php page) that prevents damage to the database.
 

trophyfish

New Member
lots of tire-kickers - no takers

I can't believe that I've not gotten a single email regarding this job. I'm a bit surprised by this. I could do this myself if I had the time, perhaps everyone else is in the same boat?

I've already accomplished half the sql connection tutorial and tested it using the demo, went pretty quick.
 

trophyfish

New Member
read only user

yes. I've done it. But this isn't how you should do it. Outside sources should never have direct database access. You should have it go through a filter (ie: a php page) that prevents damage to the database.

We could use a read-only user in the connection string.
 

joseluis

Active Member
Licensed User
Longtime User
I can't believe that I've not gotten a single email regarding this job. I'm a bit surprised by this. I could do this myself if I had the time, perhaps everyone else is in the same boat?

Well, in my case I'm developing my own project while learning to code in b4a proficiently, and I don't want to bite off more that I can chew. Apart from that I still have 8h daily job so...
 

bluedude

Well-Known Member
Licensed User
Longtime User
Do it the API way with server caching, SSL and user tokens. Use PHP classes and be care full with SQL injection.
 

eps

Expert
Licensed User
Longtime User
We could use a read-only user in the connection string.

Really? #securityfail

Think again..

Like most here, B4A is an extra string to the day job... I wouldn't be able to give you the time you required for such a project.
 

COBRASoft

Active Member
Licensed User
Longtime User
This is really doable. Some REST WCF Services to fetch the data through JSon format (very optimal and low overhead). Even paging could be done if needed to go through the data.

You lost me at phase 4... No iStuff for me :).
 

timwil

Active Member
Licensed User
Longtime User
Yes it is do-able (how many things are not???)

I am interested but not in the iOS parts

I also would set up .php files to access the database and simply have the Android application access via the web pages
 

NeoTechni

Well-Known Member
Licensed User
Longtime User
We could use a read-only user in the connection string.

That's security through obfuscation.

What I did was have everything go through a single PHP page (api.php) All the parameters are passed in the URL as GET variables

I had a few preset actions, and they returned all the results as a CRLF+comma delimited text file

Even IF somehow someone managed to get past that page and access my API, everything also has user permissions. Only admins can edit the database. And they have to log in via the webview.

And that's not even the end of it. I encrypted the ID code, so people can't change it on the device to pretend to be another user.

I would offer to do yours, but I don't have any where enough free time anymore.
 
Last edited:

walterf25

Expert
Licensed User
Longtime User
I think i would be able to handle a project like this, although i have not done any iOS myself, good luck, there are lots of individuals here who are experts in basic4android, i'm sure someone will pop up and take the challenge, otherwise contact me and we'll see what we can do!
 

COBRASoft

Active Member
Licensed User
Longtime User
Another possibility is using HTML5 + CSS + AJAX. This would run on iOS, Android, Windows Phone, ... Something to consider for a 'table viewer'...
 

jprovan

New Member
Licensed User
Longtime User
I am interested. I do iPad/iPhone apps and have just recently written several B4Android apps.

PM me.
 

Molando

Member
Licensed User
Longtime User
Security

Just another voice aggreeing with the others. Whatever you do, do not let anybody have access directly to the database.
As others have said, unless you want to be hacked, then set up an asp or php page.
The code behind the page must either run the query as linq (which parameterises the query), or you pass any typed values as parameters, or even easier, you simply scan every input, and remove all ', --, control characters etc. Also make sure the text input can be turned to the type needed in the database.

SQL injection is jolly easy, on each site I have been asked to check for it, it has taken under half an hour to get to the stage where I could get all usernames and passwords, or wipe data.


Speed wise, this language will be more than fine. What you are after is easy, and only requires tiny processing power.
C++ runs around 14 times faster, C# via mono is about 8 times faster (EDIT: Compared to Dalvik, but unless you are writing a 3d game, or massive calculaitons, then speed to that scale is not important.)

The project is very possible, would not expect any problems at all, unless ther is something you have not mentioned, should be simple. Only part that will take some time is getting a nice looking layout for varous resolutions and portrait and landscape.



Regards,
M.
 
Last edited:

Molando

Member
Licensed User
Longtime User
part 2

Nothing on TV, so will add a little more to this.
The text data will be quick, as the amount of it is tiny.

It goes without saying that you send the data in chunks, then break it when it arrives. There is probably not enough text being sent to make it worth compressing. If it is 500k plus, which I can not imagine in my wildest dreams (have very dull dreams), you could compress to around an 8th to around a 20th of the size depending on the compression type. I would use basic zip as very quick to uncompress.

Pointless to compress the images if they are Jpeg, as the images are already compressed.

The graphics could be a problem.

If it was me doing this, If I was showing say 7 results per page, I would only send over a mini low quality image for each store. When they are on the first page, I would pull down the next couple of pages worth, so if they start flicking through the pages the data is already there.
So as soon as the query is done, the mini imges for the first page appear straight off, then while they are looking at the first page I would pull down the next couple of pages.

If there are hundreds of entries coming back, then if they are spinning through them quickly, then I would just show a placeholder till they stop. Then do the trick mentioned, where I pull down the images for the page they are looking at, but then rather pulling down the images for the next two pages, would pull them for the pages either side, then whichever direction they are moving, follow the momentum.

You could always send all over in one go, but I would not like an app downloading two megs of images when I do a simple search.

When the app first runs the user should be able to choose if to download images when not on wi-fi.

I would also probably store down the images from the last five searches. Any older ones would clear from the system.

The reason for this, is that there is a good chance the user will look up the same details more than once.

I would precompute the mini images and store them in the database.

When they click on whatever to see the full detals for the entry, would then download the larger image.

One last thought, I would probably try having the larger images outside of the database, and see if there is a speed improvement with pulling them down with a http request or having a program serve them. If possible loading them into memory and streaming them out when the app requests them. It really depends on how many users, how many images, and is the speed improvement worth the extra work.

Regards,
M.

p.s. I have no interest in writing this.
 
Last edited:

COBRASoft

Active Member
Licensed User
Longtime User
@Molando: how do you know that C# through mono is about 8x faster than b4a? Is this for everything, only gfx or only cpu calculations? Don't forget that MonoDroid costs a lot more than b4a too :).
 
Top