Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

This probably sounds like a funny question from the graybeards out there, but I seriously don't know what I'm supposed to do without the Google to offer help. Long story short, I'm planning on being pulled away for a deployment overseas. Things I can expect from this:

  • lots of downtime
  • effectively no internet
  • probably electricity

I will be bringing a laptop with me, but I'm making an assumption that what little internet access I do have will probably be spent talking to my kids and family via Skype and IM. To add to that, the internet overseas is controlled tightly, so no USB sticks, external HD, or connecting my laptop up. What I can see on the screen will be probably all I can take away from it (when or if I have it at all).


I'm looking for ideas on things I can download on my laptop for a lengthy time away from the internet. I'm not too concerned which platform, language, or kit I download, since I will have alot of time to get proficient at anything. I really just want a fairly self-contained, well-documented and rich environment that I could download the whole thing and not feel the internet is even necessary to code in it.

Am I asking too much in this always-on Internet connected world?

share|improve this question

migrated from stackoverflow.com Oct 14 '11 at 2:02

This question came from our site for professional and enthusiast programmers.

5  
Take with you some books on a topic (or several ones) of your choice, maybe ebooks, and read them. You know, maybe it is a bit outdated hint, but I think should be your first option –  Eineki Oct 14 '11 at 1:59
    
What platforms do you like? Bring the free or low-cost development environments for those platforms. Eclipse, Visual Studio Express, etc. –  John Saunders Oct 14 '11 at 2:04
5  
Where in the world are you going? –  systemovich Oct 14 '11 at 12:56
    
1) Grab yourself one of the OLPCs 2) Download a full set of binary and source packages for any major Linux distribution (e.g., Debian), its contents will keep you busy for at least for several decades. –  SK-logic Oct 27 '11 at 8:46
    
how long is it going to be? –  Imran Omar Bukhsh Oct 27 '11 at 12:34

6 Answers 6

You could spider the Project Euler website and take all the problems with you. All of those should be solvable without third-party tools, and should last for a long time.

share|improve this answer
    
That's what I've been doing. Been keeping me busy for years. Also a great way to teach yourself a new language. –  vcsjones Oct 14 '11 at 2:00
    
great idea - be sure to solve each one in multiple langauges! - you can even sketch out solutions on paper if you have a power outage. –  Peter Ajtai Oct 14 '11 at 3:45
    
This one I'm definitely taking advantage of. I've done some of these in the past and had a pretty good time with them. –  Nick Klauer Oct 17 '11 at 20:38
    
Thanks for such a nice site! –  Erica Xu Oct 27 '11 at 3:05

Nick, Why not take a stab at Ruby on Rails? You can learn ruby from this book (It's really well doen) http://shop.oreilly.com/product/9780596516178.do. Then there is an excellent eBook for rails at http://pragprog.com/book/rails2/agile-web-development-with-rails that I used. As long as you install ruby (http://rubyinstaller.org/ if you are on windows) and run the "gem install rails" command, you will have everything you need for learning this excellent web development platform. Best wishes for your deployment!

God Bless, -W

share|improve this answer
    
In general, "start a pet project" is also a good suggestion, if you can come up with one that won't require third-party libraries. Especially one with a different scope than what your day job requires. However, I wouldn't combine it with "learning a new technology", especially not Rails, because you could get stuck/frustrated without community support. Something with an obvious comprehensive body of documentation like dotnetland or iOS might be a better pick. –  millimoose Oct 14 '11 at 2:16
1  
I thought about this one, too, but so much of Rails is feature-added with one more gem that I wonder what kind of utility I could get if I didn't know exactly what I wanted to make and how I was going to do it before disconnecting. –  Nick Klauer Oct 17 '11 at 20:39

Thinking outside the box here, if it's general skills you're looking to hone and you're going "primitive", grab a copy of the C language spec, an asm/CPU code reference, and spend your disconnected time writing a C compiler. Maybe get an e-book or two on compiler theory.

I've been meaning to look at compiler theory myself as a way of getting a deeper understanding of what's going on under the hood of all this code I write. For your situation, it's a pretty self-contained problem space, it doesn't rely on a lot of tools that have their own quirks (and need an internet community of support), and the guys who did it the first time didn't have the internet either. And if you finish early, take a stab at designing your own language. Maybe when you come back, you'll have something to share.

share|improve this answer
    
This one sounds good, but what kind of material would I want to get on the subject? My own skills with this are limited to simple parsers (no ANTLR or YACC knowledge at all). Good suggestion, though. –  Nick Klauer Oct 17 '11 at 20:43
    
Good question that probably calls for a little preparatory research. The C spec is one obvious thing, and some ebooks on compiler theory, as I mentioned above. If you're using Cygwin or Linux (I wouldn't recommend doing it straight up on Windows), then the tools for parsing and stuff (not sure what that collection would consist of in full offhand). I'd recommend doing the code for the compiler in C, so gcc would be a good addition (maybe grab the source code for reference, but that might be cheating). You'll need references for asm for your CPU, and the machine codes if you want (...cont) –  kylben Oct 17 '11 at 21:58
    
to write out binaries instead of asm. I'm not sure what else is needed, which is one of the reasons I'm interested in doing this myself - because at this stage of my career, I should know that. If you decide to go this way, you might want to ask a new question about what materials you'll need to bring for it. You probably want to bring some C code from open source projects as test data, see if your output matches gcc. Then see if you can compile your own compiler with your compiler :-) –  kylben Oct 17 '11 at 21:59
1  
@NickKlauer Heh, for a real challenge, don't bring gcc. Bootstrap it from assembly up to being able to compile enough to build a primitive compiler, then dogfood it up to full featured. –  kylben Oct 17 '11 at 22:15

Even though the previous comments do mention where this question rather belongs, I just think back of the time when I had no internet (I'm not that old, but my family didn't have internet back when I started to get into computers).

The best way for me was to bring along a few books that I might be interested in and starting some long-term project on my own that would require me to read up on things, because I didn't have the knowledge right away. So I just thought up some project - for example an item management system for an online game - and then I dug my way through all the stuff. Since I already used Java back then, I wanted to use that as a backend solution - and possibly something that is available anywhere as a frontend solution. I programmed webservices in the end along with some frontend to use them.

I learned how to setup TomCat and MySQL - along with some GWT, Ajax and Javascript. It's easier to find an answer online, but I think that finding things out yourself will sharpen your knowledge. Also: you if you bring along some books, you could always try those and maybe complete tutorials and such in order to learn new programming techniques.

Another option would be to additionally go into something more theoretical - such as design patterns. It all depends on your way of learning things though. If you're more the practical guy, that likes to start doing something and learn along the way - you'd probably be better off just bringing some reference books along (either PDF or printed copies). If you're more of the guy who likes to read stuff up before trying it out, you might like some tutorial-like books, which guide you step by step through something - extending most likely one single project as you progress through the book. This is certainly good if you're learning something new and have the patience to finish the chapters.

Oh.. and I'm not advertising or anything, but I believe that Visual Studio and C# or any other language there would be a good pick, because the MSDN Knowledge is quite big, yet accessible offline. So you don't have to worry about references (javadocs or api help). Of course you can download Java-related help for offline-usage as well, but I think Visual Studio with its MSDN help system is a bit easier and also contains materials that you wouldn't call reference, but rather some aiding and informative articles.

The biggest problem you will have is that you're on your own. If your books or offline materials don't cover the question (or the errors) you have or get then it's up to you to find a solution. While finding a solution online might take only a couple of minutes (e.g. because the problem is well-known), it might take you hours or days to find it yourself - or you might not make it at all.

Those are my thoughts and I beg to excuse the horribly long post.

Cheers!

P.s.: I kept my answer not as precise on purpose, because I think it's up to you to chose what language or environment you want. I just thought I'd give you my thoughts on dealing with programming while being offline.

share|improve this answer

Any distribution of Linux/Unix comes with a big load of man pages, including system calls (2) and programming API (3C for C, 3F for Fortran...). This is how graybeards used to work. GNU introduced info pages as well.

Moreover, Apple's Xcode includes the whole developer documentation for Mac OS X and iOS programming.

Both are available with a single Macbook Pro.

share|improve this answer

You could visit the library and try figuring out the dewey decimal system. If I remember correctly computer books are in the 003 section.

share|improve this answer
    
I'm not sure if there are too many libraries where I'll be, but I'll definitely keep an eye out for them should I not be stationed somewhere remote. –  Nick Klauer Mar 14 '12 at 3:11

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.