This article really nailed it. I spent two months last year in the D.R Congo and in those 2 months I had approximately only 4 hours of coding.
Electricity was reliable only between 11PM to 5AM and we spent New year's eve in the dark.
My data provider had a special 3G plan where you get 1Gb data between 12AM and 6AM for $1. This worked well for the first 2 weeks only then connection became non-existent. The only thing the provider had to say was "sorry but we don't have coverage in your area."
Yet I met some brilliant folks who would make amazing programmers if only they had access to all the resources we get with reliable internet and electricity. I spoke with many of them about starting a computer club where we meet weekly, share ideas and learn from each other. Some were kin but many were skeptical because they're used to unkept promises.
Edit: Forgot to mention that the state has installed fiber optic in some parts the capital city but nobody wants to use it because they know the government will abuse it and extort millions from users. And the country's ccTLD .cd is still one of the most expensive in the world.
I wonder if Joey Hess has any advice he could offer to people in such a situation. He's obviously optimized how to be productive out in the middle of no where with limited network connectivity.
I reckon a big piece of being productive involves learning how to get as many needed resources available offline as possible. If you have offline resources, your biggest hurdle is limited to electricity availability, which I imagine can be solved with batteries and renewable energy.
I minimise costs by using a mix of GAE and AWS: Host the main application on GAE but for background services use AWS. E.g I use AWS SES for mails and S3 for storing uploads and blobs.
Also storing objects that don't need indexes as pickled blobs in a parent model helps a lot. The advantage over JSON is that you don't need extra code to parse, (de)serialized and validate the object.
Elasticsearch is really awesome for keeping large amount of searchable data. I used it in a previous application where we stored millions of items a week.
For data retention I had different indexes with different TTLs, depending on the type of queries that hit them (queries that only dealt with frequent items were sent to an index with a very short TTL).
+1. If you just replace "smaller" with "less armed", you get the history of most Sub-Saharan African countries in a nutshell. Unfortunately the schools there still teach more history about medieval Europe than post-colonial Africa.
In addition to vukmir's suggestion of Robert Sedgewick's Coursera video lectures (which have some animations to help visualize the data structures operations), I find "The Algorithm Design Manual" very useful for interviews. The chapters dealing with data structures are concise and contain just enough information to be useful during an interview.
Electricity was reliable only between 11PM to 5AM and we spent New year's eve in the dark.
My data provider had a special 3G plan where you get 1Gb data between 12AM and 6AM for $1. This worked well for the first 2 weeks only then connection became non-existent. The only thing the provider had to say was "sorry but we don't have coverage in your area."
Yet I met some brilliant folks who would make amazing programmers if only they had access to all the resources we get with reliable internet and electricity. I spoke with many of them about starting a computer club where we meet weekly, share ideas and learn from each other. Some were kin but many were skeptical because they're used to unkept promises.
Edit: Forgot to mention that the state has installed fiber optic in some parts the capital city but nobody wants to use it because they know the government will abuse it and extort millions from users. And the country's ccTLD .cd is still one of the most expensive in the world.