How international is an SMS long number? [closed] - sms

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
The organization I work for wants to be able to send SMS globally, and it seems like there are plenty of providers for this sort of thing. However, we also want users to be able to opt in globally, and this is more tricky.
I understand long codes are international, and at first I thought that we could just get one long code and be able to receive opt-in messages globally. However, after talking to someone at Clickatell, I found that they sell long codes in ranges, which cover different networks in different countries. This would mean we would have to have multiple long codes, which is both messy and out of our budget.
So I thought that settled it, until I read this paragraph on mNatives' website (http://www.mnatives.com/short-long-code.aspx):
SMS Long code also known as virtual number is a normal mobile number
used exclusively for receiving messages from mobile devices. Messages
can be sent from any international mobile networks, and is received
over the net using our web interface or can be downloaded in real-time
by an application using SMPP. Unlike SMS short codes which works for a
local geographical area within the operator/s footprint, SMS long
codes or virtual numbers that can receive messages from devices across
the world. These are often used to establish a bidirectional channel
of communication between an SMS application or user and the mobile
audience that enables the delivery of information on demand SMS
services delivering Text Unicode or Binary messages.
That sure sounds like one number can work everywhere--is that what they're saying?
I have been researching high and low, struggling to understand all of this, with no luck. Can anyone give me some insight on how long numbers work? Does the reach of a long number vary according to who you purchase it from? Is this notion of a single global long number even possible?
I'd appreciate your guidance. :) Thanks!

Disclaimer: I do some developer evangelism for Nexmo.
Long numbers (essentially virtual numbers), vary as to their reach. Checkout this FAQ from Nexmo (an SMS API) about the reach of Nexmo's numbers: Inbound Reach List (I've reduced the list to those numbers with international reach):
Country International Reach
Australia Yes - see list
Austria Yes - see list
Ireland Yes - see list
Lithuania Probably
Netherlands Probably
Norway Probably
Sweden Yes - see list
Switzerland Probably
UK (+447xx) Yes - see list
Each 'see list' will lead to a specific list of carriers/networks that can reach the virtual number.
For the greatest international coverage, you'll likely have to acquire a few different numbers; however, keep in mind that the cost your users pay to send an SMS to the number may vary as well. So you may want to consider more than just the reachability of the number.
As to cost, it varies per virtual number. Prices per number from Nexmo range for less than a buck to around 6 dollars per month (with Nexmo inbound SMS message are free).

Related

How do I implement a ranking system like instagram? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 1 year ago.
Improve this question
I am developing an app in which people can upload a TaggedImage that can be visualized by anothers.
So the thing is that I want to implement a ranking system that retrieves the data in function of how well recieved is, how new the item is, if it is shared etc,
But, I couldn't found any info that helps me as guide for. I really don't know where to start, it is from the SQL server, from the app service, or another backend service?
Where can I get more practical info about this topic?
Ranking means mapping your potential items to a number i.e. finding a function r(x): X -> R, where X is your set of items, x is some arbitrary item from X and R is the set of real numbers.
In practice you use all kinds of information about your items, also known as features which has a correlation with some actual goal you are trying to optimise. You need to define your goal - it may be related to engagement i.e. the amount of time the user spends using your application, it could also be the amount of revenue this user generates, or the number of likes he ends up leaving during the current session.
Once you have a goal and your features, you need to build a function. It could be hand-crafted or optimised. Optimisation involves searching for parameters that maximise your objective function in order to pick the best ranking function out of some family of functions. This is in essence what Machine Learning is about.
Endless books have been written about what features you might want to use for your particular problem, what objective functions you might want to use to achieve your business objectives and what algorithms you can use to increase your chances of finding a good set of parameters.
So I won't go into a lot of details but I will give you a few pointers on each of the three issues.
Features
Number of total likes for this item
Number of likes today
Who posted this item
When it was posted
How many comments were left
Who liked the item
The caption text
Hashtags used
The image itself
Objectives
Engagement with the item (like, comment, dwell time)
Engagement with the application (likes, comments, dwell time, posts)
Item diversity
Algorithms
Boosted Decision Trees
Neural Networks
Image Classification (for binary events, regression otherwise)

MMO Server functionality in Unity3D [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
I've created a multiplayer server for Unity that works like this:
Every client/player connects to the server and says 'hi'.
Server accepts the player and adds him to the players online list.
Every client start sending his position.
Server listens for client's positions and X times per second sends them to all other players online.
This is made by one bucle on all online players, so the server is configured to send say 10 times per second the updated positions to all the players.
Every client listens the server for other players position. When the server says "this player just said he's there", the client moves him there.
With this basic system, I can create a multiplayer game with Unity easily (already did it). But what if there's more than a couple of thousand players online? Then, say that every player sends his position to the server about 10times/sec. And the server has to send those position to all players around, say 100m. So, the server would run a loop for all online players (2000) comparing his position with the all 1999 players and if it's less than a 100m, send the position to the player. Or, maybe better, save all the players updated position in one array and send it to the player. (Only one message every 10s to the player should be better than hundreds, right? Anyway, the loop has to go through 2000*1999 10 times per sec, that could be painful..
I want to use Unity3d as client, I don't want to hold any physics on the server because using the unity's physics engine is good/fast/easy to work with. And I think it could be enough, maybe do some anti-cheating checking on the server-side just to get rid of badplayers.
Now, the questions :)
How does a proper mmo server work? Does every player send its position to the server X times per second and it goes through that HEAVY loop and sends his position to all players around? what about performance?
I would implement a prediction system for the next move and interpolate the current position wit the updated one received from the server. is it right?
If I have to detect player collisions with each other or with objects (bullets and more) would you do it on the client-side? or implement a players-player & player-object collision detection system in the server side and do it in the big loop?
If the player moves is with the keyboard so it doesn't have just a single position to go, how would you send the position to the server, like 10times per second and interpolate the position received by other players to create a smooth movement?
If the movement of the players is by setting force physics to them, like when you go forwards it's because there's a strength pushing you, how would you transmit this information to the other clients? Send just the position to the server and it sends it to the other players? But then, the physics would look weird... The plan b) I thought of is to send the force used to the server and every clients applies the force received by the server to all the players around them, physics here would look awesome but maybe there's a latency problem... Would it be good to use this system and send the exact position every X time? say .5s?
Well, I think this is all! I hope this post can be useful for other indies!
I won't try to answer all your questions, sorry. It would be too long answer. Seems like you need to read a lot of stuff about game physics.
Shortly, if you have large number of online players you need to start thinking about server cluster and scaling. There're two main approaches:
Instances: you have multiple copies of your virtual world/map each handled by separate physical hardware with a hard limit of maximum number of players. Then you start reading about matchmaking.
"Shared universe": split your world to sectors each handled by separated physical hardware. Much more challenging to implement. Can support seamless world.
You can find tons of useful info on www.gamedev.net.

How to break a user story that changes something huge internally e.g. underlying data access layer [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 5 years ago.
Improve this question
We have a few products with one of the product use flat files for persistence.. Other products in the suite can use that data (via API) but only one at a time..
We cannot put the whole files in DB as its huge data.. 20GB+.. but still we have found a solution where some data can be put in DB.. e.g. user interpretations, meta info, markups etc..
So the story is like:
"As a user i can concurrently access product A data from product B, C and D". That is huge i.e. approx 6-8 months
Even if I keep it as "As a user i can concurrently access product A data from product B". It’s still huge.. i.e. approx 5-6 months
Even doing like following, It’s still huge..
"As a user i can concurrently access feature X of product A data from product B". i.e. approx 4-5 months.
The problem is if we can do one thing (one feature, one product) we can quickly do all..
how can i break this story into sub-stories.. or should i accept that some stories cannot be further broken into sub-stories that can fit in one iteration.
PS: we use scrum
Ask yourself (and your team): What makes the story so big? Is there absolutely no benefit that can be shown along the way? Features and products would be the obvious cut, but might not necessarily (as you've shown) be good enough.
How about sub-components of the feature? What are you putting in? Is any of it externally visible or valuable?
Do you have authentication, configuration, or other "standard" aspects of the product? You could cut those out and put them as user stories.
Perhaps the 3-5 month features can be cut down further?
Anyway,
I hope this helps,
Assaf.
What you are describing is what we call an "epic" - it's really a collection of smaller stories that you are describing with a much larger descriptor. I suggest you do some more analysis to determine what parts of the system will be impacted by your request. You might have groupings like Reports, Entry Forms, etc that are individually impacted by the request.
Tackle the impact of the "epic" request on each area as a user story. For example, "Enhance Report X to include data from Product B", "Enhance Report X to include data from Product C", etc. I don't know enough about what you are changing to make the titles more descriptive but hopefully you get the idea. Keep at this deconstruction until the stories get down to the sweet spot of 2, 3, or 5 points each.
The nice thing about this is that it also will allow the PO to make a decision once they see all of the costs for this request. They may decide that we really only need access to data from Product B alone to be successful once they see the costs to include Product C also.
Agile fully supports that some features have a longer horizons than a typical sprint period (2-4 weeks). Certainly the story can be broken down into tasks. In this case, I recommend prioritizing the tasks for this story and burning them down using your scrum methodology. At the end of each sprint, you should still have 'working software' that you can demonstrate / test. You may not have the full feature yet, and that is okay.

Building a Black Net (Peer to Peer-like Network) with Participant Anonymity or Plausible Deniability

How would you programmatically design a "black net" where peer to peer-like data exchange (file transfer, chat etc) is possible but the anonymity of the seeder/sender(s) is either entirely hidden or at least all participants have 'plausible deniability', meaning their exact involvement and/or knowledge of transactions or activity on the system can't be proven beyond any reasonable doubt?
There's a large number of these around (here's a link to a list), many of them OSS. You might be able to leverage design information from some of these.

What is the best low-tech protocol to simulate drawing names out of a hat and ensure secrecy? [closed]

Closed. This question is not about programming or software development. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 2 months ago.
Improve this question
Each year at Thanksgiving, my family has drawn names out of a hat to determine who they'll be a "Secret Santa" for the Christmas gift exchange. It's important to our family culture that no one else in the family knows who each other got in order to keep it interesting. The only rule to the selection is that you can't pick your spouse. If that happens, you draw again and put your spouse's name back in the hat.
Due to logistics and travel plans this year, we're celebrating Christmas early (only two weeks after Thanksgiving).
In order to allow for plenty of time to look for gifts, we'd like to select names now. Our family is located across the U.S.A. Some members have access to the Internet and some don't (e.g. my dear Grandma).
What I would like to do is have a fair protocol that simulates drawing names out of a hat and ensures some level of secrecy without being overly complex. Some websites, like the former drawnames.com or others like it usually require people to put in their email address. I want to make absolutely sure that my family's email addresses don't get abused
so I don't want to trust them to another site.
The best protocol I can come up with is:
Write a program that randomly picks people and ensures people don't get their spouse.
The program will show me half the list but will not show me who got my name, but will show me whose name I have and the person who got my wife's name.
Then, I will leave the room and the program will display the other half of the list of people to my wife (which will include who has my name).
My wife and I will then contact each person and tell them who they have.
Am I missing a better protocol? By better, I mean something that would allow more secrecy. Again, due to logistics and to keep things simple, I don't want to have to build a website.
Get some paper and some envelopes. Number two of each envelope and two of each paper so that you have 2 "1" envelopes and 2 "1" papers, 2 "2" envelopes and 2 "2" papers, etc.
Have either you or your wife write every couple's names on matching papers, for example: you could put your name on a "1" sheet and your wife would have to be on the other "1" sheet. Address the matching envelope appropriately (your address would be on both "1" envelopes in the example).
Turn all of the papers and envelopes over so that none of the names or addresses can be seen (you did remember to write the numbers on the back of the paper and envelopes, right?) Swap places so that the person that did not do the writing stuffs the envelopes. Just be sure to put every numbered paper into an envelope with a different number (e.g.: never put a "1" paper into a "1" envelope). That way, you'll know that A) nobody got themselves and B) nobody got their significant other.
Not every answer needs to involve a computer! Just ask your nearest D&D player. :-P
Here's a real low tech solution. Give the list of names and email address to a friend of yours and ask them to draw the names and email everyone. Hell, I'll do it if you don't have anyone.
This is a software solution.
Put everyone's name and address in a list.
Make a copy of the list, then shuffle it.
If any address in the original list has a matching address in the shuffled list, either shuffle again, or make a random swap until no slots have the same address in both lists. (Do this in software so you're not peeking.)
Print envelopes in the order of the first list.
Print letters in the order of the shuffled list.
Stuff the envelopes without peeking.
This assumes that everyone in your family lives at the same address as their spouse. It also assumes that you can trust yourself not to peek.
Happy Holidays.
Well, there has to be an element of trust since you could easily cheat, but if you want to simply avoid accidentally seeing the gift assignments, how about assigning a large random numbers to everyone, the create a list for everyone of people and their code numbers, and print individual sheets with for each person with the code of the person they "draw". In that way, without the effort of memorizing the number and looking it up on the list, you likely interpret "Bob got assigned to 0785286741234" as "Bob got assigned to Kelly". I'd probably make the first and last few digits the same for everyone so you can't simply recall that Bob got 7-something and there was only one random entry starting with a 7. Bury the differences deeper into the numerical string. See how they get "lost" visually:
0785253451234 Bob
0785286741234 Kelly
0785238761234 Herman
0785200281234 Lydia
On OS X it is very easy to take advantage of the Text-to-speech engine, just by calling the "say " command line utility. There are also ways to do this in windows as well.
SO you could ring up whoever is on your list, tell them to listen for who they should buy a gift for, and put a headphone from the computer up to the telephone, as you tell your program to say the name associated with the person you are calling. They can then tell you if they heard it clearly and that it wasn't their spouse.
Why not automatically send everyone an email? You can put the name in a file and zip it as an attachment to avoid peeking eyes.
You could have your computer dial each person via modem and use text-to-speech to announce their name over the line after an answer. It's sort of like the auto-dialer programs that political candidates and advertisers use to play you a message. Alternatively you could set it up so that your family calls your number and the computer answers. Then they push phone buttons to spell their name and the computer then tells them who they drew.
That way the names can be randomly selected by a simple program, and you don't have to see/hear who gets what names.
There is open source software that can run on linux to do this, although I have never used it. I assume there's an open source windows equivalent.
I assume your entire family has access to telephone even if they have no email.
An easy solution:
Write each name on a card and close it.
For each couple, put one on stack A and the other on stack B.
Divide the singles over A and B. (You have to know who is on which stack).
Assign the notes on stack B to someone on stack A and the other way round.
If there is an odd number, keep one of the singles (blind) apart and assign that to another. (There is a slight chance that person gets himself) but you can counter that by taking the card yourself and swap it with another if it is you.
I don't know if this is too late for you. I just created a web app that will do something very similiar to this - http://www.secretsantaswap.com/
You can import contacts from Gmail/Hotmail/Outlook, and you can designate subgroups that won't be matched with one another (e.g. bill and lisa never want to get each other's names). I email each participant with their target. Participants can have the same email address (for instance, a parent could receive all of the emails for their child).
When we did exchange gifts this year, I suggested http://www.secretsanta.com. My sister was in charge and she didn't have an internet connection at the time so it wasn't used.
If I remember correctly, it can keep track of previous years and can make exclusions so that people from the same family don't get each over.
Use your neighbor:
Prepare N envelopes with names on them.
Prepare N name sheets, that include the spouse names on them e.g.
"Bob (spouse of Molva)"
Then leave the room and ask your neighbor to do the random matching.
Presto. Give the envelopes to the persons either personally or via US mail

Resources