Computing



1. Intro


Nowadays we can hardly imagine a world without electricity, cars, television ... and of course computers. Despite the omnipresence of computers in our lives, not all of us are in the computer or IT profession.


Some of us may not feel comfortable using computers and crave the simpler world of the olden days. In the notes I want to share with you I will be trying to explain, how even for those who do not make their living in the professional IT world, the world of computing may offer opportunities to get better at dealing with the non computing world.


Or even find out how the computer can enrich our other hobbies. Do you feel an urge to get creative? Do you have any idea how many possibilities computers give us to get creative? Do you think this has to cost an arm and a leg? Think again.


Back to Top


2. How the computer helped us develop other skills


Some of us have a career that is outside the realm of the Information Technology (IT) world. Nevertheless you would be hard pressed to find a job in which you do not get to use some IT equipment as a tool.


Some of us who do use IT equipment as tools to do their jobs, also develop a more than passing interest in computers. Some of us got their own computers at home. And some of us really started getting interested in all kinds of different possibilities offered by their computers. And sure, a few of us developed into computer geeks.


What we found is that computers could be handy tools when working with digital media, be it pictures, video or sound. More about that can be found in the DIGITAL section of this web site. Some of you will appreciate that we used a picture of a non digital camera as icon button for that DIGITAL section, to indicate that there is more to it, than just digital still cameras.


What some of us found is that computers are only as good as the software you got on them. And they wondered about software. And they had ideas for some simple things they wanted to do for which they could not quite find the right program. And they started wondering if they could develop something themselves. So they got into programming. They also found program development could be done in many different ways, on different systems, with different programming languages. They also saw the evolution from procedural programming to object oriented programming. They tried it. They saw that a lot of programming involved databases.


By doing all that they learned to think in an object oriented way. That turned out to be a useful skill when working on projects. They were not in IT so they did not program for the job. But they did start analyzing problems, projects, processes in an object oriented way, although they did not call it that. They just got better at analyzing and representing data in a well organized way. They also may have had some exposure to agile development through their hobby interest in computers. And again they started to think that way for projects in general. Rather than preparing something to the last detail and developing it completely, followed by shoving it down the throats of the end users, they worked in a way that more input was sought, more flexibility was provided for changes throughout the developing cycle.


And all that because some people got used to thinking in ways which were developed for computing, but are perfectly applicable to a lot of other fields.


Back to Top



3. Programming: some history and a few simple explanations


Earlier in this 'Computing' section we already explained how we could organize ourselves, our lives, our thoughts ... with the help of the computer, and even better by letting our approach be influenced by how we think when developing for the computing world. We also touched on some developments in the software development world.


Some history might help us understand a little bit more about all this. In the beginning of computers, computers had to be programmed in their own internal digital language. Painstaking, especially as the input methods left a lot to be desired (punch cards, simplistic text only monochrome screens...). So people started developing higher level languages with some limited resemblances to human communication languages (in this case English). Not that the computer could understand these, mind you. Computers still needed their instructions in zeros and ones.


So a specific type of software was created, the compiler, which translated the high level language program (a text file) in the low level binary language. The resulting file could then be fed as a program to the computer. In the case of MSDOS or Windows these would typically be the files with an .exe extension, standing for executable. C is an example of a high level language, often used for system software itself. C++ was originally derived from it to make it object oriented.



Some people found this a bit convoluted, because whenever there was a mistake or bug in the final program they had to go back to the original high level language text, troubleshoot it, correct it and each time compile it again. Not exactly on the fly troubleshooting. So these people started looking into what was called interpreted languages. Again the program text was written, but not compiled into a file. Instead there was another program, the interpreter, that would work directly with the file and translate on the fly in binary instructions running directly on the computer.


BASIC was an early example of an interpreted language. Java is another example. And if you have ever heard of a LAMP server, which stands for a Linux – Apache – MySQL server, you know that the P stands for Perl and/or Python, another two interpreted languages. Originally these interpreted languages often got criticized for being slower than using compiled programs. Good reason for having compilers available for the interpreted languages too: rapid development in the interpreted way. Once the final product is ready, compile it.


There was also an in between way where high level language programs were converted into an intermediate language, as for instance in Pascal. The advent of ever more powerful computers has taken away that criticism, because the speed difference became largely neglible for most applications. It is of course also so that the Internet is playing a larger role too and that for most people the speed of processing is dumbed down to the speed at which server and networks can deliver the web pages. The advent of Web 2.0 and AJAX has alleviated that to some extent by updating only relevant parts of a page rather than the whole page for every change on it. This gives a more interactive feel.



Faster processing has also led to a lot more success for some newer interpreted languages, such as for instance Ruby. In this case this is also in combination with web development through a so called framework based on Ruby, called Rails. This is what we call an MVC framework. Yes, we know, another acronym! It stands for Model – View – Controller. Roughly spoken Model stands for the structured data, View stands for the user interface and Controller stands for the program logic. By separating these three aspects to some extent, it is easier to work on each of them separately as need be, without messing up the other parts. A typical problem people wanted to circumvent. That is what allows fast prototyping in an Agile Development approach.


This is just an example of an MVC framework, which happens to be based on Ruby. There are a lot of other frameworks available based on other environments, such as for instance PHP, which in itself is powerful for putting some logic in your web pages to avoid too much repetition of code (DRY - don't repeat yourself). You want another acronym? What about CRUD, which stands for Create – Read – Update – Delete. That is important in the interaction between the program logic (Control) and the data (Model).



All this may seem complicated, but in reality once you start working with many of these languages, environments and development paradigms, you will find it all falls nicely into place. And remember, if you do, you may find that you approach issues outside the computing world also in a more structured logical way.


Back to Top



4. Why this operating system, this distribution and this software?


If in this section we tell you what we mostly use, it is because there is so much information available about what the majority of people use at work and most at home, that we do not need to go into that. As consultants we can help you with these systems and software if need be.


But we can also help you with the lesser used systems and software. We will speak about alternatives many people don't know about. One of the reasons you may be interested in this, is because of the low cost involved, which for some people can make the difference between only trying a few things or a lot of things they are interested in.


Earlier in this COMPUTING section we explained how people could develop skills they picked up programming. But someone who wants to start trying out a few things probably will not be in a position to choose yet what system to use, what programming language ... If for all this someone choses a programming language and buys a commercial development package, that person will pay a lot of money. Not only that, but proprietary operating systems and development environments on it will require relatively recent hardware. No bargain basement equipment here!


So is this person going to know which systems to buy? Will his decision be based on some magazine articles, some books...? Will he buy another development environment if he finds the first one did not suit him. What if the person could try out, for him or herself, different developing environments? What if that person could do it on his previous (not so recent computer) or on a cheap off lease PC? Well we all can do that, thanks to free and open source software.



Some of the free software is available for different platforms. That is for instance the case for web browser Firefox, office suite Open Office, photo editing package GIMP, 3D and animation suite Blender, sound processing package Audacity, software development platforms Eclipse and Netbeans, web server Apache, database server MySQL. All of these are available for Microsoft and Linux operating systems. Linux gives you a choice between different distributions. Within these distributions different windows managers are available.


Amongst the most common windows managers for Linux are Gnome and KDE. Linux typically has lesser requirements on the hardware side. Even distributions that have recently (this month) been updated with new versions need lesser hardware than some of the proprietary systems that were launched years ago.


There are also distributions and window managers available which target old and low specification machines. Many of the distributions will constantly advise you of updates, not only security updates, but all updates available for the system and all the software on it. Distributions usually have their own repositories and a system to see what software is available tested for their distribution, with an easy one click access to download and install.


One of the distributions we use the most and on the biggest diversity of machines is Ubuntu. Currently it has more than 25,000 packages accessible through its depositories.


Occasionally we download software directly from the project sites such as for instance SourceForge.net (VDK Builder), IBM (Eclipse), Aptana (Eclipse for Ruby and Rails), Sun (Netbeans), Adobe (Flex, Air), sometimes because more recent versions are available than in the distribution repositories. It has happened, but very seldom, because a particular combination of system and software gave us install problems based on the packages available in the distribution repositories.


We do all our email and Internet access through computers running Linux, because it is much better protected against and much less targeted by viruses than some proprietary systems.


Back to Top







You are logged in with userName = anonymous


Not signing up and not logging in leaves you with username 'anonymous'. Nothing wrong with that, but it will make it difficult to find back your own content in blogs and comments and to leave your email address for us to answer individual questions you leave for us in the blogs or comments.