diff --git a/src/data/projects/declared.ts b/src/data/projects/declared.ts index 2b1839e..9054e89 100644 --- a/src/data/projects/declared.ts +++ b/src/data/projects/declared.ts @@ -13,7 +13,7 @@ export const declared: TimelineElementParameters = { more: [ 'The scene is set in space. Two large teams have to conquer tiny planets, while they can also shoot at the other team. Points are given based on the number of planets controlled, and the first team which reaches a predefined score wins.', - "The architecture consists of multiple servers and clients (communicating over WebSockets); Firebase is used to reach consensus on the active servers. The project uses Typescript compiled into a website and a Node application. There is a shared library which contains the game logic. This way, both the client and server can link to this library, allowing to use of the same code for calculating the actual next state on the server and client-side-predicting it on the users' devices.", + "The architecture consists of multiple servers, each of which communicates with 16-32 clients over WebSockets; Firebase is used to reach consensus on the set of active servers. The project uses Typescript compiled into a website and a Node application. There is a shared library which contains the game logic. This way, both the client and server can link to this library, allowing to use of the same code for calculating the actual next state on the server and client-side-predicting it on the users' devices.", 'My favourite part of the project was handling the increasingly complex and heavy-weight game logic. To tackle the former, I decided to borrow inspiration from Smalltalk\'s message passing, including the concept of "messageNotUnderstood". To improve the performance, I implemented k-d trees to decrease spatial operations\' complexity.', diff --git a/src/data/projects/forex.ts b/src/data/projects/forex.ts index 1cebfb0..85e5bea 100644 --- a/src/data/projects/forex.ts +++ b/src/data/projects/forex.ts @@ -16,11 +16,13 @@ export const forex: TimelineElementParameters = { altText: videoPosterAltText, }), description: - 'From the animation, we can see that my implementation does a somewhat acceptable job at predicting (blue graph) the EUR/USD rates (green graph).', + "The animation shows that my implementation does a somewhat good job predicting (blue graph) the EUR/USD rates (green chart). Of course, I wouldn't trust it with my money.", more: [ - 'In a nutshell, the algorithm (written in Python using NumPy, SciPy, and Flask) predicts in the frequency domain. The steps are the following: smoothing the input values, differentiating, applying a short-time Fourier-transformation with overlapped (and Hanning-windowed) windows, extrapolating and then applying the inverse of these transformations to the resulting values.', + 'The algorithm is a fancy linear regression in the frequency domain. The steps are the following: smoothing the input values, differentiating, applying a short-time Fourier transformation with overlapped (and Hanning-windowed) windows, extrapolating and then applying the inverse of these transformations to the resulting values.', - 'Of course, there is still plenty of room for improvement, but even with this simple algorithm a mostly profitable trading strategy is viable. In my free time I may put more work into it.', + 'This prediction server, written in Python using NumPy, SciPy, and Flask, communicates with an MQL4 client responsible for handling the financial transaction based on this data.', + + "Of course, there is still plenty of room for improvement, but even with this simple algorithm, a sometimes profitable trading strategy is viable. Nonetheless, the project gave me an exciting insight into the world of trading algorithms, the field's complexity, and the fierce competition surrounding it.", ], links: [], }; diff --git a/src/data/projects/sdf2d.ts b/src/data/projects/sdf2d.ts index c000912..c2a0cbb 100644 --- a/src/data/projects/sdf2d.ts +++ b/src/data/projects/sdf2d.ts @@ -12,13 +12,13 @@ export const sdf2d: TimelineElementParameters = { 'A webpage showcasing the SDF-2D project.' ), description: - 'I created the SDF-2D library for efficiently rendering 2D scenes using ray tracing. My solution relies on signed distance fields (SDF-s), it supports both WebGL and WebGL2, and is an easily reusable and extensible NPM package.', + 'I created the SDF-2D library for efficiently rendering 2D scenes using ray tracing. My solution relies on signed distance fields (SDF-s) and a novel optimisation for 2D SDF rendering inspired by tiled renderers. It even works great on mobiles.', more: [ - 'A multitude of optimisations were needed to achieve real-time performance even on low-end mobile devices. These include deferred shading, tile-based rendering, and dynamic shader generation to eliminate unnecessary instructions.', + "A multitude of optimisations was needed to achieve compatibility and real-time performance, even on low-end devices. Next to tile-based rendering, these include deferred shading and dynamic shader generation to eliminate unnecessary instructions based on the device's capabilities.", - 'The result is a reusable library written in TypeScript with a — subjectively — simple and elegant API. For more information please check out the GitHub repository or the NPM package itself. Or simply enjoy the mesmerising demo scenes.', + 'The result is a reusable library written in TypeScript with a — subjectively — simple and elegant API. The library supports WebGL and WebGL2 and is an easily reusable and extensible NPM package.', - 'Creating this library package is also covered in my thesis (available above).', + 'Please check out the GitHub repository, the NPM package, or my thesis (linked above) for more information. Or simply enjoy the mesmerising demo scenes.', ], links: [ NPM('https://www.npmjs.com/package/sdf-2d'),