0.1 - Prereqs

The Digital Firm

Estimated Reading Time: 10 minutes

Contents

Introduction

By the end of this master, you will be what is called in Belgium a “Business Engineer”. That’s a mouthful and some might think that it is just a glorified name for a business major that had a few physics and chemistry classes. I beg to differ and this class participate to the effort of making you engineer.

James Watt, a XVIII century engineer Engineers were mostly wealthy dudes partly because the raw materials were expensive Look up the etymology of the word (or just try to figure out where the work comes from as it is plain). An engineer is someone who builds machines - or engines. Now, you might think of a business as a machine that you try to optimize but in this class, besides this conception that percolates most of the other courses you will have in the master, we take a more literal stance: We’re going to teach you to build actual machines.

Machines come in many forms. Many have a physical form but we are going to focus on a different type: The ones machines of the mind, or software.

Softwares have great advantages when compared with physical machines: They require very little raw material (and as such, could be a great help towards a more just society where everybody has equal chances from the onset) and, once created, they can be replicated nearly costlessly. They can also interact with a lot of physical machines in the real world. Many machines today are operated through microcontrollers and, if they are design to do so, some implement interfaces that make it possible to talk with them from a software (more on interfaces later).

This notebook/webpage

The purpose of this notebook is to help you configure your computer to be able to follow the course. For this class, we tried to strike a balance between simplicity of setup and broadness of possibility, so you can already tinker quite a lot with just the tools you will have to install.

This notebook is less of a tutorial on how to install as it is an explanation of what you have to install and why. This is a conscious choice: In today’s world, it has become a critical skill to be able to set up your computer to do more than the basics. As such, you should be able, as a professional and as a digital denizen, to install and care for your own stack of softwares without resorting to an “Appstore”. This all boils down to basic microeconomics: anybody can use an appstore to install new program, so the value of this skill is 0 as it provides no competitive advantage. Spending time learning how to configure and tend to you software ecosystem, on the other hand, gives you an edge against people who haven’t done the investment. Moreover, you will soon see that those steps look much more gruesome than they really are and that acquiring this competitive advantage is in fact much cheaper than one can think.

All notebooks and pages under chapter 0 have no specific exercises attached. They are mostly tutorial to show you how to use what you need for the rest of the course.

Web Browser

Vannevar Bush A pioneer of the internet, a man we can credit to making memes and stuff possible! I assume you already have a web browser (unless you are reading this as a JSON file in a text editor, in which case, kudos and good luck!). I designed this part of the course to be accessible in two main ways: either reading through the webpages on the website - which would be my favorite method to read the contents parts - or reading through the Jupyter notebook - which would be the appropriate to solve the exercises, more on that below.

I try to make the website as responsive and light as possible I tried using as few Javascript and cookies as possible, we will see what this is in the platform session but I only test it toroughly on a 1920x1080 display in fullscreen (press F11 to see the page in fullscreen). If you can read it like that, it would be best. Also, if you have any accessibility issue (e.g. if you need sharper contrast on some material), hit me up via email and I will figure out how to tailor the form to your specific requirement.

You can use any browser but I recommend using Firefox or a derivative for the part on websites. Their developper tools are thorough and I’m more familiar with those. If you use another browser, you might have to look for some tools a bit more. I also recommend not using old versions of Internet Explorer (yikes…) or Edge as they typically lack support for some HTML parts I might use at time More on HTML in a further session .

Python

In this course, we will also do a bit of programming. The language we are going to use is Python. You should therefore have a Python interpreter installed on your computer. The python version you need is not really important as long as it is a variant of version 3. It means that python 3.7, 3.8 or 3.9 will all do the trick. If you have an older version, please upgrade or be ready to do a bit of debugging.

You have 2 main ways to install python: as a standalone It is not totally standalone, it also installs some utilities among which the package manager pip. or as part of a larger distribution such as Anaconda Which is a sort of large python… delightful… . Use the first way if you either have little space to spare on your computer or you want to be completely in charge of your setup. Indeed, Anaconda comes preinstalled with a bunch of stuff, not all of them useful for this class.

Relax, I will not put the credits each time (I might put just the chorus at the start of each session) but enjoy the opportunity to get familiar with the tune of the “Chant de Solvay” Python is both a programming language (meaning, a set of rules of how to write instructions that will be recognized by some program) and the interpreter that transform this code to make it understandable by the machine. Check out this video for further explanations:

An interpreter is nice, you can write code in your notepad and have it executed. Indeed, it is completely independent from any front-end program. But in this class, we will use another piece of software to serve as our front-end and editing program: Jupyter Lab (or notebooks).

Jupyter

Jupyter is the most common cross-language solution to write notebooks. Notebooks are the modern tools to implement what one of the popes of computer science, Donald Knuth, has coined literate programming. Behind this idea is the belief that code should be read as a text.

This videos shows the basics of using Jupyter Lab.

It is a convenient way to write code and have the result displayed directly in the sequence. Take heed, however, that the Python session runs in the background and that everything is persisted until you restart what is called the kernel (using the menu Kernel > Restart Kernel). This means that whatever variables your create in a cell that you then execute…

a = "I created variable a and executed this cell"

… is then usable in another cell…

print(a)
I created variable a and executed this cell

This might lead to strange situations where your code behave unexpectedly as you have defined variable or reassigned function in one cell and it changes the behavior of whatever code you write in a cell that you execute afterwards. This is why there is always a little counter beside the code cells: If a variable is assigned different value, the state of this variable is the one assigned in the cell in which the counter is the highest. As such:

An illustration of code that is not run sequentially in Jupyter.

Even though the cell where I assigned the value “my second assignment” to the variable a comes after the one where I assigned “my first assignment”, I executed the second cell before the first cell. This is why the value of the variable a is set to “my first assignment” when I execute the code in the third cell. Beware of the order in which you execute your cells. For the notebooks I make available, the order of execution is the order of the notebook If not otherwise stated. .

Go Further

In these “Go further” sessions, I’ll give more info on specific topics. These might be about a peculiarly sophisticated point of the subject at hand or simply cool trivia (as it is here). Those sections are largely optional and can be safely ignored if you’re not interested.

In this video, I provide a “behind the scene” of how I construct this course using Jupyter notebook and transforming them in webpages.

sFTP Client

The last tool you will need is an sFTP client. It is a program that enable communication with an sFTP server The terms “client” and “server” are frequent throughout this course. A server is a program that listens to some interface (it might be on the same machine or on the internet) and that contain something - any piece of information, that we call a state. When it receives some command through its interface, it may either send the current state (in the case of a web server, it is a web page, which is a part of the full state - the website) or modify it. A client is a program that enables communicating with the server through the interface. . An sFTP (secured File Transfer Protocol) server is a piece of software that makes possible to send files to a remote computer securely. In this case, you will need this sFTP client to communicate and send files to a server located in the ULB datacenter to create a webpage.

I recommend using Filezilla which is libre (or free) software We will see what this means in the session about Open Source and Modularity but you can choose another one if you prefer (some operating systems may come with an embedded sFTP client). As long as you can send and receive a file over sFTP, you are all set!

BonitaSoft

The last necessary software is BonitaSoft. Under this inspiring name is a program that makes possible modelling and then simulating processes. We will use it for session 3 on BPMN. The basics of the software are fairly easy to grasp but we will only use a very small part of what it has under the hood. Feel free to explore more if you are interested in the topics of process mapping and optimization.

Optional softwares

Grab your tools, it's showtime! There are two softwares that are not required but can help you understand or visualize things faster than going through the python code.

The first one is DBBrowser which will make it easier to look what is inside a SQLite database. Use it if you have difficulty to understand how the database you’re working with is organized or if what it contains.

The second one is called Postman API client. It might be useful to check what kind of data you receive (and the query you have to form) when querying API. Note, however that it is not libre or even open-source software. However, it is free as in free beer (but not as in free speech).

OK, now that everything is installed, grab your tool, let’s build and talk to some machines!