Ask HN: Is there a pure SMS based UI?
I’m traveling to an area of the world where the only communication medium I will have available to me is unlimited 140 character text messages. I’m wondering if it is possible to set up a computer that will allow me to fully interact with it via SMS. I’d like to be able to do things like check the news, read and reply to my emails, check on the status of my home and other servers. What is the state of the art in SMS based human computer interaction?
121 comments
[ 2.8 ms ] story [ 182 ms ] threadin lots of ways, it's console UI with additional length limits I guess? Or chatbot-UI.
Might be worth looking into Starlink, if you haven't already. I know it does have coverage in at least some regions of the state now.
Source: have lived in Alaska for many years.
A ssh-through-sms tunnel would be fun
_SEND_
You can send an email over SMS I believe by texting the email address.
So you should be able to set up a server to process emails you send to a specific address and trigger commands in response to it. the triggers would need to be set up in advance, but other than that you should be able to do anything normal
_RECEIVE_
For receiving SMS - I am not sure tbh. You could use Twilio, but it might be overkill. I would jsut make sure whatever solution you use doesn't get automatically blocked by the ISP. I am not sure the proper way to flag something as wanted / intended
And it means someone has to have compromised both your computer and your SMS in order to defeat the 2FA. Which doesn’t make it impossible. But it’s not trivial to coordinate those things.
https://www.cnn.com/2020/03/13/tech/sim-hack-million-dollars...
https://youtu.be/caVEiitI2vg?t=145 (tldr he got cold called to set up 'extra security', gave the attacker a PIN number, and the attacker used that to impersonate them within a T-Mobile store and swap the sim card from the phone into a new phone, thus receiving SMS 2fa codes for their accounts).
[1] https://en.wikipedia.org/wiki/SIM_swap_scam
[2] https://www.schneier.com/blog/archives/2016/08/nist_is_no_lo...
Never done anything like this but I imagine that it might not be too hard since the infrastructure is pretty much there already. However building a "protocol" on top of SMS might be somewhat tricky. You might want to write an APP or something for that.
As for "fire and forget" solutions ... Well, there are email to SMS gateways if i remember correctly.
https://news.ycombinator.com/item?id=9087819
https://news.ycombinator.com/item?id=9107658
I used to have a cheap Huawei dongle connected to my desktop that I'd interact with via awful scripting against gnokii¹. If you're the type of person that likes hacking up your own solutions it can be quite fun to work with.
After a lot of trial and error^wimprovement I found it useful to use gnokii's SMS mailbox export, and run a job to iterate over the exported mailbox periodically. The simple reason being most scripting languages ship with mbox support out of the box, and there are heaps of tools for handling them from a shell script.
¹ http://gnokii.org
Q: How do you get Tasker to read Matrix messages?
So I went looking for "IP over SMS" and actually found this: https://github.com/spandanb/ipos but it's for web browsers only. This old HN thread talks about the same concept: https://news.ycombinator.com/item?id=8304409
You could possibly port something like https://github.com/PiMaker/Teletun to SMS instead of using Telegram. The Python TUN API seems quite elegant to work with, if you can get two SMS capable devices running Linux you can probably set up the world's worst wireless AP.
Some students had the same idea and built a proof of concept: https://www.thomasclausen.net/en/nice-student-project-at-eco...
You could quite viably fetch the latest article from an RSS feed in this space, or reply to an email, even with minimal compression. The less technical the solution is the better.
I would definitely suggest to have some commands built in and have the ability to poll the current state of your service to ensure it's not being abused, etc. You also might need a human the other side to reboot it occasionally, so make it very simple to get back online.
Security is probably a bigger issue.
I know Twilio has a nice SDK for building solutions like that
Thanks for the laugh.
But your point is a valid, OP would have a better experience using even something like RFC 1149.
https://www.twilio.com/studio
https://github.com/ColdSauce/CosmosBrowserAndroid
Without actually looking through the code, I have a few questions:
1. How slow is it loading webpages? I think SMS would be a little sluggish since each message can only contain 160 characters.
2. How do you guys manage out of order text messages? Is there some sort of metadata that governs the order of a multi-part SMS?
Thanks so much for posting this - really a blast from the past.
Our process was
1. Remove all JS and CSS from the HTML file
2. Compress the file into a gzip stream
3. Base64 encode the file
4. Send it as a stream of text messages with some metadata on sequence numbers, etc
SMS uses the GSM 03.38 encoding which is a 7 bit encoding. I think we were working on building a custom encoding scheme for it rather than using Base64's 6-bit encoding, but never got around to it.
I think reddit.com (back in 2014 when it wasn't so fancy as it is now) took about 20 text messages to load, so you can imagine it would take less than a minute.
Edit: I also want to add that I've looked into UCS-2 encoding (here: https://www.twilio.com/docs/glossary/what-is-ucs-2-character... ) but I'm not sure if the decrease in characters per message (only 70 instead of 160) is worth the greater amount of characters (theoretically 36,864 but probably includes many non-usable characters). It would also require a more complicated encoding algorithm, and I'm not sure how well supported this is by carriers internationally.
You should put up a github repo when you're done, regardless of how you feel about the way the code looks. It will absolutely help during a job search.
https://old.reddit.com
For UI, I would look half a century back. ed (maybe with slightly more verbose prompts. Sending a single character is as ‘fast’ and ’cheap’ as sending 100) may well be the editor of choice, for example.
Alternatively, look at speech interface systems, and adjust them for text input. Those typically are more constrained, though.
Keep in mind SMSs are pretty rate/bandwidth limited in your use case. SMSs originally (and probably still in your case) were based on having 140 bytes of freeish data in the keep-alive style pings between tower and phone. So you only get/send one SMs per (on regular devices I believe this is no longer the case).
Can you program the device you will be using, or does it need to be human readable?
One solution might be to run a cloud SMS service. You can set up an SMS endpoint on AWS with bidirectional communication. It would let you write as complex code as you would like to generate/parse the SMSs, and probably falls into almost free at a personal scale.
As a warning as someone who built a little SMS autosender (as I said earlier based on email), be careful you don't accidentally DoS yourself. Consider some way to turn it off. Constantly getting texts on a device without the ability to assign a specific ringtone because the event you was sure was rare happened more frequently was no fun until I changed the code.
In the US it wasn't an issue. What was the trouble? Keep in mind I was sending it to one or two people. I have no doubt it doesn't work on a mass scale.
I've only really tried AT&Ts gateways in the US from gmail, maybe something has changed but it never worked for me.
Edit: Super important. You can turn that feature off per phone number. You (or your recipients) may have told att not to send them
Google 311 (EDIT: actually it was Google 411) let you conduct full searches, local listings, full text turn-by-turn navigation, weather, movie listings etc. You could also call a number and do an voice search that would text you back the results.
Twitter, AIM, Facebook all had SMS based interfaces as well. I remember a privately run system which served up transit schedules.
Was amazing to younger me to be on a bus and able to continue my AIM chats and check the bus schedule without a data plan. You could get useful services sent to your phone and not get sucked in endless feed scrolling.
I still miss its ability to multitask, notify, and switch between apps while providing a full keyboard.
I thought it was a neat idea back when everyone was still using dumb phones.
I had the idea for an all-automatic SMS info service when I jumped in a taxi in Edinburgh to attend a conference overseas and had left my hotel address on the kitchen table. I phoned a friend and said "Google that hotel for me, please" - and when I thanked him and hang up, I realized a human wasn't needed for many tasks like that, as they were well within the capabilities of Natural Language Processing (Information Extraction, Question Answering) even then.
We were proud that the prototype engineered had a 2 s round-trip time, including Web-meta search, answer extraction and SMS-HTTP gateway calls (very expensive back then).
Technology as it should be! Do you think the browser UI dominance was marketing, convenience, something more sinister…?
[0] https://github.com/rapidsms/rapidsms
- https://slate.com/technology/2013/05/google-sms-search-shutd...
It was extremely handy in the pre- smart-phone days.