Possibly relevant is this (old, but accomplishing what you describe; not sure about how costly though): https://lobste.rs/s/kun536/radio_e_mail_west_africa_2002
Just read through this from another post above, awesome implementation and really good detail, taking notes down and see if I can get my hand on one of these modems (as well as seeing if using it where I am violates any laws)…
I liked this article: How we built Watsi Coverage without stable electricity, WiFi, or email which discusses a number of problems that sounds like yours.
I’d actually heard of these guys but hadn’t dug into them before. Man what I would give to have a team of people to do development… They’re running a pretty close parallel to ours but we’re specifically geared towards disease surveillance and outbreak management versus long-term health management (though we do stray into that when countries don’t have any viable alternative in place).
Thanks for sharing this, I might actually contact these guys at some point to see if we can integrate in some meaningful ways.
Have a look at Radio e-mail in West Africa? In 2002 Wayne Marshall, working for the International Rescue Committee (now there’s a name straight out of (but much older than) Thunderbirds), used 9002 HF Data Modems by Codan to connect remote computers over 600 km (375 miles) away. The connection was apparently too slow for pleasant interactive sessions, but good enough for store-and-forward protocols, specifically e-mail. The article has a very thorough overview of how they configured qmail.
I don’t know how much these modems cost – vendors seem to operate on an ‘email us for a quote’ basis, which is an unpleasant practice and a bad sign. Found a similar-looking second-hand one in Australia for 350 AUD. Hmm.
Good luck, and go(o)d speed!
This is an awesome article, thank you so much, I was still sort of casting around with articles that were getting far too into the radio technicalities rather than implementation details and this article has spelled it out pretty awesomely. Thank you!
Have you looked at secure scuttlebutt or dat? They are currently being used successfully for helping periodically-connected communities exchange information asynchronously, like remote villages and sailors etc…
We’re working on an implementation similar to scuttlebutt but on top of the C zyre libs for our desktop app, looking at scuttlebutt for possible usage on our mobile app.
I haven’t seen dat before, doing a bit of reading on that to see if we can use it for some things.
I don’t personally have any suggestions that haven’t already been mentioned, but you might want to contact the Rainforest Connection people and see if their stuff works for you. They’re streaming audio out of rainforests via cheap 2nd-hand cell phones and I think there was something with either bigger antennas for the phones or repeaters for the cell signal or something.
Awesome! I’ve dropped them an email through their web form to see how they’re working it. Looks like they’re using much older gen phones as well as basic kits so might be a worthwhile avenue to look into how they’ve accomplished what they have (which is really cool from what i’ve read)
Never underestimate the effectiveness of pressing “sync” on a cheap Android device, then handing that phone to someone in a truck bound for the closest metropolitan.
We encountered similar issues in the RapidFTR project. tl;dr we used CouchDB over wifi, bluetooth, and 3G (mobile data).
Each device runs a CouchDB instance. Workers in refugee zones use their local devices to collect information. The devices talk to a local station, aggregating the information. The local station either has a direct uplink to the Internet, or can be brought into sync with a device that will eventually reach a place with decent Internet. Regardless, the underlying data and communication model was mesh-like. All devices held as much of a full history as possible— for a particular crisis event.
(My colleagues also worked on Ebola projects… PM me, I could put you in contact!)
Oh I definitely don’t underestimate it. That’s where we’re basically at now. But in comparison to PoC situations like refugee camps we end up in less centralised locations which is when it gets trickier. Instead of handling large dense clusters of people were covering entire coubtries or subsections of entire countries. So we have wide rural areas where people going in and out can be few and far between.
Ebola is just a single disease we tack but were active across most of central Africa, the Pacific and parts of Asia.
Africa is the place where we hit the most issues with connectivity though.
Somebody needs to start like a humanitarian software dev working group for all the disparate projects out there so we can pool resources and workable solutions…
Somebody needs to start like a humanitarian software dev working group for all the disparate projects out there so we can pool resources and workable solutions…
IEEE Humanitarian Technology. “Tech4Dev” and the heaps of associated mailing lists.
Considering i’ve been building systems in the humanitarian context for like eight years now it’s pretty shocking I didn’t know about these. I’m sort of under the radar most of the time.
More or less was meaning something like IRC, lobste.rs or similar focused on humanitarian dev projects and people working on them. There are a whole lot of them when sometimes each and every department has autonomy to come up with their own solutions to similar problems.
Will see if I can dig up some mailing lists…
Brainstorming/spewing…
These are all really good starting points, thank you. We dabbled with SMS sending data for a bit and I think we’re going to have to go down that route no matter what to have it as a fallback when data isn’t available. What we may have to do is subvert the telecoms a bit and set up an android app to act as a temporary SMS gateway with a sim in it so we can hit the ground running instead of trying to get a gateway provisioned in country.
Have you tried BGAN? Satellite internet from a panel the size of a laptop. I field tested some of them for a project a few years ago, they worked pretty well and were easy to set up.
We didn’t end up going with them for that project, IIRC because it was for deployment in less remote locations in the US, and they didn’t support the US at the time, and we had good alternatives - cellular data in most places, and we had the transport capability to bring full-size satellite dishes.
We actually have BGANs in some places, From what I understand they’re terribly expensive and we only have a limited number of them, so in a wider scale deployment it gets very expensive very fast to be distributing multiple BGANs and data plans all over the place.
To give you an idea in a non-emergency context, we may enter a country and start with 20, 30, 49 sentinel reporting sites. But if we go into outbreak mode, we’re talking potentially 100s of locations needing to sync data…
Coverage is actually pretty good with them in Africa as well, but maybe what we could do is use BGANs as a data access point and create local mesh networks or something for denser clusters of reporting sites…
Ah, I see what you mean. I don’t suppose you’ve turned any procurement resources your org has towards seeing if you can get any kind of deal on them for being a humanitarian org? I didn’t really see the prices when I worked with them, but I thought it might not be too bad, since it sounds like your data requirements are pretty low.
Might be possible to do something with using them or some other satellite system as the backhaul for a local mesh network. Though I’d be worried that getting the point-to-point range above a few km and not using massive power would get you into an area where everything is either very technically complex or expensive, or both.
I would approach someone like Iridium and see if they want the PR for this.
In particular, their https://www.iridium.com/products/iridium-go/ comes to mind.
Given that you mostly are below 50 KB and that you specifically mentioned Ebola, I assume that a large portion of the work is done in Africa.
In this case it seems like you are exactly the kind of customer the satellite company Thuraya is targeting. See http://www.thuraya.com/pricing-plans for tariff plans. They bundle satellite and roaming charges and there is also a coverage map of the network on that site.
Their coverage is not suitable for maritime use or use in the America’s, but it works in most of the rest of the world.
Called them, waiting for more information, they work through resellers I guess, and the resellers provide and SDK. Basically the units cost around £600 (~$800USD) not including the data plan and you have to use their iridium go app on the phone which has apps in it that are set up to work on the connection, so you can’t use a native app. As well the data is metered in something called go! minutes. Waiting for more information from them.
Holy these guys look hardcore, military grade systems. Doing some more digging into this one to see what kind of offerings they have. Thank you.
I’m unclear if you need to build an infrastructure to support existing software/hardware tools or if you need software (and maybe devices) that is tolerant to the conditions of the infrastructure you have available.
This was recently posted to lobste.rs
http://www.lowtechmagazine.com/2015/10/how-to-build-a-low-tech-internet.html
I like Secure Scuttlebutt. There is also maybe Briar:
SSB and, I think Briar, support building applications on top of the protocol.
HAM, has rules (laws) that may or may not be an issue in places like Africa. For example, in the US, transmissions cannot be encrypted. They can be encoded in a publicly available protocol, but anyone must be able to decode it. If you have those constraints in-country, the data might be of a nature that you wouldn’t want to be transmitting it to the world.
Its existing tools and software (I’m the developer). Essentially what i’m looking to get out of this post is a slew of ideas for what we can do when the best case scenarios for getting data out of a remote place fall down.
Right now the core of what we’re doing is selective syncing of data where the user has control over when they sync their data from the phone or desktop application. We’re moving to something similar to scuttlebutt but implemented on top of zyre on top of 0mq for the desktop application and trying to sort out a similar implementation on android where we can piggyback data through multiple nodes to the end central points.
I actually jumped into ##hamradio on freenode and asked some questions (and got what felt like a little bit a ribbing for not knowing enough about HAM radios) but the gist of what I got out of the conversation was that it’s probably only worth doing if you licence a frequency for use and even then it’s very complicated. I thin kit’s still worth digging into, just not something that could be implemented on a short turnaround time.
What I’m sort of looking at is all these amazing answers and pointers I’m getting from you guys and trying to sort of group and organize them and of the things that we can implement now, implement them so we have multiple modes per platform (ios, android, osx, windows, linux) for getting data to where it needs to go, the criticality in terms of timeframes for what we’re involved in means we need that data as soon as we can for decision making.
I actually jumped into ##hamradio on freenode and asked some questions (and got what felt like a little bit a ribbing for not knowing enough about HAM radios) but the gist of what I got out of the conversation was that it’s probably only worth doing if you licence a frequency for use and even then it’s very complicated.
I’m not one but the ham’s I know are a kind of stodgy but knowledgeable bunch who expect you to have done your reading. Anyway, radio might not be out of the question and will depend on local regulations. In the USA (not true everywhere, for example Canada) there is MURS which requires no license, operates over the 151–154 MHz range (formerly business radio, so inexpensive transceivers), can be used for digital transmission, and can achieve several miles. At least in the USA packet-forwarding/repeating is prohibited which limits some interesting uses. You’ll need to ask someone who has local expertise as to what is permitted in each country.
Use a wifi gun to connect base-stations to each other. You can use similar point-to-point antennas to build cheap ISPs.
That is amazing. I’ll have a look at point to point but looking at the specs on some of the point to point they can reach 12+ kms, but not sure that would be enough. Although in remote clusters it might work where we have lots of villages settlements clustered in a small region where at least one of the locations has a data connection.
We’ve dabbled with SMS, but some of these records are just too large and complex for SMS.
What would be the typical size for these records? Ordinary sms has 140 bytes, but you could use some binary serialization and concatenated SMS (pdu mode) to get more.
We’re generally under 50kb, but we have contact trace forms that have up to 200 fields in them, some variable text length. I did a bit of looking into SMS but part of the problem is getting sims and an SMS gateway in place in country. At one point we were in talks with a local telecom for almost 3-4 months to get a gateway set up before they just stopped responding to our emails and they wouldn’t give us any specs or docs on how their gateways work or even what gateway they were using. This is very typical.
This may be a silly question but are you sending compressed data?
If your software uses the gzip, deflate, or zlib formats, zopfli is a compatible replacement that can generate much smaller files.
You have two different problems in your hands and I think they requires different solutions. Fast updates in case of events and faster (bulk) data upload. SMS and HAM radio are the cheapest possible form of fast update I can think of. It’s possible to do IP routing on radio equipment and I think you can establish a mesh service to provide internet to your user if they can bring some more equipment. Once they are online they can send you data but this leads to delays in update from a user. If your app can do peer to peer replicable data you can ameliorate this problem by sharing your data to others that will maybe come back online before you. Both problems can be solved using these kind of mesh services (hardware and software). A totally different approach is to become an ISP and negotiate peering with other providers, this can cut your bills and requires not that much infrastructure.
SMS is hard to get up and running quickly, primarily because of trying get sims in bulk from whoever the local telecom is. What I was thinking was if we can get away with getting 4-5 sims to provide sort of connection points where we could set up a basic tower or something that broadcasts wifi over an extended area running off a solar battery. We used to have these wires for sat phones that we’d toss up a tree to get a signal for instance. Even something like amplifying the tether signal from an android phone then sending the message over 3g or SMS to the countries application servers. At least we’re then down to procuring a smaller batch of sims and we can spend less time haggling with the local telecom.
Another thing we thought about sort of pie in the sky was drones, basically getting drones to do “rounds” where during the week they travel between locations, sending a notification to local mobile apps that they’ll have access to internet for the next 2 hours, or to plug in the drone and let it charge up so it can continue on it’s rounds, but drones open up a whole other can of worms in terms of regulations and also potentially getting shot down or just downright freaking people out. Even potentially setting up relay drones, where we drop drone “stations” on the way out to remote localities, then use drones to leapfrog to the location to provide syncing, lab sample pick up and leapfrog back to a central location. But they’re cost prohibitive for the complexity of the drone as well as in terms of dealing with local regulations and would only really be viable in a longer-term health surveillance context, would be too hard to get up and running in an emergency ramp-up.
The HAM radio looks really interesting actually. I’m just digging into it, they don’t really need wider internet access, we just need a way to get data from them and in some cases send back some minimal data (for instance, the wait time for a lab result for these guys can be weeks, we can’t do much about the time it takes for a sample to get to a lab, but we can speed up the return time by pushing the lab result down to them).
We’re also working on the peer to peer syncing of data on mobile and the desktop application. We’ve made some prototypes using the zyre c libs that are built on 0mq but it’s finicky so we can’t deploy it yet. The idea being that we eventually get data as users running our apps come into contact with each other and then eventually the wider internet or the ministry of healths or an NGOS installation of our systems.
We’re sort of trying to build as many avenues as possible for them to get data in/out of the locality so there’s almost always an option because the context is so critical.
The HAM radio packet data looks interesting, i’m definitely going to dig into that more and see if I can figure out prototype test for that for shifting data. Thanks for pointing me to that!
The HAM radio looks really interesting actually. I’m just digging into it, they don’t really need wider internet access, we just need a way to get data from them and in some cases send back some minimal data (for instance, the wait time for a lab result for these guys can be weeks, we can’t do much about the time it takes for a sample to get to a lab, but we can speed up the return time by pushing the lab result down to them).
AMPRNet will definitely be your friend here. Much of the foundation exists for you to build on. I’d wager it’s mostly an “amateur vs. non-amateur” question then.
There is satellite based SMS, one such product: https://www.findmespot.com/en/index.php?cid=666. Important events you can almost certainly shrink into an SMS. something like: location 45 ebola +1
Another option is to use a gossip protocol, something like https://www.scuttlebutt.nz/. It’s not really there for Mobile yet, but there are some Android implementations. Basically it lets any scuttlebutt user bring the data back, not just the one who entered it into their device, but securely knowing which user input the data. So the local staff will input the data into their device, and sync with the people that travel across the region(s). As travelers wander into better connectivity, they could then sync to your pub server, getting the data to you, while the local staff are still local doing their thing, and never had to leave. I’d recommend trying to get transport people that travel regularly through the region to be your traveling scuttlebutt nodes (bus drivers, water carriers, etc).
The protocol is described here: https://ssbc.github.io/scuttlebutt-protocol-guide/
The protocol is sufficiently general enough that you can run the git VCS across it.
I run a public scuttlebutt pub here: https://www.zie.one/ if you want to try it out.
In a lot of cases we need a bit more information than what a single SMS can provide.
We’re already working on a sort of gossip protocol using the C zyre libraries on top of 0mq as well as bluetooth, it’s in development still but about 90% done, it’s a good idea, but it’s predicated on coming into contact with someone who is running our apps/systems in a timely manner, which may not be the case in a lot of instances. By the time they come into contact with another person they would probably be in a place that has internet or a connection of some sort.
I don’t know your specific use-case, but at the very least you could easily get, “send someone out to collect more information” out of an SMS. Also, if you encode data, you can pack a fair bit of data into an SMS, given the constraints. But iridium and other satellite communications providers are not limited to SMS, the spot I showed is just the consumer level version of this, but if you are large enough you can reach out to the providers themselves and possibly work out some deal with them.
Cool on the gossip protocol. The upside to doing something like SSB(scuttlebutt) is you get use-cases outside of just your domain, so the chances of people, such as transportation drivers, wanting to use it much higher. The more people you can get running a gossip protocol the faster you can sync your data across large swaths of unconnected/sporadically connected populations.
Anyways, good luck!
Work directly in humanitarian field. Can honestly say it would be hard for me to go back to working for a for-profit organisation or project. But then, it’s not easy working in the humanitarian space at all. Yeah it’s a great feeling to have some kind of positive impact on the world, but at the same time, your failures can be a hell of a lot more disastrous and emotionally, physically and psychologically damaging than they normally would be.
I’m split between my desk and being in the field in pretty remote locations, so I’ve seen locally the effects of what I build and I interact with every single one of our admin users on a daily basis. Every morning I wake up, turn on my computer and am immediately bombarded with things like the number of children under 5 who have died from cholera last night. If you aren’t able to tuck these things away it will emotionally ruin you.
There is no such thing as 9 to 5, you probably won’t have benefits of any kind, you’ll forever be a consultant contractor despite what you do being a critical part of the solution to things and you’ll find yourself fighting to get the funds you need and the commitments you need in order to even do what you need to do at a base line level never mind trying to expand and support more.
I’ve been on the brink of financial ruin multiple times because of contract delays, bureaucratic delays, lack of funding and more. For years I couldn’t get additional funds to pay for the infrastructure to actually power our systems and paid for it out of my own contracted pay, with an ever-increasing cost, my own income was dropping steadily month after month. Being faced with the decision to choose between feeding your family and shutting down critical systems is not a position you ever want to be in.
Do I feel like what I do is meaningful? Oh most definitely, is it challenging? Constantly. Does it impact peoples lives indirectly or directly? Certainly. Am I content or happy in my work? Absolutely not.
I think it’s too easy to conflate being happy/contented with doing something meaningful. Meaning has a different definition to everyone, for instance for me, the people that actively develop the tech that underpins ours are doing immensely valuable and meaningful work, without the work that they do, our systems wouldn’t exist. And that doesn’t just mean the people that build the solutions, but the people that enable it, the people that market it or evangelise it, the people that finance it. All these people have roles that they do that contribute to the meaning that their output has in equal ways. The truth is for most things out there, you can’t really know 100% all the things that what you’ve built are going to be used for. Some projects ask for users of their solutions to tell them what they used it for, but most of us don’t. Even if you develop something small and you think it’s trivial, nowadays it could end up anywhere being used for anything.
Being happy is a completely different thing though, my happiness isn’t conditioned upon the work that I do being meaningful, my work definitely has meaning, but it doesn’t make me happy or content, on the contrary it’s the single most stressful, utterly absorbing thing in my life. The things that make me happy are completely external to it, spending time with my kids and wife, building things with my daughter, watching her learn to read and understand the world around her. My work is challenging, at it’s worst, it’s all-consuming and stressful and involves me flailing about to try and find solutions to complicated problems on my own. That may sound “fun” or “exciting” but it’s psychologically damaging when it’s constant and unabating while you’re dealing with all the additional stresses.
It’s all a bit more complicated than it just being if you do definitively immediately meaningful work you are automatically content and happy or feel like you have purpose. There are so many environmental factors around you that influence how content and happy you are that prescribing “meaningful work” as the solution to unhappiness isn’t really going to make a massive change in your life. If you’re young, you still may not have found things that actually make you properly content or happy in the doing. I can easily list off a number of things that make me content and I enjoy doing that are completely external to what I do for a living. For some people all they might need is a minor pay bump so they have a little more disposable income to do some things they really want to do, or a bit more vacation time to travel to somewhere you really want to go every year, some extra personal time at work to work on ideas and things that actively contribute to the org you work for or expand its vision, being part of a team that has influence within the organisation, being given control over a project, etc… increased responsibility will give more meaning to your work.
A simple example, is becoming the manager of a team. The moment you become a manager, you are responsible for those people under you, you are responsible for leading them to success in what they’re doing, and their success will in most cases directly equate to increased standards of living for them and their families, potentially prestige, increased sense of self-worth, career advancement, etc… even with a small team of just 2 people, being responsible for the future success of those people is definitely meaningful even if they may not look at it the way that you do as a manager.
I think it’s too easy to conflate being happy/contented with doing something meaningful.
Then you’ve never done something meaningful. Keep looking.
Meaningful work (see other post about pointlessness of this conv without definition), that breaks the artificial barrier between ‘leisure’ and ‘work’ and is mostly connected to things that are about wellbeing of you and your social groups is directly related to you and your community being happy and contented. (Also obv. being ‘happy’ needs definition).
If you’re interested in useful ways to think about meaning or happiness, start here: http://neweconomics.org/2018/01/wellbeing-what-works/?_sft_latest=campaigns
As someone whose users are almost exclusively in emerging markets and remote and underserved locations. This doesn’t even touch the surface. I’ve been in some places with a proper broadband connection in an enterprise environment and been completely unable to load lots of common web sites.
Not only that, we’re constantly developing for whatever the latest version of android and iOS, windows. A lot of the world is just getting away from Android 4.4 to be honest.
Just the same with laptops. There are a lot of 1024x768 laptops roaming around out there still, users who skip big updates because they just plain take too long to download or are impossible to download on a flaky or expensive connection. When you see those charts showing the breakdown of the market of how many people are using a specific version of an OS. A certain chunk of those people who are still running Old, insecure, feature-lacking versions that you give a chuckle or tsk tsk to, literally can’t upgrade.
People are climbing to the tops of hills near their villages to try and get enough signal to make a phone call still, we have situations where someone has to travel around weekly from town to town to sync data from users phones because the cell coverage and data have been too flaky.
Another thing to remember is that you might be costing these people real money. You will not find cheap 2gb monthly data plans in some of these places. A lot of people are using the cheapest top up cards. So when your web site eats through their data plan by serving umpteen js files and making a billion calls to external services, serving bloated Ajax payloads, tracking calls, etc… just to load your home page, you’re actually using up a finite resource for a user as they may have to travel to another town or wait ages to be able to afford another top up.
This scales out though to all aspects of a digitally connected existence. Overly designed emails loading external image assets. That png image that you never compressed properly because hey, 1mb images aren’t that bad on your fibre connection. Compression ratios for video streams, ads that stream audio on page load, ads themselves, persistent connections constantly passing data back and forth, etc…
Pages that fall apart when one of the assets times out downloading though the page is sitting there on screen.
I’m not saying that we should strip all of the good stuff we’ve managed to create, or that we should go back to the geo cities ages. Or even that we should always build for the least least least common denominator all the time, but if you’re a content producer or web app or desktop/mobile app that wants to be usable by everyone, everywhere you need to exercise a bit of common sense. If you’ve got a successful app that’s failing to pick up in some key target locales that you wanted to serve, or you have no traffic from for instance countries in the African continent then it might be worth investigating what your product operates like in those regions.
The other half of this is that our innate ability to understand the internet and how it works isn’t the norm for everyone. In the west and developed countries, we have an almost innate immediate understanding of how a piece of software or a web site works from years of exposure to software and technology. We know how a button should look, what a select field does, how urls work.
For some populations, even email is still a foreign concept. I had a user who just assumed that his first and last name @gmail.com would belong to him and he could access it because that’s how email works right?
Or had users who fill out a form and show legitimate fear about pushing the submit or save button on screen because it feels very final and they don’t know what will happen when they do it. It’s a scary door and you don’t know what’s on the other side. It’s all still very much magic.
We have so many people who don’t have email addresses themselves that we started just making up email addresses on our domain (not real accounts). A lot of users put it in as their login having no idea why that funny @ symbol is in their username.
Sorry, rant over. Just this is something that over the years has been a constant driver in the back of my head and informs a lot of my design and development patterns. And it’s more complicated than just needing to minify and gzip your stuff.
Problem is it’s really really hard to develop software to solve problems you didn’t even know existed. I’d love to make software that works for everyone but I don’t know how everyone uses their devices. I don’t know how a colorblind person sees or how a person in africa understands how to use email. And I certainly don’t have the money to visit all these people and ask them. The best I can do is build it to cover all the use cases I understand and people can send me an email or open a bug report if I missed something thats really important to them.
RE colorblindness it’s pretty easy to test it yourself without needing a colorblind person:
I’m not saying that you should build your software to meet every conceivable combination of personal IT experience, connectivity requirements, etc… far from it as that’s pretty much not feasible even for a lot of large teams. In my case, my target users are these groups specifically and I’ve seen the frustration first-hand where people have been asked for instance to install an app on their phone and because all the person has is an android 4.4 phone, the app doesn’t exist for them. Or we’ve had a user call up because their data plan is depleted and the only thing they did was browse some news sites and blogs so we have to top up their sim cards constantly.
I’m just saying, if you’ve got an app, application, web app, mobile app or whatever, and you look and see that you have a high rate of abandonment, or no installs whatsoever in a region and you’d like to have uptake in that region, you need to think about how your product would operate under those circumstances. Even large-scale enterprises are guilty of this from what I’ve seen, so it’s not just a young developer not knowing any better situation. I’ve had big corps pitch their well-developed software solutions for some of our situations and their applications fall flat on their face in the meeting because they just couldn’t deal with the network health in our locations.
If you’re happy to never address the segment of the market then don’t worry about it, but if you want a bigger piece of the pie, you don’t have to travel to Africa to identify potential problems, turn on throttling in chrome dev tools and throttle down to a 3g or lesser connection, Use a connection throttler to test how your mobile app or desktop acts when you run it. Rename your largest JS dependency to something else and see what happens to your page when you try to load it (basic simulate a timeout on a resource). Look at chromes network tab and tally up how much data actually comes into your app when you load the page. Simple stuff, basic common sense stuff.
There was another article on here a few days ago about someone who provides a service that allows people to use WhatsApp on lower-end phones through a browser and people went nuts for it. If you can work around it, you can achieve some great growth.
And I don’t just mean the African continent either, there are plenty of people in rural UK, America, Canada, South America, Europe and the Pacific that are surviving on 3g modems, tethering their cell phones, etc… I can see a major town from my house, but I can’t get any better than a dial-up connection speed on my broadband and some days I have to resort to using a 3g modem to get any kind of internet at all, I have to walk out of the house and up the road a bit to get a good cell phone signal. I can literally pull out my driveway and people have fiber to their property. There are swathes of developed countries populations which don’t have access like you would in a metropolitan environment still.
If addressing these people isn’t a concern, then don’t worry about it, well, maybe have a little common sense with using compression, clear out deprecated and unnecessary code, style assets, etc… (which does go a long way) and carry on with your life. But if you want to grow globally outside of your current market, you’ll need to adjust your thinking a little bit, set some constraints on how big you’ll allow your application to be, don’t import an entire date library just to format dates, give yourself a delay time before adopting newer things like flex-box, etc…
I remember a story from Youtube: They saw bad loading times in their stats and went on to optimize that by making Youtube more lightweight. After the optimizations the stats got even worse! However, the usage went up. A lot more people, for whom Youtube timed out, were now able to use it.
Unfortunately, Google cannot find me the original story. I believe it was some Google blog.
Even a little bit like that goes a long way, long wait times are basically standard on loading a page for some people, so when a page does actually load it’s great.
A weird instance we had once was a user that was using a 3g dongle for their data, and they were requesting a long-running process in one of the earlier versions of our system, the process would run, and they would sit there waiting for it to complete. For this user (and a few similar cases until we changed how the long-running process was called) their view of it was that it was still running hours later even though the job had finished ages before. Took forever to figure out that over his 3g dongle, the connection was getting swapped on the telecom side, when the app responded with the result, the user wasn’t there anymore even though they never lost their actual connection to the internet. The problem was there was nothing in between the user and our servers to report to the user that the request had failed because of a weird time out implemented on the telecoms side. Swapping to a hardline or office wifi and the process completed and worked fine.
I would take a significant pay cut before I went back to working in an office.
I wake up now, walk my son to school, come back home and play with my younger son and have coffee with my wife. I go upstairs to my office when the time comes and get to work. When my son gets home from school, I’m there to greet him and give him a hug. When my wife needs help (un)loading the car, I can run down and help her. On my breaks I can go take a shower or eat lunch at home (much cheaper than buying lunch), etc, etc.
I combat the lack of socialization by going out anywhere between one and four times a month with a close friend of mine who also works from home; we set up shop in a coffee shop/bar/restaurant and work the day together (though to be honest, we do a lot of socializing, since it was pent up).
This has worked for me for about a decade now.
It’s like you’ve been watching me…
But seriously. The extra time I get to have with my kids working from home is just the best thing ever.
Ditto for me since I starting remoting from about a year back.
For socialising, I make sure I get two/three slots of non contact sport a week.
Out of the things I wish I had done sooner, this is pretty much at the top.
Im in my mandated 1 month off per 12 months contract cool down period (ie only give 11 month contracts so we don’t have to hire full time scheme) which is turning into a “I know you’re not on contract but could you do a-z pretty please” situation. Which is impossible to say no to because it generally involves an actual real world crisis… and if I don’t do it they’ll pull a fit and not give me my next 11 month contract.
In the time I do manage to scrape out, been building a kids game in SceneKit/SpriteKit using magicavoxel as well as trying my hand at illustration and children’s writing to see if I can crank out some cool children’s stories. Trying to find a used iPad Pro and pencil for drawing and colouring but might just hand draw and ink some stuff and scan and colour.
Starting and finishing the beach body insanity workout and possibly doing the asylum one. With 2 kids being born pretty close together my dad bod is quickly getting out of control. Wife’s already almost done the insanity workout, and it’s worked awesome for her.
I once came accross the company https://wefarm.org/ which uses a peer-to-peer SMS network between farmers in Africa. It may point you down a route of some kind.
Wow this is another really cool project. Will email them and ask about how they’re accomplishing it. Thanks!
Well well well, look what I just saw on lobsters front page today! https://medium.com/@wizaj/how-a-20-year-old-mobile-technology-protocol-is-revolutionising-africa-with-numbers-744a52cbea92
This looks really promising. I just had a quick chat with a rep at Arica Talks about the USSD codes they sell access to, right now it’s only 4 countries but trying to find out if I can buy sims in one of those countries and use the USSD codes while roaming in other countries!
Thank you this is an awesome find!