diff --git a/.idea/dictionaries/Schme.xml b/.idea/dictionaries/Schme.xml
index 7256af4..899d7ff 100644
--- a/.idea/dictionaries/Schme.xml
+++ b/.idea/dictionaries/Schme.xml
@@ -1,7 +1,9 @@
+ opacifyraleway
+ transparentize
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 47a5585..753b593 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -2,63 +2,43 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -67,6 +47,9 @@
+
+
+
+
+
-
-
@@ -139,7 +122,10 @@
-
+
+
+
+
diff --git a/src/content/en.ts b/src/content/en.ts
index fa9c46c..1eab10c 100644
--- a/src/content/en.ts
+++ b/src/content/en.ts
@@ -1,5 +1,6 @@
import { Portfolio } from "../model/portfolio";
-import me from "../static/media/me.jpg";
+
+import me from "../static/media/me-2.jpg";
import forex from "../static/media/forex.gif";
import myNotes from "../static/media/my-notes.jpg";
import processSimulator from "../static/media/process-simulator.jpg";
@@ -13,13 +14,14 @@ import ledVideo from "../static/media/led720.mp4";
export const portfolio: Portfolio = {
config: {
- showMore: "Show details",
- showLess: "Show less",
- aPictureOf: "a picture of",
- cvName: "Curriculum vitae"
+ showMore: `Show details`,
+ showLess: `Show less`,
+ aPictureOf: `a picture of`,
+ cvName: `Curriculum vitae`,
+ lastEdit: new Date(2019, 12, 22)
},
header: {
- name: "András Schmelczer",
+ name: `András Schmelczer`,
picture: me,
about: [
`I have always been fascinated by the engineering feats that surround us.
@@ -31,115 +33,134 @@ export const portfolio: Portfolio = {
},
timeline: [
{
- title: "Predicting foreign exchange rates",
- date: "2019 Autumn",
+ title: `Predicting foreign exchange rates`,
+ date: `2019 Autumn`,
picture: forex,
description: `From the animation we can see that my algorithm does a somewhat acceptable job at
predicting (blue graph) the EUR/USD rates (green graph).`,
more: [
- "In a nutshell, the algorithm (written with Python - NumPy, SciPy, Flask), extrapolates 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 extrapolated 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."
+ `In a nutshell, the algorithm (written with Python - NumPy, SciPy, Flask),
+ extrapolates 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 extrapolated 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.`
]
},
{
- date: "2019 November",
- title: "My Notes",
+ date: `2019 November`,
+ title: `My Notes`,
picture: myNotes,
- description: "A minimalist note organizer and editor powered by Markwon.",
+ description: `A minimalist note organizer and editor powered by Markwon.`,
more: [
{
- type: "a",
- href: "https://github.com/schmelczerandras/my-notes",
- text: "MyNotes on GitHub"
+ type: `a`,
+ href: `https://github.com/schmelczerandras/my-notes`,
+ text: `MyNotes on GitHub`
},
- "A basic android app for creating and filtering notes written in markdown.",
- "It was my homework for BME's Android and web development course. It was also my first experience with Android development."
+ `A basic android app for creating and filtering notes written in markdown.`,
+ `It was my homework for BME's Android and web development course.
+ It was also my first experience with Android development.`
]
},
{
- date: "2018 October - November",
- title: "Simulating the cooling system of a nuclear facility",
+ date: `2018 October - November`,
+ title: `Simulating the cooling system of a nuclear facility`,
picture: processSimulator,
- description:
- "Dynamically calculating the temperatures and flow velocities in a fluid based cooling system based on a simple model.",
+ description: `Dynamically calculating the temperatures and flow velocities
+ in a fluid based cooling system based on a simple model.`,
more: [
- "A simulated system can contain reactors (heaters / coolers), pumps, heat exchangers, drains sources, and of course, pipes.",
- "The algorithm takes advantages of graphs and matrices to get to a next time frame.",
- "Python is used for the backend along with Flask and NumPy. A REST API facilitates the communication between the layers. For drawing the frontend HTML5 canvas is utilized."
+ `A simulated system can contain reactors (heaters / coolers), pumps, heat exchangers,
+ drains sources, and of course, pipes.`,
+ `The algorithm takes advantages of graphs and matrices to get to a next time frame.`,
+ `Python is used for the backend along with Flask and NumPy. A REST API facilitates
+ the communication between the layers. For drawing the frontend HTML5 canvas is utilized.`
]
},
{
- date: "2018 October - November",
- title: "Graph editing application",
+ date: `2018 October - November`,
+ title: `Graph editing application`,
picture: processSimulatorInput,
- description:
- "An intuitive editor to create and edit input files for the nuclear facility simulator.",
+ description: `An intuitive editor to create and edit input files for the nuclear facility simulator.`,
more: [
- "Nodes can be moved with drag&drop gestures. Editing the parameters of elements can be done on the right panel.",
- "The UI is built with JavaFX. The output can be exported as JSON or directly uploaded to the simulation backend."
+ `Nodes can be moved with drag&drop gestures. Editing the parameters of elements
+ can be done on the right panel.`,
+ `The UI is built with JavaFX. The output can be exported as JSON or
+ directly uploaded to the simulation backend.`
]
},
{
- date: "2018 July-August",
- title: "City simulation",
+ date: `2018 July - August`,
+ title: `City simulation`,
picture: citySimulation,
- description:
- "Simulating a city where car crashes are more frequent than usual.",
+ description: `Simulating a city where car crashes are more frequent than usual.`,
more: [
- "Through a REST API the state of the traffic lights can be changed. The drivers follow the instructions of the traffic lights, so if a mistake is made, there will be collisions. There is also support for displaying tweets on a HUD.",
- "This was created for a Cybersecurity challenge. With the help of this program the contestants could instantly see the effect of their work.",
- "The most interesting aspect of this project was building it in a server-client architecture. The decisions of the agents is calculated server-side. The real challenge was broadcasting these decisions in a fault-tolerant way using minimal bandwidth.",
- "The program is made with Unity using C# as the scripting language. The models and animations were also made by me using Blender."
+ `Through a REST API the state of the traffic lights can be changed.
+ The drivers follow the instructions of the traffic lights, so if a mistake is made,
+ there will be collisions. There is also support for displaying tweets on a HUD.`,
+ `This was created for a Cybersecurity challenge. With the help of this program
+ the contestants could instantly see the effect of their work.`,
+ `The most interesting aspect of this project was building it in a server-client architecture.
+ The decisions of the agents is calculated server-side. The real challenge was broadcasting
+ these decisions in a fault-tolerant way using minimal bandwidth.`,
+ `The program is made with Unity using C# as the scripting language. The models and animations
+ were also made by me using Blender.`
]
},
{
- date: "2018 June",
- title: "Photo color grader",
+ date: `2018 June`,
+ title: `Photo color grader`,
picture: color,
- description:
- "An innovative (at least I thought so) color grader web application.",
+ description: `An innovative (at least I thought so) color grader web application.`,
more: [
- "The most noteworthy feature of this application is the color selector UI. This program is only intended as a proof-of-concept, I wanted to experiment with some ideas and this was the outcome. ",
- "You can select some colors and then apply transformations to the other colors as a function of their distance to the selected color.",
- "By clicking on a colored circle you can change its settings. New circles can be created by clicking in the large circle (and they can also be moved by drag&drop).",
- { type: "a", href: "color", text: "schmelczer.dev/color" }
+ `The most noteworthy feature of this application is the color selector UI.
+ This program is only intended as a proof-of-concept, I wanted to experiment with
+ some ideas and this was the outcome. `,
+ `You can select some colors and then apply transformations to the other colors as a
+ function of their distance to the selected color.`,
+ `By clicking on a colored circle you can change its settings.
+ New circles can be created by clicking in the large circle (and they can also be moved by drag&drop).`,
+ { type: `a`, href: `color`, text: `schmelczer.dev/color` }
]
},
{
- date: "2017 autumn",
+ date: `2017 autumn`,
- title: "Platform game",
+ title: `Platform game`,
picture: platform,
- description:
- "A 3D game written in C with the help of SDL 1.2 (I haven't heard of GPU programming at the time).",
+ description: `A 3D game written in C with the help of SDL 1.2 (I haven't heard of GPU programming at the time).`,
more: [
- "The maps are randomly generated and fully destroyable. The player is getting chased by flying enemies. Overall, I find it a really enjoyable game.",
- "I did this as a homework for my Basics of Programming course."
+ `The maps are randomly generated and fully destroyable.
+ The player is getting chased by flying enemies. Overall, I find it a really enjoyable game.`,
+ `I did this as a homework for my Basics of Programming course.`
]
},
{
- date: "2016 summer",
- title: "Photos",
+ date: `2016 summer`,
+ title: `Photos`,
picture: photos,
- description: "A simple web page where you can view my photos.",
- link: "schmelczer.dev/photos"
+ description: `A simple web page where you can view my photos.`,
+ link: `schmelczer.dev/photos`
},
{
- date: "2016 spring",
- title: "Lights synchronised to music",
+ date: `2016 spring`,
+ title: `Lights synchronised to music`,
picture: led,
- description:
- "A full stack application with a built-in music player which music controls the color of some RGB LED strips.",
+ description: `A full stack application with a built-in
+ music player which music controls the color of some RGB LED strips.`,
more: [
- "This was my first non-trivial project which got finished. Obviously, it is rather far from perfect, but I am still proud that I was able to build it on my own.",
- "The backend logic is written in Python the FFT is provided by NumPy. A quite simple frontend for accessing the music player and changing the settings also got built using vanilla web development technologies.",
- "Below is a video showing the system in work.",
- { type: "video", src: ledVideo }
+ `This was my first non-trivial project which got finished. Obviously,
+ it is rather far from perfect, but I am still proud that I was able to build it on my own.`,
+ `The backend logic is written in Python the FFT is provided by NumPy.
+ A quite simple frontend for accessing the music player and changing
+ the settings also got built using vanilla web development technologies.`,
+ `Below is a video showing the system in work.`,
+ { type: `video`, src: ledVideo }
]
}
],
footer: {
- email: "andras.schmelczer@schdesign.hu",
- cv: "/static/media/andras_schmelczer_cv.pdf"
+ email: `andras.schmelczer@schdesign.hu`,
+ cv: `/static/media/andras_schmelczer_cv.pdf`
}
};
diff --git a/src/framework/helper.ts b/src/framework/helper.ts
new file mode 100644
index 0000000..a9b26d8
--- /dev/null
+++ b/src/framework/helper.ts
@@ -0,0 +1,27 @@
+export const mixColorsToRGB = (
+ hexColorA: string,
+ hexColorB: string,
+ qA: number
+): string => {
+ const colorA = hexToRGB(hexColorA);
+ const colorB = hexToRGB(hexColorB);
+ const mixedColor: [number, number, number] = [
+ colorA[0] * qA + colorB[0] * (1 - qA),
+ colorA[1] * qA + colorB[1] * (1 - qA),
+ colorA[2] * qA + colorB[2] * (1 - qA)
+ ];
+
+ return RGBToHex(mixedColor);
+};
+
+const hexToRGB = (hex: string): [number, number, number] => {
+ const [r1, r2, g1, g2, b1, b2] = hex;
+ return [
+ Number.parseInt(r1 + r2, 16),
+ Number.parseInt(g1 + g2, 16),
+ Number.parseInt(b1 + b2, 16)
+ ];
+};
+
+const RGBToHex = (rgb: [number, number, number]): string =>
+ rgb.map(n => Math.round(n).toString(16)).join("");
diff --git a/src/framework/helpers.ts b/src/framework/helpers.ts
deleted file mode 100644
index 68af962..0000000
--- a/src/framework/helpers.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export const show = (e: HTMLElement) => (e.style.display = "block");
-export const hide = (e: HTMLElement) => (e.style.display = "none");
diff --git a/src/model/portfolio.ts b/src/model/portfolio.ts
index 571a8e4..65a2c5c 100644
--- a/src/model/portfolio.ts
+++ b/src/model/portfolio.ts
@@ -13,6 +13,7 @@ export interface Config {
showLess: string;
aPictureOf: string;
cvName: string;
+ lastEdit: Date;
}
export interface Header {
diff --git a/src/page/about/about.html.ts b/src/page/about/about.html.ts
new file mode 100644
index 0000000..9827889
--- /dev/null
+++ b/src/page/about/about.html.ts
@@ -0,0 +1,13 @@
+import { Header } from "../../model/portfolio";
+import { html } from "../../model/misc";
+
+export const generate = (
+ { name, picture, about }: Header,
+ aPictureOf: string
+): html => `
+
+
+
+