For my introduction piece, I have created a website: https://jfenn.me/englit0512-introduction/
Worth noting, I designed this to be viewed on a laptop/desktop, not a mobile or touchscreen device, so it will work a lot better if you have access to one. Also, it uses some 3D transform/scaling features that might vary between browsers - so if you see things that are misaligned or look a bit off, it is not intentional. I will say that I've tested this pretty thoroughly on my laptop and a couple friends have done the same, but I still cannot guarantee it will work for everyone. Web development is hard.
## Design
I wrote this website using [p5js](https://p5js.org), a JavaScript graphics library that allows developers to easily create small interactive programs like this one. It also uses some music by [Punch Deck](https://punchdeck.bandcamp.com), under the [Creative Commons Attribution 3.0 Unported](https://creativecommons.org/licenses/by/3.0/) license.
As this is an introduction piece, I started by thinking about my identity and the information I wanted to include. I write software, I play games, I do weird things with technology and enjoy finding little bugs and "features" in its many forms. A good way to connect all this together - and very topical, as it is what I see the most of these days - is the view of my desk.
I initially wanted to design this "game" as a point-and-click adventure that might take the player between different rooms and scenes, but I quickly realized that I did not have enough content to fill more than one. I have added some dynamic features to this scene, however - the game playing on my laptop adds some motion and makes the scene feel "alive," and the flickering light on my GPU serves a similar purpose.
Hovering over each "object" on my desk shows an animated tooltip - using a simple `sin(frameCount / PI)` function to create the motion - that briefly explains the purpose of the object and prompts the user to click on it (or makes it obvious that it *can* be clicked on).
text: "I've recently been setting up an external GPU for my laptop! The laptop runs Arch Linux - not Windows - and has a complicated window manager that makes things difficult. Sometimes when I run Zoom, the GPU decides it doesn't want to, and causes a kernel panic that locks out my entire PC!",
visible: true
};
if (_smokeLevel < 3) {
_smokeLevel++;
_message = {
text: "I've recently been setting up an external GPU for my laptop! The laptop runs Arch Linux - not Windows - and has a complicated window manager that makes things difficult. Sometimes when I run Zoom, the GPU decides it doesn't want to, and causes a kernel panic that locks out my entire PC!",
visible: true
};
} else {
_scene = 'error';
_message = {
text: "Look what you did! The GPU had too much smoke to render and it crashed! Now I gotta restart my laptop again...",