joeni

Big addition in the thesis files

I've added a lot of new files I've been working on lately, as well as a ton of modifications to existing files. Some files have been deleted, but they were obsolete anyway.

Author
Maarten Vangeneugden
Date
Aug. 5, 2018, 10:23 p.m.
Hash
a4f6a463f4956f9ab4e463cad3d34bc7e7a98dc0
Parent
449c0cd5e4ab16a9ba0f1f57f85814189daa8144
Modified files
docs/thesis/BlackBoard.org
docs/thesis/beveiliging.org
docs/thesis/blackboard.org
docs/thesis/client-side-scripting.org
docs/thesis/info-processen.org
docs/thesis/inplannen.org
docs/thesis/lokaalreservaties.org
docs/thesis/master.org
docs/thesis/postgres.org
docs/thesis/sources.bib
docs/thesis/toekomst.org
docs/thesis/uurrooster.org
docs/thesis/uurroosters.org
docs/thesis/verbeteringspunten_joeni.org
docs/verslagen.org β†’ docs/thesis/verslagen.org

docs/thesis/BlackBoard.org ΒΆ

0 additions and 11 deletions.

View changes Hide changes
1
-
De UHasselt gebruikt al jaren BlackBoard als digitaal platform voor het
2
-
uitwisselen van studiemateriaal tussen docenten en studenten.\\
3
-
** PropriΓ«taire software
4
-
*** Service as a software substitute (SaaSS)
5
-
** Kostelijk
6
-
<Uit goede bron heb ik kunnen vernemen dat BlackBoard de UHasselt jaarlijks
7
-
~€100.000 euro kost.>....
8
-
** Geen huisstijl mogelijk
9
-
** Onstabiel
10
-
** Slechte reputatie
11
-

docs/thesis/beveiliging.org ΒΆ

1 addition and 1 deletion.

View changes Hide changes
1
1
Web-applicaties worden blootgesteld aan tal van mogelijke beveiligingsproblemen.
2
2
Een beetje /cracker/ kan een onbeveiligde website in weinig tijd
3
3
binnendringen.\\
4
4
Mede dankzij het gebruik van Django zijn de meeste mogelijke veiligheidslekken
5
5
gedicht. De belangrijkste onderwerpen (en gemaakte afwegingen) worden hier uitgelegd.
6
6
** Cross site scripting
7
7
Cross site scripting (XSS) laat toe om scripts te injecteren in de browsers van andere
8
8
gebruikers door bv. scripts op te slaan in de databank, die dan later worden
9
9
uitgelezen en op de computer van andere gebruikers wordt uitgevoerd.
10
10
11
11
Binnen Django wordt XSS opgelost door middel van
12
12
/[[https://docs.djangoproject.com/en/2.0/ref/templates/language/#automatic-html-escaping][automatic HTML escaping]]/; de data die gebruikers ingeven, wordt behandeld als "onveilig".
13
13
*** Orgmode
14
14
Binnen Joeni kan gebruik worden gemaakt van Orgmode-syntax om teksten van 
15
15
opmaak te voorzien, zoals vette tekst, hyperlinks, lijsten enz.
16
16
17
17
Het is technisch gezien ook mogelijk om broncode in Org te markeren, zelfs om
18
18
deze uit te laten voeren, met alle [[https://orgmode.org/org.html#Code-evaluation-security][veiligheidsrisico's]] die daaruit volgen.
19
19
20
20
Ik heb toch geopteerd om Orgmode-syntax toe te laten voor data die door
21
21
gebruikers wordt verstuurd, maar *enkel* voor personeel van de UHasselt.
22
22
Personeelsleden kunnen makkelijker aansprakelijk gehouden worden voor misbruik
23
23
van de hen aangeleverde voorrechten, en de mogelijke gevolgen van dergelijk misbruik
24
24
zullen volgens mij afdoende werken om XSS via Orgmode tegen te gaan. Moest dat
25
25
niet kloppen, dan kan Orgmode altijd gemakkelijk uitgeschakeld worden, slechts
26
26
met een tolereerbaar verlies aan opmaak binnen Joeni.
27
27
28
28
** Externe malafide programmatuur
29
29
Bij het opvragen van scripts buiten de eigen server is er steeds een risico dat
30
30
er malafide code wordt binnengehaald; men weet niet welke acties ondernomen
31
31
worden op die andere servers om kraken tegen te gaan.\\
32
32
Dit is al verscheidene keren voorgevallen <BRONNEN>, en de kern van het probleem is tot nu
33
33
toe nog altijd niet opgelost, omdat het niet kΓ‘n worden opgelost: Downloaden van
34
34
ongecontroleerde scripts houdt een inherent veiligheidsrisico in.
35
35
36
36
Joeni lost dit op door simpelweg _geen_ externe scripts in te laden. Dit is
37
37
namelijk ook een reden waarom /client-side scripting/ overal vermeden wordt;
38
38
het opent een deur tot problemen waarover geen interne controle mogelijk is.
39
-
+
39
40
40
Alle software, media, /stylesheets/, bibliotheken, ... worden vanaf de server
41
41
gedraaid. 
42
42
** Clickjacking
43
43
44
44
** Cross site request forgery
45
45
Cross site request forgery (CSRF) 
46
46
47
47
** Kraken van wachtwoorden en -zinnen
48
48
*** Geen verplichte wijzigingen
49
49

docs/thesis/blackboard.org ΒΆ

198 additions and 0 deletions.

View changes Hide changes
+
1
Blackboard, het digitale platform dat wordt aangeleverd door Blackboard Inc.,,
+
2
wordt (voornamelijk) op de UHasselt gebruikt voor het verspreiden van
+
3
lesmateriaal onder de studenten en het maken van aankondigingen betreffende het
+
4
vak of opdrachten die moeten worden ingediend.
+
5
+
6
Een groot deel van hoe Joeni gebouwd is, bestaat uit functionaliteit die
+
7
Blackboard aanbiedt, en dat is niet zonder reden. Blackboard is een slechte zaak
+
8
voor de universiteit en haar studenten, en daar zijn verschillende redenen voor.
+
9
+
10
*** Onbetrouwbaarheid
+
11
Veel Amerikaanse universiteiten hebben /vroeger/ al samengewerkt met Blackboard,
+
12
met de nadruk op vroeger. Er zijn op het internet tal van artikelen te vinden
+
13
over deze universiteiten die klagen over het stelselmatig uitvallen van
+
14
Blackboard@@latex:\cite{bb-blackout1}\cite{bb-blackout2}@@, verlies van
+
15
data@@latex:\cite{bb-dataloss}@@ en
+
16
crashes@@latex:\cite{bb-crash}@@,
+
17
Er zijn ook hier en daar pagina's opgericht door studenten die een iets
+
18
ongenuanceerdere toon aanslaan zoals een [[https://web.archive.org/web/20110719215525/http://wwwapps.ivytech.edu/phpbb/viewtopic.php?p=14937&highlight=&sid=461341d24f37a90f0f83c16fc3bedcae]["Ik haat Blackboard"-groep]], maar hierop
+
19
zal niet verder worden ingegaan.
+
20
+
21
Uit persoonlijke ervaringen weet ik zelf ook dat Blackboard soms niet
+
22
werkt naar behoren. Een voorbeeld hiervan was een opdracht voor het vak Computernetwerken,
+
23
waarin Blackboard de inzendingen weigerde omdat deze "gevaarlijk" waren, ook al
+
24
waren dit gewoon tekstbestanden met een .py-extensie. Het bestand in een
+
25
zip-bestand plaatsen werkte wel.\\
+
26
Zo nu en dan was de website op zich gewoon niet bereikbaar, en gaf het een HTTP
+
27
503-error. Na een tijdje waren deze problemen wel weg.
+
28
+
29
Enige nuance vereist ook dat deze universiteiten vaak ook veel meer van hun
+
30
digitale behoeften op de schouders van Blackboard plaatsen, en het dus ook
+
31
waarschijnlijker is dat ze in contact komen met problemen. Maar de frequentie
+
32
van deze problematiek doet vermoeden dat het zeker geen eenmalige problemen zijn.
+
33
*** Hoge kosten
+
34
Tijdens een vergadering van de Studentenraad kwam naar voren dat het contract
+
35
met Blackboard inc. de UHasselt *jaarlijks meer dan €100.000* kost. Dit is geld
+
36
dat makkelijk gespendeerd kan worden aan andere zaken als voor een andere
+
37
oplossing gekozen wordt.
+
38
+
39
Als tegenargument kan natuurlijk worden aangevoerd dat dit gewoon de prijs is
+
40
die men betaalt voor dergelijke software, en dat informatici aannemen voor
+
41
interne software te schrijven minstens zo duur is. Het is echter de vraag of die
+
42
prijs opweegt tegen de punten die in dit hoofdstuk worden aangehaald.
+
43
*** Gebruiksvoorwaarden 
+
44
De gebruiksvoorwaarden die Blackboard oplegt aan hun gebruikers staat geenszins
+
45
in verhouding tot wat nodig is om de goede werking van de dienst te waarborgen.
+
46
Deze voorwaarden gaan in enkele gevallen uiterst ver, gegeven enkele voorbeelden hiervan.
+
47
+
48
Het feit dat deze eisen gesteld worden is een direct gevolg van de  [[Onvrije software][propriΓ«taire
+
49
software]] die Blackboard is: Onvrije software geeft de ontwikkelaar ervan
+
50
oneerlijke macht over de gebruikers, en Blackboard inc. heeft die macht
+
51
uitgeoefend.
+
52
**** Schending van de privacy
+
53
De studenten hebben een recht op privacy bij het uitvoeren van hun academische
+
54
verantwoordelijkheden, en dus ook bij het gebruik van de benodigde software hiervoor.
+
55
+
56
Blackboard heeft echter bedenkingen hiermee, en vereist dat hun gebruikers (en
+
57
dus ook de studenten van de UHasselt) akkoord gaan met hun privacyverklaring.@@latex:\cite{bb-privacy}@@
+
58
Hierin staan dan teksten te lezen zoals het volgende:
+
59
#+BEGIN_QUOTE
+
60
*Analytics and marketing.* We analyze usage information for sales and 
+
61
marketing purposes and for trends about our visitors and their demographics and
+
62
how they use our websites. This analysis is necessary to further our legitimate
+
63
 interest in understanding our users and how they interact with us and our
+
64
websites, improving our websites and communication 
+
65
with you (including for marketing purposes).
+
66
#+END_QUOTE
+
67
Het komt erop neer dat informatie die ze inzamelen gebruikt zal worden voor
+
68
reclamedoeleinden.
+
69
+
70
Het probleem hiermee is dat studenten gewoon geen keuze hebben of ze hiermee
+
71
akkoord gaan of niet: Door niet akkoord te gaan krijgen ze geen toegang tot het
+
72
studiemateriaal van hun docenten, zijn ze niet op de hoogte van taken, ... Dit
+
73
is natuurlijk ook een gevolg van het gebruik van [[Onvrije software][onvrije software]], maar dat praat het
+
74
geenzins goed.
+
75
+
76
De UHasselt heeft een verplichting aan haar studenten om hun rechten te
+
77
beschermen als ze willen studeren, en Blackboard maakt hier misbruik van hun
+
78
positie om data van studenten te misbruiken, of ze dat nu willen of niet.
+
79
Het enige wat we hebben is een "belofte" dat de privacy serieus genomen wordt,
+
80
maar met dergelijke tegenstrijdige verklaringen is het maar de vraag hoe
+
81
betrouwbaar dat is.
+
82
+
83
Tot slot is het verwerken van deze gegevens mogelijk in strijd met de Algemene
+
84
Verordering Gegevensbescherming; het verwerken van deze gegevens voor
+
85
marketingdoeleinden mag enkel met
+
86
expliciete toestemming van de gebruiker.@@latex:\cite{eu-gdpr}@@ 
+
87
Maar opnieuw: de gebruiker heeft hier
+
88
als student (of docent) niet echt een keus of hij/zij akkoord gaat of niet. Het is maar
+
89
de vraag wat een toestemming die op dergelijke manier verkregen wordt nu
+
90
eigenlijk waard is.
+
91
+
92
**** Kopieerrechten
+
93
Auteurs van creatieve werken zouden zelf moeten kunnen bepalen wanneer hun werken
+
94
(publiek domein niet meegerekend) gebruikt mogen worden voor commerciΓ«le
+
95
doeleinden. Blackboard stelt echter in hun gebruiksvoorwaarden:@@latex:\cite{bb-tos}@@
+
96
#+BEGIN_QUOTE
+
97
By submitting, posting or displaying Content on or through the Products,
+
98
 you grant us a worldwide, non-exclusive, royalty-free license (with the right to sublicense)
+
99
 to use, host, store, copy, reproduce, process, adapt, modify, publish, transmit,
+
100
create derivative works from, communicate, display, and/or distribute such Content
+
101
 in any and all media or distribution methods (now known or later developed) as
+
102
part of providing any of the Products. You agree that this license includes the
+
103
right for Blackboard to provide, promote, and improve the Products and to make
+
104
Content submitted to or through the Products available to other institutions or
+
105
individuals as part of providing the Products (including after termination of
+
106
your use of the Products) and in accordance with your privacy settings. You
+
107
represent and warrant that you have all the rights, power and authority
+
108
necessary to grant the rights granted herein to any Content that you submit.
+
109
+
110
../..
+
111
+
112
Blackboard may exercise the rights to your Content granted under these Terms
+
113
without liability for payment of any guild fees, residuals, payments, fees, or
+
114
royalties payable under any collective bargaining agreement, licensing
+
115
arrangement or otherwise. 
+
116
#+END_QUOTE
+
117
Er is geen reden voor Blackboard om te eisen van studenten (en andere gebruikers
+
118
zoals docenten) dat Blackboard inc. hun werken voor praktisch alles mag
+
119
 gebruiken, zonder enige vorm van compensatie of naamsvermelding. Opnieuw maken ze hiermee
+
120
misbruik van hun positie als digitaal platform van universiteiten om eisen te
+
121
stellen aan gebruikers waar ze normaal vrijwel nooit mee akkoord zouden gaan.
+
122
+
123
*** Onvrije software
+
124
De software die Blackboard gebruikt, is propriΓ«taire software, waarvan de
+
125
werking niet bekend is, in die zin dat de UHasselt geen inzage heeft in hoe hun
+
126
data wordt afgehandeld. Gegeven [[Gebruiksvoorwaarden][de gebruiksvoorwaarden]] doet dit vermoeden dat er
+
127
ook activiteiten gebeuren die niet noodzakelijk zijn, zoals het gebruik van de
+
128
data voor marketing en profilering van studenten.
+
129
+
130
De propriΓ«taire software maakt dit mogelijk; door de broncode verborgen te
+
131
houden en fundamentele rechten te ontzeggen,
+
132
kan er geen controle plaatsvinden op wat er nu echt gebeurt met de data
+
133
van onze studenten. Sterker: Het gebrek aan controle (en de positie die
+
134
Blackboard heeft binnen de universiteit), samen met de wetenschap dat de
+
135
gebruikers hier weinig verweer tegen kunnen bieden, zet aan tot misbruik van die
+
136
machtspositie, en het implementeren van functionaliteit die de gebruikers nefast
+
137
behandeld. Dit wordt ook wel /malware/ genoemd.
+
138
+
139
We kunnen zelf ook de software niet aanpassen naar de behoeften van de UHasselt,
+
140
ook hiervoor zijn we afhankelijk van Blackboard inc.
+
141
+
142
Kortom: Doordat Blackboard geen vrije software is, heeft de universiteit geen
+
143
controle over de software.
+
144
+
145
Joeni zou voor de student op dezelfde manier als Blackboard bereikt worden, maar
+
146
de broncode van Joeni is wél vrij in te zien (dit is namelijk ook één van de
+
147
veiligheidsgaranties). De studenten kunnen er sowieso redelijkerwijs op vertrouwen dat de
+
148
universiteit hun rechten ter harte neemt, maar met vrije software hebben ze ook
+
149
een garantie hiervoor.
+
150
*** Toledo & Minerva/Ufora
+
151
De Universiteit Gent[fn:minerva], Vrije Universiteit Brussel en Katholieke Universiteit Leuven maken geen gebruik van
+
152
externe bedrijven voor hun digitale behoeften. In plaats daarvan gebruiken zij
+
153
software "van het huis"; de software is ontwikkeld voor en door de universiteit
+
154
zelf. Het toont aan dat een universitair digitaal platform bouwen mogelijk is,
+
155
en dat het academische standaarden kan aanhouden. Er is geen nood om te
+
156
vertrouwen op een bedrijf zoals Blackboard, en genoegen te nemen met een
+
157
"algemene" oplossing.
+
158
+
159
[fn:minerva] In het afgelopen academiejaar heeft de UGent een
+
160
aanbesteding uitgegeven voor bedrijven om een nieuwe Minerva te bouwen. Dit
+
161
nieuwe programma zal Ufora heten, en (het ondertussen vijftien jaar oude)
+
162
Minerva gaandeweg vervangen.@@latex:\cite{ufora}@@ Alhoewel
+
163
zij dus ook overschakelen op een extern bedrijf, kiezen zij hiermee nog steeds
+
164
voor een "persoonlijke" oplossing, en niet voor iets wat niet specifiek voor hen gemaakt is.
+
165
+
166
Natuurlijk zijn deze universiteiten aanzienlijk groter dan de UHasselt wat
+
167
betreft het aantal studenten. De Universiteit Antwerpen
+
168
gebruikt ook Blackboard als digitaal platform, en telt zelf ook al 20.000 studenten.
+
169
Maar de UHasselt heeft eerder zelf ook al de
+
170
ambitie geuit om te blijven groeien@@latex:\cite{uhasselt-groeit}@@, en voor een
+
171
langetermijnoplossing is een oplossing op maat zeker geen overbodige luxe.
+
172
*** Informatica binnen de UHasselt
+
173
Binnen de faculteit Wetenschappen op de UHasselt zijn er niet veel
+
174
masteropleidingen. Maar buiten de Master of Statistics wordt er wel fel ingezet
+
175
op de Master in de Informatica, met maar lieft zes (!) mogelijke
+
176
specialisatieprofielen@@latex:\cite{opleiding-informatica}@@,
+
177
wat voor een universiteit van dergelijke grootte best opvallend te noemen is.\\
+
178
Het zou een mooie troef zijn voor de (master)opleiding als de UHasselt kan tonen
+
179
dat ze genoeg vertrouwen hebben in hun eigen kunnen, en deze kennis ook inzetten
+
180
voor het onderhoud van hun eigen informatica. Vertrouwen op een hoop externe
+
181
bedrijven voor de interne IT doet dat vertrouwen niet uitstralen.
+
182
+
183
Dit is evenwel niet zozeer een punt tΓ©gen Blackboard, maar wel een punt om te
+
184
ijveren om met het ALIPA-project nu ook in te zetten op een goede oplossing van
+
185
eigen makelij.
+
186
*** Reden(en) tot stopzetting
+
187
In de studentenraad is ter ore gekomen dat de integratie met Blackboard, ondanks
+
188
bovenstaande punten, verder wordt gezet middels een app die zou integreren met Blackboard.
+
189
+
190
Misschien is het beter om de samenwerking echter stop te zetten. Voor ALIPA zou
+
191
het makkelijker zijn om de vernieuwing door te laten gaan als er controle is
+
192
over zo'n cruciaal onderdeel van de universiteit.
+
193
+
194
Met Joeni is er een voorstel dat laat zien hoe de functies die nu door
+
195
Blackboard worden aangevoerd, geΓ―ntegreerd kunnen worden in een centrale
+
196
oplossing voor de studenten. Het is niet zo moeilijk als op het eerste zicht zou
+
197
lijken, en veegt direct alle gegeven problemen van de baan.
+
198

docs/thesis/client-side-scripting.org ΒΆ

216 additions and 216 deletions.

View changes Hide changes
1
-
Ingewijden zijn bekend met het feit dat JavaScript een Turing-complete
2
-
programmeertaal is; je kunt er dus daadwerkelijk programma's mee schrijven.
3
-
Een prominent voorbeeld hiervan is Google met haar Google Docs, Sheets,
4
-
Presentations, GMail, ...
5
-
6
-
Het valt dan natuurlijk op dat binnen Joeni *geen enkele lijn JavaScript
7
-
geschreven is*. En dat is ook expres gedaan.
8
-
Dat klinkt misschien nogal contra-intuΓ―tief; een volledig programma, dat
9
-
hoofdzakelijk gebruikt zal worden via de browser, dat client-side scripting
10
-
expres aan zijn neus voorbij laat gaan.
11
-
12
-
Hier zijn meerdere redenen voor. EΓ©n van de voornaamste redenen (en eentje die
13
-
Google, Facebook, ... allemaal klaarblijkelijk vergeten zijn) is dat een
14
-
grondregel van /web development/ is dat je er niet van mag uitgaan dat de
15
-
gebruiker JavaScript ondersteunt.
16
-
17
-
*Client-side scripting (Css* (niet te verwarren met Cascading Style Sheets, CSS))
18
-
*mag enkel een strikt cosmetisch effect hebben op
19
-
een website.* De functionaliteit gaat namelijk compleet verloren als de
20
-
gebruiker geen ondersteuning biedt.
21
-
22
-
Alhoewel het in de praktijk steeds neerkomt op "JavaScript (JS) dient vermeden te
23
-
worden op het web", ga ik enkel spreken over "Client side scripting" (Css),
24
-
omdat veel van de problemen die zich met JS zouden voordoen, zich eveneens
25
-
zouden voordoen bij eender welke andere taal (Python, Clojure, ...),
26
-
als die voor Css gebruikt zou worden. JS is sinds [[http://es6-features.org/][ES6]] een betere taal geworden,
27
-
maar de "kwaliteit" van een taal is volledig irrelevant in deze discussie. Het
28
-
bespreken van de faciliteiten die JS als programmeertaal biedt wordt in dit
29
-
hoofdstuk dus achterwege gelaten.
30
-
31
-
Er wordt hier ook enkel gefocust op het gebruik van Css om bepaalde
32
-
functionaliteit te laten werken. Css die enkel een cosmetisch effect heeft is
33
-
niet het onderwerp van dit stuk, maar wordt eveneens vermeden om aan te tonen
34
-
dat een bruikbare web-applicatie ook mooi kan zijn met enkel HTML en CSS.
35
-
36
-
** Verschillende versies
37
-
Alles wat netwerkgerelateerd is, moet zich houden aan vooraf opgelegde
38
-
standaarden om correct te kunnen communiceren, en met het WWW is dat niet
39
-
anders.
40
-
41
-
Dit geeft ook een reden om geen Css te gebruiken; op dit moment moet ik
42
-
rekening houden met
43
-
44
-
- De standaard van HTML(5) en welke tags ondersteund worden
45
-
- De standaard van CSS(3) en de ondersteunde /properties/ binnen browsers
46
-
47
-
Dit op zich is al een hele klus, en vereist *continu onderhoud van de software*.
48
-
49
-
Stel dat men geen website ontwerpt, en /native software/ ontwikkelt, dan hoeft
50
-
men enkel rekening te houden met de syntax van de programmeertaal; als het
51
-
compileert kan het bij wijze van spreken gebruikt worden.[fn::In de praktijk is het niet zo voor de hand liggend, maar om het punt te maken volstaat dit.]
52
-
53
-
Met Css moet men rekening houden met welke onderdelen van de gebruikte
54
-
programmeertaal door de browsers wordt ondersteund, en dat is van vitaal belang,
55
-
want als het script niet ondersteund wordt, wordt het simpelweg niet uitgevoerd,
56
-
met als gevolg dat de website aan functionaliteit moet inboeten.
57
-
58
-
Als dit bij HTML of CSS gebeurt (bv. gebruik van [[https://developer.mozilla.org/en-US/docs/Web/HTML/Element/marquee][<marquee>]]), dan kan de browser
59
-
nog terugvallen op een standaardwaarde. Dit is ook mogelijk, omdat geen van
60
-
beide een programmeertaal is; men kΓ‘n onderdelen vervangen zonder een al te
61
-
groot risico te lopen om de site kapot te maken.
62
-
63
-
Een goed voorbeeld hiervan is het ~<tel>~-element, dat wordt gebruikt om een
64
-
telefoonnummer aan te duiden op een webpagina. Op mobiele browsers wordt een
65
-
klik hierop behandeld als een telefoongesprek. Op (oudere) desktopbrowsers wordt
66
-
dit als gewone tekst weergegeven.
67
-
68
-
** Turing-compleetheid
69
-
De aantrekkingskracht van Css schuilt in de [[https://nl.wikipedia.org/wiki/Turingvolledigheid][Turing-compleetheid]]. Dit maakt het tot een
70
-
programmeertaal waarin elk mogelijk computerprogramma geprogrammeerd kan worden.
71
-
72
-
De grote mÑÑr in deze kracht, is dat dat ook een hoop verantwoordelijkheid met
73
-
zich meebrengt. Er kunnen fouten in de code sluipen, die de hele website kunnen
74
-
doen vastlopen.
75
-
76
-
JavaScript heeft dan ook nog de ongelukkige eigenschap dat het een enorm
77
-
[[https://en.wikipedia.org/wiki/Strong_and_weak_typing][zwak getypeerde programmeertaal]] is; de taal doet in de achtergrond stille
78
-
conversies tussen verschillende types, en geeft liever foute resultaten terug
79
-
dan de programmeur te vertellen dat er een fout in de code zit.
80
-
81
-
Deze punten gelden natuurlijk ook voor de /server-side/, maar dit is (in
82
-
tegenstelling tot Css) absoluut onvermijdelijk om een dergelijke website te
83
-
creΓ«ren.
84
-
Daarnaast zijn er ook een hoop voordelen die men niet heeft bij Css:
85
-
86
-
- Vrije keuze van programmeertaal (en mogelijkheid om te linken met andere
87
-
  software)
88
-
- Zekerheid dat, als de software werkt op de ene /client/, die ook voor de
89
-
  andere /client/ werkt (zie [[Verschillende versies]])
90
-
91
-
HTML en CSS zijn geen "volwaardige programmeertalen". HTML is een opmaaktaal,
92
-
men beschrijft er dus mee hoe bepaalde onderdelen van de website moeten worden
93
-
voorgesteld; als een hyperlink, een paragraaf, ...
94
-
CSS laat toe om de stijl van deze opmaak te definiΓ«ren, hoe moet een hyperlink
95
-
uitzien, ...
96
-
97
-
Een fout hierin heeft hoogstens een esthetisch vervelend effect tot gevolg; veel
98
-
browsers negeren fouten, en vervangen deze door /fallbacks/. Dit is niet
99
-
mogelijk met een programmeertaal; een fout is een fout, en computers zijn niet
100
-
in staat om een fout programma zelf te repareren.
101
-
102
-
** Onbeschikbaarheid
103
-
Er zijn talloze manieren waarop de aangereikte code niet beschikbaar kan zijn
104
-
voor de gebruiker, waardoor een website die afhangt van Css plots zonder
105
-
waarschuwing niet meer werkzaam is. Een wilde greep uit de mogelijkheden:
106
-
107
-
- De gebruiker heeft een zwakke computer
108
-
- De computer heeft een slechte verbinding
109
-
- De gebruiker surft via de GSM (een zwakke computer met een slechte verbinding)
110
-
- De gebruiker heeft [[https://noscript.net][NoScript]], [[https://www.gnu.org/software/librejs/][GNU LibreJS]], of een andere extensie die Css blokkeert
111
-
- De verbinding wordt onderbroken tijdens het inladen, en de pagina blokkeert
112
-
  terwijl het tevergeefs wacht op de rest van het script
113
-
- De browser van de gebruiker ondersteunt simpelweg geen Css
114
-
- De browser van de gebruiker ondersteunt niet de Css-implementatie die op de
115
-
  website gebruikt wordt (zie [[Verschillende versies]])
116
-
- De website laadt Css in van een externe website, maar er is een fout in het
117
-
  certificaat, en de browser weigert om de verbinding op te zetten
118
-
- ...
119
-
120
-
Er hoeft maar één (en slechts één) van deze mogelijkheden op te treden, en *de
121
-
volledige website is per direct compleet onbruikbaar*.
122
-
123
-
Voor elk van deze mogelijkheden zou met Css een controle moeten worden
124
-
ingebouwd, en dan weer voor elke mogelijkheid een oplossing bedacht (want "Het
125
-
werkt niet en dat is de schuld van de gebruiker" is geen oplossing).
126
-
127
-
Daarentegen, wat als er server-side een fout optreedt? \\
128
-
Veel webframeworks hebben ingebouwde /debugging tools/ die bij fouten direct de
129
-
programmeur wijzen op de fout. Django is hier een goed voorbeeld van.
130
-
131
-
Daarnaast biedt de betere webserver ook ingebouwde oplossingen om vaak
132
-
voorkomende fouten af te handelen (zoals een HTTP 404). In dat geval kan er
133
-
gemakkelijk een e-mail naar de ontwikkelaar gestuurd worden, of kan een log
134
-
aangemaakt worden. En dit is vaak allemaal /ingebouwd/.
135
-
136
-
** Uitgesteld resultaat
137
-
Bestanden over het WWW worden quasi altijd verzonden via [[https://nl.wikipedia.org/wiki/Hypertext_Transfer_Protocol][HTTP]]([[https://nl.wikipedia.org/wiki/HyperText_Transfer_Protocol_Secure][S]]), en de browser
138
-
is daarna verantwoordelijk voor het in elkaar steken van alle ontvangen
139
-
onderdelen.
140
-
141
-
Het handige hieraan, is dat elke browser zelf kan bepalen hoe, en in welke volgorde dit
142
-
moet gebeuren, al dan niet in functie van bepaalde instellingen die de gebruiker
143
-
zelf kan aanpassen (bv. geen afbeeldingen laden via 4G).
144
-
145
-
Css interfereert op haast elk mogelijk niveau met deze werkwijze. Net omdat het
146
-
niet op voorhand geweten is wat er zal worden aangepast, of wanneer de code
147
-
ingeladen moet worden, is een browser verplicht om vanaf het eerste moment dat
148
-
een script gedetecteerd wordt (bv. via de ~<script></script>~-tags), direct de
149
-
code te evalueren en uit te voeren, ongeacht hoe lang het duurt of hoe zwaar het is.
150
-
151
-
Css breekt ook met het gebruikelijke mantra dat de browser/gebruiker bepaalt hoe
152
-
en wat wordt ingeladen.
153
-
Vaak betekent dit ook dat de code geΓ«valueerd moet worden, op dat exacte moment,
154
-
vooraleer de rest van de pagina getoond kan worden. \\
155
-
Dit is minder een probleem als Css gebruikt wordt voor het enige waarvoor het
156
-
zou gebruikt moeten worden (cosmetische elementen), omdat praktisch alle code dan expres
157
-
op het einde van het HTML-document kan worden ingeladen. De website is dan al
158
-
bruikbaar vooraleer de code ingeladen moet worden. \\
159
-
Een groeiend aantal gebruikers blokkeert ook expres Css tijdens het surfen op
160
-
het web, omdat de snelheidswinsten en sterk verhoogde privacy een waardige
161
-
afweging is voor een ietwat minder cosmetisch aangeklede website. Met andere
162
-
woorden; zij stellen het resultaat uit voor onbepaalde duur.
163
-
164
-
Dit geeft vanzelfsprekend ook problemen als de code niet geoptimaliseerd is, en
165
-
daar elke browser de aangereikte Css op een andere manier kan evalueren, is het
166
-
onbegonnen werk om voor alle mogelijke implementaties handige optimalisaties
167
-
door te voeren. Men beperkt zich natuurlijk meestal tot de populairste
168
-
implementaties ([[https://en.wikipedia.org/wiki/WebKit][WebKit]] en [[https://en.wikipedia.org/wiki/Gecko_(software)][Gecko]]).
169
-
170
-
_Maar je hoeft vanzelfsprekend niet te optimaliseren, als er geen code is om te optimaliseren._
171
-
172
-
Je zou kunnen zeggen dat deze redenering ook opgaat voor Joeni zelf, wat van
173
-
Python gebruik maakt. Maar het gebruikte framework ondersteunt het
174
-
[[https://docs.djangoproject.com/en/2.0/topics/cache/][cachen van pagina's]]. Dus eerder geΓ«valueerde code zal al op voorhand beschikbaar
175
-
zijn. Daarbij komt dat de snelheid van een server naar wens kan worden vergroot,
176
-
terwijl je bij de gebruiker er van moet uitgaan dat zijn/haar toestel traag is.
177
-
De code van de server hoeft ook slechts voor één platform geoptimaliseerd te
178
-
worden, dat van de server.
179
-
180
-
Uiteindelijk is het resultaat van (foutief) Css-gebruik 
181
-
sowieso: *Een traag werkende website.*
182
-
183
-
** Verlies van betekenis
184
-
Een bepaalde /tag/ in HTML draagt een bepaalde betekenis. ~<a />~ betekent dat dit
185
-
een hyperlink is, ~<body />~ betekent dat wat volgt getoond moet worden als de
186
-
'inhoud' van de pagina, ~<p />~ duidt op een paragraaf, ...
187
-
188
-
Deze betekenis wordt vaak door de browser ten volle benut; Alle links kunnen makkelijk
189
-
op voorhand verzameld worden (i.e. Alles wat tussen ~<a />~ staat), wat tussen
190
-
~<head />~ staat wordt niet getoond, ...
191
-
192
-
*Betekenis opent deuren voor het impliciet infereren van informatie.* Dit is de
193
-
reden waarom de tags in HTML (en vooral sinds HTML5) een aanduiding zijn voor
194
-
wat de ingesloten data /betekent/; ~<article />~ is een artikel en kan dus los
195
-
weergegeven worden van de rest van de pagina, ~<del />~ is iets dat niet
196
-
meer relevant is, maar waarschijnlijk toch wel weergegeven moet worden. ~<ol />~
197
-
is een geordende lijst, dus de volgorde van de data is van belang, in
198
-
tegenstelling tot ~<ul />~. Er zijn ontelbare voorbeelden te vinden.
199
-
200
-
Deze betekenis gaat volledig verloren als onderdelen van de website met Css
201
-
worden "nagemaakt". ~<div onclick="hyperlink" />~ zal waarschijnlijk wel
202
-
doorlinken naar een website, maar waar dat je in bv. FireFox met een
203
-
middelmuisklik een ~<a />~ in een nieuw tabblad kunt openen, zal dit niet werken
204
-
met Css.
205
-
206
-
** Conclusie
207
-
Het moge duidelijk zijn dat het gebruik van Css om zogenaamde /web apps/ te
208
-
maken, fundamenteel een slecht idee is, dat meer problemen voortbrengt dan het
209
-
oplost. Alle problemen die sommige websites proberen op te lossen met Css, zijn
210
-
makkelijker op te lossen met slechts HTML en CSS (Cascading Style Sheets), en
211
-
Client side scripting maakt soms de problemen zelfs erger.
212
-
213
-
En zelfs al zouden alle bovenstaande punten onwaar zijn, dan nog is Joeni
214
-
het bewijs dat Css geen vereiste is om werkende software te schrijven, die
215
-
hoofdzakelijk via het WWW beschikbaar wordt gesteld.
216
-
+
1
 Ingewijden zijn bekend met het feit dat JavaScript een Turing-complete
+
2
 programmeertaal is; je kunt er dus daadwerkelijk programma's mee schrijven.
+
3
 Een prominent voorbeeld hiervan is Google met haar Google Docs, Sheets,
+
4
 Presentations, GMail, ...
+
5
+
6
 Het valt dan natuurlijk op dat binnen Joeni *geen enkele lijn JavaScript
+
7
 geschreven is*. En dat is ook expres gedaan.
+
8
 Dat klinkt misschien nogal contra-intuΓ―tief; een volledig programma, dat
+
9
 hoofdzakelijk gebruikt zal worden via de browser, dat client-side scripting
+
10
 expres aan zijn neus voorbij laat gaan.
+
11
+
12
 Hier zijn meerdere redenen voor. EΓ©n van de voornaamste redenen (en eentje die
+
13
 Google, Facebook, ... allemaal klaarblijkelijk vergeten zijn) is dat een
+
14
 grondregel van /web development/ is dat je er niet van mag uitgaan dat de
+
15
 gebruiker JavaScript ondersteunt.
+
16
+
17
 *Client-side scripting (Css* (niet te verwarren met Cascading Style Sheets, CSS))
+
18
 *mag enkel een strikt cosmetisch effect hebben op
+
19
 een website.* De functionaliteit gaat namelijk compleet verloren als de
+
20
 gebruiker geen ondersteuning biedt.
+
21
+
22
 Alhoewel het in de praktijk steeds neerkomt op "JavaScript (JS) dient vermeden te
+
23
 worden op het web", ga ik enkel spreken over "Client side scripting" (Css),
+
24
 omdat veel van de problemen die zich met JS zouden voordoen, zich eveneens
+
25
 zouden voordoen bij eender welke andere taal (Python, Clojure, ...),
+
26
 als die voor Css gebruikt zou worden. JS is sinds [[http://es6-features.org/][ES6]] een betere taal geworden,
+
27
 maar de "kwaliteit" van een taal is volledig irrelevant in deze discussie. Het
+
28
 bespreken van de faciliteiten die JS als programmeertaal biedt wordt in dit
+
29
 hoofdstuk dus achterwege gelaten.
+
30
+
31
 Er wordt hier ook enkel gefocust op het gebruik van Css om bepaalde
+
32
 functionaliteit te laten werken. Css die enkel een cosmetisch effect heeft is
+
33
 niet het onderwerp van dit stuk, maar wordt eveneens vermeden om aan te tonen
+
34
 dat een bruikbare web-applicatie ook mooi kan zijn met enkel HTML en CSS.
+
35
+
36
*** Verschillende versies
+
37
 Alles wat netwerkgerelateerd is, moet zich houden aan vooraf opgelegde
+
38
 standaarden om correct te kunnen communiceren, en met het WWW is dat niet
+
39
 anders.
+
40
+
41
 Dit geeft ook een reden om geen Css te gebruiken; op dit moment moet ik
+
42
 rekening houden met
+
43
+
44
 - De standaard van HTML(5) en welke tags ondersteund worden
+
45
 - De standaard van CSS(3) en de ondersteunde /properties/ binnen browsers
+
46
+
47
 Dit op zich is al een hele klus, en vereist *continu onderhoud van de software*.
+
48
+
49
 Stel dat men geen website ontwerpt, en /native software/ ontwikkelt, dan hoeft
+
50
 men enkel rekening te houden met de syntax van de programmeertaal; als het
+
51
 compileert kan het bij wijze van spreken gebruikt worden.[fn::In de praktijk is het niet zo voor de hand liggend, maar om het punt te maken volstaat dit.]
+
52
+
53
 Met Css moet men rekening houden met welke onderdelen van de gebruikte
+
54
 programmeertaal door de browsers wordt ondersteund, en dat is van vitaal belang,
+
55
 want als het script niet ondersteund wordt, wordt het simpelweg niet uitgevoerd,
+
56
 met als gevolg dat de website aan functionaliteit moet inboeten.
+
57
+
58
 Als dit bij HTML of CSS gebeurt (bv. gebruik van [[https://developer.mozilla.org/en-US/docs/Web/HTML/Element/marquee][<marquee>]]), dan kan de browser
+
59
 nog terugvallen op een standaardwaarde. Dit is ook mogelijk, omdat geen van
+
60
 beide een programmeertaal is; men kΓ‘n onderdelen vervangen zonder een al te
+
61
 groot risico te lopen om de site kapot te maken.
+
62
+
63
 Een goed voorbeeld hiervan is het ~<tel>~-element, dat wordt gebruikt om een
+
64
 telefoonnummer aan te duiden op een webpagina. Op mobiele browsers wordt een
+
65
 klik hierop behandeld als een telefoongesprek. Op (oudere) desktopbrowsers wordt
+
66
 dit als gewone tekst weergegeven.
+
67
+
68
*** Turing-compleetheid
+
69
 De aantrekkingskracht van Css schuilt in de [[https://nl.wikipedia.org/wiki/Turingvolledigheid][Turing-compleetheid]]. Dit maakt het tot een
+
70
 programmeertaal waarin elk mogelijk computerprogramma geprogrammeerd kan worden.
+
71
+
72
 De grote mÑÑr in deze kracht, is dat dat ook een hoop verantwoordelijkheid met
+
73
 zich meebrengt. Er kunnen fouten in de code sluipen, die de hele website kunnen
+
74
 doen vastlopen.
+
75
+
76
 JavaScript heeft dan ook nog de ongelukkige eigenschap dat het een enorm
+
77
 [[https://en.wikipedia.org/wiki/Strong_and_weak_typing][zwak getypeerde programmeertaal]] is; de taal doet in de achtergrond stille
+
78
 conversies tussen verschillende types, en geeft liever foute resultaten terug
+
79
 dan de programmeur te vertellen dat er een fout in de code zit.
+
80
+
81
 Deze punten gelden natuurlijk ook voor de /server-side/, maar dit is (in
+
82
 tegenstelling tot Css) absoluut onvermijdelijk om een dergelijke website te
+
83
 creΓ«ren.
+
84
 Daarnaast zijn er ook een hoop voordelen die men niet heeft bij Css:
+
85
+
86
 - Vrije keuze van programmeertaal (en mogelijkheid om te linken met andere
+
87
   software)
+
88
 - Zekerheid dat, als de software werkt op de ene /client/, die ook voor de
+
89
   andere /client/ werkt (zie [[Verschillende versies][Verschillende versies]]).
+
90
+
91
 HTML en CSS zijn geen "volwaardige programmeertalen". HTML is een opmaaktaal,
+
92
 men beschrijft er dus mee hoe bepaalde onderdelen van de website moeten worden
+
93
 voorgesteld; als een hyperlink, een paragraaf, ...
+
94
 CSS laat toe om de stijl van deze opmaak te definiΓ«ren, hoe moet een hyperlink
+
95
 uitzien, ...
+
96
+
97
 Een fout hierin heeft hoogstens een esthetisch vervelend effect tot gevolg; veel
+
98
 browsers negeren fouten, en vervangen deze door /fallbacks/. Dit is niet
+
99
 mogelijk met een programmeertaal; een fout is een fout, en computers zijn niet
+
100
 in staat om een fout programma zelf te repareren.
+
101
+
102
*** Onbeschikbaarheid
+
103
 Er zijn talloze manieren waarop de aangereikte code niet beschikbaar kan zijn
+
104
 voor de gebruiker, waardoor een website die afhangt van Css plots zonder
+
105
 waarschuwing niet meer werkzaam is. Een wilde greep uit de mogelijkheden:
+
106
+
107
 - De gebruiker heeft een zwakke computer
+
108
 - De computer heeft een slechte verbinding
+
109
 - De gebruiker surft via de GSM (een zwakke computer met een slechte verbinding)
+
110
 - De gebruiker heeft [[https://noscript.net][NoScript]], [[https://www.gnu.org/software/librejs/][GNU LibreJS,]] of een andere extensie die Css blokkeert
+
111
 - De verbinding wordt onderbroken tijdens het inladen, en de pagina blokkeert
+
112
   terwijl het tevergeefs wacht op de rest van het script
+
113
 - De browser van de gebruiker ondersteunt simpelweg geen Css
+
114
 - De browser van de gebruiker ondersteunt niet de Css-implementatie die op de
+
115
   website gebruikt wordt (zie [[Verschillende versies]])
+
116
 - De website laadt Css in van een externe website, maar er is een fout in het
+
117
   certificaat, en de browser weigert om de verbinding op te zetten
+
118
 - ...
+
119
+
120
 Er hoeft maar één (en slechts één) van deze mogelijkheden op te treden, en *de
+
121
 volledige website is per direct compleet onbruikbaar*.
+
122
+
123
 Voor elk van deze mogelijkheden zou met Css een controle moeten worden
+
124
 ingebouwd, en dan weer voor elke mogelijkheid een oplossing bedacht (want "Het
+
125
 werkt niet en dat is de schuld van de gebruiker" is geen oplossing).
+
126
+
127
 Daarentegen, wat als er server-side een fout optreedt? \\
+
128
 Veel webframeworks hebben ingebouwde /debugging tools/ die bij fouten direct de
+
129
 programmeur wijzen op de fout. Django is hier een goed voorbeeld van.
+
130
+
131
 Daarnaast biedt de betere webserver ook ingebouwde oplossingen om vaak
+
132
 voorkomende fouten af te handelen (zoals een HTTP 404). In dat geval kan er
+
133
 gemakkelijk een e-mail naar de ontwikkelaar gestuurd worden, of kan een log
+
134
 aangemaakt worden. En dit is vaak allemaal /ingebouwd/.
+
135
+
136
*** Uitgesteld resultaat
+
137
 Bestanden over het WWW worden quasi altijd verzonden via [[https://nl.wikipedia.org/wiki/Hypertext_Transfer_Protocol][HTTP]]([[https://nl.wikipedia.org/wiki/HyperText_Transfer_Protocol_Secure][S]]), en de browser
+
138
 is daarna verantwoordelijk voor het in elkaar steken van alle ontvangen
+
139
 onderdelen.
+
140
+
141
 Het handige hieraan, is dat elke browser zelf kan bepalen hoe, en in welke volgorde dit
+
142
 moet gebeuren, al dan niet in functie van bepaalde instellingen die de gebruiker
+
143
 zelf kan aanpassen (bv. geen afbeeldingen laden via 4G).
+
144
+
145
 Css interfereert op haast elk mogelijk niveau met deze werkwijze. Net omdat het
+
146
 niet op voorhand geweten is wat er zal worden aangepast, of wanneer de code
+
147
 ingeladen moet worden, is een browser verplicht om vanaf het eerste moment dat
+
148
 een script gedetecteerd wordt (bv. via de ~<script></script>~-tags), direct de
+
149
 code te evalueren en uit te voeren, ongeacht hoe lang het duurt of hoe zwaar het is.
+
150
+
151
 Css breekt ook met het gebruikelijke mantra dat de browser/gebruiker bepaalt hoe
+
152
 en wat wordt ingeladen.
+
153
 Vaak betekent dit ook dat de code geΓ«valueerd moet worden, op dat exacte moment,
+
154
 vooraleer de rest van de pagina getoond kan worden. \\
+
155
 Dit is minder een probleem als Css gebruikt wordt voor het enige waarvoor het
+
156
 zou gebruikt moeten worden (cosmetische elementen), omdat praktisch alle code dan expres
+
157
 op het einde van het HTML-document kan worden ingeladen. De website is dan al
+
158
 bruikbaar vooraleer de code ingeladen moet worden. \\
+
159
 Een groeiend aantal gebruikers blokkeert ook expres Css tijdens het surfen op
+
160
 het web, omdat de snelheidswinsten en sterk verhoogde privacy een waardige
+
161
 afweging is voor een ietwat minder cosmetisch aangeklede website. Met andere
+
162
 woorden; zij stellen het resultaat uit voor onbepaalde duur.
+
163
+
164
 Dit geeft vanzelfsprekend ook problemen als de code niet geoptimaliseerd is, en
+
165
 daar elke browser de aangereikte Css op een andere manier kan evalueren, is het
+
166
 onbegonnen werk om voor alle mogelijke implementaties handige optimalisaties
+
167
 door te voeren. Men beperkt zich natuurlijk meestal tot de populairste
+
168
 implementaties ([[https://en.wikipedia.org/wiki/WebKit][WebKit]] en [[https://en.wikipedia.org/wiki/Gecko_(software)][Gecko]]).
+
169
+
170
 _Maar je hoeft vanzelfsprekend niet te optimaliseren, als er geen code is om te optimaliseren._
+
171
+
172
 Je zou kunnen zeggen dat deze redenering ook opgaat voor Joeni zelf, wat van
+
173
 Python gebruik maakt. Maar het gebruikte framework ondersteunt het
+
174
 [[https://docs.djangoproject.com/en/2.0/topics/cache/][cachen van pagina's]]. Dus eerder geΓ«valueerde code zal al op voorhand beschikbaar
+
175
 zijn. Daarbij komt dat de snelheid van een server naar wens kan worden vergroot,
+
176
 terwijl je bij de gebruiker er van moet uitgaan dat zijn/haar toestel traag is.
+
177
 De code van de server hoeft ook slechts voor één platform geoptimaliseerd te
+
178
 worden, dat van de server.
+
179
+
180
 Uiteindelijk is het resultaat van (foutief) Css-gebruik 
+
181
 sowieso: *Een traag werkende website.*
+
182
+
183
*** Verlies van betekenis
+
184
 Een bepaalde /tag/ in HTML draagt een bepaalde betekenis. ~<a />~ betekent dat dit
+
185
 een hyperlink is, ~<body />~ betekent dat wat volgt getoond moet worden als de
+
186
 'inhoud' van de pagina, ~<p />~ duidt op een paragraaf, ...
+
187
+
188
 Deze betekenis wordt vaak door de browser ten volle benut; Alle links kunnen makkelijk
+
189
 op voorhand verzameld worden (i.e. Alles wat tussen ~<a />~ staat), wat tussen
+
190
 ~<head />~ staat wordt niet getoond, ...
+
191
+
192
 *Betekenis opent deuren voor het impliciet infereren van informatie.* Dit is de
+
193
 reden waarom de tags in HTML (en vooral sinds HTML5) een aanduiding zijn voor
+
194
 wat de ingesloten data /betekent/; ~<article />~ is een artikel en kan dus los
+
195
 weergegeven worden van de rest van de pagina, ~<del />~ is iets dat niet
+
196
 meer relevant is, maar waarschijnlijk toch wel weergegeven moet worden. ~<ol />~
+
197
 is een geordende lijst, dus de volgorde van de data is van belang, in
+
198
 tegenstelling tot ~<ul />~. Er zijn ontelbare voorbeelden te vinden.
+
199
+
200
 Deze betekenis gaat volledig verloren als onderdelen van de website met Css
+
201
 worden "nagemaakt". ~<div onclick="hyperlink" />~ zal waarschijnlijk wel
+
202
 doorlinken naar een website, maar waar dat je in bv. FireFox met een
+
203
 middelmuisklik een ~<a />~ in een nieuw tabblad kunt openen, zal dit niet werken
+
204
 met Css.
+
205
+
206
*** Conclusie
+
207
 Het moge duidelijk zijn dat het gebruik van Css om zogenaamde /web apps/ te
+
208
 maken, fundamenteel een slecht idee is, dat meer problemen voortbrengt dan het
+
209
 oplost. Alle problemen die sommige websites proberen op te lossen met Css, zijn
+
210
 makkelijker op te lossen met slechts HTML en CSS (Cascading Style Sheets), en
+
211
 Client side scripting maakt soms de problemen zelfs erger.
+
212
+
213
 En zelfs al zouden alle bovenstaande punten onwaar zijn, dan nog is Joeni
+
214
 het bewijs dat Css geen vereiste is om werkende software te schrijven, die
+
215
 hoofdzakelijk via het WWW beschikbaar wordt gesteld.
+
216

docs/thesis/info-processen.org ΒΆ

15 additions and 0 deletions.

View changes Hide changes
+
1
Een ander prominent deel van deze bachelorproef gaat over het verbeteren van
+
2
bestaande informatieprocessen.
+
3
+
4
*** Reservatie lokalen
+
5
+
6
+
7
*** COMMENT Studiegids
+
8
Op dit moment wordt de studiegids manueel opgebouwd, waarbij
+
9
docenten/hoogleraren moeten indienen welke voorkennis vereist is, hoe het vak
+
10
gequoteerd wordt, of er een tweede kans is, ...
+
11
+
12
Dit moet ook worden goedgekeurd, waardoor wijzigingen een nogal omslachtige
+
13
procedure volgen. Daarbij lijken de pagina's in de studiegids nogal een andere
+
14
stijl te gebruiken dan de omvattende pagina.
+
15

docs/thesis/inplannen.org ΒΆ

1 addition and 1 deletion.

View changes Hide changes
1
1
Naast het reserveren van lokalen, is er ook het werk van inplannen van de uren
2
2
van de vakken zelf.
3
3
4
4
De manieren verschillen voornamelijk per faculteit. Het volledige verslag is te vinden in
5
5
[[APPENDIX A - ...]].
6
-
+
6
7
7
De manier van inplannen verschilt bij de richting Informatica enigzins van die
8
8
van de andere richtingen binnen de faculteit Wetenschappen: Vanaf het derde
9
9
bachelorjaar worden er enkel nog hoorcolleges meer ingepland.
10
10
11
11
De oorzaak hiervan is het grote aantal specialisaties die de masteropleiding
12
12
heeft. (De andere richtingen hebben enkel een bachelorgedeelte) Voor deze vakken
13
13
meer dan enkel de hoorcolleges inplannen is onmogelijk, omdat anders er
14
14
overlappingen onstaan binnen modeltrajecten.
15
15
16
16
*** Professoren
17
17
De agenda's van de professoren worden naar voren geschoven als het primaire probleem tijdens
18
18
het opstellen van een planning: Ze zijn druk bezet, en hun afspraken zijn
19
19
moeilijk te verplaatsen.\\
20
20
Om hieraan tegemoet te komen, wordt vaak de planning van het vorige jaar als een
21
21
sjabloon genomen. Meestal komt de planning nog voldoende overeen met de vorige
22
22
versie (zeker als er geen modeltrajectwijzigingen plaatsvonden).
23
23
24
24
*** Sjablonen
25
25
Om het inplannen zo makkelijk mogelijk te laten verlopen, wordt er steeds
26
26
vertrokken van de planning van het vorige academiejaar als sjabloon. 
27
27
Als er geen veranderingen zijn, dan worden er geen wijzigingen aangebracht.
28
28
29
29
Indien er toch aanpassingen moeten gebeuren, dan wordt er een voorstel
30
30
uitgewerkt voor alle wijzigingen, dat dan wordt verstuurd naar alle mensen die
31
31
hier invloed van zullen ondervinden. 
32
32

docs/thesis/lokaalreservaties.org ΒΆ

3 additions and 3 deletions.

View changes Hide changes
1
1
Het inplannen van de lokalen op de UHasselt is een complexe opdracht. In het
2
2
onderzoek is naar voren gekomen dat deze opdracht onnodig ingewikkelder wordt
3
3
gemaakt.
4
4
5
5
*** De huidige software
6
6
Het huidige programma blijkt een overblijfsel te zijn van de Economische
7
7
Hogeschool. Sindsdien zijn er geen aanpassingen meer gebeurd, en volgens het
8
8
personeel dat ermee werkt, is dat zeer merkbaar.
9
9
10
10
De broncode is volgens <PERSOON> geschreven in Delphi, maar ik heb twijfels
11
-
hierbij, want dit strookt niet direct met het feit dat dit programma nog van de
+
11
hierbij, want dit strookt niet direct met het feit dat dit programma nog van de
12
12
EHL komt.[fn:chronology] Ik vermoed dat Turbo Pascal gebruikt werd, dit zou dan
13
13
ook verklaren waarom de software op een aparte computer draait.
14
14
15
15
[fn:chronology] De Economische Hogeschool ging op in het Limburgs Universitair
16
16
Centrum eind jaren 80, maar Delphi kwam pas uit in 1995. Misschien zijn er later
17
17
nog wijzigingen gebeurd, maar dat is niet zeker.
18
18
19
19
Het programma vereist ook dat het op een aparte computer wordt gedraaid. Ook dit
20
20
sterkt het vermoeden dat het programma in Turbo Pascal geschreven werd, daar
21
21
deze wel werkt op MS-DOS.
22
22
23
23
Een ander groot probleem is dat het programma gewoon te traag is. Bij te veel
24
24
aanpassingen wordt het onwerkbaar traag, en regelmatig crasht het gewoon.
25
25
26
26
Daarbovenop is de functionaliteit behoorlijk beperkt; alhoewel het wel mogelijk
27
27
is om rekenbladen of foto's uit het programma op te vragen, is simpele tekst
28
28
niet mogelijk.
29
29
30
30
**** Toekomst van het programma
31
31
Ik vermoed dat de huidige software niet meer bruikbaar is; alhoewel een
32
32
programma onderhouden vaak een betere keuze is dan het volledig opnieuw
33
33
schrijven, is het probleem dat dat onderhoud /al twintig jaar uitgesteld is/.
34
34
Voor de gebruikte programmeertaal ervaren programmeurs vinden is op zich al een
35
35
opdracht, en het integreert nu al niet meer met recente besturingssystemen. Mijn
36
36
inziens lijkt het beter dat er wordt uitgekeken naar een andere oplossing. Deze
37
37
opmerking is strijdig met die van de gebruikers van het programma zelf; zij
38
38
hebben de wens geuit dat het programma toch wordt gerepareerd, voornamelijk
39
39
omdat ze dit programma kennen. Misschien dat begeleiding met een nieuw programma
40
40
de overgang naar een eventuele vervanging draagelijker kan maken.
41
41
42
42
**** Alternatieven
43
43
 Dit probleem is niet nieuw; er is al door het personeel zelf gezocht naar
44
44
 mogelijke alternatieve software. Twee voorstellen kwamen prominent naar boven.
45
45
46
46
 Het eerste voorstel is *Porto*, met de Universidade do Porto als toepasselijke
47
47
 origine. Dit werd zelfs proactief aangevoerd door de ontwikkelaars zelf,
48
48
 inclusief een bijbehorend onderhoudscontract voor twee jaar. De prijs bedroeg
49
49
 echter €10000, en dat was te duur.
50
50
51
51
 Het tweede is een combinatie van twee gekoppelde systemen, *Syllabus +
52
52
 Enterprise/Classic*. In tegenstelling tot Porto wordt dit programma al gebruikt
53
53
 op Belgische bodem door de UCLL en KUL. Het bezit veel van de benodigde
54
54
 functies, maar de werking viel niet in goede aarde, alhoewel het personeel zelf
55
55
 vermoedt dat dit een kwestie van smaak is.
56
56
57
57
*** Onthouden
58
58
Een ander groot probleem met lokalen inplannen is dat veel informatie uit het
59
59
hoofd onthouden moet worden. Dit is dan info zoals het aantal zitplaatsen in
60
60
lokalen, de software die op de computers geΓ―nstalleerd staat, ... Deze info kan
61
61
gemakkelijk met de computer onthouden worden, maar dit gebeurd gewoon niet. Dit
62
62
geeft dan ook grote problemen als een personeelslid ziek wordt en tijdelijk
63
63
wegvalt; eventuele vervanging heeft simpelweg geen toegang tot belangrijke info.
64
64
65
65
*** Manuele processen
66
66
Veel zaken die praktisch gezien makkelijk geautomatiseerd kunnen worden,
67
67
vereisen nog steeds veel menselijke interventie. Een externe reservering loopt
68
68
via de Dienst Communicatie, waarbij vooral e-mails gebruikt worden om te
69
69
communiceren met andere personeelsleden. Een gelijkaardig proces geldt voor
70
70
wijzigingen van de docenten uit; zij contacteren het personeel rechtstreeks,
71
71
maar ook via e-mail.
72
72
73
73
Deze processen zijn voor verbetering vatbaar, en voorstellen worden aangevoerd
74
74
in <DEEL III - NOG INVULLEN>.
75
-
+
75
76
76
*** In het kort
77
77
78
78
Het is duidelijk dat de manier van hoe lokalen gereserveerd worden toe is aan
79
79
een grondige verbetering. Niet alleen is de ruggengraat van het proces toe aan
80
80
een vervanging (of op z'n minst een grondige revisie), er moet gewerkt worden
81
81
aan manieren om tijdrovend werk om te zetten in geautomatiseerde processen, om
82
82
de kostbare tijd van het personeel effectiever in te zetten.
83
83
84
84
Het volledige rapport is te vinden in [[AppendixA][Appendix A]].
85
-
+
85

docs/thesis/master.org ΒΆ

24 additions and 2 deletions.

View changes Hide changes
1
1
#+language: nl
2
2
#+latex_class: report
3
3
#+latex_class_options: [a4paper]
4
4
#+latex_header: \usepackage{pdfpages}
5
5
#+latex_header: \usepackage{biblatex}
6
6
#+latex_header: \bibliography{sources}
7
7
#+latex_header: \usepackage[dutch]{babel}
8
8
#+OPTIONS: toc:nil
9
9
#+OPTIONS: H:6
10
10
#+author: Maarten Vangeneugden @@latex:\\@@ prof. dr. Wim Lamotte
11
11
#+date: 2017-2018
12
12
#+title: Joeni
13
13
#+subtitle: Bachelorproef voorgedragen tot het behalen van de graad van bachelor in de informatica
14
14
#+TOC: headlines 6
15
15
16
16
#+INCLUDE: "./voorwoord.org"
17
17
18
18
* Onderzoek
19
19
#+INCLUDE: "./uurrooster.org"
20
-
#+INCLUDE: "./lokaalreservaties.org"
+
20
#+INCLUDE: "./lokaalreservaties.org"
21
21
#+INCLUDE: "./examens.org"
22
22
#+INCLUDE: "./inplannen.org"
23
23
+
24
24
25
* Joeni
25
26
#+INCLUDE: "./softwarekeuzes.org"
26
27
+
28
#+INCLUDE: "./client-side-scripting.org"
+
29
#+INCLUDE: "./courses.joeni.org"
+
30
#+INCLUDE: "./curriculum.joeni.org"
+
31
#+INCLUDE: "./databank.joeni.org"
+
32
#+INCLUDE: "./dienstmededelingen.org"
+
33
#+INCLUDE: "./instellingen.joeni.org"
+
34
#+INCLUDE: "./lokalen.joeni.org"
+
35
#+INCLUDE: "./mededelingen.joeni.org"
+
36
#+BEGIN_COMMENT
+
37
#+INCLUDE: "./postgres.org"
+
38
#+END_COMMENT
+
39
#+INCLUDE: "./rooster.joeni.org"
+
40
#+INCLUDE: "./verbeteringspunten_joeni.org"
+
41
27
42
* Voorstellen voor informatieprocessen
28
-
+
43
+
44
* Informatieprocessen en algemene verbeteringen
+
45
29
46
#+INCLUDE: "./aandachtspunten.org"
30
47
+
48
#+INCLUDE: "./huisstijl.org"
+
49
#+INCLUDE: "./implementatie_uhasselt.org"
+
50
#+INCLUDE: "./toekomst.org"
+
51
31
52
* Dankwoord
32
53
#+INCLUDE: "./dankwoord.org"
33
54
34
55
35
56
36
57
37
58
38
59
39
60
40
61
41
62
42
63
43
64
44
65
45
66
46
67
47
68
48
69
@@latex:\printbibliography@@
49
70
* Appendices
50
71
+
72
51
73
52
74
* COMMENT Structuur
53
75
- Titelblad
54
76
- Inhoudsopgave
55
77
- Voorwoord/Inleidende tekst
56
78
- Hoofdstuk 1 - Onderzoek
57
79
- Hoofdstuk 2 - Beschrijving Joeni
58
80
- Hoofdstuk 3 - Voorstellen verbetering UHasselt / Bedachte processen
59
81
- Dankwoord
60
82
- Bibliografie
61
83
- Appendices 
62
84

docs/thesis/postgres.org ΒΆ

1 addition and 1 deletion.

View changes Hide changes
1
1
De praktische uitwerking van het project maakt gebruik van de
2
2
PostreSQL-databanktechnologie. Bij deze databank is onderzoek verricht naar de
3
3
mogelijkheden die het biedt.
4
4
** Integriteit van data
5
5
Het is vitaal om zoveel mogelijk data te laten valideren door de databank zelf,
6
6
of minstens via een soort "validatielaag" rondom de databank. Deze validatielaag
7
7
is dan verantwoordelijk om alle aangebrachte data op correctheid te controleren.
8
8
Voorbeelden van te controleren data zijn dan:
9
9
- IBAN- en BIC-codes van studenten en personeelsleden die kloppen
10
10
- Rijksregisternummers die kloppen
11
11
- Geen mogelijkheid om lokalen te reserveren die onreserveerbaar zijn
12
12
- Geen conflicterende reservaties van bepaalde lokalen
13
13
- ...
14
14
Diezelfde validatielaag geeft dan aan alle data *zekerheid van correctheid* mee:
15
15
Als alle ingevoerde data valide is, dan zal bij logische implicatie, alle
16
16
uitgevoerde data ook valide zijn. \\
17
17
Naar toekomstperspectief is dit van onmisbaar belang voor vele instanties, en de
18
18
UHasselt is hierop geen uitzondering.
19
19
20
20
De datavalidatie zorgt ook bij de programmatuur voor verbetering: Er hoeft enkel
21
21
gecontroleerd te worden of de ingevoerde data valide is. De validatielaag kan
22
22
eventueel foutcodes terugsturen, die dan een bepaalde fout aanduiden. \\
23
23
Met andere woorden: Er hoeft enkel bij opslaan in de databank gecontroleerd te worden op
24
24
correctheid. Bij opvragen van informatie kunnen er met valide data zelfs
25
25
automatisch zekerheden aangenomen worden. Bijvoorbeeld: Als de databank steeds
26
26
valideert dat een lokaalreservatie tussen 08:00 en 24:00 plaatsvindt, dan hoeft
27
27
een programma dat lokaalreservaties weergeeft enkel een tabel met die uren weer
28
28
te geven, en hoeven uren van voor 08:00 niet weergegeven te worden.
29
29
** Django models en validators
30
30
Django geeft de mogelijkheid om dergelijke beveiligingen en validatielagen in
31
31
het systeem in te bouwen. Het moet wel gesteld worden dat deze zekerheden niet
32
32
doorgepropageerd worden naar de databank zelf (omdat dit niet in een databank
33
33
kan worden geΓ―mplementeerd), maar slechts gecontroleerd worden bij invoer via
34
34
een programma dat via Django de databank aanspreekt. Bij [[FIX LINK][toekomstige
35
35
implementaties]] moet hiermee rekening gehouden worden. Een lijst van alle te
36
-
valideren voorwaarden is gepubliceerd in deze thesis, [[FIX LINK][bijlage ?]].
+
36
valideren voorwaarden is gepubliceerd in deze thesis, [[FIX LINK][bijlage ?]].
37
37

docs/thesis/sources.bib ΒΆ

63 additions and 1 deletion.

View changes Hide changes
1
1
author = "UHasselt",
2
2
title  = "Q\&A ALIPA",
3
3
year   = "2017",
4
4
number = "1",
5
5
journal = "Nu weet je het",
6
6
pages  = "4-5",
7
7
url    = "https://www.uhasselt.be/documents/Tijdschriften/nUweetjeHet/personeelsblad-februari-2017-klein.pdf"
8
8
}
9
9
10
10
@article{jaarverslag-2017,
11
11
author = "UHasselt",
12
12
title  = "2017 in cijfers",
13
13
year   = "2017",
14
14
journal  = "Jaarverslag 2017",
15
15
pages  = "6",
16
16
url    = "https://www.uhasselt.be/Documents/UHasselt/algemeen/jaarverslagen/2017/jaarverslag-2017.pdf"
17
17
}
18
18
19
19
@article{strafwetboek-valsheid-informatica,
20
20
author = "Belgische federale regering",
21
21
title  = "Strafwetboek/Code pΓ©nal",
22
22
chapter= "IV",
23
23
series = "IIbis",
24
24
number = "Artikel 210bis",
25
25
url   = "http://www.ejustice.just.fgov.be/cgi_loi/loi_a1.pl?language=nl&la=N&cn=1867060801&table_name=wet&&caller=list&fromtab=wet&tri=dd+AS+RANK#LNK0052"
26
26
}
27
27
28
28
@online{blackboard-privacy-policy,
29
-
title = "Blackboard Privacy Statement",
+
29
author = "dr.h.c.mult. Richard M. Stallman",
+
30
title  = "Who does that server really serve?",
+
31
url    = "https://www.gnu.org/philosophy/who-does-that-server-really-serve.html"
+
32
}
+
33
+
34
@report{eu-gdpr,
+
35
url   = "https://eur-lex.europa.eu/eli/reg/2016/679/oj",
+
36
title = "REGULATION (EU) 2016/679 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL of 27 April 2016",
+
37
subtitle = "on the protection of natural persons with regard to the processing of personal data and on the free movement of such data, and repealing Directive 95/46/EC (General Data Protection Regulation)",
+
38
date = "2016-04-27",
+
39
author = "European Parliament, Council of the European Union"
+
40
}
+
41
+
42
@online{bb-tos,
+
43
url   = "http://www.blackboard.com/legal/terms-of-use.html",
+
44
title = "Terms Of Use"
+
45
}
+
46
+
47
@online{bb-privacy-policy,
+
48
title = "Blackboard Privacy Statement",
30
49
date  = "2018-05-24",
31
50
url   = "https://www.blackboard.com/legal/privacy-policy.html"
32
51
}
+
52
+
53
@article{bb-blackout,
+
54
url   = "https://web.archive.org/web/20101115105111/http://blogs.palmbeachpost.com/extracredit/2008/04/18/blackboard-blackout/",
+
55
author = "Kim Miller",
+
56
title = "Blackboard Blackout",
+
57
date = "2008-04-18"
+
58
}
+
59
+
60
@article{bb-blackout2,
+
61
url   = "https://web.archive.org/web/20110926094431/http://media.www.thehunterenvoy.com:80/media/storage/paper1327/news/2009/02/18/News/Portal.Problems.Blackboard.Blackout-3635795.shtml",
+
62
author = "Jonathan Jordan",
+
63
date = "2009-02-18",
+
64
title = "Portal Problems, Blackboard Blackout",
+
65
subtitle = "Data Systems at CUNY Malfunction and Disrupt Classes"
+
66
}
+
67
+
68
@article{bb-crash,
+
69
url   = "http://itintheuniversity.blogspot.com/2007/11/in-recent-chronicle-article-outlining.html",
+
70
author = "Luke Fernandez",
+
71
title = "Blackboard catastrophic system crash in Utah",
+
72
date = "2007-11-27"
+
73
}
+
74
+
75
@article{bb-dataloss,
+
76
url   = "http://bpeacock22.blogspot.com/2009/01/great-blackboard-crash-of-09.html",
+
77
title = "The Great Blackboard Crash of 09",
+
78
author = "Benjamin s.s.t.t.",
+
79
date = "2009-01-21"
+
80
}
+
81
+
82
@online{ufora,
+
83
url   = "https://www.ugent.be/nl/actueel/lms-ufora.htm",
+
84
title = "De nieuwe Minerva heet Ufora",
+
85
author = "Universiteit Gent",
+
86
date = "2018-06-17"
+
87
}
+
88
+
89
@online{opleiding-informatica,
+
90
url   = "https://www.uhasselt.be/documents/BROCHURES/2018-2019/Master-Informatica-2018-web.pdf",
+
91
title = "Master in de Informatica",
+
92
year = "2018",
+
93
author = "Universiteit Hasselt"
+
94
}
33
95

docs/thesis/toekomst.org ΒΆ

67 additions and 17 deletions.

View changes Hide changes
1
-
Joeni is op dit moment een kant-en-klare oplossing voor de problemen die
2
-
BlackBoard en het studentendossier stellen aan de UHasselt.
3
-
+
1
 Joeni is op dit moment een voorbeeld van een kant-en-klare oplossing voor de problemen die
+
2
 BlackBoard en het studentendossier stellen aan de UHasselt.
+
3
4
4
Maar software is steeds in beweging, en is nooit af. Daarom dat ik hier enkele
5
-
punten voorzie omtrent de toekomstige uitbreidingen die aan Joeni zouden kunnen
6
-
worden toegevoegd.
7
-
+
5
 punten voorzie omtrent de toekomstige uitbreidingen die aan Joeni zouden kunnen
+
6
 worden toegevoegd, of aan eender welk ander programma dat als vervanging zou dienen.[fn:still-joeni]
+
7
8
8
** /Desktop/-applicatie
9
-
Op dit moment wordt Joeni gebruikt via een webbrowser. Maar dit hoeft niet per
10
-
sΓ©.
11
-
Een mooie (latere) uitbreiding voor Joeni, is dat de software uitgebreid wordt
12
-
met een applicatie die direct op de computers van de gebruikers kan werken.
13
-
+
9
gebruikt om "een vervangende applicatie" te beschrijven, alhoewel dit eender welk
+
10
ander programma kan zijn. Indien het specifiek om Joeni gaat, zal dit ook
+
11
duidelijk blijken uit de context.
+
12
14
13
Dit opent vanzelfsprekend mooie nieuwe toepassingen, zoals integratie met
15
-
/desktop features/ (zoals notificaties in de werkbalk), gemakkelijk door de
16
-
bestanden kunnen scrollen op een computer, verhoogde snelheid, dynamische
17
-
veranderingen in de interface, /direct messaging/ ...
18
-
+
14
 Op dit moment wordt Joeni gebruikt via een webbrowser, maar dit is zeker niet
+
15
 wat het eindpunt zou moeten zijn.
+
16
19
17
De data wordt natuurlijk vanaf de server gehaald (net zoals Joeni op dit moment
20
-
de data opvraagt). Hiervoor is geen aanpassing nodig aan de bestaande databank.
21
-
+
18
 aan hun gebruikers bieden; ze zijn van nature statische tekstbestanden, die
+
19
 enkel informatie kunnen doorsturen, en (gestructureerd) via speciale
+
20
 HTML-formulieren informatie kunnen opvangen. Daar komen dan ook een hoop
+
21
 beveiligingsproblemen bij kijken, die inherent zijn aan websites.
+
22
+
23
 Joeni moet een programma worden dat op de computer zelf draait. Veel features
+
24
 die nu simpelweg niet mogelijk zijn in Joeni, zouden hiermee wel mogelijk
+
25
 worden:
+
26
- Pop-ups die aangeven als er een wijziging is gebeurd in het uurrooster :: Nu
+
27
     moeten studenten zelf naar die webpagina surfen, er wordt geen proactieve
+
28
     melding hiervan gemaakt. Veel agendaprogramma's geven hier ook geen melding
+
29
     van, dus via iCal zal dit ook niet lukken.
+
30
- Live chat :: Dit is meer een feature die naar Agora toe gericht is, maar een
+
31
               live chat is ook technisch niet mogelijk zonder /client-side
+
32
               scripting/. Dit zou een uiterst handige toepassing zijn voor
+
33
               groepswerken, waarvoor studenten nu nog altijd zijn aangewezen op
+
34
               programma's van derden.
+
35
- Offline halen van studiemateriaal :: Het is triviaal, maar Joeni werkt enkel
+
36
     met een internetverbinding, net zoals *elke webapplicatie van de UHasselt*.
+
37
     Een "echt" programma kan al het studiemateriaal, meldingen, opdrachten, ...
+
38
     downloaden op de computer van de student, zodat dit altijd offline
+
39
     geraadpleegd kan worden. Het indienen van taken kan dan ook offline
+
40
     gebeuren, waarna het programma zelf bij de eerstvolgende netwerkverbinding
+
41
     de taak doorstuurt.
+
42
- Veel betere samenhang/snelheid :: Een webapplicatie impliceert dat alle pagina's
+
43
     telkens opnieuw moeten worden ingeladen, er zit dus altijd een soort van
+
44
     /delay/ tussen een klik van de gebruiker en de uiteindelijke reactie. De
+
45
     browser moet ook alles inladen en /renderen/, dus een supersnelle cache
+
46
     alleen zal nooit het snelheidsprobleem kunnen oplossen. En als de
+
47
     verbinding wegvalt tijdens het inladen, dan is Joeni plots niet meer
+
48
     bereikbaar, redelijk frustrerend. Een programma op de computer zelf heeft
+
49
     al deze problemen niet. Er kan ook gebruik gemaakt worden van een hoop
+
50
     andere /widgets/ (zoals tabs in hetzelfde venster) die de samenhang verder
+
51
     kunnen verhogen.
+
52
- Dynamische/Directe informatie :: Als de gebruiker een fout maakt bij de
+
53
     interactie met de website, dan kan hier pas melding van worden gemaakt als
+
54
     de pagina opnieuw wordt ingeladen. Met een applicatie op de computer kunnen
+
55
     direct meldingen worden gegeven, en kan het indienen onmogelijk worden
+
56
     gemaakt totdat de gebruiker alle problemen heeft opgelost. Het geeft ook
+
57
     zekerheid: Als een knop wordt ingedrukt, dan is er zekerheid dat de
+
58
     verandering correct werd doorgevoerd.
+
59
+
60
De reden dat er voor Joeni toch gekozen is voor een webapplicatie om te
+
61
beginnen, is omdat het niet zozeer de bedoeling was dat Joeni "het eindpunt" zou
+
62
worden, maar eerder een voorstelling van hoe het eruit zou kunnen zien. Het zou
+
63
Joeni ook complexer maken: Rekening houden met dynamische veranderingen, pop-ups
+
64
inbouwen (waarvan de API's kunnen verschillen per besturingssysteem), ... Het
+
65
maakt het geheel veel moeilijker om te bouwen, maar voegt weinig toe voor deze bachelorproef.
+
66
Daarom dat een website het idee van Joeni veel beter overbrengt, maar dan wel in
+
67
een statische setting.\\
+
68
Daarbij is een groot deel van de code in de achtergrond (voornamelijk de
+
69
databasecode) overdraagbaar, daar een desktopapplicatie sowieso contact zal
+
70
moeten onderhouden met een databank.
+
71

docs/thesis/uurrooster.org ΒΆ

0 additions and 2 deletions.

View changes Hide changes
1
-
gegenereerd wordt, en hoe er gedacht is aan mensen met een kleurenstoornis.
2
-

docs/thesis/uurroosters.org ΒΆ

4 additions and 4 deletions.

View changes Hide changes
1
1
Alle studenten beschikken over uurroosters die informatie verschaffen omtrent
2
2
hun weekplanning. Er zijn echter verschillende problemen met het huidige
3
3
systeem.
4
4
5
5
*** 3 verschillende systemen
6
6
In plaats van dat er één uurrooster is dat de meest relevante informatie
7
7
weergeeft, zijn er een hoop verschillende manieren om aan het rooster te
8
8
geraken.
9
9
**** Gewone uurroosters
10
10
Op [[collegeroosters.uhasselt.be][deze pagina]] moeten studenten hun faculteit
11
-
ingeven[fn:why-sit], daarop hun academiejaar, en dan het nummer van de week
+
11
ingeven[fn:why-sit], daarop hun academiejaar, en dan het nummer van de week
12
12
die ze willen inkijken. Daarop wordt een "interactieve" gif-afbeelding
13
13
ingeladen waarop de uren van een modeltraject worden weergegeven.
14
14
15
15
[fn:why-sit] Om een onbekende reden wordt de studierichting Informatica apart
16
16
geklasseerd onder de faculteit "SIT", maar dit is onjuist; deze studierichting
17
17
valt onder de faculteit Wetenschappen.
18
18
19
19
Dit systeem heeft verschillende problemen:
20
20
- Werkt niet zonder JavaScript :: Alhoewel dit makkelijk zonder JS kan werken,
21
21
     werkt de website niet als scripts uitgeschakeld zijn. [[why-no-js][Dat vormt een probleem]].
22
-
- Weeknummers i.p.v. gewone data :: Ik ken geen mensen die bijhouden welke week
+
22
- Weeknummers i.p.v. gewone data :: Ik ken geen mensen die bijhouden welke week
23
23
     van het jaar het is. We houden wel bij welke dag het is, en de meesten
24
24
     plannen ook in op dagen.
25
25
- Opent niet automatisch op huidige week :: Veelal wordt het uurrooster gecheckt
26
26
     omdat men wilt weten wat er deze week gebeurd.
27
27
- HTML Γ©n PDF :: Men kan zowel een HTML-pagina openen, als een PDF-bestand.
28
28
                 Waarom dat nodig is is niet geweten, maar het maakt de
29
29
                 achterliggende applicatie wel complexer om te onderhouden.
30
30
- Enkel modeltraject :: Veel studenten volgen een GIT-traject, maar zij moeten
31
31
     met dit systeem vaak 2 Γ‘ 3 keer opnieuw het proces doorlopen om
32
32
     verschillende uurroosters zelf naast elkaar te leggen.
33
33
- Niet up-to-date :: Uit het onderzoek [LINK-NAAR-ONDERZOEK][bleek dat dit
34
-
     uurrooster niet up-to-date is, en slechts 1 keer per dag wordt vernieuwd].
35
-
     Zeker bij snelle wijzigigen voor bv. gastcolleges is dit uurrooster onbetrouwbaar.
+
34
     [[Vergadering 1][bleek dat dit uurrooster niet up-to-date is, en slechts 1 keer per dag wordt vernieuwd]].
+
35
     Zeker bij snelle wijzigigen voor bv. gastcolleges is dit uurrooster onbetrouwbaar.
36
36
Kleine opmerking bij het iCal-bestand dat op de pagina staat: Alhoewel de
37
37
iCal-specificatie velden specifieert voor locatie, wordt alle informatie over
38
38
een bepaalde gebeurtenis in de titel van het evenement geplaatst.
39
39
**** Dynamische uurroosters
40
40
[[https://uhintra03.uhasselt.be/uurroosters/][Deze uurroosters]] Zijn een directe verbetering op de [[Gewone uurroosters][gewone uurroosters]]; ze zijn
41
41
up-to-date, openen op de huidige week en geven slechts 1 resultaat (een
42
42
HTML-pagina). De resterende problemen blijven echter bestaan.
43
43
**** Uurrooster Studentendossier
44
44
Er is ook de mogelijkheid om een gepersonaliseerd uurrooster op te vragen
45
45
[[https://uhintra02.uhasselt.be/studdosst/sdsUurrooster.aspx][via het studentendossier]]. Deze geeft wΓ©l een GIT-traject, maar is nogal
46
46
omslachtig om te bereiken en ziet er erg gedateerd uit. Er is ook geen
47
47
mogelijkheid om een iCal-bestand te verkrijgen, dus voor de meest relevante
48
48
informatie moeten studenten steeds naar deze website surfen. Doordat het
49
49
JavaScript vereist is een simpele /web scraper/ schrijven ook niet echt triviaal
50
50
om te doen.
51
51
**** Nood aan eengemaakt systeem
52
52
Wat op dit moment bestaat is ontoereikend voor de vereisten van de studenten. De
53
53
systemen zijn omslachtig, complex en ze voelen gedateerd aan (en zijn dat ook).
54
54
Daarnaast is drie verschillende applicaties onderhouden sowieso gecompliceerder
55
55
dan maar ééñ onderhouden.
56
56
57
57
In Joeni wordt dan ook een eengemaakt uurrooster voorgesteld, dat poogt al deze
58
58
problemen op te lossen.
59
59

docs/thesis/verbeteringspunten_joeni.org ΒΆ

18 additions and 0 deletions.

View changes Hide changes
1
1
Alhoewel Joeni wel degelijk een positieve invloed kan hebben op de
2
2
IT-infrastructuur van UHasselt, zijn er nog steeds enkele punten die een
3
3
beperking kunnen opleveren. Deze punten worden in dit hoofdstuk toegelicht.
4
4
*** Algemeen
5
5
*Joeni is niet volledig in het Nederlands*. Sommige onderdelen worden wel in een
6
6
 andere taal weergegeven dan Engels, maar deze zijn vaak automatisch via het
7
7
 Django-framework vertaald (zoals de namen van dagen). Hier dient wel
8
8
 genuanceerd te worden dat Blackboard eveneens niet in het Nederlands is. Voor
9
9
 Joeni was meertalig zijn geen prioriteit, en dus is er meer aandacht besteedt
10
10
 aan het maken van een volledig /functioneel/ programma, dan een volledig
11
11
 /vertaald/ programma. Moest Joeni echter later ook ingezet worden binnen de
12
12
 UHasselt, dan is vertalen in Nederlands, Frans, Duits, ... uiterst simpel: Alle
13
13
 infrastructuur om te vertalen is al aanwezig in het Django-framework zelf. In
14
14
 de code zijn alle te vertalen blokken ook gemarkeerd.
15
15
**** Missende pagina's
16
16
Niet alle pagina's zitten in Joeni en het is zeker niet mogelijk om direct Bb.
17
17
en Std. te vervangen. Er is hier ook een afweging gemaakt tussen complexiteit en
18
18
functionaliteit.\\
19
19
Tijdens het schrijven van Joeni werd snel duidelijk dat veel functionaliteit van
20
20
Std. verouderd is, en het herimplementeren zou dus nooit nodig zijn. Een goed
21
21
voorbeeld hiervan is de link naar het JOS-project van de VDAB[fn:jobteaser]: De link die op
22
22
het Std. te vinden is, wordt nu automatisch doorverwezen naar de hoofdpagina van
23
23
de VDAB. Sommige attesten op Std. worden ook uitgegeven door bepaalde diensten,
24
24
en daarvan kan natuurlijk niet op voorhand geweten zijn welke attesten.
25
25
26
26
Sommige pagina's konden gewoonweg niet gereproduceerd worden, omdat ze links
27
27
genereren naar bepaalde PDF-bestanden.
28
28
29
29
[fn:jobteaser] Op dit moment blijken de links naar het JOS-project offline
30
30
gehaald te zijn, en vervangen door een ander systeem genaamd "Jobteaser", maar
31
31
het is maar de vraag hoe lang deze links blijven staan.
32
32
*** Uurrooster
33
33
Het uurrooster biedt *geen mogelijkheid om planning van andere richtingen in te kijken*.
34
34
Ik vermoed niet dat dit iets is wat veel mensen zullen missen, maar dit
35
35
kan wel later worden toegevoegd als dit nodig blijkt te zijn. Joeni heeft dit
36
36
niet omdat het de bedoeling was om een zo simpel mogelijk systeem te ontwerpen
37
37
dat zoveel mogelijk mensen tegemoet komt. De mogelijkheid om planningen in te
38
38
kijken van andere studierichtingen is niet nuttig genoeg om te toevoeging ervan
39
39
te verantwoorden.
40
40
41
41
De *vorm van de weergave van de week* was een kritiekpunt op zich van een van de
42
42
testers; die merkte op dat de breedte van de verschillende dagen niet gelijk is.
43
43
Dit klopt ook: Dagen zonder "evenementen" worden dunner weergegeven dan dagen
44
44
waarop wel iets gebeurt. De argumentering hiervan is tweeledig: Enerzijds is het
45
45
logisch om belangrijkere zaken (een bezette dag) prominenter weer te geven dan
46
46
onbelange zaken (een vrije dag), en dat wordt bekomen door ze breder te maken.
47
47
Anderzijds vereist elke dag even breed maken extra opmaakcode.\\
48
48
49
49
*** Lokalen
50
50
Dit moet grotendeels worden ingevuld met *recente* informatie over de lokalen op
51
51
de UHasselt. Volgens Ines Boonen is er geen systeem informatie bijhoudt over de
52
52
lokalen, het is dus zeer waarschijnlijk dat de bestaande informatie dan ook niet
53
53
meer up-to-date is. Dit is natuurlijk gemakkelijk te remediΓ«ren door een dag de
54
54
universiteit rond te trekken en alle informatie te verzamelen.
55
55
56
56
Dit is op dit moment nog niet gedaan voor Joeni, omdat dit geen prioriteit was
57
57
van het project. Er zijn enkele voorbeeldlokalen ingevoerd om te laten zien dat
58
58
het systeem goed werkt en bruikbare informatie verschaft, maar langs alle
59
59
lokalen van de UHasselt gaan behoort niet tot de /scope/ van dit proefwerk.
60
60
61
61
*** Prikbord
62
62
Niet alle diensten die op het prikbord iets kunnen zetten, kunnen aangeven wie
63
63
een bepaald bericht kan zien. Tot nu toe kan enkel de examencommissie bepalen
64
64
wie een bericht mag zien, omdat de meeste van hun berichten toch gericht zijn
65
65
aan een enkele student.\\
66
66
Dit is nog niet geΓ―mplementeerd omdat nog niet zeker is wat de meest
67
67
waarschijnlijke manier is dat informatie gedeeld wordt door de verschillende
68
68
diensten. Vermoedelijk zijn de meeste berichten toch bedoeld voor alle studenten
69
69
(getuige de PDF's die studeerruimte aanbieden), maar het kan natuurlijk dat
70
70
sommige berichten enkel aan een bepaalde studierichting getoond moeten worden.
71
71
72
72
*** Agora?
+
73
Nieuwe studenten kunnen zich via de website voorinschrijven op de UHasselt.
+
74
Alhoewel dit mooi geΓ―ntegreerd zou kunnen worden in Joeni, is er toch beslist
+
75
dit niet te doen.[fn:prereg-table]
+
76
+
77
Ten eerste is dit niet echt per sΓ© nodig: Ook al vereist de voorinschrijving het
+
78
gebruik van /client side scripting/, het is niet zo doorgedreven als bij andere
+
79
onderdelen van de website. Daarnaast de pagina er esthetisch gezien nog goed
+
80
genoeg uit.\\
+
81
Ten tweede: Dit is een pagina waar haast alle studenten maar één keer in hun
+
82
hele leven mee in contact zullen komen. Om hiervoor een pagina toe te voegen aan
+
83
Joeni is nogal overbodig, er zijn namelijk tal van andere mogelijke
+
84
verbeteringen die veel vaker gebruikt zullen worden.
+
85
*** Agora?
73
86
Het originele project was groter dan wat Joeni op dit moment is; het eerste
74
87
voorstel omvatte ook een universitair communicatieplatform waarop studenten,
75
88
docenten en vakgroepen makkelijk met elkaar konden communiceren. Naast
76
89
Administratie en Vakken zou dit onderdeel Agora noemen.\\
77
90
Maar Agora staat in het menu doorgekrast. Uiteindelijk zit het niet in Joeni,
78
91
voornamelijk omwille van de grootte van het project, maar ook omdat het niet
79
92
direct tot een basistaak van de universiteit behoort. 
80
93
+
94
De tabellen die Agora mogelijk maken zijn echter a
+
95
+
96
[fn:prereg-table] voor volledigheid van de databank is er wel een tabel
+
97
aangemaakt waarin de voorinschrijvingen kunnen worden opgeslagen, ~~PreRegistration~~.
+
98

docs/verslagen.org β†’ docs/thesis/verslagen.org ΒΆ

1 addition and 1 deletion.

View changes Hide changes
1
1
** praktische informatie
2
2
 - locatie :: kantoor wim lamotte, edm
3
3
 - tijd :: [2017-11-30 thu 11:00-11:30]
4
4
 - aanwezigen :: 
5
5
   - maarten vangeneugden :: student
6
6
   - prof. dr. wim lamotte :: promotor
7
7
 - onderwerp :: eerste ontmoeting omtrent bachelorproef
8
8
9
9
** samenvatting gesprek
10
10
 maarten heeft eerder een e-mail gestuurd naar lamotte om de voortgang van de
11
11
 bachelorproef te bespreken.
12
12
 deze voortgang werd uitgedrukt door enkele getekende er-diagrammen van de
13
13
 databank.
14
14
15
15
 maarten stelt de voorziene opdeling voor: 3 applicaties, draaiend op hetzelfde
16
16
 platform:
17
17
 - administration :: implementeert functionaliteit van het [[https://uhintra02.uhasselt.be/studdosst/][studentendossier]]
18
18
 - agora :: ondersteunend sociaal platform voor studenten en personeel van de
19
19
            uhasselt
20
20
 - courses :: implementeert functionaliteit van [[https://bb.uhasselt.be][blackboard]]
21
21
22
22
 de databank implementeert de basisvereisten, maar kan/moet nog fel uitgebreid
23
23
 worden. deze uitbreidingen kunnen op vraag van derden toegevoegd worden aan het
24
24
 systeem.
25
25
26
26
** aangebrachte punten door promotor
27
27
 - kerntaken van de universiteit :: de universiteit moet niet per sΓ© voorzien in
28
28
      het bouwen van een sociaal systeem, behoort niet tot de kerntaken. kan
29
29
      volgens lamotte ook "gemakkelijk geswitched worden tussen verschillende
30
30
      diensten".
31
31
      er wordt op dit moment gedacht gebruik te maken van google drive.
32
32
      maarten brengt aan dat een gespecialiseerde oplossing volgens hem beter tot
33
33
      z'n recht komt voor een organisatie als een universiteit, maar dit
34
34
      verandert natuurlijk niets aan het feit dat dit geen kerntaak is van de
35
35
      uhasselt.
36
36
 - administration en courses prioritair :: dit behoort namelijk wel tot de
37
37
      kerntaken, en vereist gespecialiseerde software. de prioriteit ligt volgens
38
38
      lamotte dus duidelijk op het afmaken van deze onderdelen. de grootte van de
39
39
      bachelorproef vereist dan ook dat er prioriteiten worden vooropgesteld.
40
40
 - groepen voor vakken :: (dit gaat niet over de studiegroepjes die studenten
41
41
      kunnen oprichten) sommige vakken hebben zoveel studenten dat het niet
42
42
      mogelijk is die op dezelfde momenten in eenzelfde college onder te brengen.
43
43
      deze moeten kunnen worden onderverdeeld in verschillende studiegroepen.
44
44
 - prioriteitenlijst opstellen :: opnieuw, omwille van de grootte van het
45
45
      project, vraagt lamotte om een lijst op te stellen van wat maarten ziet als
46
46
      de prioriteiten van de proef, en hoe deze uitgevoerd zullen worden. dit
47
47
      moet een informele lijst zijn van de prioriteiten, zodat deze ook door
48
48
      mensen zonder informatia-achtergrond relatief makkelijk te begrijpen is.
49
49
50
50
** actiepunten/afspraken
51
51
 - maarten zal een prioriteitenlijst opstellen en die doorsturen naar de
52
52
   promotor.
53
53
 - promotor zal proberen bruno janssen te betrekken bij de volgende afspraak.
54
54
 - maarten verplaatst werkzaamheden van agora naar administration en courses.
55
55
56
56
* Vergadering Ines Boonen
57
57
[2018-03-05 Mon 14:00-15:45]
58
58
Ben samengekomen met Ines Boonen om meer details te verkrijgen over de manier
59
59
waarop uurroosters worden samengesteld. Zij zat samen in hetzelfde kantoor met
60
60
personeel dat de andere faculteiten aandeed (Ines doet enkel fac.
61
61
Wetenschappen), dus ik heb een redelijk klare kijk gekregen op het proces.
62
62
63
63
** Wanneer
64
64
Informatie over de uurroosters komen het hele jaar doorlopend binnen:
65
65
- Wijzigingen
66
66
- Reservaties van externe partijen
67
67
- Reservaties van studentenverenigingen
68
68
69
69
De informatie van de richtingen zelf komt meestal binnen begin juli. Er wordt
70
70
echter al proactief gevraagd vanaf begin maart om de uurroosters van het 1ste
71
71
semester volgend academiejaar in te plannen.
72
72
73
73
** Kunnen er nu eisen aan reservaties gesteld worden?
74
74
*Neen.* Alleszins niet automatisch of gestructureerd.
75
75
76
76
De dienst onthoudt de eigenschappen van reservaties uit het hoofd. Alhoewel
77
77
enkel reserveerbare lokalen in de lijst verschijnen (personeelskantoren (en alle
78
78
niet-reserveerbare lokalen in feite) worden niet weergegeven), wordt er enkel
79
79
aangegeven hoeveel zitplaatsen er in een lokaal zijn, en of er al dan niet al
80
80
iets ingepland is.
81
81
82
82
** Manuele pogingen
83
83
Er worden soms manueel pogingen ondernomen om bepaalde handigheiden te
84
84
verkrijgen:
85
85
- Soms wilt een prof 2 aparte lokalen. Er wordt dan geprobeerd om die 2 lokalen
86
86
  dan langs elkaar te reserveren.
87
87
- Het is beter om een groep studenten een hele voor- of namiddag in hetzelfde
88
88
  lokaal te houden. Dit is puur voor logistieke redenen (gangen niet overbelasten)
89
89
- Er wordt geprobeerd om lokalen een volledige dag vrij te houden. Dit wordt
90
90
  onderling besproken met "de tafel" om wat rond te schuiven.
91
91
92
92
** Rekening mee te houden
93
93
- Alle modeltrajecten :: Vakken uit modeltrajecten mogen niet overlappen. Met
94
94
  GIT-studenten wordt op dit moment geen rekening gehouden (alhoewel het
95
95
  technisch wel mogelijk kan zijn om dat te regelen zodat studenten geen
96
96
  overlappingen hebben in hun curricula)
97
97
- Schakelstudenten :: Sommige schakeljaren nemen ook vakken op van het lopende
98
98
  masterjaar, maar niet alle vakken. Er dient dus rekening gehouden te worden
99
99
  dat schakelstudenten Γ©n gewone masterstudenten beide al hun vakken kunnen
100
100
  volgen (voor zover ze het modeltraject volgen)
101
101
- Lawaaioverlast :: Sommige ingeplande reservaties veroorzaken lawaaioverlast.
102
102
                    Er wordt dan rekening gehouden dat reservaties die stilte
103
103
                    vereisen in een bepaalde radius niet worden ingepland.
104
104
- Faciliteitsstudenten :: Deze studenten kunnen langer doorwerken aan hun
105
105
     examens, maar dit moet _manueel_ worden onthouden. Het is niet mogelijk om
106
106
     dit aan te geven of hier rekening mee te houden bij het plannen van de uurrooters.
107
107
108
108
** Proces voor externe reservering
109
109
1. Studentenvereniging / externe partij dient aanvraag in bij Dienst
110
110
   Communicatie (in verband met huur) (Johan bij dienst com. doet dit)
111
111
2. Dienst Communicatie vraagt Ines Boonen voor lokaalreservatie in te plannen op
112
112
   basis van gegeven parameters
113
113
3. Ines Boonen stuurt e-mail naar Dienst Communicatie met details
114
114
4. Dienst Communicatie koppelt dit terug naar reserveerder
115
115
116
116
Interne diensten (zoals bv. het secretariaat) kunnen zelf kijken of er lokalen
117
117
vrij zijn, en dan gewoon zelf een reservatie doorvoeren.
118
118
119
119
*** Punten voor verbetering
120
120
- Met GNU Taler is het mogelijk een betalingssysteem op te bouwen, waarmee
121
121
  externe partijen parameters kunnen opgeven, waarop het systeem automatisch een
122
122
  reservatie opstelt. Voor speciale aanvragen (met bepaalde eisen) kan er dan
123
123
  nog altijd naar de Dienst communicatie gestuurd worden, waarbij het
124
124
  bovenstaande proces plaatsvindt.
125
125
- Voor reservaties door studentenverenigingen is het misschien mogelijk dat ze
126
126
  zelf met Ines contact opnemen? (Bij speciale eisen. Anders kan dat ook volgens
127
127
  het gewone proces, zelfs rond GNU Taler om want zij kunnen gratis reserveren.)
128
128
129
129
** Proces voor wijziging van docenten uit
130
130
1. Docent stuurt aanvraag wijziging via e-mail (GMail, privacy in gevaar!) naar
131
131
   Ines Boonen
132
132
2. Ines Boonen tracht aan de gestelde voorwaarden te voldoen, en de wijziging in
133
133
   reservatie door te voeren
134
134
3. Ines Boonen stuurt e-mail terug met informatie over de wijziging, en of het
135
135
   al dan niet gelukt is om de reservatie te verplaatsen
136
136
*** Punten voor verbetering
137
137
Het is duidelijk dat dit volledig door de docent zelf kan gedaan worden. Deze
138
138
geeft dan in het programma de vereiste parameters in. Het programma controleert
139
139
de curricula van alle studenten die dat vak volgen (opdat de wijziging geen
140
140
conflict veroorzaakt), en doet een voorstel voor andere lokalen, tegemoetkomend
141
141
aan de gegeven parameters.
142
142
143
143
Moest er geen oplossing gevonden worden (bv. steeds conflict, niet voldaan aan
144
144
voorwaarden), dan kan het programma misschien een oplossing voorstellen die een
145
145
parameter negeert? \\
146
146
In elk geval: Het blijft wel mogelijk om Ines Boonen een e-mail te sturen moest
147
147
het niet automatisch gaan, en
148
148
natuurlijk ook als het een reservatie met speciale eigenschappen betreft.
149
149
150
150
** Proces voor opstellen van semestriΓ«le uurroosters
151
151
1. Docenten sturen documenten (op papier/in .docx) in met vereisten, tijden dat
152
152
   ze niet beschikbaar zijn, welke docent wat geeft (zodat docenten soms kunnen
153
153
   worden ingewisseld om ze vrij te krijgen voor andere momenten), ...
154
154
2. De dienst lokaalreservaties neemt het uurrooster van het vorige jaar bij
155
155
   wijze van sjabloon, en begint daarvan de nodige wijzigingen aan te brengen.
156
156
3. Resultaten worden voorgelegd aan de betrokken personeelsleden, en eventuele
157
157
   reacties achteraf worden in acht genomen (er kunnen dus nog wat wijzigingen
158
158
   gemaakt worden).
159
159
*** Punten voor verbetering
160
160
De vereisten komen binnen in papiervorm... Dit is dus zeer gemakkelijk te
161
161
automatiseren, als de docenten maar gewoon in een programma ingeven wat hun
162
162
vereisten zijn. Op dit moment moet het personeel dit allemaal manueel ingeven,
163
163
en zo kunnen er fouten ontstaan. Het vreemde is dat deze data via docx-bestanden
164
164
wordt gestuurd. Hier kunnen namelijk ook weer fouten in optreden, en Word is
165
165
sowieso iets dat vermeden dient te worden.
166
166
167
167
** Waarom kunnen studenten niet reserveren?
168
168
Te vervelend.
169
169
170
170
Studenten gebruiken de lokalen te vaak om te eten/drinken, om dingen te doen die
171
171
niet studeren zijn, ... Ze laten soms de lokalen ook vuil achter en dan komen er
172
172
klachten binnen. Door dat misbruik is het voor hen niet mogelijk om dat te doen.
173
173
174
174
Het maakt het ook een stuk moeilijker voor de dienst lokaalreservaties om hun
175
175
werk te doen; er is sowieso al een tekort aan lokalen op de UHasselt, en als
176
176
studenten ook nog beginnen te reserveren zal het helemaal niet meer lukken om
177
177
nog /last minute/ wijzigingen voor colleges bv. door te voeren. \\
178
178
Soms komen studenten ook gewoon niet opdagen en dan is dat natuurlijk een lokaal
179
179
weggegooid.
180
180
181
181
Het compromis was vroeger om de lijst van lokaalreservaties van die dag af te
182
182
drukken en op te hangen, maar dit wordt niet meer gedaan omdat dit te omslachtig
183
183
is.
184
184
185
185
Een middenweg zou natuurlijk kunnen zijn dat de lokaalreservaties online kunnen
186
186
worden bekeken door studenten, via de website.
187
187
188
188
** Perspectief van de ontwikkelaar
189
189
In de databank zouden volgende eigenschappen van een lokaal moeten worden
190
190
bijgehouden (exclusief wat ik al in het schema zou bijhouden):
191
191
- Tafels staan vast of los (voor bv. groepsprojecten willen sommigen dat die
192
192
  verplaatst kunnen worden)
193
193
- Aantal stopcontacten
194
194
- Buitenraam aanwezig of niet
195
195
- Welke programma's op de computers staan (omwille van de propriΓ«taire software
196
196
  staan bepaalde programma's niet altijd op alle computers)
197
197
198
198
*Dit moet ook geΓΌpdatet worden!* Op dit moment worden *alle* aanvragen via die
199
199
dienst gestuurd (omdat zij bepaalde informatie gewoon uit het hoofd geleerd
200
200
hebben), maar als deze ook in de databank staat kunnen docenten regelmatig
201
201
gemakkelijk zΓ©lf wijzigingen doorvoeren.
202
202
203
203
Reservaties kunnen plaatsvinden van 08:00 - 22:00. Voor latere reservaties (tot
204
204
24:00) moet er echter beveiliging worden gevraagd (Securitas). Dit vereist dus
205
205
een tijdige reservering.
206
206
207
207
*** Huidige situatie
208
208
Het gebruikte programma is volgens Ines ~20 jaar oud. Het zou geschreven zijn in
209
209
VB.NET maar dat is onmogelijk, .NET kwam pas in 2002 uit. Door de ouderdom van
210
210
de software werkt deze hoogstens op Windows 7, Windows 10 kan het niet aan.
211
211
212
212
De software is ook zéér volatiel en traag. Het aanpassen van de uurroosters gaat
213
213
ontzettend traag, waardoor de uurroosters pas 's nachts worden geΓΌpdatet. (Het
214
214
dynamisch uurrooster geeft echter wel de onmiddelijke situatie weer). Bij te
215
215
veel aanpassingen vertraagt het systeem tot een onwerkbare snelheid, en bij
216
216
bepaalde aanpassingen crashet het zelfs onverbiddelijk. Edwin (?) houdt voor de
217
217
software zelfs een oude computer draaiende naast de gewone server, want zonder
218
218
dat computertje werkt dit programma gewoon niet meer.
219
219
220
220
De software is geschreven voor de Economische Hogeschool van vroeger, maar is
221
221
duidelijk niet mee geΓ«volueerd met de noden van een universiteit van >6000
222
222
studenten, met al hun speciale noden en curricula.
223
223
224
224
225
225
** Output
226
226
Het is via het gebruikte programma enkel mogelijk om een Excel-rekenblad of een
227
227
foto (de .gifs van de uurroosters) te outputten. Simpele tekst is niet mogelijk,
228
228
alhoewel de data wel wordt bijgehouden op een externe server (in een databank).
229
229
Software kan dit dan gemakkelijk uitlezen.
230
230
231
231
** Voorgestelde alternatieven
232
232
Geen enkel voorgesteld alternatief is vrije software (afgeleid uit de
233
233
prijskaartjes). Voor de volledigheid noteer ik hier toch nog de speerpunten.
234
234
*** Porto
235
235
Project van de universiteit van Porto. Dit werd door hen voorgesteld aan de
236
236
UHasselt ter gebruik, met een 2-jarig onderhoudscontract. \\
237
237
Voorgestelde prijs van ~ €10.000 was echter te hoog. Hilde Cleeren wist mij te
238
238
vertellen dat dit systeem gebruikt wordt in sommige Scandinavische universiteiten.
239
239
*** Syllabus + Enterprise/Classic
240
240
Gebruikt door UCLL en KUL. Bezit enorm veel van de gevraagde features:
241
241
- Houdt eigenschappen van lokalen bij (bv. aantal computers, zitplaatsen, ...)
242
242
- Waarschuwt automatisch voor overlappingen bij opstellen uurroosters en
243
243
  wijzigingen
244
244
- Doet zelf voorstellen voor een bepaalde wijziging, op basis van gegeven
245
245
  parameters
246
246
- Kan blijkbaar geΓ―ntegreerd worden met de agenda's van bv. professoren, zodat
247
247
  onvrije momenten niet ingepland kunnen worden
248
248
- Houdt ook informatie over examenroosters bij (huidige systeem doet dit niet)
249
249
250
250
Personeel verklaart echter dat ze het systeem niet fijn werken vinden, maar
251
251
vermoeden dat dat vooral een kwestie van smaak is; ze zijn het huidige systeem gewoon.
252
252
253
253
*** Eduflex
254
254
Grotendeels zoals Syllabus+, maar meer informatie niet gegeven.
255
255
256
256
*** Untis
257
257
Gebruikt op de PXL, maar meer informatie was nog niet beschikbaar.
258
258
259
259
** Voorrangsregels
260
260
Gastprofessoren en -sprekers, docenten van andere universiteiten, ... *hebben
261
261
absoluut voorrang.* Hun schema's zijn haast niet aan te passen.
262
262
263
263
Daarna hangt het vooral af van de specifieke vereisten van docenten.
264
264
265
265
** Keuzevakken en groepen
266
266
Voor veel richtingen worden de studenten opgedeeld in groepen. Deze groepen
267
267
zijn al dan niet zelf te kiezen, of worden toegewezen door de planners van het
268
268
uurrooster (bv. Ines Boonen).
269
269
270
270
Gemakkelijkheidshalve worden deze groepen (indien mogelijk) ingedeeld volgens
271
271
hun keuzevakken. Mensen die Spaans volgen komen dan in groep A/B/C terecht, en
272
272
diegenen die Duits volgen in groep D/E/F.
273
273
274
274
Het zou echter handig zijn mocht de naam van de docent _niet_ verschijnen als de
275
275
studenten zich zelf in groepen moeten indelen. Het blijkt dat studenten dan gaan
276
276
kiezen voor een bepaalde docent.
277
277
278
278
** Andere weetjes
279
279
- Het semestersysteem wordt de standaard binnen haast alle opleidingen. Voor
280
280
  eerstejaars blijft echter soms nog het kwartielsysteem behouden, voor een
281
281
  enkele richting is elk jaar een kwartielsysteem (4 kwartielen).
282
282
- Sommige studierichtingen zijn wel ingedeeld in groepen, maar zijn dit enkel op
283
283
  papier. In het systeem wordt dit dan niet opgeslagen. Dit moet dan manueel
284
284
  ingegeven worden.
285
285
- Het is mogelijk dat ze zelfs reservaties ontvangen die pas over 2 jaar
286
286
  plaatsvinden.
287
287
- Lokalen worden 's ochtends door "materiaalmeesters" geopend. Als een lokaal
288
288
  voor een dag niet gereserveerd is, dan wordt dat lokaal ook niet geopend.
289
289
- Soms zijn er speciale eisen bij een lokaalreservatie (bv. er moet een TV
290
290
  geplaatst worden of zo, een experiment, ...). Deze nota verschijnt dan bij de
291
291
  lokaalreservatie, waarvan de materiaalmeesters op de hoogte worden gebracht
292
292
  (zij kunnen dit namelijk inkijken).
293
293
- Hilde Cleeren Heeft voorgesteld om de studenten op te delen in klasselijsten. Volgens
294
294
  haar kan ze zo makkelijk zien hoeveel studenten een overlap hebben bij een
295
295
  bepaalde wijziging. Als dat 1-2 studenten zijn wordt dat soms gedaan, alleen
296
296
  wordt er dan wel gezorgd dat die student volgende week zeker _niet_ overlap
297
297
  hebben. Als er bv. 10 studenten overlap hebben wordt het nooit gedaan.
298
298
299
299
** Conclusie
300
300
Het grootste probleem is volgens het personeel dat er te veel onthouden moet
301
301
worden; informatie die gemakkelijk door het systeem kan worden bijgehouden
302
302
(zoals bv. het aantal computers in een lokaal, of een lokaal ΓΌberhaupt een
303
303
computerlokaal is, ...) wordt nu middels "ervaring" onthouden. Dit resulteert
304
304
van tijd tot tijd in menselijke fouten in de planning. 
305
305
306
306
Het uurrooster van het vorige academiejaar als sjabloon nemen is redelijk
307
307
handig. Er kan dan ook direct door de computer vastgelegd worden of een docent
308
308
wijzigingen moet hebben of niet.
309
309
310
310
Het huidige programma is waarschijnlijk verloren. Dit zal echter afhangen van de
311
311
gebruikte programmeertaal, maar naar de toekomst toe zie ik het niet zitten. Het
312
312
programma is inefficiΓ«nt, heeft onverklaarbare momenten van traagheid, crashet
313
313
en vereist een oude, externe computer omdat het niet draait op een recent
314
314
besturingssysteem.
315
315
Een duurzaam en robuust nieuw programma dringt zich op. Het personeel uit echter
316
316
de wens dat het huidige programma wat herschreven wordt, om de opgedane ervaring
317
317
hiermee makkelijk over te dragen. Ik vermoed echter dat een volledig nieuw programma
318
318
dat niet te fel afwijkt van het huidige programma in het humane aspect, zeker
319
319
geaccepteerd zal worden.
320
320
321
321
De aangebrachte alternatieven zijn misschien toereikend in functionaliteit, maar
322
322
omdat het geen vrije software betreft zou het gebruik hiervan uiteindelijk in
323
323
problemen resulteren die met vrije software makkelijk voorkomen kunnen worden (omwille van de
324
324
controle die men heeft over vrije software). De huidige software is vrij (intern
325
325
geschreven door cel ISA), maar is waarschijnlijk niet meer te onderhouden. Ook
326
326
door de aard van het bedrijf zelf (Universiteit Hasselt) lijkt een nieuwe,
327
327
intern geschreven oplossing de enige oplossing op lange termijn. (Men kan ook
328
328
een extern bedrijf inschakelen, maar het is maar de vraag of zij bereid zijn een
329
329
vrije oplossing aan te reiken.) \\
330
330
*** Onderhoudscontract als substituut voor vrije software
331
331
Het onderhoudscontract van de oplossing van de Universiteit van Porto is
332
332
ontoereikend als substituut voor vrije software; men verliest de controle om
333
333
zelf de software te wijzigen naar eigen goeddunken. Het verbindt ons ook
334
334
onlosmakelijk aan de ontwikkelaars, en het contract geldt maar voor 2 jaar.
335
335
Niets houdt de ontwikkelaar tegen om exorbitante prijzen te vragen voor
336
336
verlenging. De ontwikkelaar heeft die macht dan, omdat overschakelen op een
337
337
andere oplossing tegen dan te duur zal zijn. Met een vrijesoftwareoplossing
338
338
heeft de ontwikkelaar die macht niet.
339
339
340
340
* Vergadering Bruno Janssen
341
341
[2018-03-08 Thu 15:00-16:00]
342
342
Afspraak gemaakt voor een "verkennende vergadering" met Bruno Janssen. Hij is
343
343
eindverantwoordelijke voor de ICT en heeft een beslissende stem binnen het
344
344
ALIPA-project. 
345
345
** Huidige staat is slecht
346
346
Bruno Janssen schuwt de grote woorden niet en noemt de huidige situatie "ronduit
347
347
slecht", volgens hem moet je de situatie ook benoemen zoals ze is, zonder rond
348
348
de pot te draaien.
349
349
*** Voorbeeld: vergaderingen
350
350
 Als iemand een vergadering wilt organiseren, dan komt er heel wat gepruts bij
351
351
 kijken; moeten er hapjes voorzien worden, extra stoelen, koffie, een beamer,
352
352
 ... voor al deze zaken moet er naar verschillende nummers getelefoneerd worden.
353
353
 Dit is een voorbeeld van een vaak voorkomend probleem dat makkelijk
354
354
 geautomatiseerd kan worden, maar in plaats daarvan moeten we alles manueel zelf
355
355
 regelen.
356
356
** Andere punten
357
357
- Er zijn verschillende programma's voor de examenroosters en voor de
358
358
  uurroosters te maken, en beide worden dus op een andere manier gedaan.
359
359
- ir. Janssen raadt mij aan om, omwille van de omvang van het project, mijn
360
360
  praktische uitwerking te beperken tot het studentengedeelte. Ik neem dit
361
361
  advies ter harte, omwille van het feit dat ik al +3 jaar hiermee in contact
362
362
  kom, ben ik hier het beste op de hoogte van de noden van het systeem.
363
363
** Beleidstop
364
364
De beleidstop heeft de boodschap die ir. Janssen verkondigd begrepen. Heden is
365
365
er een meerjerenplan op touw, omdat van de ene dag op de andere alles omgooien
366
366
niet haalbaar is. 
367
367
** Uitbesteden
368
368
ir. Janssen gelooft dat het uitbesteden van de software-ontwikkeling een beter
369
369
idee is dan de programma's zelf schrijven.
370
370
Hiervoor laat hij enkele voorbeeldprogramma's zien die niet zelf zijn
371
371
geschreven:
372
372
- Fintra :: Een programma om financiΓ«n te beheren
373
373
- Ultimo :: Dient om werkopdrachten rond te sturen
374
374
Er is blijkbaar ook een programma om het autopark te beheren, alsook een hoop
375
375
andere programma's. Ik mocht van ir. Janssen aanwijzen op het scherm waar ik
376
376
meer info over wilde, maar ik wist niet waar te beginnen.
377
377
*** Google
378
378
Om het standpunt van uitbesteding kracht bij te zetten, laat hij me ook zien hoe
379
379
fel Google geΓ―ntegreerd wordt in het systeem van de studenten: dit omvat
380
380
- GMail
381
381
- Google Calendar
382
382
- Google Drive
383
383
- Google Docs
384
384
- Google Sheets
385
385
- Google Slides
386
386
- Google Meet
387
387
- Google Chat
388
388
- ...
389
389
*Al deze diensten biedt Google gratis aan.* Alhoewel ik het niet met die woorden
390
390
heb gezegd, kon ik me niet van de gedachte ontdoen dat hier iets sinister achter
391
391
zat van Google uit. Ik zal dit in m'n thesis verder ter sprake brengen.
392
392
** Andere vragen
393
393
Omdat ir. Janssen niet direct op al m'n vragen kan antwoorden, wordt er
394
394
afgesproken dat ik een e-mail stuur met de nog resterende vragen, waarna hij me
395
395
dan verdere uitleg zag verschaffen, of doorverwijzen naar de mensen die me met
396
396
die vragen kunnen helpen.
397
397
398
398
* Vergadering Peter Vandoren
399
399
[2018-03-08 Thu 16:00-17:30]
400
400
401
401
Deze vergadering gebeurt in het kader van het opstellen van de :quurroosters. Voor
402
402
de richting Informatica is dat blijkbaar een afwijkend proces.
403
403
404
404
** Algemene situatie
405
405
Er bestaat over het algemeen 1 jaarkalender, maar voor elke richting is die
406
406
ietsjes anders.
407
407
Voorbeeld: Master of Statistics:
408
408
2 kwartielen in tweede jaar wegens /time management/-problemen
409
409
-> 1 kwartiel volledig voor de proefthesis
410
410
411
411
412
412
** Techniek om uurrooster op te stellen
413
413
Er wordt een lijstje aan stappen overlopen:
414
414
1. (*Basisvraag*) Wat zijn de onderwijsmethoden? Hoe wordt er les gegeven? (Dit
415
415
   verschilt bv. fel tussen Geneeskunde en Architectuur)
416
416
2. Vorm van onderwijs geven; In het 1ste bachelorjaar is dit vaak begeleide
417
417
   zelfstudie, naarmate de jaren vorderen evolueert het steeds verder naar
418
418
   volledig zelfstandig leerstof verwerken.
419
419
420
420
Deze verschillende vormen van onderwijs geven zijn bepalende factoren; er wordt
421
421
namelijk getracht een zo logisch mogelijke dag voor de studenten in te plannen.
422
422
Idealiter vormen de eerste momenten van de dag de hoorcolleges, is er daarna een
423
423
periode van zelfstudie, die dan wordt afgesloten met een responsiecollege.
424
424
425
425
Dit is echter niet de manier waarop elke richting werkt, dus alles heeft zijn
426
426
eigen aanpassingen en subtiliteiten.
427
427
428
428
** Professoren
429
429
Een van de _grootste_ problemen met het inplannen van de uurroosters, zijn de
430
430
professoren. Deze zijn druk bezet, en flexibiliteit is moeilijk te verwachten
431
431
van hen. Assistenten daarentegen kunnen makkelijk de werkzittingen doen (die
432
432
kunnen variΓ«ren over de dag), en zijn flexibeler in te zetten.
433
433
434
434
** Informatica
435
435
Een speciaal punt in de richting Informatica: Vanaf 3BACH (en dus ook 1MAS,
436
436
2MAS) worden er enkel nog maar hoorcolleges ingepland. (de bachelorproef wordt
437
437
enkel ingepland als advies)
438
438
439
439
Dit heeft veel te maken met de grote hoeveelheid verschillende lessen (door de
440
440
specialisaties) die er per week plaatsvinden; het is simpelweg niet mogelijk om
441
441
voor al die lessen meer dan enkel de hoorcolleges in te plannen; er zouden
442
442
sowieso overlappingen ontstaan, waardoor modeltrajectstudenten sommige lessen
443
443
niet zouden kunnen volgen.
444
444
445
445
Het is echter mogelijk hierop in te spelen, zie [[Software als oplossing?][verder]].
446
446
447
447
*** Jaaropstelling
448
448
In tegenstelling tot bij andere richtingen (die halfjaarlijks werken) wordt er
449
449
bij Informatica geprobeerd om een volledig jaar in 1 keer op voorhand uit te
450
450
plannen. Dit om de proffen hun schema's zo vroeg mogelijk te bezorgen.
451
451
452
452
** Frequentie van een vak
453
453
Hoeveel lesuren zijn er nodig voor een vak? Bijkomend: Hoe lang moet een sessie
454
454
duren; 1 uur, 2 uren, ...?
455
455
456
456
Op basis van hoe deze frequentie voor de verschillende vakken is, wordt een dag
457
457
in een jaarkalender opgedeeld in een bepaald aantal blokken.
458
458
459
459
Voorbeeld: Master of Statistics is opgedeeld in 2 blokken:
460
460
- BLOK 1 :: Voor 12:00
461
461
- BLOK 2 :: Na 12:00
462
462
463
463
Dit wordt niet officieel zo ingepland, maar contactmomenten tussen professoren
464
464
en studenten worden op die manier onderling afgesproken.
465
465
466
466
Voorbeeld: Master Informatica:
467
467
Hier zijn 6 verschillende profielen, met minstens 4 vakken elk.
468
468
Primair wordt er gezorgd dat geen van de vakken binnen een bepaald profiel
469
469
overlappen, daarna worden de andere profielen in overeenstemming gebracht.
470
470
Deze richting werkt met 4 blokken op één dag.
471
471
472
472
** Sjablonen
473
473
Er wordt haast altijd uitgegaan van de situatie van het vorige jaar, dit wordt
474
474
dan als sjabloon gebruikt.
475
475
Als er geen veranderingen zijn, dan worden er geen wijzigingen aangebracht.
476
476
477
477
Van tijd tot tijd vindt er echter een grote verandering plaats (zoals bij bv.
478
478
2de Master of Statistics; die moest recen volledig vervangen worden)
479
-
*** Als vakken van een richting veranderen
+
479
*** Als vakken van een richting veranderen
480
480
1. Er wordt gekeken naar hoe en wat veranderd
481
481
2. Er wordt een voorstel voor een wijziging uitgewerkt
482
482
3. Voorstellen aan betrokken partijen
483
483
   (Het is vaak mogelijk om a.d.h.v. het aantal studiepunten van een vak het
484
484
   aantal hoorcolleges te bepalen, maar dit kan variΓ«ren)
485
485
486
486
Als alles in orde is, wordt het programma naar het secretariaat gestuurd. Zij
487
487
plannen de verschillende vakken in voor de lokalen.
488
488
489
489
490
490
------
491
491
492
492
De reden dat niet iedereen gewoon 1 keer per jaar samenkomt om alle schema's op
493
493
te stellen, is omdat het gedaan moet zijn vΓ³Γ³r de zomervakantie begint.
494
494
495
495
Dit proces is namelijk ook /volledig offline/: er is totaal geen zicht op de
496
496
agenda's van de proffen.
497
497
498
498
De huidige manier van werken is dat er met minimaal overleg gewoon en voorstel
499
499
wordt gedaan aan de proffesoren. Die zijn meestal gewoon meegaand met het
500
500
voorstel, behoudens enkele kleine aanpassingen.
501
501
502
502
** Software als oplossing?
503
503
504
504
Dit hele probleem is met de juiste input volledig te automatiseren met een
505
505
programma. Het zou dan wel bv. ook rekening moeten houden met studenten die hun
506
506
curriculum in het midden van het jaar aanpassen, rekening houden met lokalen,
507
507
weet hebben over de agenda's van professoren, ...
508
508
509
509
Een mogelijke oplossing zou backtracking kunnen zijn; als een oplossing niet kan
510
510
werken, teruggaan naar de laatste mogelijk correcte oplossing, en van daar
511
511
verder werken.
512
512
513
513
Buiten het schrijven van het programma zelf, is een van de meest complexe
514
514
opdrachten dan, om alle betrokkenen zo snel mogelijk al de benodigde informatie
515
515
te laten aanleveren: Op dit moment komt de informatie nogal druppelgewijs
516
516
binnen, en moeten nieuwigheden naderhand in een schema verwerkt worden (dat
517
517
waarschijnlijk al geaccepteerd is door iedereen). Het maakt het allemaal stukken
518
518
moeilijker om gewoon een uurrooster op te stellen.
519
519