Ask Slashdot: Programming Education Resources For a Year Offline? 223
An anonymous reader writes "I will be traveling to a remote Himalayan village for year and won't have access to the internet. What offline resources would you all recommend to help me continue to develop my coding skills? I think this would be a good time to get better at fundamentals, since I won't be able to learn any new frameworks or APIs. What about other, non-programming skills to practice and learn? Any ideas?" What would you bring?
Obvious guy says (Score:5, Insightful)
Re:Obvious guy says (Score:5, Insightful)
Came here to say exactly this. Focus on your adventure. Coding will be here when you get back.
Re: (Score:2)
Exactly this. Fuck coding. Live in the moment for once.
Re: (Score:2)
I'm surprised I'm the first person to say this but, there's a lot you can do to improve your coding skills that have nothing to do with coding. Bring books on logic and matrix math and all sorts of things like that, and a whole bunch of paper pencils and erasers.algorithms, core computer science stuff that has nothing to do with programming or even a particular programming language.
Re: (Score:2)
Build your own drone and fly it around to take some nice aerial shots. Just don't do it like this guy [youtube.com]. His drone looked way too nice. He was lucky to recover it from Nepal customs after two weeks. See if you could build yourself a cheap weather balloon, or a foldable motorized flying wing large enough to take the altitude.
Re: (Score:2)
Re:Obvious guy says (Score:5, Insightful)
Do you necessarily have to work on your coding skills? What about enjoying the ride and soaking up the scene?
I was going to say the same thing. Concentrate on being a better person, rather than a better programmer. Travel broadens the mind. Let it do so.
Re:Obvious guy says (Score:4, Insightful)
What do the locals do? (Score:2)
I agree that there will be down time, I'd personally bring a book or three but nothing more than this. This person is not going to be isolated away from everyone else, so will have locals to try and mimic. What would I bring to read? Probably something like "Newton and The Counterfeiter" [amazon.com] for entertainment and The Republic [cambridge.org] for personal development. Both of these books are thick and you can't read either in a day or two. It would probably be good to have a medical book and journal as well.
Re:Obvious guy says (Score:5, Interesting)
Lived in the third world a few years. A long term project will protect your sanity and prevent home sickness.
Ex-pats tend to fill their evenings with either pirate movies or drinking. I had lots of friends and plenty of personal growth experiences, but boredom can be a real problem in the downtime.
Having a bucket list of things you've wanted to do is a great idea.
Re: (Score:2)
Who says you have to program indoors?
Re: (Score:3)
Yes. This. /sarcasm
Spend 24 hours a day, 7 days a week for 365 days concentrating on being a better person, nothing else.
Do not try to keep in touch with your old self. Do not try to work on your education, knowledge or skills.
Do not try to improve anything about yourself except whatever "being a better person" entails.
Force yourself to enjoy yourself for 8.760 concecutive hours without interruption.
I typically do some programming on vacations too. Because I enjoy doing it.
If you're not going to have an int
Re: (Score:2)
Travel broadens the mind.
Possibly one of the funniest things I've ever heard - it never gets old :-)
Re: (Score:2)
Can't he concentrate on being a better person *by* being a better programmer? Or at least *while* being a better programmer? The idea that coding is merely some tedious task with no benefit for the coder or the world is a very limiting view.
Re: (Score:3)
Not clear from the brief question what the poster meant. For all we know the dude is Indian or another nationality in the area and just spending a year at home. Or has been there for a few months before etc. I agree not everything has to be job training but a year is a really long time. You can spend a few hours a day reading a book or hacking something and still have plenty of time to hang out with people, see the scenery etc. If for nothing else even if you make friends THEY likely will be working 8+ hour
Re: (Score:2)
Agreed. I would definitely bring something "just in case". Doesn't mean you _have_ to read it, but sure is nice to have if you get bored or need some extra mental stimulation.
Re:Obvious guy says (Score:5, Insightful)
Re: (Score:2)
Re: (Score:2)
It's nice to think that every single moment is going to be spent talking to people in Nepalese[...]
Where does it say in the summary that submitter is going to be in Nepal? Could be in India or Bhutan.
Re: (Score:2)
Your formatting is wrong too
Put your snark aside
Re:*Second* Obvious guy says: (Score:2)
Soak in the scenery, indulge in the local culture and food, and the only computer you should take is the one you use to store your digital photos on (and the backup drive too). Make friends, do good, and the life experience will look much better on your resume than an additional year's worth of coding skils
Re: (Score:2)
Have you considered that he might want to improve his programming skills for reasons other than his future career? That he wants to indulge in the local culture, and enjoy himself, at least from time to time, through the lens of coding? Not everyone hates the activities in their day job (nor do we even know that coding is or will be his day job).
Re: (Score:2)
Why must he choose one or the other? Why do you believe that working on his coding skills will make his other experiences less meaningful or enjoyable?
Donald Knuth (Score:5, Informative)
The Art of Computer Programming. Two volumes ought to be enough.
Re:Donald Knuth (Score:5, Interesting)
They're kind of a dull read. Structure and Interpretation of Computer Programs [wikipedia.org] and some version of Scheme will be interesting, challenging, and informative.'
Re: (Score:3)
Re: (Score:2)
The short version is The Little Schemer, (and its sequel, The Seasoned Schemer), by F&F. Doesn't get as deep into CS Fundamentals, but is a quick introduction to the world of lambda and functional programming.
Re: (Score:2)
The art of Computer Programming would be my thought as well, but Knuth isn't for everyone. I'd suggest starting it as soon as possible so there's time to put together a Plan B if TAOCP doesn't appeal. The only other book I can think of that really deals in fundamentals is Hamming -- Numerical Methods for Scientists and Engineers. In any case having lived out of a single suitcase for months more than once in my life, I'd suggest taking something somewhat challenging to read on rainy evenings or dealing with
Going to the Himalayas and you need what? (Score:2)
I will be traveling to a remote Himalayan village for year and won't have access to the internet. What offline resources would you all recommend to help me continue to develop my coding skills?
How about a book and a laptop? But why not use the time to learn about a higher meaning to life itself?
Re:Going to the Himalayas and you need what? (Score:5, Funny)
Re: (Score:2)
Ice logistics? Bennet Haselton's your Burning Man man, man.
Re: (Score:2)
I'm going to be working in high tech in Miami for the next year. What activities would you suggest to continue developing my ice climbing skills?
Running, biking/spinning, swimming, and lifting weights. You'll want to stay in shape and work on strength training, so that when you return to ice climbing you're ready to (pardon the pun) hit the ground running.
What's your goal? (Score:2)
That totally depends on what sort of work you want to do with your coding skills in the future, now doesn't it?
Personally I find most people who know C/C++ know little to nothing of the great capabilities of C++11 (and the small improvements from there to C++14). If you have an interest in C++ coding there's no shortage you could learn and practice there, and that's all offline stuff - just get a bleeding-edge g++ and all of the docs you can find. But really, it depends totally on what sort of stuff you wan
Re: (Score:2)
That totally depends on what sort of work you want to do with your coding skills in the future, now doesn't it?
This. Oh, and it also depends on what he/she already knows.
I could say "Download an introduction to C" and then be told "I worked for 10 years coding embedded systems in C using only the standard library." I could say "get an ARM emulator and learn the fundamentals of RISC assembly programming, and then be told "I plan to work in Machine Learning and have no use for machine code."
There are far too many unknown constraints to the question.
Lao Tzu (Score:2)
I would take a copy of the Tao Te Ching.
Pursue knowledge, daily gain
Pursue Tao, daily loss
Loss and more loss
Until one reaches unattached action
With unattached action, there is nothing one cannot do
Take the world by constantly applying non-interference
The one who interferes is not qualified to take the world
Comment removed (Score:5, Insightful)
Re: (Score:3, Funny)
Unless you're going to be a web developer. All that complicated stuff isn't required for that. Just wait it out; perhaps you'll return to a world where the standards work.
Re: (Score:2)
Indeed. Many of the web developers that I know are high-school dropouts.
OP is right though, discrete algorithmic problems are always a fun exercise to solve and implement in any programming language.
Re: (Score:2)
Absolutely agree (Score:2)
Re: (Score:2)
Take a compact course book on tensors, and Einstein's General Theory of Relativity. You'll need to assimilate the first to grasp the beauty of the second.
Thanks for the tip.
Re: (Score:2)
Comment removed (Score:5, Informative)
Re: (Score:2)
Re: (Score:2)
Re: (Score:3)
Re: (Score:3)
This "sheds" (gets rid of) the "load" (electricity on the line).
No, an electrical load is something that uses electricity, not electricity itself. E.g., "that circuit can handle a 20 amp load." And "load shedding" is shutting off electricity to certain users so that there are fewer loads on the system. See this definition [reference.com], for example.
Intro to algorithms. (Score:4, Informative)
Re: (Score:2)
Solar charger, battery, Raspberry-Pi side loaded with compilers
extra boot memory cards..... Hunt the new RasPi with microSD slot
and improved USB power. HTML5 is new enough to study.
Haskell is high on my list as is a good lisp. Never ignore Python.
Re: (Score:2)
Re: (Score:2)
If the CPU is a Ti OMAP 3621 (as I seem to understand it) then it has a Cortex A8 at 800MHz, so it is much more powerful than the rpi.
Comment removed (Score:5, Funny)
Re: (Score:3)
Shave a yak (Score:2)
Shave a yak. I mean, for real...
Can you still download the MSDN Library... (Score:2)
VB6/VS6 came with a snapshot of the MSDN Library for Visual Studio.. do they have a similar product for .NET yet?
Re: (Score:2)
OK, seriously then... (Score:3)
Assuming you can get power, at least sporadically, take a Macbook. Install the latest Xcode, give homebrew control of your /usr/local and install all the homebrew packages that seem useful. Install npm, node, and useful-sounding Node packages. Install rvm, the latest Ruby, and Gems that seem useful. Ditto for any other language or tool you think you might be interested in.
Get Dash, and download all the docsets that seem useful.
Pick an offline-website download solution and load up useful-seeming websites.
Install VMWare, any other OS(s) you are interested in, rinse and repeat.
Make sure you can make a pilgrimage to the one Starbucks (has to be ONE) to get the stuff you forgot.
Re: (Score:2)
If there is no Internet available in the area, it's not likely you can find a working hotspot at Starbuck's or the local library or where-ever you would expect to find one in your home country.
Re: (Score:3)
Assuming you can get power, at least sporadically, take a Macbook.
Why a Macbook? Are they exceptional in battery life? Otherwise I might suggest a heavy duty workstation like an HP EliteBook; they're built pretty solid and would be hard to break if you plan on being away from civilization for a full year where damaged equipment might be difficult to get repaired, and their battery is replaceable so you can bring a sack full of batteries for you to swap out and charge when power is available. Can't really comment on HP's newer ZBook as I haven't seen one in person yet but
Re: (Score:2)
Don't bring anything (Score:2)
Every time when you do something exciting on this scale, any pre-set plans or goals get forgotten in a matter of days as new ones naturally present themselves. So just enjoy the experience and leave stuff home for a year. At most, bring a bunch of paperbacks to read during downtime.
Don't plan on reading too much (Score:2)
I'm going to India for over a year, coming up soon. Although my company is sending me to essentially train my replacements, and then another round after that... sigh, at least the money is good.
I expect to have internet (I don't see how not) but Idk how steady or fast it is in that area so I'm downloading wikipedia on a usb drive just in case. I have my own favorite books, like Pointers on C by Kenneth Reek but that's book specific. As well as some Lisp history and underlying math (original paper).
There
Re: (Score:2)
Re: (Score:2)
Heard the same. Because company is branching out in India itself, I'm expected to travel quite a bit, so I'm not sure on every region, plus mobile internet in between.
Re: (Score:3)
Debian - all of it. (Score:2)
Download all the Debian DVDs. The full repo has nearly everything you might conceivably need in terms of software and dev tools. Make sure you take two copies of the data. The last thing you want is a disk dying unexpectedly. It is safer to have one copy as optical disks. I actually did this when I left for a rural location.
I'd download some Coursera courses and fill my ereader as well.
Of course, the best thing to do there would be to enjoy the scenary and practice mindfulness. I am sure you will be doing t
Re: (Score:2)
I should add... Take Offlike Wikipedia too. The text version will suffice.
Perhaps, the Gutenberg repo as well, if you use an ereader.
That should cover your information addiction. Of course the point of the Himalayas is to force withdrawl.
Paradigm Shifts (Score:3)
Take two paradigm shifts with you. You don't say what your background is, but perhaps c# -> f#, java -> c++, c++ -> android. I say two shifts, because one won't last a year. Rewrite -- don't port, rewrite -- a non-trivial application you've written in the new paradigm.
Stroustrup's book (Score:3)
Bjarne Stroustrup's "The C++ Programming Language", updated for C++11 (4th edition). Seriously. His books are surprisingly easy to read, yet information dense. Because it covers the standard template library and the current paradigms, the information will apply to the interpreted languages. This is if you know the basics of programming, and it really helps have done a bit of C++. He's got another book that's an overview of C++, if you're completely unfamiliar with the language.
For books "about" software, try 'Joel On Software' by Joel Spolsky. I liked it.
I have "JavaScript The Definitive Guide" by Flanagan, but I keep hearing "JavaScript The Good Parts" by Crockford is an easy an informative read. The Definitive Guide is great but it kind of reads like a textbook. I've not read 'The Good Parts' but that's the impression I got from this site.
"Code Complete", "The Mythical Man Month", "The Psychology of Computer Programming" are the standard "about programming" books which are commonly recommended.
"Computer Networks" by Tannenbaum is interesting, although it can get a bit dense at time. It is a textbook.
Writing in natural language(s) (Score:2)
I agree with the idea to study mathematics, as a useful exercise, that would in many cases benefit programmers by giving them a good mental workout, and hopefully reinforce if not expand their understanding of mathematics, logic, and reasoning.
Beyond that I would argue for the study of writing, in a natural (human-oriented) language of your choice.
Programming as a profession, and as an art, is about the meaningful expression of ideas; in a detailed, unambiguous manner that can be processed by a computer. Pr
Hand Crank Dynamo (Score:2)
Hand crank dynamo to charge up supercapacitor, that takes about 1/2 a minute.
The charge in supercap will slowly charge NiCd battery or lithium battery.
Note most battery underperform at low temperature.
Wikipedia. (Score:2)
I wouldn't bring anything that needs electricity (Score:2)
Math text, pencil, and paper (Score:2)
What ever level you stopped at get the text from the next level onward. Abstract Algebra is an obvious choice. Or some other area which may interest you. Geometry, Euclidean or non-Euclidean, is always fun. A few thousand sheets of paper, some bound notebooks, lots of pencils, some erasers, and a pencil sharpener would help too. Depending on where you are at a few boxes of candles might be handy.
A chess board and a book on famous chess games might be fun. Get a description of the games of 'Deep Blue' and se
obligatory XKCD (Score:3)
They have rocks. And space. That should be enough...
http://xkcd.com/505/ [xkcd.com]
A gun and... (Score:3)
one bullet
Re: (Score:2)
You haven't met my mother.
Introduction to Algorithms (Score:2)
The one book that helped me out more than any with my programming was "Introduction to Algorithms." [amazon.com] This book helped me understand how to program efficiently, how to look at problems objectively and speak about them using the language describing algorithmic efficiency, and determine if a polynomial solution is NOT known to exist for the class of problem I am trying to solve. If you study this book, you will no longer be able to be derisively called a "code monkey" after someone looks at the output of your p
one suggestion (Score:2)
fifteen hundred miles of ethernet cable.
I mean, seriously? No internet usually means no power either. Take a book.
wiki (Score:2)
Leech from github (Score:2)
Find a bunch of open source projects you're interested on Github (or whatever) and download them to your laptop. Then take some time to study the code.
Take on of the more rugged laptops (Score:2)
Watch out for your laptop (Score:2)
Seriously, consider a non-programming hobby while there. There's a pretty good chance that anything expensive you bring will be stolen.
Dragon book. (Score:2)
If you only want to carry one slim book, I would recommend "Compilers: Principles, Techniques, and Tools" by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman. It might be old skool, but there is sure to be enough ideas in there to keep you busy on cold nights.
Lightworks, Premiere, Final Cut Pro, Blender 3D (Score:2)
I would recommend that you install a good video editor like Final Cut Pro, Adobe Premiere or Lightworks. You will probably make many pictures and videos, and this is a good time to learn those tools. I myself are learning Lightworks right now, and it's not easy to get used to the different user interface, the different way of thinking. This might be a problem, as online support will not be available. For Lightworks, sometimes you have to login, and that might become a problem - you have to check that. So fo
Why not learn a new framework? (Score:2)
Data storage is cheap and light. Grab a copy of the latest repositories for anything you could conceivably want and play with it. You can download the stackoverflow.com question database, which ought to be able to answer the majority of newbie questions on any popular framework. A local copy of wikipedia might help, too.
TCP/IP Illustrated (Volumes 1-3), Seneca & Epi (Score:2)
You'll come back as a TCP/IP Expert - which can never hurt. That aside, I'd take some serious stoic philosophy with me too. Helps you tune into the mood you need if at sometime you're feeling down. Senecas "Letters of a Stoic" and everything from Epicurous is neat aswell.
Maybe you want to check out a little buddhist philosophy while you're at it, since you're in a place where that's the thing anyway.
Other than that, I'd try to find ways of coping with boredom and loss of meaning. Mingle with the locals and
C and Data Structures (Score:2)
What about? (Score:2)
Take nothing except a bare-bones computer.
By hook or by crook, with the tools you have, build a compiler, then from there build up libraries. Then build up what you can with no external help.
Thousands of people have done this in the past, on new platforms, custom hardware, and just because nothing existed at the time. It's not impossible. And I think you'll learn more from doing that than anything you can carry on a Kindle could teach you.
Programming is about DOING. Any idiot can read a C++ book and und
Really good whiskey (Score:2)
I'd recommend two or three bottles of MacAllan's. If you try to buy local you will end up with Bagpiper or Old Collie, which are as aesthetically pleasing as they sound. Also a single shot and you will make instant friends for life.
Code complete (Score:2)
Project Euler (Score:2)
Download all problems from Project Euler. If you can solve them by the end of the year, you will be pretty skilled no matter what language.
Git or Subversion (Score:2)
Install Git or Subversion on your computer and use that to keep track of everything you do. Being able to go back to previous versions of your programming will save you a lot of time.
Ask Slashdot? (Score:2)
I will never give up my quixotic quest to get you to post "Ask Slashdot" stories in the "Ask Slashdot" section of this site. That section exists for a reason. Use it.
-Fnord666
No Computers; Just Math (Score:2)
If you are truly going to be offline, you are screwed. Even in the pre-internet days I still had to go to the library, the book store, the school, the software store (there were such things), whatever, and connect with people. Basically, it was never long before you had to go back to the source, whatever it was. If you are really going to be offline, you need to go after pure math, not even fundamental CS. I would go check out a couple college courses on topics in math that interest you (cryptograph algebra
Or you could make your own internet (Score:2)
You will then be elected king of the village and carried around on a chair until they decide to use your head in a sack for horse polo. Oh wait, I think I might be mixing things up here.
A debian mirror (Score:2)
Mirror yourself debian in at least the i386 and "all" architecture (yeah "all" is mandatory as it contains all the data-only packages). If you try to do it for wheezy alone I believe you need about 140GB but don't take my word, that's kind of an order of magnitude. To get it you need the real rsync/whatever scripts (ask on IRC), ipv6 and wait.
Then you ought to be able to install whatever software instead of being stuck without foo-library, act as PXE server and debian mirror to install the OS on another com
Re: (Score:2)
A recipe is a combination of an algorithm, physics, and chemistry.
Re: (Score:2)
Don't bring what can be acquired locally.
Concentrate on getting a GF while you're there.
might be more fun
Re: (Score:2)