Sunday, May 31, 2015

The Internet

The Internet is a physical wire that connects everyone together, often called the network of networks. It's not magic, a fluffy cloud, or abstract. Communication can be made between things connected to this main wire. The effort to make the initial communication between computer networks began in the 1960's by the US Government. ARPANET was made with collaboration with the UK and France, and it was the interconnection of regional academic networks during the 1980's. Commercialization of the Internet was during the 1990's and marked the beginning of the modern version of the Internet we know today, full of blogs, shopping, academic research, services, and more.

The Internet protocol suite is usually referenced as TCP/IP (Transmission Control Protocol / Internet Protocol), because those are the main protocols. A protocol is nothing more than a set of rules on how to do things. The TCP/IP says how to transfer data (rules for how to packetize, address, transmit, route and receive). I'm going to borrow from Wikipedia for their organizational chart below on the data flow between two internet host computers (A and B).

Servers connect directly to the Internet wire. It is easy to visualize the connection between one server to another as a simple view. The big picture is that there are millions and millions of connections onto this wire.

Since this Internet wire is a physical wire, underground and whatnot, how does it work internationally? It's the same deal.. you put a big wire undersea and wire it up to the one in your country. Interesting stories HERE and HERE about the idea of someone trying to cut the Internet wire undersea. There is a point at the ocean called a landing station where the wire will originate. About every 50 miles or so, there is an amplifier undersea that helps to amplify the signal.
Each server has harddrives. Harddrives contain the content of websites. If you are working at a company as a software engineer, you will typically work on your projects locally then publish to their server (the harddrives of their server as shown above!).
Usually there will be a local copy of your project, something in between for QA testing (UAT: User Acceptance Testing), then the final copy will move to production. Similarly, there will be multiple sets of databases, one for each layer.

If you do work from home, you will likely need to use a VPN for secure access. Photo below from PC Mag.
Each server has its own address called an IP address, it's just like a physical address for homes (each one must have its own unique identifier for its "location"). The World Wide Web (www, W3) is an set of linked hypertext documents and is a layer built on top of the domain system you can reach via the Internet. There are secure websites (https) and unsecure ones (http). Http uses Port 80 and Https uses TCP Port 443 by default, so the communications are different. A port is a communication end point for a host's operating system and differentiates different applications. Think about all the wires going in and out of a large wall outlets, imagine if there were a thousand or so. You would number each one, and one would be for your microwave, computer, hair dryer, etc etc.. those could be thought of as an anaology different "sockets" to be differentiated for different functions). The number is more of a convention to keep things less confusing and so there are defaults for each one.

The reason https is actually secure is due to its use of another protocol called Secure Sockets Layer (SSL) to move data. See chart below from
You, the client, are indirectly connected to the Internet via an Internet Service Provider (ISP) such as Verizon, Cox, Comcast, etc... You are connected to the ISP via Digital subscriber line (DSL). There are many choices for how Internet is provided from fiber optics, satellite, cable, etc.
LAN, WAN, and WLAN are different amounts of connectivity. LAN is a Local Area Network between computers in a home, office, school, or other small area. A WAN is a Wide Area Network spanning a geographical region. And, a WLAN is Wireless Local Area Network (WLAN).. so basically a LAN but using wireless. Wifi is wireless Internet. A router can send out radio signals that can be transmitted and received by phones, computers laptops..
Let's say you want to login to Google to reach your Gmail account. You can send an email to someone else.
Once you send your email to someone, say using Yahoo for Hotmail, the Google servers will contact the Yahoo servers (pink line).

Friday, May 8, 2015

How to Start Programming

I've been asked for recommendations to go the self-taught route for someone with no programming experience,! It starts with the basics and intro, but most of it is up to you :)! As long as you are building things you are interested in and enjoy it, you will pick up skills along the way that make foundations and are always relevant to things you work on in the future. I suggest beginning in this order, starting with web development. As opposed to doing web, you could also try and do application type of development, but here is a good start for web development.

#1. HTML

#2. CSS

Do these to practice:

#3. JavaScript - complete this course, email / text / call me if you get stuck

#4. jQuery

**ABOVE is for a web developer

Microsoft Visual Studio -- download this program to do C# work

#5. C# concepts-- go through all these concepts and understand them. Kinda go through these and #6 at the same time and try using Visual Studio

#6 C# video tutorial set --

#7. SQL: go through these basic commands (there's a lot more than this though, ask me about it when you get to this point)

Then be able to do simple problems from Project Euler.

Contoso Univ App:

Sites I cannot live without:
Stack Overflow - The best open source community to ask questions and see what others have asked.
GitHub - you can upload your own work or pull down others code to see how things are made!
Code Project - GREAT tutorials and articles on specific topics.