Sunday, 30 April 2017

How Computers Work

Here is probably the best explanation of how computers work, ever:

Saturday, 29 April 2017

Programming Languages

I thought I'd publish a very quick overview of programming languages, simplified for non-programmers.

Language Hierarchy 

I'm going to outline, from the CPU up, what the 'language hierarchy' is

You start at the CPU - this is what does all your actual processing

Then you have the assembler, which interacts with the CPU. If you like the idea of writing in 1s and 0s, you can write in the assembler language, which isn't quite writing in 1s and 0s, but it comes close - it will take you a week to create a single button, but it gives you a huge amount of control.

On top of the assembler you have languages like C, which makes it easier to program common tasks that would take you forever to code if you were using only the assembler

On top of C, and really in the place of C in many cases, you have languages like C++, which are used for heavy duty processing. C++ is much faster than languages like Java, because it is closer to the CPU than Java is. C++ is a standard.

On top of C++ are built many other languages. C++ was used to create Java, for example, and there are plenty of other high-level languages such as PHP, Ruby, Python, C# (C-sharp) and so on. These languages are far more productive than C++, meaning, you can get more done by writing less code. Whereas it would take you a week to create a button writing out 1s and 0s for the assembler, it can take you 3 seconds to create a button using the Java UI tools.

And there you have it - a hierarchy of programming.

Compiled Language

When a programmer writes code, they usually have to "compile" it to turn it into the 1s and 0s that the computer can use. The word compile, in this context, just means convert. If you've ever run a .exe file on your Windows computer, this is simply a file filled with 1s and 0s, which has been produced by the developer, who compiled their code into this format.

Web coding doesn't usually require compiling, because it runs from the web-server, which does the work of turning HTML into 1s and 0s. You just need to make sure your code is in HTML. Often web servers will convert other languages into HTML on the fly, so you can write in PHP, for example, and this will run straight from the web server.

Which Language To Learn/Use

Different languages are good for different use cases, and you really need to look into what the pros and cons are of each. Some are very similar. For example, C# was originally Microsoft's attempt to compete with Java. Initially they improved on Java, but then Java improved and they have been facing off. As stated above, C++ is used for lower level programming, which is good for intensive applications, such as gaming engines. C# is also used in game creation using the Unity framework. PHP is a web language for creating web applications. A note for newbies: a web-app doesn't just mean some special app you find on a website. A website is a web-app.

C# is used in the .NET framework, a software framework developed by Microsoft. The idea behind .NET is that you can write apps in various languages and they will all run using .NET.

Intro to Programming Languages

Here is a really good intro to programming languages, given by the creator of C++, Bjarne Stroustrup: https://www.youtube.com/watch?v=JBjjnqG0BP8

Friday, 28 April 2017

SQL Bits 2017

A couple of weeks ago I got to go to SQL Bits, 2017, the largest SQL Server conference in Europe. I had a great time there, and came away with a couple of book recommendations:


  • Show Me the Numbers by Stephen Few - this will help you with the presentation side of your reports and dashboards 
  • R for Data Science by Hadley Wickham - this is an introductory book on writing R