Do not try to understand this post until you have mastered Basic Arithmetic. And by “mastered” I mean that you can do it in your sleep.
There are two basic models of computation. The first is called the Turing Machine.
The second one is the Lambda Calculus.
I actually learned about all this stuff from the book “Godel, Esher, Bach” by Douglas Hofstadter. This is quite a “thick” book. But if you truly want to “grok” computers, and what they are all about. Then it is highly recommended.
This probably deserves it’s own post. The “take home” message is that it doesn’t exist. There is no such thing as “Quantum Computing”.
The “phone book” example that is usually given to explain “Quantum speed up” is just plain wrong. And the reason is simple: You have to transpose the Unitary matrix corresponding to the “Oracle”. And that is O(n) not O(1). Yeah. Embaressing.
It is all a big funding scam. Same as “String Theory” and “Climate Change”.
Everybody knows this to be the case. Some mathematician choose to take the money anyway. So they can stay in “Science”. While others choose to work in the banking sector instead. Where they can make even more money. Both sides believe themselves to be “morally superior”.
From this day forward, my allegiances in the String Wars will be open for sale to the highest bidder. Like a cynical arms merchant, I will offer my computational-complexity and humor services to both sides, and publicly espouse the views of whichever side seems more interested in buying them at the moment. Fly me to an exotic enough location, put me up in a swank enough hotel, and the number of spacetime dimensions can be anything you want it to be: 4, 10, 11, or even 172.9+3πi.
Someday, perhaps, a dramatic new experimental finding or theoretical breakthrough will change the situation vis-à-vis string theory and its competitors. Until then, I shall answer to no quantum-gravity research program, but rather seek to profit from them all.
“It is absolutely impossible for me to hide how intensely I despise people like Scott Aaronson … He’s the ultimate example of a complete moral breakdown of a scientist. It is astonishing that the situation became so bad that the people are not only corrupt and dishonest but they proudly announce this fact on their blogs…” — Luboš Motl.
Get used to it – that’s all I can say. Also. Try to have a sense of humour.
You get a lot of “Street Cred” on the interwebs if you run Linux on your home computer. Nobody will take you seriously in the “Geektopia” if you are still running Windows. The latest version of Mac already run on a Unix based operating system.
Tools not required:
Let me just re-iterate this point. You do not need to stick your dick into anything in order to install Ubuntu on your laptop.
If it is getting hard and uncomfortable, then just relieve yourself with your hand. And wipe yourself off with a hankerchief. Everybody does it. No big deal.
Once upon a time there were also LISP machines. But that time has passed. According to the “Church-Turing Thesis” it is all the same shit anyway. You can easily “simulate” a LISP machine on any modern computer.
That was already a lot of infomation. Basically a first year “theoretical computer science” course in one paragraph. It is not so important right now. But you can re-visit this infomation later.
If you enjoy this sort of thing then the “classic” introduction to the subject is Godel, Escher, Bach. This is a super geeky book.
Moving right along. Software architecture is basically designed like an onion.
The physical hardware of your computer can only understand binary. But humans do not speak binary.
Many many thousands of years ago, software engineers used to program in Assembly Language.
But eventually they got sick of that, because it was too tedius. And the C-programming language was born. People still actually use C. Especially for games programming. The Linux Kernel is written in C.
The way that a human accesses the Linux Kernel is through The Shell.
This is the biggest difference between Linux and Windows. You can’t just point and click on things. You actually have to type in the commands that you want executed. So learn how to touch type.
Richard Stallman wrote the C-compiler. That is why he is considered to be a god by the Hacker community in general. He also wrote the GNU toolchain.
The final thing that you need to understand is what a “file system” is. Everything in Linux is a file. Including the Linux Kernel which is stored in the \boot directory. When your computer turns on it goes through a very specific boot sequence.
The “boot loader” these days is called GRUB. I still remember when it was called LILO. I am old enough to have seen and touched some punchcards. But I never programmed with them. You can probably find them in a museum somewhere.
Anyway, the bootloader is not a file. It is written directly onto the boot-sector. The bootloader is not actually part of Linux. It just helps your computer to find the Linux Kernel. Otherwise your computer won’t know where it is. And won’t be able to turn itself on.
There is also a very minimal “hardware” operating system called the BIOS which is built in physically to your computer. It is not even on the hard-drive. But on its own separate chip on the motherboard.
This is important because you can tell the BIOS to boot from a USB stick instead of from your hard-drive. This is how you install a new operating system onto your computer.
Exactly how you enter the BIOS depends on the physical hardware of your computer. But it always involves restarting the computer and pressing some combination of SHIFT, ALT, CTRL and a function key (F1, F2, F3, ….. , F12) before the “Windows screen” splashes onto the monitor.
This is the simplest and easiest way to hack into somebody else’s computer if you have physical access to it. Don’t do this if you are over 18. This is illegal for adults. But not for children.
Anyway, you can’t just “drag and drop” the ISO file onto your USB stick. Because this is a “bootable” file. You need to “burn” it directly on to the USB. Not “save” it as a file inside the existing file system on the USB stick. This will over-write and destroy any data which was previously saved as a file on the USB stick.
You are going to need a special piece of software to do this. There are many choices here, and it doesn’t matter in the slightest which one you use.
Just choose one. Download it. Install it using the “Windows Install Wizard”. Now follow the instructions to burn the ISO image that you downloaded earlier to the USB stick. Done!
That was actually the hardest part. Almost. Second hardest part.
You need to know the “make and model” of your laptop. Mine is “Dell Inspiron”. So I type “Dell Inspiron BIOS” into google and it tells me that the “magic key combination” to enter the BIOS for my computer is “F2”. Yours will obviously be different.
Restart your computer, with the USB stick plugged in. And press the “magic key combination” a couple of times before the “Windows Splash Screen” shows up. You should now be in the BIOS.
You cannot use the mouse while you are in the BIOS. You must “scroll around” using the keyboard arrows keys.
Firstly scroll over to the “Boot sequence” menu, and tell the BIOS that you want to boot from USB. Now scroll down to “Save and Exit”. And that’s pretty much it!
Your laptop will boot into the “Ubuntu Installer Wizard”.
The final step is to just follow the instructions on the screen. Which is just pointing and clicking on things and saying “Yes” to pretty much every suggestion. You will need your “wi-fi password”. So make sure you have that handy.
After you have finished installing Ubuntu, don’t forget to pull out the Ubuntu stick before you reboot into your brand new Ubuntu installation.
At the risk of offending feminists, both alive and dead. I would recommend choosing a “male” nickname to use on tech-related forums. Nobody can possibly know your gender online. And if you use a female nickname then half the internet will fall in love with you. Which is annoying.
You don’t really need to know how the TCP/IP protocol works. All you need to know is that each computer on the internet has a unique IP address.
Unfortunately this address changes over time. Kind of like how people move house sometimes. The address changes, but it is still the same person. If you want to send mail to that person then you need to know their new address.
A Domain Name Server (DNS) keeps track of where everybody is currently living. For example, if you type “soniasosnowski.com.au” into this website. It will tell you the current IP address of the server which is “hosting” this website.
Your web-browser is a “client”. So is your inbox. Your home computer is connected to the “world wide web” and “the email system” via an Internet Service Provider (ISP).
It is important to understand that “the internet” is much larger than the “world wide web”. Email, for example, goes through it’s own separate protocol. As does IRC and various online games.
Financial infomation is transfered between banks over the internet using SWIFT. It is not particularly secure. But if you get caught trying to hack this network then you will go to jail for a very, very long time.
The “IP address” of your home computer is most likely on a subnet. This is annoying, because it means that you can’t just run a server on your home computer. You have to “host” your website on somebody else’s server.
I am currently “hosting” with gandi.net. They give you a basic PHP/SQL setup, with optional wordpress installation.
WordPress is an “application” which is written ontop of PHP/SQL. If you are not a “computer person” then I would recommend taking the wordpress option. It is not expensive at all. And there is a 24/7 customer service help line who are very polite and friendly.
You can also register your domain name with gandi.net. And get two free email addresses. If you already have a domain name registered elsewhere then you can easily transfer it.
WordPress is very intuitive to use. If you can figure out how to use Microsoft Word then you should be able to figure out how to use WordPress. There are a million different tutorials online.
No coding experience is required at all. And you certainly don’t need a computer science degree. You just need the ability to follow simple instructions and click on things.
You also need a credit card – to pay for the hosting and domain name registration. But don’t worry. It is a lot cheaper than getting professional photos done.
Suppose there are a thousand users of the internet – all of them high energy particle physicists. Each user has their own homepage. Each homepage contains some text, and some links to the homepages of their friends.
You can imagine this as a directed graph. Each node is a user with a homepage. And each arrow is a hyperlink between homepages.
This information can also be represented by an “adjacency matrix“. The entry in row 2 and column 4 of the matrix is the number of links going from the home page of user 2 to the homepage of user 4.
The “astute reader” will observe that if if we multiply the above matrix with itself five times, then the entry in row 2 and column 4 of the result will be the number of ways you can get from vertex 2 to vertex 4 in five steps. Magic.
Isn’t that clever? Now you are an expert on matrix multiplication. Go and make yourself a cup of tea before reading the rest of this article.
What we need to imagine now is that a user starts at their own homepage. Then randomly clicks on a link to go to another page. Then randomly clicks on a link to go to another page. Then clicks on a link to go to another page. Etc….
The number in the row 2 and column 4 of the “transition matrix” tells us the probability that our random “web surfer” will click on the link from node 2 to node 4. Check it on the example.
We let this “random walk” go on for a long time, and are interested in what proportion of time our random “web surfer” spends on each page.
To be more precise, we are interested in the “probability” that our random “web surfer” will be on any given page – after being giver a sufficient amount of time to wander around. This is known as the Stationary Distribution.