What is the software concept behind traffic maps? - maps

A simple question: what is the name of concept that, for example, Google Maps and Waze use to discover and indicate traffic jam?
Is that from users information or something with satellite signals?

There are usually various sources involved and it all depends on which product you're looking at. I might miss a source or two, but these are probably the most important ones:
Location data from mobile phones in the background: Google has its location services in Android that show Google where you are every once in a while. If several people are moving slowly while on a road, it's very likely they are in a traffic jam.
Location data actively shared via mobile phones: Waze is very open about doing this, for example. Whenever you have Waze open, your location is sent to their servers and if several people are slowing down at a certain location, the system assumes there is a traffic jam at that point.
Location data from service providers: many service providers give out aggregated detailed information on where their users are located. This data can be used to estimate how many people are at a manifestation, for example, but also to figure out where traffic is slowing down.
TMC (Traffic Message Channel) via radio: a digital layer (RDS) within the radio signal makes it possible for a traffic management agency to send out alerts for traffic jams, accidents, dangerous weather and so on. This is usually the only source used by built-in navigation systems.
Traffic data from road-side equipment: many countries have a monitoring system for their road network that allows them to see how many vehicles are passing at a certain point and at what speed. This data is sometimes shared by the government with other companies.
Usually the best solution is to use a combination of these sources. Navigation systems usually can't rely on just mobile phone data as they'd need a widespread use before it is possible to detect most traffic jams. Some sources require a lot of fine-tuning and complex algorithms to remove the noise in the data.

Related

How to store payment card information in case of payment processor migration?

I am working on a subscription-based project and I am looking for a way to store card information data in case I would be switching my payment processor provider to another one. In which case I would have to force all users to re-subscribe which would most definitely cause a massive loss of revenue(at least initially). So by having access to the card data I can "upload" card data into the new payment processor and continue operations without outage.
What would be a good way to approach this that would not bankrupt the project from the get-go(ie. PCI DSS certification and infrastructure costing hundreds of thousands of dollars)?
Tokenization (specifically tokenization-as-a-service) might be the solution you are looking for. In short, you send the card data to the tokenization provider, who can then securely store and forward the information where needed. This avoids vendor lock-in with your payment processors (and allows you to easily use multiple processors at any given time). Depending on the provider and how you've implemented it, you have effectively removed a significant portion of your application out of PCI scope.
(Full disclosure, I currently work for Basis Theory, which provides tokenization services. There are other companies that offer similar platforms, such as SkyFlow, VeryGoodSecurity, and TokenEx.)

is websocket good for building geolocalized mobile applications?

Say that I have to build a geolocalized app. What will happen is that:
thousands users will be using it at the same time
while the user will move around the city, will send his geo-location to the app. Then, based on that location, the app will send back an array of informations, update the screen and even, probably, a (google) map
So say, if there are 10000 users connected at the same time, all moving around, there will be really a lot of requests to the app, every second.
I'm doing a little research about the best tecnologies to implement, and I found that maybe using websockets would be a good choice. Is that true?
They say that websockets are good for:
Multiplayer online games
Chat applications
Live sports ticker
Realtime updating social streams
Are they ALSO good for the type of app I'd like to build?
WebSockets is only transport protocol and does not really solves the challenges you will face in development of your application.
First of all you need to decide if you are building Web app or Native app.
Then you need to consider scalability of your infrastructure in terms of concurrent connections as well as preparing responses - based on nearby locations (for example).
Few major questions you need to answer first:
How often geo-data will be sent.
How often updates of other locations should be updated on client-side
How you going to prevent cheating: If I send geo-location of airport while am in totally different place (as example).
On server side, how you are going to store locations data (mongodb has 2d indexing out of the box).
How you going to find nearest points, identify them and send to client?
Searching of nearby places - is expensive task, and requires a lot of optimizations like clustering of space, 2d indexing, etc.

Silverlight Financial Data

Does anyone know of any documentation of how to access bank data via some sort of webservice or other method for use in a Silverlight financial / banking application? Is there any sort of standard protocol or terminology used for this that I can look up online. I'm having trouble finding any sort of information on how this is typically done.
"Access bank data"... Not exactly something banks allow from the outside world. They kinda want to keep things secure :)
If you work for a bank you may well have access to various web services internally. There are standards for data transfers, but every bank will likely have it's own systems.
I'm having trouble finding any sort of information on how this is typically done.
That's probably a good thing. This is typically done by either internal bank developers or consultants. For example, take the Bank of America Windows Phone 7 app (which is a Silverlight app): it connects to BofA's servers, but I would be surprised if the way in which it connects is public information. Because you can use it to check your account, I can only presume that there is a web service hosted somewhere that allows these clients to get this data. I'm pretty confident, however, that the connection is secured, and the details of it are kept hidden for good reason.
In short, banks don't usually expose web services to the outside world for public consumption. Unless you've been hired by a bank to specifically do this, I'm not sure you should be able to.

Creating a local CDMA or GSM network?

I am developing a number of different mobile applications for a number of different mobile devices and I want to quickly test in a local development environment. I was wondering if it is possible (with some sort of hardware) to set up a local desktop CDMA / GSM base station for testing devices over a local personal cellular network. The range does not have to be very far. The alternative is purchasing a SIM card and plans for various carriers but not all carriers/network types are available in our area.
I'm sure I had seen some sort of desktop device that would let you setup local networks for development/testing purposes but can't seem to find it.
Thanks.
About the least expensive such device I know is the Agilent 8960. It's difficult to give an accurate price, since it depends on the options you choose, but you are likely to need to drop about $30,000 or more for a new one.
GSM, GPRS, EDGE, WCDMA, HSPA, CDMA 2000, 1x, EV-DO are all supported, although a box with all of those options in it will be well over the figure I quoted above!
The device has been around for a while though, so you may find something on eBay or via surplus sales and the like.
The upside is that it gives you an enormous amount of control over the cellular environment, and will let you do repeatable throughput tests (something that is really impossible on 'live' networks unless you use statistical techniques and many, many test runs) but the obvious downside is the price!
In a standard network setup you would need an antenna, a BTS, a BSC, a MSC, a GGSN and a SGSN to do data traffic, all horribly expensive and requiring expert knowledge to get the stuff up and running.
If you are interested in experiments then try OpenBSC altough it might be difficult to find BTS hardware.
If you want to buy actual products then have a look at IPaccess. They offer picocell hardware. I am not sure though if their BSC can work without an MSC and SGSN. But still expect a 5-digit price. Tecore also might be worth a visit.
Test and measurement equipment manufacturers might be an alternative as well. There you should check if you actually can branch out the data traffic into the internet or some test server if you need that.
If you want to do this for a living and not for fun, I would assume that simply buying SIMs plus data plans is the cheapest alternative.
You can roll your own cell network! with http://openbts.org/ but stills you need a development kit(Hardware) which is a little expensive. Or you can try to hack your own phone to use it as a radio which is really difficult but cheap.
The answer to this question may be of interest to you also, depending on what your application does:
Testing Mobile Sites
Essentially there are companies that offer a sort of virtual testing service, allowing you test phones with different location and operator combinations.

Booking logic and architecture, database sync: Hotels, tennis courts reservation system

Imagine that you want to design a tennis booking system.
You have 5 tennis clubs as partners with no online api allowing you to check on their side if a court is booked or not: You have to build this part as well.
Every time a booking is done on their side you want it to be known by our system. Probably using a POST request form tennis partner to our server.
Every time a booking is done on our website, we want to push the booking to their system. The difficulty is that their system need to be online and accessible from outside. Ip may change, we have to use a dns updater.
In case their system is not available we still accept the booking and fallback to an async email with 'i confirm booking/reject booking' link sent to the club.
I find the whole process quite complex and was wondering about the way online hotel booking system and hotel were working. Do they all have their data open and online ?
The good thing is that the data will grow large and fits nicely to some no SQL ;) like couch db
There are several questions here, let me try and address each one...
Since this appears to be an internet application with federated servers, using the implied HTTP Protocol makes a lot of sense. This could be done via Form POSTs, GET, or even REST-ful submission of some custom data structure. In the end, the exact approach to use will need to come down to the size and complexity of the information being communicated. Many architectures employ these approaches and often combine them with encrypted, signed, and/or encoded payloads for security. One short-fall to consider with these approaches is that they will require you to clearly communicate all request / response message formats, field ranges, and variations since these mechanisms are not really self-describing. On the other hand, these patterns use very common protocols, are easily understood, easy to implemented, and are typically lean on-the-wire.
In constrast, architectures with very complex structures often chose to use WSDL-based web services. Also driven by common standards, these tend to be self-describing, inherently versionable, although they can take more time and energy to implement. There are a lot of advantanges to web services which are driven by many WS-* standards which may be worth investigating further in your case.
As for the reservation process... many similar architectures will employ an orchestration model such as the following:
Find open booking spaces
Make a reservation for a booking space. This places an expiring lock on a space while the requestor fills in all required booking information. This mitigates against race conditions that could lead to multiple bookings for the same space
Once all required booking information is received and validated the booking is confirmed and permamently locked from use by other requestors
As for the SQL-style DB comment, I can't really say given the amount of information supplied. With that said, my instincts tell me a SQL-style DB is completely reasonable for this problem set. I have databases with many pedabytes and have very high SLA's. You implied a need for high availability and SQL-based databases have a few decades of proven support behind them in this area.
Hope this helps.
I think you will find most on-line hotel reservation systems aren't really on-line. My experience is that those companies (not the hotels themselves) offering on-line booking systems also insist that the hotel itself also books their rooms on-line using the same system.
Everything works fine as long as connectivity is not an issue - and in small motels scenario it normally will. Of course the bigger hotels use the same system the airlines do and they have dedicated communications links for the purpose. The reservations are of course maintained on one central computer with appropriate backup links etc etc etc.
It is very easy for individual tennis clubs to offer their own real-time online booking systems using their own database/website with programs like MyCourts offers however once you want to link more than one clubs facilities then you really don't have much option other than to have a centralized server that both the user and the club both have to use to reserve facilities.

Resources