-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/README.md b/README.md
index 73bd2bb..d3db1cc 100644
--- a/README.md
+++ b/README.md
@@ -5,5 +5,10 @@ An easily configurable portfolio.
> [Click for live version](https://schmelczer.dev)
## Configuration
-- The actual content is in [portfolio.ts](src/portfolio.ts).
-- The assets referenced by that file should be located in [src/static](src/static).
+- The actual content is in [portfolio.ts](src/portfolio.ts)
+- The assets referenced by that file should be located in [src/static](src/static)
+
+## Build
+1. `npm install`
+2. `npm run build`
+3. You can find the results [here](dist)
diff --git a/package.json b/package.json
index c7ebb43..eb7956d 100644
--- a/package.json
+++ b/package.json
@@ -33,30 +33,30 @@
],
"homepage": "https://github.com/schmelczerandras/timeline#readme",
"devDependencies": {
- "autoprefixer": "^9.7.3",
+ "autoprefixer": "^9.7.6",
"clean-webpack-plugin": "^3.0.0",
- "css-loader": "^3.4.0",
- "file-loader": "^5.0.2",
+ "css-loader": "^3.5.2",
+ "cssnano": "latest",
+ "file-loader": "^5.1.0",
"html-webpack-inline-source-plugin": "0.0.10",
"html-webpack-plugin": "^3.2.0",
"image-webpack-loader": "^6.0.0",
"mini-css-extract-plugin": "^0.9.0",
- "sass": "^1.24.2",
"optimize-css-assets-webpack-plugin": "^5.0.3",
"postcss-loader": "^3.0.0",
"prettier": "^1.19.1",
"resolve-url-loader": "^3.1.1",
"responsive-loader": "^1.2.0",
- "sass-loader": "^8.0.0",
+ "sass": "^1.26.3",
+ "sass-loader": "^8.0.2",
"sharp": "^0.23.4",
- "style-loader": "^1.0.2",
+ "style-loader": "^1.1.4",
"svg-url-loader": "^3.0.3",
- "terser-webpack-plugin": "^2.3.1",
- "ts-loader": "^6.2.1",
- "typescript": "^3.7.3",
- "webpack": "^4.41.4",
- "webpack-cli": "^3.3.10",
- "webpack-dev-server": "^3.10.1",
- "cssnano": "latest"
+ "terser-webpack-plugin": "^2.3.5",
+ "ts-loader": "^6.2.2",
+ "typescript": "^3.8.3",
+ "webpack": "^4.43.0",
+ "webpack-cli": "^3.3.11",
+ "webpack-dev-server": "^3.10.3"
}
}
diff --git a/src/portfolio.ts b/src/portfolio.ts
index 7e02c8f..b13aa99 100644
--- a/src/portfolio.ts
+++ b/src/portfolio.ts
@@ -4,9 +4,14 @@ import { Image } from './framework/primitives/implementations/image';
import { Video } from './framework/primitives/implementations/video';
import { Anchor } from './framework/primitives/implementations/anchor';
+import { last } from './framework/helper/last';
+
import me from './static/media/me.jpg';
import forexMP4 from './static/media/forex.mp4';
import forexWEBM from './static/media/forex.webm';
+import adAstraMP4 from './static/media/ad_astra_720.mp4';
+import adAstraWEBM from './static/media/ad_astra_720.webm';
+import ad_astra_index from './static/media/ad_astra.jpg';
import myNotes from './static/media/my-notes.png';
import processSimulator from './static/media/process-simulator.jpg';
import processSimulatorInput from './static/media/process-simulator-input.jpg';
@@ -19,7 +24,6 @@ import cvHungarian from './static/cv/schmelczer_andras_cv.pdf';
import cvEnglish from './static/cv/andras_schmelczer_cv.pdf';
import ledMP4 from './static/media/led.mp4';
import ledWEBM from './static/media/led.webm';
-import { last } from './framework/helper/last';
export const portfolio: Portfolio = {
header: {
@@ -41,6 +45,43 @@ export const portfolio: Portfolio = {
showMoreText: `Show details`,
showLessText: `Show less`,
elements: [
+ {
+ title: `Video game on an ATtiny85`,
+ date: `2020 Spring`,
+ figure: new Video(
+ last(ad_astra_index.images).path,
+ adAstraMP4,
+ adAstraWEBM,
+ `controls playsinline preload="none"`
+ ),
+ description: new Text(
+ `A simple game engine with a sample game set in space. The greatest challenge was to overcome
+ the very limited resources of the hardware, this was also the most rewarding part.`
+ ),
+ more: [
+ new Text(
+ `For reducing complexity while maintaining performance a balance had to be found between object-oriented
+ and structural programming. For example, a simple prototype-based inheritance is used for the game objects.
+ An optimized SIMD utilizing low level driver is used for drawing on the display.
+ I think the code base is quite readable and at the same time the
+ maximum frame times are between 15ms and 20ms at 8MHz.`
+ ),
+ new Text(
+ `As for the hardware, it is rather simple. Aside from the ATtiny85V, a D096-12864-SPI7 display is used for
+ output and a TSOP4838 for input. The circuit runs on 3.3V, so a regulator is also needed. It uses a current
+ of 8mA to 11mA on full brightness and around 1.5mA on standby mode.`
+ ),
+ new Text(
+ `There is also fault-tolerant persistent data storage using the built-in EEPROM.
+ For creating sprites (which are also stored in EEPROM) I made a tool to convert PNG-s into C code.
+ This can also be found on GitHub as well as the entire project.`
+ ),
+ new Anchor(
+ `https://github.com/schmelczerandras/ad_astra`,
+ `View it on GitHub`
+ ),
+ ],
+ },
{
title: `Predicting foreign exchange rates`,
date: `2019 Autumn`,
@@ -247,7 +288,7 @@ export const portfolio: Portfolio = {
],
email: `andras@schmelczer.dev`,
lastEditText: `Last modified on `,
- lastEdit: new Date(2020, 0, 29), // months are 0 indexed
+ lastEdit: new Date(2020, 3, 21), // months are 0 indexed
gitHub: new Anchor(
`https://github.com/schmelczerandras/timeline`,
`Find this on GitHub`
diff --git a/src/static/media/ad_astra.jpg b/src/static/media/ad_astra.jpg
new file mode 100644
index 0000000..1cb52dd
Binary files /dev/null and b/src/static/media/ad_astra.jpg differ
diff --git a/src/static/media/ad_astra_720.mp4 b/src/static/media/ad_astra_720.mp4
new file mode 100644
index 0000000..dbc810c
Binary files /dev/null and b/src/static/media/ad_astra_720.mp4 differ
diff --git a/src/static/media/ad_astra_720.webm b/src/static/media/ad_astra_720.webm
new file mode 100644
index 0000000..8a9bb47
Binary files /dev/null and b/src/static/media/ad_astra_720.webm differ
diff --git a/src/static/media/me-2.jpg b/src/static/media/me-2.jpg
deleted file mode 100644
index 16e1ab4..0000000
Binary files a/src/static/media/me-2.jpg and /dev/null differ