Long story short Internet access is becoming more and more unstable, probably will go completely out within the next week.
I want to know what can I do to utilize my free time to be a better developer, but almost every development environment/learning resources requires internet access.
- I have 1 YOE as an Android Developer
- I am self-taught
Depending on your current skill level perhaps the following would help.
I would recommend getting a book on each of your interest areas of the stack and work through them ~2 hours per day per book.
eg: a curriculum could be:
- A book on linux, android, or iOS operating systems. Learn about filesystems, reading binary files, and at least one binary file layout to get a sense of "it's all just data" (Hexdump or C)
- A book on networking (learn all the OSI layers, practice working with the various envelopes, see them in TCPdump / Wireshark or other sniffing tools
- A book on internet like technologies eg: https://hpbn.co/
- A book on Frontend development. perhaps React
- A book on Backend development. Perhaps something about making HTTP + RESTful + JSON apis (alternative GRPC development)
- A book on a datastore of choice, I recommend postgres and you can grab the manual and books from here: https://www.postgresql.org/docs/
just my 2c of how I'd spend ~1 month per book offline but still progressing.
The hardest part is going to be the discipline to actually work at it every day consistently and for more than like 15 mins :)
https://meta.wikimedia.org/wiki/Data_dump_torrents#English_W...
You can also download Android documentation:
https://androidsdkoffline.blogspot.com/p/android-offline-doc...
You can KINDA download MDN (very YMMV and $$$):
https://developer.mozilla.org/en-US/plus/docs/features/offli...
https://rutracker.org/forum/viewtopic.php?t=5705905
The first post includes an index that leads to a dozen more dumps, grouped by programming language and/or field. Look for links named "Скачать".
If you manage to see this comment before moderators remove it, good for you. If not, at least I tried — there's no contact info in your profile to contact you privately. (Sorry dang. I've been through similar shit and the last thing you care about in that situation are "intellectual property rights" of some Mr. Moneybags from the opposite side of the globe).
This is still useful after the conflict is over, as rebuilding infrastructure can take decades, and the container could be beneficial if hosted e.g. by a school.
You could create a mesh network that links local organisations to the Petabox without being initially connected to "the" Internet.
In any case, I wish you personally well and peace to your country!
I don't think not having internet doesn’t suddenly make you 10x productive or 10x focused. You are the same person with and without internet. Just admit that upfront.
So, prep for it and try to replicate what your habits are with having internet.
You can download a few learning resources but please don't go overboard. Focus on one thing you want to finish completely. Don't go on a downloading spree.
But before you go just download a couple of IDEs and all the documentation for them and the language you want to use and install all the libraries you might think of using. Then turn off the net and see how it goes.
Or just download Emacs and a bunch of elisp resources. The create some applications and tools in Emacs. It is pretty self contained.
We used to write huge applications without any network access of any kind.
Good luck out there!
Computing systems would be a good subject to study. I'd also recommend downloading Ubuntu to a self booting flash drive. Linux has a lot of useful developer tools for someone without internet.
https://ubuntu.com/tutorials/create-a-usb-stick-on-windows#1...
https://www.facebook.com/permalink.php?story_fbid=2110408722...
Make the best of a bad situation by going deep into only one important and difficult and relevant for your future career subject. Pick one good and complete resource. E.g. a well regarded book with plenty of coding exercises, or a well documented open source project, complete with documentation etc. Then go over it line-by-line, understand and replicate everything, make it your own.
This approach will minimize that you will need random other resources. Hopefully at the other end of it you'll have a new and powerful tool in your toolkit. What is the best project to focus-on? you know better. Something orthogonal to android app development would be one direction. Maybe learn python and a backend framework like django that has excellent documentation. But taking android to the next level makes sense too. You know where you want to be.
Lets hope that at some point we'll learn how to live in peace and stop wasting human life and talent.
Also, for variety, I may discipline my thought process further by learning mathematical proof techniques. The extra discipline will help me acquire knowledge of deeper subjects, with less effort.
Other comments have great pointers for downloading docs/books/resources offline. Also textbooks are underrated.
But I would do three things (some of which I see mentioned in several post below):
1. download as much as you can – wikipedia, stackexchange (e.g. https://archive.org/download/stackexchange), openstreetmap; possibly, set up a local wifi router to allow others to access these and, if you keep it technical, it might be that this will enable you to get in touch with others with similar needs, which should keep you learning together as much as possible
2. if the conditions allow, try and get your hands on StarLink. Getting a dish and router might be problematic. But if you like diy and assuming you can actually sign up to it, it should be possible to self-build a connection kit using spare parts and an ordinary sat dish.
...which brings me to...
3. consider getting into ham radio. This, once again, depends on the situation in the country, and whether licensing is an option or not. But, providing you can and that you have electricity, this could get you in touch with others, who will usually be techies and may be able to also answer coding questions (although this is a willingly long stretch). And, albeit at very low speed, Internet via ham radio is itself a possibility, e.g. https://spectrum.ieee.org/build-a-longdistance-data-network-...
All the best to you, and I hope the situation improves quickly!
This is a little server you run locally and point your package managers like Gradle, pip, npm, etc. at it and it will grab dependencies from their upstream and cache them locally to be available offline later. Once you get it setup go wild adding every dependency you can think of using so it preloads the cache with good stuff. Unfortunately offline caching for package managers is really hit or miss and rarely a priority to support, so expect some pain getting it all setup. Good luck.
Also if you haven't already consider installing and learning languages with a good standard library so you can install them once and do a lot of stuff. Python, go, and deno are really good options with capable standard libraries out of the box. Avoid nodejs or similar minimal/no standard library languages. Rust is surprisingly bad/hard to use offline in my experience too (cargo constantly wants to hit the internet and needs a lot of handholding to play nicely).
SICP exercises, "learn to code" books are generally structured that way. 'How to build X' books are similar.
Not a suggestion necessarily, but 'Land of Lisp' is mostly taught through author-guided tutorials and how-tos for small projects. I imagine that format would be useful in a disconnected area.
- Download as many ebooks as possible. You can try using websites like libgen.rs(or search the r/piracy subreddit for alternatives)
- Look for software like Briar, which allows for local communication over Bluetooth, WiFi, and of-course the internet. If you have an android phone, download an APK for it(and keep a backup of it to share with others).
- Host a local linux mirror for whatever distro you wish. Also download all the manpages.
- Download a copy of Wikipedia
- Consider setting up projects like Internet-in-a-Box, which aims to provide offline access to digital resources(including some of the suggestion I said above).
I hope these suggestions are helpful.
Figure out how to use your environment offline while you still have some access. Nothing is a replacement for actual experience. It's not going to be the same, the main thing you will miss is dependencies, but that can be a good thing - it will force you to be more minimal, write less glue code, and get your hands dirty which forces you to understand more of what's actually going on.
Just make sure you have access to all the reference material you need to figure things out without stackover flow and using other peoples solutions (dependencies).
This could be done on Linux, Windows or even a real-time OS like FreeRTOS. Could be on a solar-powered Raspberry Pi or something that requires almost no other infrastructure.
Is ham-radio based networking an option? Could be useful in crisis areas.
Tech changes a lot, but the basics of math and CS don't.
Linear Algebra shows up a lot in graphics and machine learning, study algorithms, even funky weird ones, implement them anew.
Learn discrete math, and numeric methods, differential equations and calculus in general. Brush up on statistics.
Download papers now, keep a backlog of them on some area you like.
Heck, there's so much to learn that a few lifetimes are not enough, and the beauty of foundational knowledge is that it's technology agnostic.
I would also get something like a couple full TV Series and audiobooks. there's some playlists of panel shows on youtube that you can yt-dlp.
There's also fullstack programming environments around. but if you're only interested in android then...
If you have the bandwidth I would get two IDEs, maybe Android Studio and Eclipse and give yourself some projects to do.
Also, if you have the time it's not a bad idea to familiarize yourself with blender.
probably easier you find someone to sponsor you like internship and you move to some place that has better connectivity (maybe border town)