<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>The inevitable hybrid reality.</title>
<link rel="stylesheet" href="style.css" />
</head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3pro.css">
<body>
<h2>
The inevitable hybrid reality
</h2>
Nikki Loef / Thesis 2019
<div class="viewport">
<div class="scene3D-container">
<div class="scene3D">
<div>
<h3>Wat ik me afvraag?</h3>
<br>
<p>
In de normale wereld hebben we regels en afspraken om ervoor te zorgen dat onze maatschappij zo goede mogelijk kan functioneren. Ik vraag me af of dat ook nodig is voor de hybride wereld die steeds meer vorm krijgt in en om ons heen. Moeten we de hybride wereld met regels gaan sturen of is dat onmogelijk?
<br>
Om deze vraag te kunnen beantwoorden moeten een aantal stappen gemaakt worden.
<br>
Wat is een hybride wereld?
Wie heeft hier al een bijdrage in geleverd en kan me op weg helpen?
Hoe staat het met regelgeving en hybride?
<br>
Met al deze informatie probeer in een aantwoord te vinden op mijn vraag:
Moeten we de hybride wereld gaan sturen of is dat onmogelijk?
</p>
</div>
<div>
<h3>Wat is de hybride wereld</h3>
<br>
<p>
Als mens zijn wij vanaf onze geboorte al erg geïnteresseerd in alles wat er om ons heen te vinden is en als we ouder worden word deze drang als maar sterker. We zoeken allerlei vormen en manieren om beter en sneller te kunnen werken en denken. Bijvoorbeeld, als je een kunstenaar bent gebruik je een schetsblok of complexe software om je creatieve ideeën uit te denken. Dit zou je kunnen zien als een eerste aanzet tot een hybride wereld.
<br>
Leven we in een wereld die steeds meer hybride wordt, een wereld waarin de mens die hier in leeft ook gehybridiseerd is geraakt tussen het fysieke en het digitale bestaan?
<br>
Ik vraag me af?
Zijn de online en de offline mens steeds minder gescheiden maar met elkaar versmolten tot één bestaan? Hoewel de technologie niet letterlijk in ons lijf is geïntegreerd, zijn ons lichaam en onze geest dan al vervlochten tot een basisbestaan in het dagelijkse leven zoals we dat nu kennen? Wordt het daardoor steeds moeilijker om te duiden waar waar de digitale wereld ophoud en de fysieke wereld begint?
We praten immers al met elkaar via media, waar we ook zijn op de wereld. We kijken op buienradar terwijl we buiten ook naar de lucht kunnen kijken, de wind kunnen voelen. We voelen ons naakt zonder de smartphone. We vinden een pacemakere en gehoorapparatuur normaal en een toegangs chip kan al.
</p>
</div>
<div>
<h3>Wat is de hybride wereld</h3>
<br>
<p>
Hybride betekend een nauwe versmelding van ongelijksoortige zaken, bijvoorbeeld natuurlijke en kunstmatige delen (bio-hybride) of menselijke interacties met een technologisch systeem (socio-technisch). De versmelding kan zowel fysiek als non fysiek zijn. Ik denk dat we al lang leven in een hybride bestaan waarin een persoon niet meer los te definiëren is van de technologie om hem heen. De versmelding waarover ik spreek is geen fysieke niet tastbare versmelting, namelijk deze in het fundament van wie we zijn als mens. Ons brein en ons zijn is al lang niet meer zelfstandig en autonoom maar is vergroeid met de technologische vorm van bestaan en daarmee dus een.
<br>
In mijn essay onderzoek ik of de versmelting van het fysieke en digitale bestaan en al heeft plaatsgevonden en we door deze versmelting opnieuw zouden moeten kijken naar de waarde en daarmee de bescherming die we geven aan onze hybride realiteit.
Digitale mediums vervormen onze nieuwe realiteit en daarmee lijken ze een belangrijk onderdeel van ons lijf om deze realiteit te kunnen betreden.
<br>
Ik vraag me af?
Zijn de online en de offline mens steeds minder gescheiden maar met elkaar versmolten tot één bestaan? Hoewel de technologie niet letterlijk in ons lijf is geïntegreerd, zijn ons lichaam en onze geest dan al vervlochten tot een basisbestaan in het dagelijkse leven zoals we dat nu kennen? Wordt het daardoor steeds moeilijker om te duiden waar waar de digitale wereld ophoud en de fysieke wereld begint?
We praten immers al met elkaar via media, waar we ook zijn op de wereld. We kijken op buienradar terwijl we buiten ook naar de lucht kunnen kijken, de wind kunnen voelen. We voelen ons naakt zonder de smartphone. We vinden een pacemakere en gehoorapparatuur normaal en een toegangs chip kan al.
</p>
</div>
<div>Op zoek met Jay David Bolter</h3>
<br>
<p>
Jay David Bolter is de Wesley-voorzitter van New Media en een professor in de School voor Literatuur, Media en Communicatie aan het Georgia Institute of Technology. Zijn studiegebieden omvatten de evolutie van media, het gebruik van technologie in het onderwijs en de rol van computers in het schrijfproces.
<br>
Jay David Bolter publiceerde in 2006 een artikel genaamd “The Desire for Transparancy in an Era of Hybridity”. In dit artikel word beargumenteerd dat de technologische applicaties in ons leven steeds meer hybride worden. Voglens Bolter is het voornaamste verschil dat vroeger in de tijd van de desktop er een vaste plaats was om het internet te betreden. Namelijk van achter je bureau via het scherm van deze computer. Sinds de introductie van de smartphone is dit drastisch veranderd. Vandaag de dag is het internet mobiel en kan in onze zak overal met ons mee naar toe. Dit zorgt ervoor dat wij elk gewenst moment van de dag toegang hebben tot deze technologie. Daarbij is de basis functie van deze mobile telefoon ook niet meer enkel de communicatie tussen de bezitters van deze mobiele telefoon.
</p>
</div>
<!--Etc.-->
</div>
</div>
</div>
</div>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="index.js"></script>
</body>
</html>
@import url("https://fonts.googleapis.com/css?family=Merriweather|Revalia&display=swap&subset=latin-ext" rel="stylesheet");
:root {
--scenePerspective: 1;
--scenePerspectiveOriginX: 50;
--scenePerspectiveOriginY: 30;
--itemZ: 2;
--cameraSpeed: 150;
--cameraZ: 0;
--viewportHeight: 0;
}
.viewport {
height: calc(var(--viewportHeight) * 1px);
}
.viewport .scene3D-container {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
perspective: calc(var(--scenePerspective) * var(--cameraSpeed) * 1px);
perspective: calc(var(--scenePerspective) * var(--cameraSpeed) * 1px);
perspective-origin: calc(var(--scenePerspectiveOriginX) * 1%) calc(var(--scenePerspectiveOriginY) * 1%);
perspective-origin: calc(var(--scenePerspectiveOriginX) * 1%) calc(var(--scenePerspectiveOriginY) * 1%);
will-change: perspective-origin;
transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
.viewport .scene3D-container .scene3D {
position: absolute;
top: 0;
height: 100vh;
width: 100%;
transform-style: preserve-3d;
transform-style: preserve-3d;
transform: translateZ(calc(var(--cameraZ) * 1px));
transform: translateZ(calc(var(--cameraZ) * 1px));
will-change: transform;
}
.viewport .scene3D-container .scene3D > div {
position: absolute;
display: block;
width: 100%;
top: 40%;
}
@media only screen and (min-width: 600px) {
.viewport .scene3D-container .scene3D > div {
width: 45%;
}
}
.viewport .scene3D-container .scene3D > div:nth-child(2n) {
left: 0;
}
.viewport .scene3D-container .scene3D > div:nth-child(2n + 1) {
right: 0;
}
.viewport .scene3D-container .scene3D > div:nth-child(0) {
transform: translate3D(22%, 30%, calc(var(--itemZ) * var(--cameraSpeed) * 0 * -1px));
transform: translate3D(22%, 30%, calc(var(--itemZ) * var(--cameraSpeed) * 0 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(1) {
transform: translate3D(10%, -3%, calc(var(--itemZ) * var(--cameraSpeed) * 1 * -1px));
transform: translate3D(10%, -3%, calc(var(--itemZ) * var(--cameraSpeed) * 1 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(2) {
transform: translate3D(-15%, -5%, calc(var(--itemZ) * var(--cameraSpeed) * 2 * -1px));
transform: translate3D(-15%, -5%, calc(var(--itemZ) * var(--cameraSpeed) * 2 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(3) {
transform: translate3D(5%, -44%, calc(var(--itemZ) * var(--cameraSpeed) * 3 * -1px));
transform: translate3D(5%, -44%, calc(var(--itemZ) * var(--cameraSpeed) * 3 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(4) {
transform: translate3D(15%, -22%, calc(var(--itemZ) * var(--cameraSpeed) * 4 * -1px));
transform: translate3D(15%, -22%, calc(var(--itemZ) * var(--cameraSpeed) * 4 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(5) {
transform: translate3D(10%, -6%, calc(var(--itemZ) * var(--cameraSpeed) * 5 * -1px));
transform: translate3D(10%, -6%, calc(var(--itemZ) * var(--cameraSpeed) * 5 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(6) {
transform: translate3D(8%, -16%, calc(var(--itemZ) * var(--cameraSpeed) * 6 * -1px));
transform: translate3D(8%, -16%, calc(var(--itemZ) * var(--cameraSpeed) * 6 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(7) {
transform: translate3D(3%, 20%, calc(var(--itemZ) * var(--cameraSpeed) * 7 * -1px));
transform: translate3D(3%, 20%, calc(var(--itemZ) * var(--cameraSpeed) * 7 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(8) {
transform: translate3D(10%, 34%, calc(var(--itemZ) * var(--cameraSpeed) * 8 * -1px));
transform: translate3D(10%, 34%, calc(var(--itemZ) * var(--cameraSpeed) * 8 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(9) {
transform: translate3D(-13%, 21%, calc(var(--itemZ) * var(--cameraSpeed) * 9 * -1px));
transform: translate3D(-13%, 21%, calc(var(--itemZ) * var(--cameraSpeed) * 9 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(10) {
transform: translate3D(-3%, 47%, calc(var(--itemZ) * var(--cameraSpeed) * 10 * -1px));
transform: translate3D(-3%, 47%, calc(var(--itemZ) * var(--cameraSpeed) * 10 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(11) {
transform: translate3D(14%, -20%, calc(var(--itemZ) * var(--cameraSpeed) * 11 * -1px));
transform: translate3D(14%, -20%, calc(var(--itemZ) * var(--cameraSpeed) * 11 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(12) {
transform: translate3D(5%, 25%, calc(var(--itemZ) * var(--cameraSpeed) * 12 * -1px));
transform: translate3D(5%, 25%, calc(var(--itemZ) * var(--cameraSpeed) * 12 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(13) {
transform: translate3D(-2%, -20%, calc(var(--itemZ) * var(--cameraSpeed) * 13 * -1px));
transform: translate3D(-2%, -20%, calc(var(--itemZ) * var(--cameraSpeed) * 13 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(14) {
transform: translate3D(16%, 25%, calc(var(--itemZ) * var(--cameraSpeed) * 14 * -1px));
transform: translate3D(16%, 25%, calc(var(--itemZ) * var(--cameraSpeed) * 14 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(15) {
transform: translate3D(-6%, 37%, calc(var(--itemZ) * var(--cameraSpeed) * 15 * -1px));
transform: translate3D(-6%, 37%, calc(var(--itemZ) * var(--cameraSpeed) * 15 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(16) {
transform: translate3D(25%, -7%, calc(var(--itemZ) * var(--cameraSpeed) * 16 * -1px));
transform: translate3D(25%, -7%, calc(var(--itemZ) * var(--cameraSpeed) * 16 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(17) {
transform: translate3D(11%, -25%, calc(var(--itemZ) * var(--cameraSpeed) * 17 * -1px));
transform: translate3D(11%, -25%, calc(var(--itemZ) * var(--cameraSpeed) * 17 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(18) {
transform: translate3D(-7%, -37%, calc(var(--itemZ) * var(--cameraSpeed) * 18 * -1px));
transform: translate3D(-7%, -37%, calc(var(--itemZ) * var(--cameraSpeed) * 18 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(19) {
transform: translate3D(12%, 22%, calc(var(--itemZ) * var(--cameraSpeed) * 19 * -1px));
transform: translate3D(12%, 22%, calc(var(--itemZ) * var(--cameraSpeed) * 19 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(20) {
transform: translate3D(21%, 32%, calc(var(--itemZ) * var(--cameraSpeed) * 20 * -1px));
transform: translate3D(21%, 32%, calc(var(--itemZ) * var(--cameraSpeed) * 20 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(21) {
transform: translate3D(6%, 47%, calc(var(--itemZ) * var(--cameraSpeed) * 21 * -1px));
transform: translate3D(6%, 47%, calc(var(--itemZ) * var(--cameraSpeed) * 21 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(22) {
transform: translate3D(1%, -42%, calc(var(--itemZ) * var(--cameraSpeed) * 22 * -1px));
transform: translate3D(1%, -42%, calc(var(--itemZ) * var(--cameraSpeed) * 22 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(23) {
transform: translate3D(7%, -42%, calc(var(--itemZ) * var(--cameraSpeed) * 23 * -1px));
transform: translate3D(7%, -42%, calc(var(--itemZ) * var(--cameraSpeed) * 23 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(24) {
transform: translate3D(-13%, 49%, calc(var(--itemZ) * var(--cameraSpeed) * 24 * -1px));
transform: translate3D(-13%, 49%, calc(var(--itemZ) * var(--cameraSpeed) * 24 * -1px));
}
.viewport .scene3D-container .scene3D > div:nth-child(25) {
transform: translate3D(12%, 43%, calc(var(--itemZ) * var(--cameraSpeed) * 25 * -1px));
transform: translate3D(12%, 43%, calc(var(--itemZ) * var(--cameraSpeed) * 25 * -1px));
}
*,
*:before,
*:after {
box-sizing: border-box;
box-sizing: border-box;
}
body {
background-color: #272935;
color: white;
padding: 0;
margin: 0;
}
h1 {
font-family: "Playfair Display SC", serif;
font-size: 1.5rem;
color: white;
margin: 0;
position: fixed;
bottom: 1rem;
left: 1rem;
text-align: center;
}
h1 .logo {
display: block;
margin: 0 auto;
max-width: 150px;
}
.link {
color: white;
margin: 0;
position: fixed;
top: 1rem;
right: 1rem;
z-index: 1;
}
.scene3D > div {
padding: 2rem;
}
.scene3D > div h2 {
margin-top: 0;
font-family: "Playfair Display SC", serif;
font-size: 1.5rem;
}
.scene3D > div:nth-child(0) {
background-color: transparent;
}
.scene3D > div:nth-child(1) {
background-color: transparent;
}
.scene3D > div:nth-child(2) {
background-color: transparent;
}
.scene3D > div:nth-child(3) {
background-color: transparent;;
}
.scene3D > div:nth-child(4) {
background-color: transparent;;
}
.scene3D > div:nth-child(5) {
background-color: transparent;;
}
.scene3D > div:nth-child(6) {
background-color: transparent;;
}
.scene3D > div:nth-child(7) {
background-color: transparent;;
}
.scene3D > div:nth-child(8) {
background-color: transparent;;
}
.scene3D > div:nth-child(9) {
background-color: transparent;;
}
.scene3D > div:nth-child(10) {
background-color: transparent;;
}
.scene3D > div:nth-child(11) {
background-color: transparent;;
}
.scene3D > div:nth-child(12) {
background-color: transparent;;
}
.scene3D > div:nth-child(13) {
background-color: transparent;;
}
.scene3D > div:nth-child(14) {
background-color: transparent;;
}
.scene3D > div:nth-child(15) {
background-color: transparent;;
}
.scene3D > div:nth-child(16) {
background-color: transparent;;
}
.scene3D > div:nth-child(17) {
background-color: transparent;;
}
.scene3D > div:nth-child(18) {
background-color: transparent;;
}
.scene3D > div:nth-child(19) {
background-color: transparent;;
}
.scene3D > div:nth-child(20) {
background-color: transparent;;
}
.scene3D > div:nth-child(21) {
background-color: transparent;;
}
.scene3D > div:nth-child(22) {
background-color: transparent;;
}
.scene3D > div:nth-child(23) {
background-color: transparent;
}
.scene3D > div:nth-child(24) {
background-color: transparent;
}
.scene3D > div:nth-child(25) {
background-color: transparent;
}
let cards = [];
const perspectiveOrigin = {
x: parseFloat(
getComputedStyle(document.documentElement).getPropertyValue(
"--scenePerspectiveOriginX")),
y: parseFloat(
getComputedStyle(document.documentElement).getPropertyValue(
"--scenePerspectiveOriginY")),
maxGap: 10 };
document.addEventListener("DOMContentLoaded", function () {
cards = document.querySelectorAll(".scene3D > div");
window.addEventListener("scroll", moveCamera);
window.addEventListener("mousemove", moveCameraAngle);
setSceneHeight();
});
function moveCameraAngle(event) {
const xGap =
(event.clientX - window.innerWidth / 2) * 100 / (
window.innerWidth / 2) *
-1;
const yGap =
(event.clientY - window.innerHeight / 2) * 100 / (
window.innerHeight / 2) *
-1;
const newPerspectiveOriginX =
perspectiveOrigin.x + xGap * perspectiveOrigin.maxGap / 100;
const newPerspectiveOriginY =
perspectiveOrigin.y + yGap * perspectiveOrigin.maxGap / 100;
document.documentElement.style.setProperty(
"--scenePerspectiveOriginX",
newPerspectiveOriginX);
document.documentElement.style.setProperty(
"--scenePerspectiveOriginY",
newPerspectiveOriginY);
}
function moveCamera() {
document.documentElement.style.setProperty("--cameraZ", window.pageYOffset);
}
function setSceneHeight() {
const numberOfItems = cards.length; // Or number of items you have in `.scene3D`
const itemZ = parseFloat(
getComputedStyle(document.documentElement).getPropertyValue("--itemZ"));
const scenePerspective = parseFloat(
getComputedStyle(document.documentElement).getPropertyValue(
"--scenePerspective"));
const cameraSpeed = parseFloat(
getComputedStyle(document.documentElement).getPropertyValue("--cameraSpeed"));
const height =
window.innerHeight +
scenePerspective * cameraSpeed +
itemZ * cameraSpeed * numberOfItems;
// Update --viewportHeight value
document.documentElement.style.setProperty("--viewportHeight", height);
}
Output
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |