A moderately ambitious talk by Matthew Might is Winning the war on error and it references this very paper.
Git is bundled for Windows as Git bash and includes the most important *nix utilities. I only heard good of it. Once you have WSL on Windows 10 I guess you can have all the important things, you just install Ubuntu or any other supported distro and then WSL emulates syscalls. I don’t know if it support different partitions/filesystems.
Adding support for accelerometer interrupts to my watch firmware, especially step counting and tap detection.
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 are many fitness bracelets/watches featuring the nrf51 or nrf52 and the Tommy has even a custom firmware which is open source. I have been working on a replacement but there are still many hours of work to be done.
This post from EFF does explain the problem a lot better than this website/presentation, it got unnoticed but was very interesting.
Also interesting is using a font with ligatures specific to programming such as FiraCode
I tend to try apps on F-Droid but these are the one that stuck with me
I always used charles for this kind of traffic inspection but HTTPS would be an obstacle. Unfortunately you can add certificates to Android but won’t be used by all apps so it’s kind of pointless. Sometimes you are very lucky and the developer just check that there’s someone responding with a valid certificate without actually validating it.
All the HTTP and HTTPS traffic will be intercepted (and, if neeeded, modified) by bettercap. If the app is correctly using public key pinning (as every application should) you will not be able to see its HTTPS traffic but, unfortunately, in my experience this only happens for a very small number of apps.
I don’t really like pinning for websites but maybe it’s the right choice for apps?
This reminds me that we are still light-year away from the simplicity of hypermedia when embedding software. I understand their objective is to “Run Program Faster Anywhere” but once you show the polyglot approach I will ask if it’s possible to do it inline and mix languages. Very sad to see that it’s not possible (yet).
Also the examples are missing a “start from python”, is it possible? Silly me, there is
VMs written on Graal/Truffle effectively do inline by runtime AST specialisation. The various languages share a common AST representation whereby nodes can be specialised and compiled down to native code.
Cross-language tracing has also been done with RPython: http://soft-dev.org/pubs/html/barrett_bolz_tratt__approaches_to_interpreter_composition/
(disclaimer, I’m one of the authors of that linked paper)
Even the Parrot vm had the same very simple and abstract instructions and you could run every scripting language on top of it. What I was trying to point out is that mixing different languages in the same source code is still not a thing. I was thinking at % magic commands available when using ipython, like %R to call some R code.
It’s not a widespread thing, no. Probably because it comes with some tricky practical challenges (type conversions, performance, grammar composition, …). Nonetheless it can be done efficiently. The paper I linked allows Python and Prolog code from the same file to be JITted. Later we published a paper showing that we can JIT PHP and Python code from the same file.
The real question though is, is that level of granularity useful? Our PHP/Python system allowed cross language closures between arbitrarily deeply nested scopes, but we didn’t find any particularly compelling examples of why that might be useful :P
Wireless Community Networks are very interesting and requires much work. You can choose different routing protocols, different hardware, different firmware for your equipment and then you have to do the work of mounting it somewhere high and do the same on the other end
Litigate the hell out of them. Other than that good luck! I would not tell right now anyone as you may be bounded in litigation to not disclose anything, common law is different that the rest of the world.
Would you share your experience of “litigating the hell out of them” with the rest of us? I don’t understand how you have enough information to make that decision here, and would be helped if I understood any prior experience you had that informs your statement.