Sander van den Oever

Sander van den Oever
Computer Science student

Track: Software Technology
Interests: Software (Web) Engineering
Occupation: PHP Developer

Recent blogs


January 2019
« Feb    


Posts in category TU Delft


Cool stuff! Our chapter for the DESOSA book has just been published. The course staff merged all different chapters into a single book. For this they have used GitBook. You can see the current version of the book at We got some really good grades for our chapter (on youtube-dl) so we were really pleased with the final result. Next to that I also had the final assessment for Software Re-engineering. We had to give a presentation about our refactorings and we were questioned by our professor. We scored an okay-ish grade, I hoped for a better result but since I could have spend more time on this course I don’t think that a higher grade would be fair.

Quarter 4

Yes, 4, already! That means a couple of things. First of all; new courses! This quarter I will be following the Multimedia Search and Recommendation (MSSR) course. It’s a core subject and also a brand new course. The lectures tend to be a bit chaotic as the teachers are still finding out what works best, but they are also really open to suggestions on how to improve. That’s actually another thing I like about TU Delft, you can just discuss basically anything with the teachers/professors. I’ve experienced that within other universities there is a more hierarchical system, while in Delft we tend to work / communicate like everyone is equally ‘ranked’. Of course this depends on the university and even the specific teachers. Anyway, within MMSR we gain knowledge on different search and recommendation methodologies. After a common core we could choose one of the specializations; MMSR Analytics or MMSR Systems. I liked the description of the Systems track more, and I’ll try to give an update on that specific track soon. Next to MMSR I follow the Language Engineering Lab. As I have followed the Compiler Construction course this was an easy pick. Within this project me and my teammate have to define a compiler that transforms Rascal grammars into the Spoofax grammars. Both Rascal and Spoofax allow you to design your own languages. In order to transform one of the grammars into the other you need to have a deep understanding of the different aspects of this language.

Teaching Assistant

The remainder of my time I will be using to assist several teams within the second year Contextproject. This project is a testdrive for the final Bachelorproject. The Contextproject, however, does offer more guidance than the Bachelorproject. I’m involved with two different projects, each of which have several teams participating. I assist Rafael Bidarra with his Computer Games context and I assist Alberto Bacchelli with the Virtual Humans for Serious Gaming project. For the Computer Games context I need to make sure that the students are able to finish the products, with enough features, while the deadline is still realistic. For the Virtual Humans context I am a Software Engineering TA. Rather than supervising the ‘context’ I need to ensure that the delivered products are of good quality, SCRUM is being applied properly, etc. It’s really fun to guide such projects and you can even learn a lot while doing so.

3,.. 2,.. 1,.. Summertime!

Back in the days, when you had holidays throughout the entire year,.. I honestly miss that, a lot. But since we are in Q4 that means that summer is only one quarter away now!

24H-Coding: #winnING

Hi everyone!

Last blog I concluded with a small part on the ING 24H-Coding hackathon. For those of you that do not know what the/a hackathon entails; together with your team you are supposed to deliver a product within a given timeframe. In our case we had 24 hours (non-stop) to build an omni-channel solution for ING.

ING 24H-Coding

Around 12:00 I gathered with 2 other team members at Delft central station. We took the train to The Hague where the latest member of our team joined us. From there we travelled to Amsterdam, via Gouda because of some disruptions. When we arrived at Amsterdam Bijlmer ArenA (train station) it was only a 2 minute walk to the event venue. At the entrance they scanned our tickets and we were provided with all necessities like a small towel, sanitary kit, t-shirt and some information + a map of the location. We basically went straight to the main hall (the concert hall) to check out our working space for the upcoming 24 hours. ING arranged a secondary display per team, a router with a fast internet connection and power outlets (pretty useful when coding 24 hours).

24H-Coding: Main hall

Figure: 24H-Coding: Main hall

When we had installed ourselves we went to check out the remainder of the location. In front of the main hall there was some kind of lounge where you could get some (hot) snacks. Around 18:00 dinner would be served here from various mobile food trucks. On the first floor ING placed some resting/entertainment facilities; table soccer, a mechanical bull, game consoles, air hockey, etc. There was a (limited) sleeping facility available at the second floor. ING did a awesome job with the organisation of the event, we had unlimited (free!) food and drinks, there was an oxygen bar, guidance for the student teams, you name it. We had a lot of fun at the event (played a lot of table soccer and air hockey).

24H-Coding: Game zone

Figure: 24H-Coding: Game zone

Despite all the fun and the lack of sleep (except one of us who tried to sleep for a few hours), we still had to fulfil one task; building the product. We submitted an idea where the current ING app would be extended; we would add the ability to create a payment ‘request’ by means of a QR code. These QR’s codes could be generated on a webshop, mobile phone or they could be printed on a poster for instance. Scanning the QR code then would open up the ING app where you’d only have to approve or decline the request to pay (hence the name of our project; ScannING). At the end of the 24 hours we had to pitch our results to (part of) the jury. They selected the best team in each category. Against our expectations we were chosen to be the winner in the student category. Of course there was a reward too; we will have a fancy dinner with two board members of ING in the near future.

24H-Coding: ScannING, winning student team

Figure: 24H-Coding: ScannING, winning student team

You can find all pictures at flickr. The aftermovie can be found on YouTube (our 2 seconds of fame are from 2:44 up to 2:46, playing table soccer, haha).

End of Q3

Apart from the hackathon I did do some other stuff as well in the past month. I finished most of my courses; my team and I have handed in our chapter for the DESOSA book (I’ll add a link when it has been published) and we finished our refactoring of the jMonkeyEngine project. One of the benefits of living in Delft is it’s connection to The Hague and the beach at Scheveningen. Last week I went there to have some delicious ‘Kibbeling’ (fish) at Simonis. Concluding with a late walk on the beach it was an awesome start of the weekend. Whenever you are in Delft, don’t forget to go there. You can go to the famous ‘Pier’ (which re-opened recently) or just walk at the beach. From Delft to Scheveningen takes you approximately an hour by tram (or you can go partly by train, which will be a little faster I guess). Next quarter I will be assisting with the second-year bachelor course called Context project. I still have to decide which courses I will follow next to assisting, but those will probably be the Language Engineering project (by Eelco Visser) and Web Data Management. I’ll update on the courses later when I’ve made up my mind, for now: see ya!

Scheveningen Beach panorama

Figure: Scheveningen Beach panorama. Taken from ‘De Pier’.


New courses and ING 24H-Coding

Hi all,

The third quarter brought me some new courses and other activities. New courses I am following are Software Architecture by Arie van Deursen and Software Re-engineering by Andy Zaidman. I’m also participating in the ING hackathon next week, which I’ll talk about in a bit.

Software Re-engineering

Let’s start with discussing Software Re-engineering a bit. This course focuses on the way we look at existing software systems. How do we deal with a large system that has been developed over the course of several years? How can one efficiently enhance the structure of such a project, while assuring that everything still works as it is supposed to work? We have learned about the S.O.L.I.D.-principles (which some of you might be familiar with already) and how to refactor violations of these principles. We have learned about testing, how to develop tests to tests your hypotheses, refactor, and test again. Our knowledge was tested on a real-life example. Together with the other students we had to identify violations of several principles and following on that deliverable we had to actually refactor these violations. The system that was used this year is jMonkeyEngine. jMonkeyEngine is a 3D game engine written in Java. We have used several tools like inCode, CodeCity and other tools like code coverage tools to find all kinds of flaws and violations.

CodeCity visualisation of jMonkeyEngine

Figure 1 – CodeCity visualisation of jMonkeyEngine

In the Figure 1 you can see a visual representation of jMonkeyEngine as build with CodeCity. CodeCity renders your code as a ‘city’ giving you a quick overview of the project. Packages are being transformed into districts, classes are transformed into buildings where the properties of a class determine the properties of these buildings. For instance, one can choose to use the #Lines of Code (LOC) metric for the height of a building and the number of methods metric for the width of the building. One can also use colours on the buildings, to indicate (for example) the number of external dependencies. Classes that have a lot of methods or classes that are being referenced a lot by other classes might be suffering from the God Class-violation. These classes would (if using the right metrics of course) be noticeable fairly easy (big skyscrapers).

Software Architecture

Software Architecture is a course taught by Arie van Deursen. He uses GitHub for all course material and Slack for communication and announcements. Within this course we had to pick an open-source, GitHub hosted, software system that has been active recently (e.g. approximately one pull-request per day minimum). We, my team and I, have decided to work on the youtube-dl project. Youtube-dl is a command-line tool that allows you to download video’s from over 700 (!) supported websites. Within this course we had to analyse this system (it’s internal structure) and write a report about our findings. Next to that, the fun part of this course in my opinion, we had to think of potential contributions to the project. The course actually required us to make some contributions. We had to contact the development team and try to get our contributions merged into the project. In many cases this involved rather simple documentation fixes, but there have been contributions that add or fix actual functionality as well. The course staff wanted us students to use Slack for all communication. This way students are able to help each other efficiently and the staff was able to keep track of the group process. Read more about this course and its setup in the blogpost by Arie van Deursen, which can be found on his website:

The reports of our findings we have to bundle within a chapter. From all teams (all delivering their chapters) a given number will be selected, bundled and published as the DESOSA 2016 book. An example of the previous edition of the course can be found at We are currently reviewing chapters written by other teams, while we are still trying to contribute to the youtube-dl project. Examples of (our) contributions are #8785,  #8682 and #8680. For our chapter we have created several architectural views, for example the one below, depicting the contextual view (stakeholders and other related tools/companies).

Context View

Figure 2 – Context View of youtube-dl.

ING 24H-Coding

Together with some friends I will participate in the ING 24H-Coding event in Amsterdam. Basically all kinds of teams participate here in building prototypes for their ideas and pitch them to ING. This years theme was about building a omnichannel software solution. Within that context we are free to think of anything we like. The event will be held in the Heineken Music Hall, where food and drinks are included, we only have to bring our laptops. There are not that many student teams participating so I’m really curious about the outcome of our team/idea.

Exam period and Firebase

First of all; happy new year! I hope you’ve enjoyed the holidays. Back to reality, sadly, exams have arrived. As mentioned before I have one exam, Compiler Construction. This is a tough course, but if you keep up with the lectures and assignments it should be doable.

I’ve mentioned my project for Functional Programming before but I’ll give a bit more detailed information. For this course (which is a MOOC basically) the participants at TU Delft have to carry out a project. Basically the assignment was a one-liner describing what has to be done. Our project description was;

Build an alternative for firebase from scratch (inspiration: search quora for alternatives)

You might know about Firebase. Firebase is a library which allows for live syncing to a database. The database in the backend is implemented using JSON, and through the Firebase library you can connect to this database. Each connected client will receive every change live (ignoring network latencies etc. of course). We were free to choose any language as long as we would be able to show where we applied the functional way of programming. We chose to use Scala, most of the members in my team already have experience with Scala, and it’s very similar to Java. From there the challenge started; none of us had too much experience with building such a system from scratch. So we started looking into available tools etc. We knew we had to find a way to push changes from the server/database to all connected clients. Quickly we found Akka Actors, but connecting this to a JavaScript library was a second challenge. After a lot of trial-and-error we came across ScalaJS. Basically ScalaJS allows you to write Scala code and compile it to JavaScript. We were able to implement a WebSocket connection and using that connection we can set up the communication between our clients and servers. Meanwhile other members of the team had worked on processing client requests on the server, the security of the connection, and so on. There’s really a lot to think about.

Project overview

Figure: Project overview. We had to implement the parts in red, gray shows possible extensions of the project (like a native iOS library).

There are some really useful things I’ve learned during this project;

  • If you use some external libraries: use a dependency manager, it’ll save you so much time in the end.
  • Automate whatever you can, whenever it is useful. If you run a compile command every time you save your code for instance, you might want to set up a watcher that automatically compiles the code on change.
  • Use a decent editor, get to know it; it saves you a lot of time to know to the shortcuts and to actually use them. For instance I use editors by JetBrains (IntelliJ, PhpStorm) where you can quickly navigate through your entire project using the double-Shift shortcut amongst various other features.
  • Talk before you start implementing; we worked separately in the beginning. When we had to connect our different components it turned out that basically all of us used a slightly different version of the JSON format (used for internal processing). We had to adapt to make it fit again. If we had agreed on this upfront this wouldn’t have been an issue (necessarily).

Of course IntelliJ is not the only editor, alternatives like Eclipse, Sublime Text or any other editor can be just as fine, it’s all a matter of preference and setting up the editor to your preferences.

IntelliJ editor with the project

Figure: IntelliJ editor with the project. In the lower section the terminal is visible (integrated in the editor), it is keeping track of file changes while I code. In the upper section you see the Quick Switcher in IntelliJ (double-Shift). It searches all partial filenames/paths and contents for whatever you are looking for.

You learn best by doing, projects like this one prove this over and over. 🙂

First courses

Hi all,

The year is passing by fast already. The exams of the second quarter are coming near, and the winter break is in sight too. In my previous blog I’ve promised to tell a bit more about the courses I’m following. At this moment I’m still following Compiler Construction, Web Science and Engineering and Functional Programming. I was not able to complete Advanced Algorithms. This course, known to be tough, was too much together with my courses. I’m not sure whether I’ll retry next year or whether I’ll replace it entirely with another algorithmic course.

Advanced Algorithms

Within this course you learn to design and analyse algorithms for (un)solvable problems. Sometimes a problem might not be solvable in every case, but it might be sufficient to solve only a part of the problem to get to your answer. On the other hand, sometimes an estimation algorithm is good enough for it’s application. Reasoning and proving is one of the things we look at in this course. During the homework we had to prove several theorems. The homework is though, but with (or without) support from the Teaching Assistants (TAs) you should be able to complete them. Next to homework there are some practical assignments. These assignments can be done in pairs, and challenge you to apply the knowledge obtained form the lectures and homework. The assignments and homework can be really time-consuming, make sure to plan properly, otherwise you won’t be able to keep up (like me unfortunately).

Compiler Construction

Compiler construction is a course taught by Guido Wachsmuth. In this course we learn to specify a language in a declarative way. This course uses Spoofax for that purpose, a Language Engineering Workbench developed at TU Delft. As soon as we have specified our languages (we used the MiniJava language for our lab assignments) we learned how to construct a compiler from our definition. Assignments were to be submitted through Github, where they would be graded automatically. Wachsmuth encourages students to start on the assignments early, which is why we could get some early feedback. Handing in our assignments early resulted in a sneak-peak on the resulting grade and some details about tests that were still failing.

Web Science and Engineering

Web Science and Engineering is a course on several aspects of the Web like hypertext, semantic web, social web, etc. We had lectures about several topics, including some guest-lectures by PhD students or others about their research. The course also includes a homework part where we have to dive into the literature. I underestimated the amount of literature research that was required for this course, but I like it nonetheless. In the end we have to write a paper about a subject of our choosing (within the field of WSE of course), this also determines our final grade together with the grade for the homework assignments.

Functional Programming

Functional Programming is actually a MOOC (Massive Open Online Course) taught by Erik Meijer. Within this course we learn the basic principles of functional programming. The course uses Haskell to show us several aspects. For students taking the course for credits there is an accompanying project. Within this project we have to implement a system using the functional style we learned in the MOOC. In my case I’ve to build a alternative to FireBase written in Scala. These projects are performed in groups of 2 to 4 students. For Computer Science students the courses starts at a really low level, but as the course progresses they level of the assignments is gradually increasing.

Lichtjesavond in the City centre of Delft

Lichtjesavond in the City centre of Delft

Lichtjesavond 2015

Of course, next to studying there’s a lot to do in Delft. Last week there was the annual ‘Lichtjesavond’. During this night the entire city centre is lit in pretty colors, and the Christmas tree on the Market is being lit in front of a massive crowd of people. There a lot of stands where you can buy random thingies or something to drink/eat. If you haven’t been there yet, I can really recommend it to see it at least once.

For now it’s time to wrap up, I still have some assignments that I need to finish. See ya!

© 2011 TU Delft