Ask HN: Can you program without an Internet connection?

22 points by sysadm1n ↗ HN
I ran a little experiment the other day to see how I would get on coding without an Internet connection. I was doing a bit of web development, mostly frontend stuff, and was proud of how many obscure HTML elements I was using like <DETAILS> and <CITE> etc. Then the urge to open a browser came within 10 minutes of coding. I wanted to code a hamburger menu, but didn't want to reinvent the wheel. Specifically I wanted the hamburger menu to work with CSS only so was looking for a snippet of code that done that, but had no Internet.

I was genuinely asking myself: 'Am I even a competent developer if I have to use the Internet every five minutes to code?'

How do you cope with this feeling, of tapping into the Internet hive mind to code properly?

27 comments

[ 3.1 ms ] story [ 63.7 ms ] thread
You can, with a bit of effort, gather up a large offline documentation collection; and even if its not totally current it can save yer ass when you're without connectivity. Even if you have a solid connection there's latency advantages.

If you have a stack of library references next to you when you're programming, be the online, offline, or actual books, are you less of a programmer? Or are you leveraging information technology to best use by only mentally maintaining the index of where the thing you need to know is?

Internet resources are here, we use them.

When it did not existed, we used simpler technologies: A good book was enough to code a 1970/1980' microprocessor, or in C language (for example thanks to "The C language" of Ritchie and Kernighan).

Even 20 years ago, it was possible to code with a small desktop documentation on Internet standards. HTML4 [0] (~2000) was something simple to code, and as you know coding a TCP socket is something really trivial.

[0] https://www.w3.org/TR/html401/

Yes, I can. The limiting factor for me is when I hit a library I'm less familiar with, then I go to its documentation which may or may not be installed with it. I've found over the past decade that StackOverflow and similar Q&A sites offer very little to me unless I'm brand new to a language or environment. I suspect this is largely because I learned to program in the 90s by reading manuals instead of paying attention to classes, then going home and trying out what I learned. I still practice that, I mean I decided to learn Smalltalk properly so I read the Bluebook over a week last month. Of course, I also tend to have books available and have good recall for which book and which section has information I want. When I was programming C# a lot (now almost a decade ago), I had a couple heavy reference books, and when I hit a snag they were my first stop. I'd read the relevant section or chapter, probably one or two more, and get back to it. And when I had downtime, I'd just pick them up and read random sections.
I absolutely concur. I used to in the old days… when man pages was the search engine and perhaps a book on the desk. I also used to grep other source codes from favorites projects / developers.
I only use whiteboards for coding since that's how it's done in interviews /s
I've often used a whiteboard notebook, specifically the Nu Board. It's great for iterating on a concept and also sharing with others. It also has transparent sheets so you can protect the drawing on the whiteboard portion, or put printed (or other) material underneath to draw over without marking it up directly.
How you want to go about wasting time is your business
I feel this is less about a hive mind, and more about having access to reference materials. We all need to check documentation from time to time. Back in ye olden days, we had books on our desk for language references. I don't miss that, but neither am I going to feel like I am a weak programmer just because I need to look something up.
We used to have documentation and dev libraries installed on our machines. If you downloaded, compiled and installed a new library or tool, it came with documentation. We also had CDROMs and floppies full of the source code. And you could download whole archives of HOWTOs pretty quickly. Reference manuals and books were a thing too.

Nowadays if I'm going to be working from a train or plane, I download as much as I can ahead of time. But since modern libraries and apps don't come with docs, it's harder than it used to be.

Has anyone born after 1995 even written a man page before?

Can it be done? Yes. Can I do it? No. Would I want to? Also no.
I don't have any concern over having to use the internet to reference things or find samples that save time.

In the 90's I had a large book collection that I used for learning and for reference which served similar purposes. That plus the man pages and SDK docs you got with libraries was basically your goto. And even then, we still had programming forums (BBS) and usenet for finding help and samples.

Oh and if/when you did Microsoft programming keeping the MSDN docs on your machine was an option, which was like 4Gb if you installed it all.

FWIW: I do fairly often write code without internet but if I am using a library I am unfamiliar with or need to do something that is less common I'll save some docs or key web pages locally to help me.

I almost want to ask if this is a real question.

Obviously, things have changed since then, but there was a time that not everyone had 24/7 always-on access to the Internet. Really, that's only a recent thing. How do you think programming took place -- across a generation or two -- before then?

In my case, it was 1999 before I was able to get an Internet connection that wasn't dial-up Internet -- but I lived in a small, rural town in the midwest, not in a major city. I was the first person in our area (perhaps a 30 mile radius) to have an "oh-my-$deity-this is-so-amazingly-fast" 768k/128k DSL line (besides the two guys who ran my ISP) as I knew them and they asked if I would, effectively, be a "beta tester" to make sure things were working as they 2were supposed to be before they started offering the service to customers.

So, yeah, before then it was possible to program without a Internet connection. That was the "default", normal situation, in fact. We had (dead-tree) books, for example, and could telephone other people, there was FIDOnet ("before Internet"), Usenet ("after Internet"), e-mail and mailing lists and, eventually, even the web (from 1991 on, of course). Plenty of programming happened without Internet access before then (in fact, all of it did, basically).

Of course, some programming is more complicated nowadays, when you need a library for every little thing you do, so I suppose programming without an Internet connection might not be possible if you need to download a library for for .. loops or something.

(By the way, when I was in high school, I'd write code on paper (whatever program I was working on at the time) while sitting in class. When I'd get home after school, then I could type it in on the computer.)

Of course, if you are one of those "programmers" who have to stop and Google something afte every five lines of code, well, it's probably not possible.

When I took my long term "sabbatical", I got some of my best programming done in a park without any internet.

Occasionally I'd look stuff up on my phone, but since it's a Palm Phone with a 3.3" screen and not very much battery life, I didn't do it very frequently. Every so often I'd need to download libraries and whatnot, or I'd really get stuck on something, so I'd head home or to a coffee shop to continue.

But yes, I'd say more often than not, I had a great time programming without the internet, even though one of my targets was the web.

I work on sensitive government materials. One of the rules is that development occurs on an airgapped system. If I want to check the internet, I need to leave the room and retrieve my phone from a lock box.

Occasionally I need to do that, but for the most part, we get by without. We also make a point of having an offline copy of all reference manuals and other documentation we might want.

We also have source code of all of our dependencies, which helps.

> Am I even a competent developer if I have to use the Internet every five minutes to code?

It just means you are slowed down by the need to look things up. Do you consider speed part of competency?

The ability to look everything up on the internet didn't appear until the late 90's. I finished my BSEE + MS CompSci degrees before 1994, effectively without the modern internet. We had manpages. And enormous books. All that's really changed is most pop languages don't have manpages, but at least we aren't killing forests for the X specification printouts!

I don’t know about internet but I surely can’t code without autocomplete lol
You got yourself in a mental trap from formed habit. You say you didn't want to "reinvent the wheel", but in reality you didn't want to do the work. You wanted to replace 10 minutes of thinking about the problem and writing the solution with 10 minutes of Googling for the solution and copy/paste.

Just stick with it. Before long your router will shit itself, be off all day and you don't even notice. Have essential documentation like MDN offline.

Good luck with writing code without being connected nowadays. MSDN from the 90s is all .chm's and you can find anything there. Win32 API, Sockets, DirectX, all with explanations and example codes. Fast, searchable, available locally, lightweight. Everything was there.

As opposed to todays MSDN library that is primarly online. You can export it to pdf document but it's computer generated and you can see a lot of thinking/work didn't go into that process, plain get headers get text and dump it into pdf.

Another one is to download MSDN library/documentation via visual studio, which has some information, but is incomplete and you still bump on some topics that redirect you to the online version. And not nearly content-rich as it's 90s version.

I've used this exact use case (can you do X without internet) as an example to explain why I like Go so much. I can write Go without internet no problem. I barely ever have to look up how things work and the libraries are simple enough to dove in myself if I don't understand something.

Developing Android, however, is entirely impossible without stack overflow, because the libraries and paradigms and hacks and workarounds make it impossible to produce something working.

Quasar.dev is an offline app, so test, yess I can
Before the internet I had bought/borrowed many books and magazines as reference material. Most of the reference is the internet now - but I still have quite a few relevant books as well as electronic documents so it may be initially a struggle to get back to paper/PDF referencing I could get still get stuff done. Also my previous code is a good reference source.

For some trick I've never done before I'd either try to hack it out or adapt whatever to what skills and resources I have like don't use hamburger menus at all there's more than one way to do navigation. :-)

Used to do so because my only internet access was a cybercafé and when I have enough money to use a 3g modem. I used to have zeal installed, plenty of syntax references manual the occasional mirror of a site. I loved Android studio at that time because you could click on a symbol and got redirected to the definition, so you could learn how it works. I also used to collect open source codes that I review every so often to learn best practice and design patterns.
I wrote my first program in 1967 or 1968, so yes I can program without the internet. Programming for a couple of decades before the internet existed got me into the habit of relying on manuals (like IBM 360 Principles of Operation [1]) and books (for example, Daniel McCracken‘s A Guide to Fortran IV Programming [2]). To this day I rely on books more than my colleagues.

Although I can program without the internet, I much prefer having the internet at hand—-programming with the internet is a much better experience. So, my large library isn’t really necessary for the task.

[1] https://books.google.com/books/about/IBM_System_360_Principl...

[2] https://www.librarything.com/work/247060

Well yes, at least that's how we do it in my third world country. You get used to it easily, and there are no distraction when you work.
Depends on what you mean by "without an Internet connection". If you mean that the machine that you use to develop isn't connected to the Internet, then totally. I've been doing that for the past 4 years. If you mean never touching the Internet while programming, even on a different machine, then I'd be a lot less effective. I could probably still do it, but I'd need searchable docs for everything.