\u003C/a>\u003C/figure>\n\n\n\n\u003Cfigure class=\"wp-block-image size-large\">\u003Ca href=\"https://wp.t-shaped.nl/wp-content/uploads/2024/08/Simulator-Screenshot-iPhone-SE-3rd-generation-2024-07-20-at-12.43.10.png\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"576\" height=\"1024\" data-id=\"1211\" src=\"https://wp.t-shaped.nl/wp-content/uploads/2024/08/Simulator-Screenshot-iPhone-SE-3rd-generation-2024-07-20-at-12.43.10-576x1024.png\" alt=\"\" class=\"wp-image-1211\" srcset=\"https://wp.t-shaped.nl/wp-content/uploads/2024/08/Simulator-Screenshot-iPhone-SE-3rd-generation-2024-07-20-at-12.43.10-576x1024.png 576w, https://wp.t-shaped.nl/wp-content/uploads/2024/08/Simulator-Screenshot-iPhone-SE-3rd-generation-2024-07-20-at-12.43.10-169x300.png 169w, https://wp.t-shaped.nl/wp-content/uploads/2024/08/Simulator-Screenshot-iPhone-SE-3rd-generation-2024-07-20-at-12.43.10-768x1365.png 768w, https://wp.t-shaped.nl/wp-content/uploads/2024/08/Simulator-Screenshot-iPhone-SE-3rd-generation-2024-07-20-at-12.43.10-864x1536.png 864w, https://wp.t-shaped.nl/wp-content/uploads/2024/08/Simulator-Screenshot-iPhone-SE-3rd-generation-2024-07-20-at-12.43.10-1152x2048.png 1152w, https://wp.t-shaped.nl/wp-content/uploads/2024/08/Simulator-Screenshot-iPhone-SE-3rd-generation-2024-07-20-at-12.43.10-113x200.png 113w, https://wp.t-shaped.nl/wp-content/uploads/2024/08/Simulator-Screenshot-iPhone-SE-3rd-generation-2024-07-20-at-12.43.10.png 1242w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" />\u003C/a>\u003C/figure>\n\u003C/figure>\n",false,1207,{"intro":88},"Synctrain is an iOS app for securely synchronizing files between your devices. It improves on existing apps by providing a smooth native user interface, selective synchronization of files, and on-demand streaming.",{"id":90,"date_gmt":91,"slug":92,"title":93,"content":95,"featured_media":97,"acf":98},1058,"2023-02-19T13:03:13","running-ai-models-in-the-browser-using-wonnx",{"rendered":94},"Running AI models in the browser using WONNX",{"rendered":96,"protected":85},"\n\u003Cp>Often the best way to understand something is to try and (re)build it yourself. Over the past year, I have become fascinated with machine learning models. Playing around with things like \u003Ca href=\"https://chat.openai.com\">ChatGPT\u003C/a> and Stable Diffusion is a lot of fun and a good way to get a feel for the ‘level of intelligence’ actually provided by these AIs, I like to take a peek under the hood to see what drives this magic. \u003C/p>\n\n\n\n\u003Cp>One way to do this is to download one of the smaller cousins of the models mentioned earlier (e.g. something like \u003Ca href=\"https://huggingface.co/bert-base-uncased\">BERT\u003C/a>) from a platform such as HuggingFace. Loading the model file in Netron yields a large ‘map’ of the model itself. Each node in the graph represents a mathematical operation – typically involving \u003Cem>tensors\u003C/em> (large multi-dimensional matrices). The model can be brought to life by ‘simply’ executing each node in order, forwarding one node’s output to the next one. \u003C/p>\n\n\n\n\u003Cp>The example below depicts a (small part of a) BERT-based model for ‘question answering’ – I was interested in these kinds of models specifically because hey, answering questions is actually my day job, and a model like this could be very helpful. The way a model like this works is you feed it with a text and a question (which you need to translate to ‘tokens’ – essentially numbers referring to words) and the model gives you the piece of text it thinks is most likely to contain the answer to the question. \u003C/p>\n\n\n\n\u003Cfigure class=\"wp-block-image size-full\">\u003Ca href=\"https://t-shaped.nl/wp-content/uploads/2023/02/netron.png\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"976\" height=\"752\" src=\"https://t-shaped.nl/wp-content/uploads/2023/02/netron.png\" alt=\"\" class=\"wp-image-1059\" srcset=\"https://wp.t-shaped.nl/wp-content/uploads/2023/02/netron.png 976w, https://wp.t-shaped.nl/wp-content/uploads/2023/02/netron-300x231.png 300w, https://wp.t-shaped.nl/wp-content/uploads/2023/02/netron-768x592.png 768w, https://wp.t-shaped.nl/wp-content/uploads/2023/02/netron-260x200.png 260w\" sizes=\"auto, (max-width: 976px) 100vw, 976px\" />\u003C/a>\u003C/figure>\n\n\n\n\u003Cp>It is \u003Ca href=\"https://huggingface.co/docs/transformers/main/en/model_doc/bert#transformers.TFBertForQuestionAnswering.call.example\">fairly easy\u003C/a> to load and run a model like this from Python. This however did not really satisfy my curiosity – I wanted to be able to actually see under the hood. Also, at the time, the Python environments these models typically require did not support my hardware (an old MacBook Pro at the time). \u003C/p>\n\n\n\n\u003Cp>As I was also experimenting with \u003Ca href=\"https://t-shaped.nl/2019/is-rust-my-new-favourite-language\" data-type=\"post\" data-id=\"966\">Rust\u003C/a> at the time, I soon came across the \u003Ca href=\"https://github.com/gfx-rs/wgpu\">wgpu\u003C/a> library. It basically allows one to run computations on a GPU in a platform-independent way. Additionally, because both Rust and wgpu support compilation to WASM, you can actually do this from a web page thanks to the new \u003Ca href=\"https://en.wikipedia.org/wiki/WebGPU\">WebGPU\u003C/a> standard. As of today, WebGPU is still not enabled by default in the major browsers, but we might see this happening in Q2 of 2023. \u003C/p>\n\n\n\n\u003Cp>All of this made me ponder the idea of actually making an attempt at implementing the machine learning operations as GPU operations to try and run a model completely by myself, on the GPU. This of course is a very complicated undertaking. First, you’d need to obtain the models in a format readable from Rust (I stumbled upon ONNX as an interchange format, which is rather baroque but quite easy to read and work with from Rust). Second, you’d need to figure out exactly how to format a model’s inputs and outputs (this seems easy until you start to read up on tokenization schemes). I quickly decided that the latter was ‘out of scope’ (the \u003Ca href=\"https://docs.rs/tokenizers/latest/tokenizers/\">tokenizers\u003C/a> crate is also really easy to use). Finally, and perhaps the most important challenge, is the fact that there are simply a lot of ‘operators’ required in order to run the more interesting models. The below table shows the set of operators used in the BERT QA-model mentioned earlier, all of which would have to be implemented (and implemented \u003Cem>exactly right\u003C/em>) for the model to work.\u003C/p>\n\n\n\n\u003Cfigure class=\"wp-block-image size-full\">\u003Ca href=\"https://t-shaped.nl/wp-content/uploads/2023/02/image.png\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"564\" height=\"753\" src=\"https://t-shaped.nl/wp-content/uploads/2023/02/image.png\" alt=\"\" class=\"wp-image-1060\" srcset=\"https://wp.t-shaped.nl/wp-content/uploads/2023/02/image.png 564w, https://wp.t-shaped.nl/wp-content/uploads/2023/02/image-225x300.png 225w, https://wp.t-shaped.nl/wp-content/uploads/2023/02/image-150x200.png 150w\" sizes=\"auto, (max-width: 564px) 100vw, 564px\" />\u003C/a>\u003Cfigcaption class=\"wp-element-caption\">Luckily I was not the first one to come up with the idea of writing a GPU-based execution engine for (ONNX) neural networks – I quickly found haixoanTao’s \u003Ca href=\"https://github.com/webonnx/wonnx\">‘wonnx’ (Web-ONNX) project on GitHub\u003C/a>. This project already implemented enough basic operations to be able to run several image recognition networks such as SqueezeNet and ResNet-50 (which make for fascinating demos when run inside a browser!). As a first step I implemented a few operators not yet present in wonnx. Next followed some larger undertakings – I added a full ‘intermediate representation’ of the model graph to enable a few optimizations. I also added a CLI utility to more quickly be able to do smaller things, as well as a ‘preprocessing’ library (as to not bloat the main library with all the image and text processing stuff). \u003Cbr />\u003Cbr />Many sunday afternoons later, the library is in fact capable of answering questions! The kick you get the moment this worked for the first time is something many programmers will probably recognize.\u003C/figcaption>\u003C/figure>\n\n\n\n\u003Cfigure class=\"wp-block-image size-full\">\u003Ca href=\"https://t-shaped.nl/wp-content/uploads/2023/02/image-1.png\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"734\" height=\"510\" src=\"https://t-shaped.nl/wp-content/uploads/2023/02/image-1.png\" alt=\"\" class=\"wp-image-1061\" srcset=\"https://wp.t-shaped.nl/wp-content/uploads/2023/02/image-1.png 734w, https://wp.t-shaped.nl/wp-content/uploads/2023/02/image-1-300x208.png 300w, https://wp.t-shaped.nl/wp-content/uploads/2023/02/image-1-288x200.png 288w\" sizes=\"auto, (max-width: 734px) 100vw, 734px\" />\u003C/a>\u003C/figure>\n\n\n\n\u003Cp>Afterwards I added many other things, such as a simple UI (based on \u003Ca href=\"https://dioxuslabs.com\">Dioxus\u003C/a>) and a thing called ‘shape inference’ that will allow many more models to be used in a more flexible way. My next goal would be to support multilingual and more complicated models, such as MDeBERTa. My time is limited however…\u003C/p>\n\n\n\n\u003Cfigure class=\"wp-block-image size-full\">\u003Ca href=\"https://t-shaped.nl/wp-content/uploads/2023/02/image-2.png\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"912\" height=\"740\" src=\"https://t-shaped.nl/wp-content/uploads/2023/02/image-2.png\" alt=\"\" class=\"wp-image-1062\" srcset=\"https://wp.t-shaped.nl/wp-content/uploads/2023/02/image-2.png 912w, https://wp.t-shaped.nl/wp-content/uploads/2023/02/image-2-300x243.png 300w, https://wp.t-shaped.nl/wp-content/uploads/2023/02/image-2-768x623.png 768w, https://wp.t-shaped.nl/wp-content/uploads/2023/02/image-2-246x200.png 246w\" sizes=\"auto, (max-width: 912px) 100vw, 912px\" />\u003C/a>\u003C/figure>\n\n\n\n\u003Cp>So, this project became a little bigger than anticipated – I have apparently edited more than 38k lines of code by now and am now the #1 contributor to the project. The experience of working with random strangers on the internet on a piece of software is quite fascinating and rewarding however. I learnt a lot in the process, including many quirks of GPU’s, WebGPU and async rust. As in many cases, it’s not the destination, but the journey that really matters.\u003C/p>\n\n\n\n\u003Cfigure class=\"wp-block-image size-full\">\u003Ca href=\"https://t-shaped.nl/wp-content/uploads/2023/02/image-3.png\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"462\" height=\"288\" src=\"https://t-shaped.nl/wp-content/uploads/2023/02/image-3.png\" alt=\"\" class=\"wp-image-1063\" srcset=\"https://wp.t-shaped.nl/wp-content/uploads/2023/02/image-3.png 462w, https://wp.t-shaped.nl/wp-content/uploads/2023/02/image-3-300x187.png 300w, https://wp.t-shaped.nl/wp-content/uploads/2023/02/image-3-321x200.png 321w\" sizes=\"auto, (max-width: 462px) 100vw, 462px\" />\u003C/a>\u003C/figure>\n\n\n\n\u003Cp>\u003Cstrong>Link: \u003Ca href=\"https://github.com/webonnx/wonnx\">WebONNX: WONNX on GitHub\u003C/a>\u003C/strong>\u003C/p>\n\n\n\n\u003Cp>Try it yourself: \u003Ca href=\"https://dl.pixelspark.nl/wonnx/\">\u003Cstrong>(faster than..) real-time image classification with SqueezeNet in the browser\u003C/strong>\u003C/a> (use Chrome Canary and enable WebGPU through configuration flags)\u003C/p>\n",1230,{"intro":99},"WONNX is a cross-platform software component that efficiently performs machine learning inference using models in ONNX format on GPUs using WebGPU, written in Rust.",{"id":101,"date_gmt":102,"slug":103,"title":104,"content":106,"featured_media":108,"acf":109},1047,"2022-07-17T19:39:35","making-advanced-bi-queries-childs-play-with-puzzle-pieces",{"rendered":105},"Advanced BI queries using puzzle pieces",{"rendered":107,"protected":85},"\n\u003Cp>Back in 2011 our research consultancy team had collected quite a lot of interesting data for one of our clients. While previously we would put all of it in a report, print it out, and call it a day, one of my colleagues at the time proposed to make the results into an interactive dashboard instead. The client agreed – now we only needed to build a dashboard!\u003C/p>\n\n\n\n\u003Cp>Now remember this was back in 2011 – the same year Internet Explorer 9 and Power BI were released. Big data was not a thing yet and most of our data collection and analysis relied on manual data wrangling in Excel. This meant that we could probably create the dashboard and prepare all the analysis in Excel just fine, but how were we going to put this on the web? We decided to contract a web development agency to develop a content management system of sorts – with special support for displaying charts based on CSVs and Highcharts. \u003C/p>\n\n\n\n\u003Cp>At the time, our client was very impressed – the charts \u003Cem>animated\u003C/em>! Still the maintenance of such a dashboard required a lot of handwork. Meanwhile we managed to highly structure the underlying data in what became to look more and more like an actual database. Couldn’t we just upload this database to some database system and use that directly? \u003C/p>\n\n\n\n\u003Cp>In 2012 I came on board fresh out of college. I had quite some knowledge of web development – HTML, PHP, MySQL and a sprinkle of JavaScript had provided me with quite a nice side job while I was still studying. At the time I was always very excited to try new technologies – NoSQL! MongoDB! – and so I quickly noticed \u003Ca href=\"https://en.wikipedia.org/wiki/Blockly\">Google Blockly\u003C/a>, which was released in May that year. As a side project I began to hack on the dashboarding software by the end of 2012 and tried to integrate the library. \u003C/p>\n\n\n\n\u003Cp>The first prototype was quickly up and running and proved to be quite interesting. For the first time, my Excel-savvy colleagues could interact with a database without having to learn the language to do so. Instead, they could drag and drop colorful puzzle pieces (which, initially at least, did require some explaining to fellow colleagues whose eyes would fall on screens showing what at first appears like a child’s game). \u003C/p>\n\n\n\n\u003Cp>The system quickly converged thanks to user feedback to what it essentially still looks like today – a demo is below. \u003C/p>\n\n\n\n\u003Cfigure class=\"wp-block-image size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"813\" height=\"591\" src=\"https://pixelspark.nl/wp-content/uploads/2022/07/demo1.gif\" alt=\"\" class=\"wp-image-1048\"/>\u003C/figure>\n\n\n\n\u003Cp>How does this work? In the blockly editor, our system injects various puzzle pieces that correspond to operations in SQL: select, order, group, et cetera. Additionally users could add new puzzle pieces representing data sources, such as a plain old CSV file or (a little later) tables in MySQL. These puzzle pieces could then be combined in a way that actually quite closely resembles \u003Ca href=\"https://en.wikipedia.org/wiki/Relational_algebra\">relational algebra\u003C/a> (the puzzle pieces being functions that ‘project’, ‘select’, ‘rename’, ‘join’ et cetera, taking other puzzle pieces as their inputs). \u003C/p>\n\n\n\n\u003Cp>When a chart is saved, we obtain the puzzle lay-out (as XML) as well as a JSON representation of the query. This JSON more or less looks like this:\u003C/p>\n\n\n\n\u003Cpre class=\"wp-block-code\">\u003Ccode>{\n \"op\": \"order\",\n \"by\": \"amount\",\n \"ascending\": true,\n \"from\": {\n \"op\": \"select\",\n \"from\": { \"op\": \"file\", \"id\": 1337 },\n \"field\": \"name\",\n \"value\": { \"op\": \"const\", \"value\": \"Tommy\" }\n }\n}\u003C/code>\u003C/pre>\n\n\n\n\u003Cp>Our system then takes this JSON and executes it. At first this was implemented as recursive function calls, with functions (in PHP) mapping to the different ‘ops’, e.g.:\u003C/p>\n\n\n\n\u003Cpre class=\"wp-block-code\">\u003Ccode>order(select(file(1337), \"name\", value(\"Tommy\")), \"amount\", true)\u003C/code>\u003C/pre>\n\n\n\n\u003Cp>The data would be passed around as plain PHP arrays-of-objects. PHP was however not very fast and at some point we had to resort to \u003Ca href=\"https://github.com/facebook/hhvm\">Facebook’s ‘Hip-Hop VM’ or HHVM\u003C/a> to make this usable – fun times!). \u003C/p>\n\n\n\n\u003Cp>When I wanted to add support for MySQL tables, I quickly realized that downloading all data into PHP arrays was not going to be an ideal solution. Instead, I tried to convert the ‘ops’ to SQL code so I would only have to download the actual \u003Cem>result\u003C/em> of the query. Additionally my queries would make use of the database’s indexes which of course is good for performance. The main issue is that of course, my colleagues didn’t care about the difference between MySQL and the good old CSV files, and the system needed to support mixing the two. \u003C/p>\n\n\n\n\u003Cp>Eventually I ended up with a fairly sophisticated execution engine, that could execute parts of a ‘puzzle’ in SQL. Then, when a CSV entered the mix, it would (based on heuristics) decide to either download the intermediate result from the database (and continue in-memory) or \u003Cem>upload\u003C/em> the in-memory result to a temporary table in MySQL and continue in SQL (this actually proved to be the quickest way to execute e.g. joins between an SQL table and a CSV, which commonly happened). This also allowed to implemented several ops that were difficult in SQL (e.g. pivot tables – these were done partially in SQL and partially in-memory). \u003C/p>\n\n\n\n\u003Cp>Finally, interactivity was added. The ‘puzzles’ could be partially executed, up to a point where user input was required. Then, the user would be asked to select values, and the puzzle would be re-executed, now with the required parameters. \u003C/p>\n\n\n\n\u003Cp>Of course my colleagues managed to find the limits of this system each and every time. Below is a picture of (the top part of) an example of a ginormous puzzle, of which there are many in the system still today. \u003C/p>\n\n\n\n\u003Cp>Interestingly, many colleagues who started out with the puzzle pieces moved on to learn SQL afterwards. As time progressed, this knowledge became more widespread, and we actually hired data scientists and other people who already knew SQL. Still, to this day, the now infamous ‘puzzle pieces’ prove an invaluable tool in our projects.\u003C/p>\n\n\n\u003Cdiv class=\"wp-block-image\">\n\u003Cfigure class=\"aligncenter size-large is-resized\">\u003Ca href=\"https://pixelspark.nl/wp-content/uploads/2022/07/image.png\">\u003Cimg loading=\"lazy\" decoding=\"async\" src=\"https://pixelspark.nl/wp-content/uploads/2022/07/image-1024x912.png\" alt=\"\" class=\"wp-image-1049\" width=\"379\" height=\"337\" srcset=\"https://wp.t-shaped.nl/wp-content/uploads/2022/07/image-1024x912.png 1024w, https://wp.t-shaped.nl/wp-content/uploads/2022/07/image-300x267.png 300w, https://wp.t-shaped.nl/wp-content/uploads/2022/07/image-768x684.png 768w, https://wp.t-shaped.nl/wp-content/uploads/2022/07/image-1536x1368.png 1536w, https://wp.t-shaped.nl/wp-content/uploads/2022/07/image-225x200.png 225w, https://wp.t-shaped.nl/wp-content/uploads/2022/07/image.png 1696w\" sizes=\"auto, (max-width: 379px) 100vw, 379px\" />\u003C/a>\u003C/figure>\u003C/div>",1220,{"intro":110},"",{"id":112,"date_gmt":113,"slug":114,"title":115,"content":117,"featured_media":119,"acf":120},976,"2020-12-08T20:41:59","essentiality-testing-of-telecommunications-patents",{"rendered":116},"Essentiality testing of telecommunications patents",{"rendered":118,"protected":85},"\n\u003Cp>In this study, we investigated the technical and institutional feasibility of a system that ensures better essentiality scrutiny for Standard Essential Patents (SEPs).\u003C/p>\n\n\n\n\u003Cp>We first studied the state of the art on essentiality assessment in literature, court cases involving larger scale essentiality assessments, essentiality assessment in patent pools, and the Japanese Hantei for Essentiality advisory opinion. A patent landscape analysis of SDO declared patents was performed to assess their use as input to essentiality assessment mechanisms. Technical feasibility was assessed in a pilot experiment, in which a variety of assessors evaluated patents for their actual essentiality. Institutional feasibility was, among other means, assessed via a stakeholder workshop.\u003C/p>\n\n\n\n\u003Cp>Given (1) the observed interest in transparent data on essentiality of patents for standards, from implementers, patent owners and courts alike, (2) the potential benefits of such data for these parties and for the system as a whole, and (3) our finding that a system for generating such data seems both technically and institutionally feasible, we recommend policy makers to pursue the development and implementation of a system for essentiality assessments.\u003C/p>\n\n\n\n\u003Cp>This study was performed by a consortium led by \u003Ca href=\"https://dialogic.nl/en\">Dialogic\u003C/a>, \u003Ca href=\"https://www.tue.nl\">Eindhoven University of Technology\u003C/a> (Prof. \u003Ca href=\"https://home.tm.tue.nl/rbekkers\">Rudi Bekkers\u003C/a>), \u003Ca href=\"https://www.tum.de\">Technical University of Munich\u003C/a> (Prof. Joachim Henkel) and commissioned by the European Commission’s Joint Research Centre (JRC). As the operational project lead I was responsible for day-to-day project management and delivery, and was heavily involved in the patent pool study.\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-file\">\u003Ca id=\"wp-block-file--media-713a71d3-91ae-4d5c-b938-fa5985277cf5\" href=\"https://pixelspark.nl/wp-content/uploads/2020/12/jrc119894_online.pdf\">Pilot Study for Essentiality Assessment of Standard Essential Patents \u003C/a>\u003Ca href=\"https://pixelspark.nl/wp-content/uploads/2020/12/jrc119894_online.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-713a71d3-91ae-4d5c-b938-fa5985277cf5\">Download\u003C/a>\u003C/div>\n\n\n\n\u003Cp>\u003C/p>\n\n\n\n\u003Cp>\u003C/p>\n",1222,{"intro":110},{"id":122,"date_gmt":123,"slug":124,"title":125,"content":127,"featured_media":129,"acf":130},841,"2019-04-17T07:30:11","the-im-possibilities-of-artificial-intelligence-in-education",{"rendered":126},"The (im) possibilities of artificial intelligence in education",{"rendered":128,"protected":85},"\n\u003Cp>Commissioned by the Ministry of Education, Culture and Science, \u003Ca href=\"https://dialogic.nl/en\">Dialogic \u003C/a>investigated the impact that the use of artificial intelligence can have on education in the Netherlands. The aim of the research is to gain insight into how artificial intelligence is currently being used in education (and how it will be used) (\u003Cem>what is the potential?\u003C/em>), And what legal aspects play a role in that use (\u003Cem>what is allowed?\u003C/em>). The research must also expose the five biggest risks and opportunities associated with ths use (\u003Cem>what do we want?\u003C/em>). \u003C/p>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">\u003Cstrong>The possibilities: what are relevant applications of AI in education?\u003C/strong> \u003C/h2>\n\n\n\n\u003Cp>It is not easy to provide a single definition of AI, specifically when it comes to applications in education. Our research shows that especially when it comes to applications that (1) automate cognitive tasks and (2) use large amounts of data and data-driven methods, there are interesting, unresolved issues. \u003C/p>\n\n\n\n\u003Cfigure class=\"wp-block-image\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"2306\" height=\"1244\" src=\"https://pixelspark.nl/wp-content/uploads/2019/04/aihistory.png\" alt=\"\" class=\"wp-image-842\"/>\u003C/figure>\n\n\n\n\u003Cp>In the educational process teachers make decisions according to their own insight regarding (among other things) the method used, the teaching material, the way in which a student is approached, et cetera. Finally, teachers also make some formal decisions: what is the grade, and can a child move on to the next class? AIs can support teachers in various ways with these decisions. We distinguish four scenarios as most likely for the next 5-8 years: (1) an AI as a teaching assistant, (2) AI for learning analytics, (3) AI for personalization of education, and (4) AI for testing.\u003C/p>\n\n\n\n\u003Cblockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n\u003Cp>Can AI completely replace a teacher? Not in the near future.\u003C/p>\n\u003C/blockquote>\n\n\n\n\u003Cp>At the point AI technology has become so smart that it can replace the teacher, it could in theory greatly improve education: after all, every student can be offered ‘tailor-made lessons’. This is however unlikely to happen any time soon: the expectation is that such artificial general intelligence (whereby an AI matches the level of intelligence of a person) will take at least a few more decades. However, this does not change the fact that less intelligent AI, which is already available today, can support the teacher in such a way that he or she can spend more time per student or work more efficiently.\u003C/p>\n\n\n\n\u003Ch2 class=\"wp-block-heading\"> \u003Cstrong>What is allowed: what are the legal bottlenecks when applying AI in education?\u003C/strong> \u003C/h2>\n\n\n\n\u003Cp> The application of AI in education is affected by various generic regulations in the Netherlands. Some of these schemes are of supplementary law, which means that they can easily and often be deviated from for each contract, such as, for example, the Copyright Act and Database Law. \u003C/p>\n\n\n\n\u003Cfigure class=\"wp-block-image\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"1944\" height=\"494\" src=\"https://pixelspark.nl/wp-content/uploads/2019/04/ailaw.png\" alt=\"\" class=\"wp-image-843\"/>\u003Cfigcaption class=\"wp-element-caption\"> Schematic overview of legally relevant events when applying AI in education (Dutch)\u003C/figcaption>\u003C/figure>\n\n\n\n\u003Cp>The flexibility of the private law regulations mentioned is much less found in the public law regulations, such as the rules on public access and the re-use of administrative and governmental information. The applicability of these schemes can prevent developers from entering into partnerships with institutions if this would mean that their knowledge would end up on the street. Additional contracts on intellectual rights can offer (partly) a helping hand here. Moreover, care must be taken to ensure that cooperation with market parties does not ultimately lead to the creation of dominant positions that may conflict with competition rules.\u003C/p>\n\n\n\n\u003Cp>Decisions taken by institutions are of course fully governed by the general rules of administrative law, including the general principles of good administration. Applying these principles to AI applications can be tricky because they inherently clash with the black box that AI creates. Nevertheless, this does not seem to be an unsolvable problem.\u003C/p>\n\n\n\n\u003Cp>The rules on the protection of personal data (Dutch AVG) may be a bottleneck. The nature of the personal data in education and the nature of AI go very poorly together (legally), and it seems very difficult to imagine that large-scale AI is permitted without legislation. This of course changes completely if the data to be used is no longer personal data.\u003C/p>\n\n\n\n\u003Cp>If something goes wrong, there do not seem to be any significant problems in applying the rules on liability. This regime is very open and flexible so that those affected by AI applications do not have to be at risk.\u003C/p>\n\n\n\n\u003Cp>The education-specific sectoral rules in themselves leave a great deal of freedom, and do not seem to contain any strict prohibitions. However, action must always be taken within the spirit and letter of the principles of educational law. In addition, the interests of the child will always have to be a central and ethical benchmark and the question will always be whether this is the case with AI.\u003C/p>\n\n\n\n\u003Cp>In a more practical sense, sectoral regulations do present an obstacle: there is no strong arrangement for top-down steering on the content of education, apart from the fact that this is very sensitive. The movement from below is also a tricky one: initiatives may arise at individual institutions, but the polder model and the diversity of different regulations at the level of the institution are likely to stand in the way of a large-scale movement. This apart from the possible aversion of teachers (and institutions), whose interests and position can directly affect the application of AI.\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-file\">\u003Ca id=\"wp-block-file--media-5497d6cc-298c-463b-a264-df858cbf7e67\" href=\"https://pixelspark.nl/wp-content/uploads/2019/04/Dialogic-De-onmogelijkheden-van-kunstmatige-intelligentie-in-het-onderwijs.pdf\">\u003Cstrong>Download: \u003C/strong>Dialogic – De (on)mogelijkheden van kunstmatige intelligentie in het onderwijs\u003C/a>\u003Ca href=\"https://pixelspark.nl/wp-content/uploads/2019/04/Dialogic-De-onmogelijkheden-van-kunstmatige-intelligentie-in-het-onderwijs.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-5497d6cc-298c-463b-a264-df858cbf7e67\">Download\u003C/a>\u003C/div>\n\n\n\n\u003Cp>\u003C/p>\n",1229,{"intro":110},{"id":132,"date_gmt":133,"slug":134,"title":135,"content":137,"featured_media":139,"acf":140},789,"2018-08-27T19:38:21","the-escape-box-an-escape-room-in-a-box",{"rendered":136},"The Escape Box: an escape room in a box",{"rendered":138,"protected":85},"\u003Cp>Over the course of 2018, I co-developed the \u003Cem>escape box – \u003C/em>essentially, an escape room-like game, but in a box. Like an escape room, the box builds on a compelling plot and requires 3-4 players to cooperate in order to reach an end goal – the revealing of the final secret held by the box.\u003C/p>\n\u003Cp>An escape box is also highly constrained its ability to immerse players in a storyline. We view our escape box as only a single piece of a larger puzzle. Even before starting to deal with the box’s puzzles, players are lured into the story, going as far as to become virtual member of a very mysterious agency.\u003C/p>\n\u003Cp>On the game side, we built on experience playing various escape rooms over the years. That is, we minimized anything suspectible to brute force, and attempt to structure the puzzles in such a way that players are guided from one puzzle to the next, yet don’t feel like they are. There is a quite clever hint system in the box as well, which neatly fits in with the story line.\u003C/p>\n\u003Cp>The biggest challenge in designing a compelling, enjoyable game is to get the difficulty just right. We tested with groups of varying sized and compositions to find common issues, get a feel for the attention span and perceived difficulty of the various puzzles, and tweaked the storyline and game mechanics accordingly.\u003C/p>\n\n\n\u003Cfigure class=\"wp-block-gallery columns-3 is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\u003Cul class=\"blocks-gallery-grid\">\u003Cli class=\"blocks-gallery-item\">\u003Cfigure>\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"620\" src=\"https://pixelspark.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-start-uitleg-1024x620.jpg\" alt=\"\" data-id=\"954\" data-full-url=\"https://pixelspark.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-start-uitleg.jpg\" data-link=\"https://pixelspark.nl/2018/the-escape-box-an-escape-room-in-a-box/slide-escape-kist-spelers-start-uitleg\" class=\"wp-image-954\" srcset=\"https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-start-uitleg-1024x620.jpg 1024w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-start-uitleg-300x182.jpg 300w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-start-uitleg-768x465.jpg 768w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-start-uitleg-1536x929.jpg 1536w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-start-uitleg-1440x871.jpg 1440w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-start-uitleg.jpg 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" />\u003C/figure>\u003C/li>\u003Cli class=\"blocks-gallery-item\">\u003Cfigure>\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"626\" src=\"https://pixelspark.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-start-lezen-1024x626.jpg\" alt=\"\" data-id=\"955\" data-full-url=\"https://pixelspark.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-start-lezen.jpg\" data-link=\"https://pixelspark.nl/2018/the-escape-box-an-escape-room-in-a-box/slide-escape-kist-spelers-start-lezen\" class=\"wp-image-955\" srcset=\"https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-start-lezen-1024x626.jpg 1024w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-start-lezen-300x183.jpg 300w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-start-lezen-768x470.jpg 768w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-start-lezen-1536x939.jpg 1536w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-start-lezen-1440x881.jpg 1440w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-start-lezen.jpg 1601w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" />\u003C/figure>\u003C/li>\u003Cli class=\"blocks-gallery-item\">\u003Cfigure>\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"620\" src=\"https://pixelspark.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-bezig-open-1024x620.jpg\" alt=\"\" data-id=\"956\" data-full-url=\"https://pixelspark.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-bezig-open.jpg\" data-link=\"https://pixelspark.nl/2018/the-escape-box-an-escape-room-in-a-box/slide-escape-kist-spelers-bezig-open\" class=\"wp-image-956\" srcset=\"https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-bezig-open-1024x620.jpg 1024w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-bezig-open-300x182.jpg 300w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-bezig-open-768x465.jpg 768w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-bezig-open-1536x929.jpg 1536w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-bezig-open-1440x871.jpg 1440w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-bezig-open.jpg 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" />\u003C/figure>\u003C/li>\u003Cli class=\"blocks-gallery-item\">\u003Cfigure>\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"620\" src=\"https://pixelspark.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-bezig-lezen-1024x620.jpg\" alt=\"\" data-id=\"957\" data-full-url=\"https://pixelspark.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-bezig-lezen.jpg\" data-link=\"https://pixelspark.nl/2018/the-escape-box-an-escape-room-in-a-box/slide-escape-kist-spelers-bezig-lezen-2\" class=\"wp-image-957\" srcset=\"https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-bezig-lezen-1024x620.jpg 1024w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-bezig-lezen-300x182.jpg 300w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-bezig-lezen-768x465.jpg 768w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-bezig-lezen-1536x929.jpg 1536w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-bezig-lezen-1440x871.jpg 1440w, https://wp.t-shaped.nl/wp-content/uploads/2019/12/slide-escape-kist-spelers-bezig-lezen.jpg 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" />\u003C/figure>\u003C/li>\u003C/ul>\u003C/figure>\n\n\n\n\u003Ch3 class=\"wp-block-heading\">How it’s made\u003C/h3>\n\n\n\n\u003Cp>Compared to an escape room, an escape box is very constrained in terms of what is technically feasible. We wanted to have a strong storyline, and found that it was an absolute requirement to keep the integrity of the box as much as possible (e.g. players should really be convinced this is an actual box from the 1940’s era), but that of course limits our technical options: we can’t ask players to plug into a wall socket before playing, for instance (not to think of what should happen when players unplug the thing). Nevertheless we required a way for the box to power on after being shipped (not having to open it). In the end we opted to run the box off a very beefy 5V battery pack. The system is controlled by a Raspberry Pi 3+ (a Pi Zero is considered for a future version as the processing power of the Pi 3 is a bit overkill, but that would require special audio circuitry – also, the Pi 3 is capable of acting as a Wi-Fi access point, which is really helpful when debugging).\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-image\">\u003Cfigure class=\"aligncenter\">\u003Ca href=\"https://pixelspark.nl/wp-content/uploads/2018/08/Dochterbord-v1.png\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"1484\" height=\"1013\" src=\"https://pixelspark.nl/wp-content/uploads/2018/08/Dochterbord-v1.png\" alt=\"\" class=\"wp-image-792\"/>\u003C/a>\u003C/figure>\u003C/div>\n\n\n\n\u003Cp>The box’s games are primarily controlled by MCP23017 GPIO extender chips, hanging off a single I2C bus. The MCP23017 is very versatile, each chip providing up to 16 configurable in-or-output ports at 5V, 20mA (with a cap on the total per-chip current). Two WS2801 RGB LED light strips power various visual elements as well, and are controlled over two SPI buses. Finally there are several servos, whose signals are driven directly from the RPi using soft PWM. While we are now using hand-etched PCBs in the current version, future revisions will use custom designed, professionally etched ones. The software is built on NodeJS and uses a reactive structure, which allows for easy componentization while allowing for intricate interworking between puzzles and mechanisms.\u003C/p>\n\n\n\n\u003Cp>Read more (Dutch): \u003Ca href=\"https://escape-kist.nl\">www.escape-kist.nl\u003C/a>. \u003C/p>\n",952,{"intro":110},{"id":142,"date_gmt":143,"slug":144,"title":145,"content":147,"featured_media":149,"acf":150},87,"2011-11-11T10:55:12","improving-statistical-patent-valuation-indicators-using-citation-data",{"rendered":146},"Improving statistical patent valuation indicators using citation data",{"rendered":148,"protected":85},"\u003Cp>Businesses increasingly rely on patent valuation in order to evaluate their own position regarding intellectual property, as well as their competitor’s. Being able to statistically valuate patents is regarded by many professionals in the field as the ‘holy grail’ of patent landscaping. Statistical patent valuation is also of high interest to academia, who primarily use the results to better understand the patenting system.\u003C/p>\n\u003Cp>\u003Ca href=\"http://pixelspark.nl/wp-content/uploads/2015/04/patvalmod.png\">\u003Cimg loading=\"lazy\" decoding=\"async\" class=\" size-large wp-image-89 aligncenter\" src=\"http://pixelspark.nl/wp-content/uploads/2015/04/patvalmod-1024x573.png\" alt=\"Patent valuation model\" width=\"900\" height=\"504\" srcset=\"https://wp.t-shaped.nl/wp-content/uploads/2015/04/patvalmod-1024x573.png 1024w, https://wp.t-shaped.nl/wp-content/uploads/2015/04/patvalmod-300x168.png 300w, https://wp.t-shaped.nl/wp-content/uploads/2015/04/patvalmod-1200x671.png 1200w, https://wp.t-shaped.nl/wp-content/uploads/2015/04/patvalmod-400x224.png 400w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" />\u003C/a>\u003C/p>\n\u003Cp>In this project I studied and found new ways for improving statistical models for patent valuation. Several new value indicators based on patent citation data were proposed and tested against an estimate of patent value provided by inventors. One of the results shows that distinguishing between different types of citations helps to improve indicators. Other significant effects related to the technological fields that are cited or being cited from were also found.\u003C/p>\n\u003Cp>The indicators proposed in this study can readily be applied in a business context to improve the predictive power of patent valuation models. Furthermore, the indicators shed new light on how value is derived from patents.\u003C/p>\n\u003Cp>\u003Cstrong>Download presentation: \u003Ca href=\"http://pixelspark.nl/wp-content/uploads/2015/04/Thesis-defense.pptx\">Improving statistical patent valuation indicators using citation data\u003C/a>\u003C/strong>\u003C/p>\n\u003Cp>\u003Cstrong>Download report: \u003Ca href=\"http://repository.tue.nl/724577\">Improving statistical patent valuation indicators using citation data (MSc dissertation)\u003C/a>\u003C/strong>\u003C/p>\n",935,{"intro":110},{"items":152,"total":163},[153,158],{"id":154,"title":155,"url":157,"parent":11},42,{"rendered":156},"LinkedIn","http://nl.linkedin.com/in/tommyvdv",{"id":159,"title":160,"url":162,"parent":11},125,{"rendered":161},"GitHub","https://github.com/pixelspark?tab=repositories","2",["Reactive",165],{},["Set"],["ShallowReactive",168],{"xUVe4H0_U8L3iDn4YqkO6jyn_MTbktj5vGvAMXcgKh0":-1,"v2hUGkfG5N0yVGvbGpdeg4rVu_6Z5KJ8a0s9iH1UM5A":-1,"dxtXwrqyk80pV1G-1UPrCbJ9tBiuL15XmPUMK5ul2wI":-1,"2vsUrlSarZD5Mm3coY_I4EIEkRna46XQnQdUs7gQ1o8":-1,"mSYj8UUUf74u6MnDgH-MjbFKTXA5Q57iYqth0r02KT4":169},["NuxtError",170],{"message":171,"statusCode":172},"[GET] \"null\": \u003Cno response> Cannot read properties of null (reading 'toString')",500,true,"/2019/wi-fi-led-strip-controller"]