intaj version #3

Open
ramsey wants to merge 7 commits from intaj into master
  1. 1
      .gitignore
  2. 15
      README.md
  3. 19
      index.html
  4. 3246
      package-lock.json
  5. 27
      package.json
  6. 34
      pages/index.md
  7. 6
      pages/pacbi.md
  8. 45
      pages/work-index.md
  9. 34
      pages/work-page.md
  10. 8
      partials/about.hbs
  11. 32
      partials/about.html
  12. 0
      partials/contact.hbs
  13. 3
      partials/footer.hbs
  14. 3
      partials/footer.html
  15. 5
      partials/header.hbs
  16. 0
      partials/home.hbs
  17. 0
      partials/icons.hbs
  18. 76
      partials/member.hbs
  19. 153
      partials/members.html
  20. 0
      partials/menu.hbs
  21. 2
      partials/vimeo.hbs
  22. 11
      partials/work.hbs
  23. 21
      partials/work.html
  24. BIN
      public/android-chrome-192x192.png
  25. BIN
      public/android-chrome-512x512.png
  26. 10
      site/about/how.md
  27. 8
      site/about/who.md
  28. 0
      site/apple-touch-icon.png
  29. 0
      site/assets/about/emma-goldman-union-square-new-york-1916.jpg
  30. 0
      site/assets/about/union.png
  31. 0
      site/assets/home/emma.mp4
  32. 0
      site/assets/home/emma.png
  33. 0
      site/assets/members/andy.jpg
  34. 0
      site/assets/members/gwen.png
  35. 0
      site/assets/members/ivan.jpg
  36. 0
      site/assets/members/ramsey.png
  37. 0
      site/assets/work/star-catcher.mp4
  38. 0
      site/assets/work/swing-striker.mp4
  39. 0
      site/assets/work/wbyi.jpg
  40. 0
      site/assets/work/wbyi.mp4
  41. 0
      site/assets/work/wbyi2.jpg
  42. 0
      site/assets/work/wbyi3.jpg
  43. 0
      site/favicon-16x16.png
  44. 0
      site/favicon-32x32.png
  45. 0
      site/favicon.ico
  46. 12
      site/members/andy.md
  47. 10
      site/members/gwen.md
  48. 10
      site/members/ramsey.md
  49. 0
      site/site.webmanifest
  50. BIN
      site/style/chivo-mono/files/chivo-mono-latin-ext-wght-italic.woff2
  51. BIN
      site/style/chivo-mono/files/chivo-mono-latin-ext-wght-normal.woff2
  52. BIN
      site/style/chivo-mono/files/chivo-mono-latin-wght-italic.woff2
  53. BIN
      site/style/chivo-mono/files/chivo-mono-latin-wght-normal.woff2
  54. BIN
      site/style/chivo-mono/files/chivo-mono-vietnamese-wght-italic.woff2
  55. BIN
      site/style/chivo-mono/files/chivo-mono-vietnamese-wght-normal.woff2
  56. 29
      site/style/chivo-mono/wght.css
  57. BIN
      site/style/josefin-sans/files/josefin-sans-latin-ext-wght-italic.woff2
  58. BIN
      site/style/josefin-sans/files/josefin-sans-latin-ext-wght-normal.woff2
  59. BIN
      site/style/josefin-sans/files/josefin-sans-latin-wght-italic.woff2
  60. BIN
      site/style/josefin-sans/files/josefin-sans-latin-wght-normal.woff2
  61. BIN
      site/style/josefin-sans/files/josefin-sans-vietnamese-wght-italic.woff2
  62. BIN
      site/style/josefin-sans/files/josefin-sans-vietnamese-wght-normal.woff2
  63. 29
      site/style/josefin-sans/wght.css
  64. 217
      site/style/main.css
  65. 52
      site/style/reset.css
  66. 52
      site/work/star-catcher.md
  67. BIN
      site/work/star-catcher/DSC03268-harvestworks.jpg
  68. BIN
      site/work/star-catcher/DSC03327-harvestworks.png
  69. BIN
      site/work/star-catcher/DSC03380-crop.jpg
  70. BIN
      site/work/star-catcher/video.mp4
  71. 12
      site/work/swing-striker.md
  72. 17
      site/work/what-brings-you-in.md
  73. 23
      vite.config.js
  74. 61
      work/what-brings-you-in/index.html

1
.gitignore

@ -86,3 +86,4 @@ node_modules
dist/
video/
out/

15
README.md

@ -1,3 +1,16 @@
# emma.coop
the emma cooperative website
Website of the EMMA Technology Cooperative, the source code behind https://emma.coop/
## Usage
```
npm install
npm build # builds site into out/ directory
npm watch # rebuilds site on file change, serves site at localhost:8900
npm deploy # deploy contents of out/ to emma.coop
```
## intaj
This site is built with the [intaj static site generator](https://code.emma.coop/ramsey/intaj). Refer to it for more documentation.

19
index.html

@ -1,19 +0,0 @@
<!doctype html>
<html lang="en">
{{> header }}
<body>
{{> icons }}
{{> menu }}
{{> home }}
{{> about }}
{{> work }}
{{> members }}
{{> contact }}
{{> footer }}
</body>
</html>
<!-- {{ VERSION }} {{ DATE }} -->

3246
package-lock.json

File diff suppressed because it is too large

27
package.json

@ -1,21 +1,20 @@
{
"type": "module",
"name": "emma.coop",
"version": "1.0.0",
"description": "Website of the EMMA Technology Cooperative",
"main": "index.js",
"repository": {
"type": "git",
"url": "http://code.emma.coop/EMMA/emma.coop.git"
},
"scripts": {
"dev": "vite --host",
"build": "vite build",
"build": "intaj build",
"watch": "intaj watch",
"deploy": "rsync -achv dist/* root@emma.coop:/var/www/emma.coop --delete"
},
"dependencies": {
"@fontsource-variable/chivo-mono": "^5.0.19",
"@fontsource-variable/josefin-sans": "^5.0.19",
"git-describe": "^4.1.1",
"reset-css": "^5.0.2",
"vite": "^5.0.12"
},
"author": "The EMMA Technology Cooperative",
"license": "ACSL",
"devDependencies": {
"stylelint": "^16.2.1",
"stylelint-config-standard": "^36.0.0",
"vite-plugin-handlebars": "^2.0.0",
"vite-plugin-html": "^3.2.2"
"intaj": "^0.1.4"
}
}

34
pages/index.md

@ -0,0 +1,34 @@
---
query:
- filter: homepage || ["members", "about"].includes(path[0])
- sort: order || source
- with:
slug: path.last
- group: path[0]
- with:
date: new Date().toISOString()
route: index.html
---
<!doctype html>
<html lang="en">
{{> header}}
<body>
{{> icons}}
{{> menu}}
{{> home}}
{{#each about}}{{> about}}{{/each}}
{{#each work}}{{> work}}{{/each}}
{{#each members}}{{> member}}{{/each}}
{{> contact}}
{{> footer}}
</body>
<!-- built {{ date }} -->
</html>

6
pacbi.html → pages/pacbi.md

@ -1,7 +1,11 @@
---
route: pacbi/index.html
---
<!doctype html>
<html lang="en">
{{> header }}
{{> header}}
<body>
<section id="pacbi">

45
pages/work-index.md

@ -0,0 +1,45 @@
---
query:
- filter: path[0] == "work" && extension == ".md"
- sort:
by: year || order || source
reverse: true
- with:
slug: path.last
- collect: projects
route: /work/index.html
---
<!doctype html>
<html lang="en">
{{> header}}
<body>
<section class="work-header">
<h1>
<a href="/">emma</a> / work
</h1>
</section>
{{#each projects}}
<section class="work-index">
<h1><a href="./{{slug}}">
{{ title }}
{{#if year}} ({{client}}, {{year}}) {{/if}}
</a></h1>
<video lazy autoplay loop muted playsinline src="{{video}}"></video>
</section>
{{/each}}
{{> footer}}
</body>
<!-- built {{ date }} -->
</html>

34
pages/work-page.md

@ -0,0 +1,34 @@
---
query:
- filter: path[0] == "work"
- with:
slug: path.last
route: /work/{{slug}}/index.html
---
<!doctype html>
<html lang="en">
{{> header}}
<body>
<section class="work-header">
<h1>
<a href="/">emma</a> / <a href="/work">work</a> / {{title}}
{{#if year}} ({{ year }}) {{/if}}
</h1>
</section>
<main class="work-body">
{{{ content }}}
</main>
{{> footer}}
</body>
<!-- built {{ date }} -->
</html>

8
partials/about.hbs

@ -0,0 +1,8 @@
{{#if @first}}
<section id="about" class="about" style="--image: url({{ image }})">
{{else}}
<section class="about" style="--image: url({{ image }})">
{{/if}}
<h1> {{ heading }}</h1>
{{{ content }}}
</section>

32
partials/about.html

@ -1,32 +0,0 @@
<section id="about" class="about page-1">
<h1>Who We Are</h1>
<p>
EMMA is a New York City-based worker-owned creative technology
cooperative. We develop software for clients in the video game,
theater, public installation and media arts spaces among
others.</p>
<p>
We would love to help you bring your creative vision to life.
<a href="#contact">Get in touch with us</a> and let's figure something out.
</p>
</section>
<section class="about page-2">
<h1>How We Work</h1>
<p>
<a target="_blank" href="https://en.wikipedia.org/wiki/Worker_cooperative">Worker-owned</a>
means that EMMA is owned equally and managed democratically by
its current and future members&mdash;the people actually doing
the work.
</p>
<p>
Not laboring to enrich absentee shareholders means a healthier,
more sustainable work environment for us and a focus on
building great experiences for our clients.
</p>
<p>
We believe this model is the future of our industry and beyond.
We're committed to sharing our experience with others, so if you're
thinking of starting a coop of any kind we'd love to <a
href="#contact">talk to you</a>.
</p>
</section>

0
partials/contact.html → partials/contact.hbs

3
partials/footer.hbs

@ -0,0 +1,3 @@
<footer>
<span>© 2021&ndash;2025 The EMMA Technology Cooperative. EMMA is committed to <a href="/pacbi">PACBI</a>.</span>
</footer>

3
partials/footer.html

@ -1,3 +0,0 @@
<footer>
<span>© 2021&ndash;2024 The EMMA Technology Cooperative. EMMA is committed to <a href="/pacbi">PACBI</a>.</span>
</footer>

5
partials/header.html → partials/header.hbs

@ -8,5 +8,8 @@
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="stylesheet" type="text/css" href="/style.css" />
<link rel="stylesheet" type="text/css" href="/style/reset.css" />
<link rel="stylesheet" type="text/css" href="/style/chivo-mono/wght.css" />
<link rel="stylesheet" type="text/css" href="/style/josefin-sans/wght.css" />
<link rel="stylesheet" type="text/css" href="/style/main.css" />
</head>

0
partials/home.html → partials/home.hbs

0
partials/icons.html → partials/icons.hbs

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

76
partials/member.hbs

@ -0,0 +1,76 @@
{{#if @first}}
<section id="members" class="members">
{{else}}
<section class="members">
{{/if}}
<h1>{{ name }}</h1>
<img class="high-contrast" src="{{ image }}">
<p>
{{{ content }}}
</p>
<ul>
{{#if email}}
<li>
<a target="_blank" title="email" href="mailto:{{email}}">
<svg>
<use href="#icon-envelope" />
</svg>
</a>
</li>
{{/if}}
{{#if twitter}}
<li>
<a target="_blank" title="twitter" href="https://twitter.com/{{twitter}}">
<svg>
<use href="#icon-twitter" />
</svg>
</a>
</li>
{{/if}}
{{#if tumblr}}
<li>
<a target="_blank" title="tumblr" href="https://{{tumblr}}.tumblr.com/">
<svg>
<use href="#icon-tumblr" />
</svg>
</a>
</li>
{{/if}}
{{#if mastodon}}
<li>
<a target="_blank" title="mastodon" href="{{mastodon}}">
<svg>
<use href="#icon-mastodon" />
</svg>
</a>
</li>
{{/if}}
{{#if git}}
<li>
<a target="_blank" title="git" href="{{git}}">
<svg>
<use href="#icon-git" />
</svg>
</a>
</li>
{{/if}}
{{#if linkedin}}
<li>
<a target="_blank" title="linkedin" href="https://www.linkedin.com/in/{{linkedin}}/">
<svg>
<use href="#icon-linkedin" />
</svg>
</a>
</li>
{{/if}}
{{#if website}}
<li>
<a target="_blank" title="website" href="{{website}}">
<svg>
<use href="#icon-globe" />
</svg>
</a>
</li>
{{/if}}
</ul>
</section>

153
partials/members.html

@ -1,153 +0,0 @@
<section id="members" class="members andy">
<h1>Andy Wallace</h1>
<img class="high-contrast" src="/assets/members/andy.jpg">
<p>Andy is an independent game designer and creative coder who lives in NYC.
He is also a founding member of the non-profit Arcade Commons
collective. He received his MFA from Parsons The New School For Design in
2012, and worked for a few years at the tiny NYC game company Golden Ruby
Games. After that, he was the director of the Digital Game Design &
Development program at Long Island University Post Campus. And now he is
available to work on your projects!
</p>
<ul>
<li>
<a target="_blank" title="email" href="mailto:andy@emma.coop">
<svg>
<use href="#icon-envelope" />
</svg>
</a>
</li>
<li>
<a target="_blank" title="twitter" href="https://twitter.com/Andy_Makes">
<svg>
<use href="#icon-twitter" />
</svg>
</a>
</li>
<li>
<a target="_blank" title="tumblr" href="https://andymakesgames.tumblr.com/">
<svg>
<use href="#icon-tumblr" />
</svg>
</a>
</li>
<li>
<a target="_blank" title="mastodon" href="https://mastodon.art/web/@andymakes">
<svg>
<use href="#icon-mastodon" />
</svg>
</a>
</li>
<li>
<a target="_blank" title="git" href="https://github.com/andymasteroffish">
<svg>
<use href="#icon-git" />
</svg>
</a>
</li>
<li>
<a target="_blank" title="linkedin" href="https://www.linkedin.com/in/andy-wallace-084885291/">
<svg>
<use href="#icon-linkedin" />
</svg>
</a>
</li>
<li>
<a target="_blank" title="website" href="https://andymakes.com/">
<svg>
<use href="#icon-globe" />
</svg>
</a>
</li>
</ul>
</section>
<section class="members gwen">
<h1>Gwen Pasquarello</h1>
<img class="high-contrast" src="/assets/members/gwen.png">
<p>Gwen is a creative technologist, artist, and livecoder. She has
professional installation experience in theme parks, touring entertainment,
and experiential advertising. She has development experience in a variety of
mobile and desktop games. In her practice she aims to explore the ways in
which interaction between the audience and the art can create meaning.<br>
</p>
<ul>
<li>
<a target="_blank" title="email" href="mailto:gwen@emma.coop">
<svg>
<use href="#icon-envelope" />
</svg>
</a>
</li>
<li>
<a target="_blank" title="git" href="https://mygit.link/gwen">
<svg>
<use href="#icon-git" />
</svg>
</a>
</li>
<li>
<a target="_blank" title="linkedin" href="https://www.linkedin.com/in/gwenpasquarello/">
<svg>
<use href="#icon-linkedin" />
</svg>
</a>
</li>
<li>
<a target="_blank" title="website" href="https://gwenpri.me/">
<svg>
<use href="#icon-globe" />
</svg>
</a>
</li>
<a rel="me" title="mastodon" href="https://www.librepunk.club/@gwenprime"> </a>
</ul>
</section>
<section class="members ramsey">
<h1>Ramsey Nasser</h1>
<img class="high-contrast" src="/assets/members/ramsey.png">
<p>
Ramsey is an award-winning Lebanese game designer, computer scientist,
and educator with over a decade of experience building captivating
experiences at the edge of what is technically possible. His work
includes museum installations, programming languages and compilers,
slapstick physical games, politically challenging web art, and
ground-breaking research into the cultural baggage of computing.
</p>
<ul>
<li>
<a target="_blank" title="email" href="mailto:ramsey@emma.coop">
<svg>
<use href="#icon-envelope" />
</svg>
</a>
</li>
<li>
<a target="_blank" rel="me" title="mastodon" href="https://merveilles.town/@nasser">
<svg>
<use href="#icon-mastodon" />
</svg>
</a>
</li>
<li>
<a target="_blank" title="git" href="https://git.sr.ht/~nasser/">
<svg>
<use href="#icon-git" />
</svg>
</a>
</li>
<li>
<a target="_blank" title="linkedin" href="https://www.linkedin.com/in/ramsey-nasser-02070b291/">
<svg>
<use href="#icon-linkedin" />
</svg>
</a>
</li>
<li>
<a target="_blank" title="website" href="https://nas.sr/">
<svg>
<use href="#icon-globe" />
</svg>
</a>
</li>
</ul>
</section>

0
partials/menu.html → partials/menu.hbs

2
partials/vimeo.hbs

@ -0,0 +1,2 @@
<iframe loading="lazy" class="vimeo" src="https://player.vimeo.com/video/{{id}}?portrait=0">
</iframe>

11
partials/work.hbs

@ -0,0 +1,11 @@
{{#if @first}}
<section id="work" class="work">
{{else}}
<section class="work">
{{/if}}
<h1><a href="/work">work</a> / <a target="_blank" href="/work/{{slug}}/">{{title}}</a></h1>
<video autoplay loop muted playsinline src="{{video}}"></video>
{{#if blurb}}
{{{markdown blurb}}}
{{/if}}
</section>

21
partials/work.html

@ -1,21 +0,0 @@
<section id="work" class="work">
<h1><a target="_blank" href="https://www.leslieting.com/what-brings-you-in">What Brings You In</a></h1>
<video autoplay loop muted playsinline src="/assets/work/wbyi.mp4"></video>
<p>
An experimental interactive digital performance series by <a href="https://www.leslieting.com/">Leslie Ting</a>
</p>
</section>
<section class="work">
<h1><a target="_blank" href="https://giantfoxstudios.com/portfolio_page/swing-striker/">Swing Striker</a></h1>
<video autoplay loop muted playsinline src="/assets/work/swing-striker.mp4"></video>
<p>
Intergalactic grappling hook soccer for <a href="https://giantfoxstudios.com/">Giant Fox Studios</a>
</p>
</section>
<section class="work">
<h1><a target="_blank" href="https://touchtech.io/Star-Catcher-Our-Shared-Planet">Star Catcher</a></h1>
<video autoplay loop muted playsinline src="/assets/work/star-catcher.mp4"></video>
<p>
Procedural prehistoric plants created for <a href="https://twitter.com/adellelin?lang=en">Adelle Lin</a> and <a href="https://www.instagram.com/mpinner/">Matt Pinner</a>
</p>
</section>

BIN
public/android-chrome-192x192.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

BIN
public/android-chrome-512x512.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

10
site/about/how.md

@ -0,0 +1,10 @@
---
heading: how we work
image: /assets/about/union.png
order: 2
---
[Worker-owned](https://en.wikipedia.org/wiki/Worker_cooperative) means that EMMA is owned equally and managed democratically by its current and future members—the people actually doing the work.
Not laboring to enrich absentee shareholders means a healthier, more sustainable work environment for us and a focus on building great experiences for our clients.
We believe this model is the future of our industry and beyond. We're committed to sharing our experience with others, so if you're thinking of starting a coop of any kind we'd love to [talk to you](#contact).

8
site/about/who.md

@ -0,0 +1,8 @@
---
heading: who we are
image: /assets/about/emma-goldman-union-square-new-york-1916.jpg
order: 1
---
EMMA is a New York City-based worker-owned creative technology cooperative. We develop software and hardware for clients in the video game, theater, public installation and media arts spaces among others.
We would love to help you bring your creative vision to life. [Get in touch with us](#contact) and let's figure something out.

0
public/apple-touch-icon.png → site/apple-touch-icon.png

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

0
public/assets/about/emma-goldman-union-square-new-york-1916.jpg → site/assets/about/emma-goldman-union-square-new-york-1916.jpg

Before

Width:  |  Height:  |  Size: 2.0 MiB

After

Width:  |  Height:  |  Size: 2.0 MiB

0
public/assets/about/union.png → site/assets/about/union.png

Before

Width:  |  Height:  |  Size: 546 KiB

After

Width:  |  Height:  |  Size: 546 KiB

0
public/assets/home/emma.mp4 → site/assets/home/emma.mp4

0
public/assets/home/emma.png → site/assets/home/emma.png

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

0
public/assets/members/andy.jpg → site/assets/members/andy.jpg

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

0
public/assets/members/gwen.png → site/assets/members/gwen.png

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

0
public/assets/members/ivan.jpg → site/assets/members/ivan.jpg

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

0
public/assets/members/ramsey.png → site/assets/members/ramsey.png

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 90 KiB

0
public/assets/work/star-catcher.mp4 → site/assets/work/star-catcher.mp4

0
public/assets/work/swing-striker.mp4 → site/assets/work/swing-striker.mp4

0
public/assets/work/wbyi.jpg → site/assets/work/wbyi.jpg

Before

Width:  |  Height:  |  Size: 205 KiB

After

Width:  |  Height:  |  Size: 205 KiB

0
public/assets/work/wbyi.mp4 → site/assets/work/wbyi.mp4

0
public/assets/work/wbyi2.jpg → site/assets/work/wbyi2.jpg

Before

Width:  |  Height:  |  Size: 587 KiB

After

Width:  |  Height:  |  Size: 587 KiB

0
public/assets/work/wbyi3.jpg → site/assets/work/wbyi3.jpg

Before

Width:  |  Height:  |  Size: 415 KiB

After

Width:  |  Height:  |  Size: 415 KiB

0
public/favicon-16x16.png → site/favicon-16x16.png

Before

Width:  |  Height:  |  Size: 180 B

After

Width:  |  Height:  |  Size: 180 B

0
public/favicon-32x32.png → site/favicon-32x32.png

Before

Width:  |  Height:  |  Size: 229 B

After

Width:  |  Height:  |  Size: 229 B

0
public/favicon.ico → site/favicon.ico

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

12
site/members/andy.md

@ -0,0 +1,12 @@
---
name: Andy Wallace
image: /assets/members/andy.jpg
email: andy@emma.coop
twitter: Andy_Makes
tumblr: andymakesgames
mastodon: https://mastodon.art/web/@andymakes
git: https://github.com/andymasteroffish
linkedin: andy-wallace-084885291
website: https://andymakes.com/
---
Andy is an independent game designer and creative coder who lives in NYC. He is also a founding member of the non-profit [Arcade Commons collective](https://arcadecommons.org/). He received his MFA from Parsons The New School For Design in 2012, and worked for a few years at the tiny NYC game company Golden Ruby Games. After that, he was the director of the Digital Game Design & Development program at Long Island University Post Campus. And now he is available to work on your projects!

10
site/members/gwen.md

@ -0,0 +1,10 @@
---
name: Gwen Pasquarello
image: /assets/members/gwen.png
email: gwen@emma.coop
mastodon: https://www.librepunk.club/@gwenprime
git: https://mygit.link/gwen
linkedin: gwenpasquarello
website: https://gwenpri.me/
---
Gwen is a creative technologist, artist, and livecoder. She has professional installation experience in theme parks, touring entertainment, and experiential advertising. She has development experience in a variety of mobile and desktop games. In her practice she aims to explore the ways in which interaction between the audience and the art can create meaning

10
site/members/ramsey.md

@ -0,0 +1,10 @@
---
name: Ramsey Nasser
image: /assets/members/ramsey.png
email: ramsey@emma.coop
mastodon: https://merveilles.town/@nasser
git: https://git.sr.ht/~nasser/
linkedin: ramsey-nasser-02070b291
website: https://nas.sr/
---
Ramsey is an award-winning Lebanese game designer, computer scientist, and educator with over a decade of experience building captivating experiences at the edge of what is technically possible. His work includes museum installations, programming languages and compilers, slapstick physical games, politically challenging web art, and ground-breaking research into the cultural baggage of computing.

0
public/site.webmanifest → site/site.webmanifest

BIN
site/style/chivo-mono/files/chivo-mono-latin-ext-wght-italic.woff2

Binary file not shown.

BIN
site/style/chivo-mono/files/chivo-mono-latin-ext-wght-normal.woff2

Binary file not shown.

BIN
site/style/chivo-mono/files/chivo-mono-latin-wght-italic.woff2

Binary file not shown.

BIN
site/style/chivo-mono/files/chivo-mono-latin-wght-normal.woff2

Binary file not shown.

BIN
site/style/chivo-mono/files/chivo-mono-vietnamese-wght-italic.woff2

Binary file not shown.

BIN
site/style/chivo-mono/files/chivo-mono-vietnamese-wght-normal.woff2

Binary file not shown.

29
site/style/chivo-mono/wght.css

@ -0,0 +1,29 @@
/* chivo-mono-vietnamese-wght-normal */
@font-face {
font-family: 'Chivo Mono Variable';
font-style: normal;
font-display: swap;
font-weight: 100 900;
src: url(./files/chivo-mono-vietnamese-wght-normal.woff2) format('woff2-variations');
unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}
/* chivo-mono-latin-ext-wght-normal */
@font-face {
font-family: 'Chivo Mono Variable';
font-style: normal;
font-display: swap;
font-weight: 100 900;
src: url(./files/chivo-mono-latin-ext-wght-normal.woff2) format('woff2-variations');
unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
/* chivo-mono-latin-wght-normal */
@font-face {
font-family: 'Chivo Mono Variable';
font-style: normal;
font-display: swap;
font-weight: 100 900;
src: url(./files/chivo-mono-latin-wght-normal.woff2) format('woff2-variations');
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

BIN
site/style/josefin-sans/files/josefin-sans-latin-ext-wght-italic.woff2

Binary file not shown.

BIN
site/style/josefin-sans/files/josefin-sans-latin-ext-wght-normal.woff2

Binary file not shown.

BIN
site/style/josefin-sans/files/josefin-sans-latin-wght-italic.woff2

Binary file not shown.

BIN
site/style/josefin-sans/files/josefin-sans-latin-wght-normal.woff2

Binary file not shown.

BIN
site/style/josefin-sans/files/josefin-sans-vietnamese-wght-italic.woff2

Binary file not shown.

BIN
site/style/josefin-sans/files/josefin-sans-vietnamese-wght-normal.woff2

Binary file not shown.

29
site/style/josefin-sans/wght.css

@ -0,0 +1,29 @@
/* josefin-sans-vietnamese-wght-normal */
@font-face {
font-family: 'Josefin Sans Variable';
font-style: normal;
font-display: swap;
font-weight: 100 700;
src: url(./files/josefin-sans-vietnamese-wght-normal.woff2) format('woff2-variations');
unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}
/* josefin-sans-latin-ext-wght-normal */
@font-face {
font-family: 'Josefin Sans Variable';
font-style: normal;
font-display: swap;
font-weight: 100 700;
src: url(./files/josefin-sans-latin-ext-wght-normal.woff2) format('woff2-variations');
unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
/* josefin-sans-latin-wght-normal */
@font-face {
font-family: 'Josefin Sans Variable';
font-style: normal;
font-display: swap;
font-weight: 100 700;
src: url(./files/josefin-sans-latin-wght-normal.woff2) format('woff2-variations');
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

217
style.css → site/style/main.css

@ -1,15 +1,10 @@
/* stylelint-disable property-no-vendor-prefix */
/* stylelint-disable no-descending-specificity */
@import url("node_modules/reset-css/reset.css");
@import url("node_modules/@fontsource-variable/chivo-mono/wght.css");
@import url("node_modules/@fontsource-variable/josefin-sans/wght.css");
:root {
--emma-red: #EC5629;
--white: #fefefe;
--black: #222;
--pitch-black: #111;
--content-padding: 5vmax;
--carousel-marker-size: 8px;
--body-font-size: clamp(12pt, 4vmin, 28pt);
--footer-font-size: clamp(12pt, 3vmin, 22pt);
--title-font: 'Josefin Sans Variable', sans-serif;
@ -232,17 +227,156 @@ section {
width: 100vw;
height: 100vh;
scroll-behavior: smooth;
padding: var(--content-padding);
scroll-snap-align: start;
justify-content: space-between;
background: var(--bg, "white");
background-size: cover;
background-position: center;
}
section {
scroll-snap-align: start;
/* width: 100%; */
/* height: 100%; */
section.no-fill {
height: auto;
}
section p {
background-color: var(--text-bg, "white");
padding: 1ch;
}
section.work-header {
height: auto;
padding: 1ch var(--content-padding);
}
section.work-header h1 {
padding: 0 1ch;
background-color: white;
}
section.work-header h1 ,
section.work-header h1 a {
font-style: italic;
color: black !important;
}
main.work-body {
height: max-content;
padding: 0;
background-color: white;
}
main.work-body > section {
justify-content: space-evenly;
}
main.work-body > section p {
height: auto;
background-color: var(--text-bg, white);
}
main.work-body > section[black] p {
background-color: black;
color: white;
}
main.work-body > section[white] p {
background-color: white;
color: black;
}
main.work-body > section[caption] {
justify-content: flex-end;
}
main.work-body > section[caption] p {
font-size: 0.6em;
}
main.work-body > section {
height: 100vh;
background-position: center center;
background-size: cover;
display: flex;
flex-direction: column;
box-sizing: border-box;
padding: var(--content-padding);
justify-content: space-between;
}
main.work-body > iframe {
height: 100vh;
width: 100vw;
}
main.work-body > p {
height: 100vh;
width: 100vw;
}
main.work-body > video,
main.work-body > p > img {
height: 100vh;
width: 100vw;
object-fit: cover;
display: block;
}
main.work-body section[carousel] {
padding: 0;
height: 100vh;
width: 100vw;
overflow-x: scroll;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
scroll-marker-group: after;
anchor-name: --carousel-anchor;
}
main.work-body section[carousel]::scroll-marker-group {
position: absolute;
position-anchor: --carousel-anchor;
top: calc(anchor(bottom) + var(--carousel-marker-size) * -4);
width: 100%;
height: calc(var(--carousel-marker-size) * 2);
z-index: 2;
display: flex;
gap: var(--carousel-marker-size);
justify-content: center;
align-items: center;
justify-self: center;
}
main.work-body section[carousel] > p {
height: 100vh;
width: max-content;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
padding: 0;
}
main.work-body section[carousel] > p > * {
position: static;
height: 100vh;
width: 100vw;
z-index: 1;
object-fit: cover;
/* max-width: none;
display: block;
padding: 0; */
scroll-snap-align: start;
}
main.work-body section[carousel] > p > *::scroll-marker {
content: "";
width: var(--carousel-marker-size);
height: var(--carousel-marker-size);
background-color: transparent;
border: 2px solid white;
border-radius: 100%;
display: block;
transition: background-color 0.25s;
}
main.work-body section[carousel] > p > *::scroll-marker:target-current {
background-color: white;
}
section.slides {
@ -313,21 +447,13 @@ section h1 {
text-transform: uppercase;
}
section p {
}
section.auto {
height: auto;
gap: var(--content-padding);
}
section.about.page-1 {
background: url("/assets/about/emma-goldman-union-square-new-york-1916.jpg") center center;
background-size: cover;
}
section.about.page-2 {
background: url("/assets/about/union.png") center center;
section.about {
background: var(--image) center center;
background-size: cover;
}
@ -399,10 +525,6 @@ cite {
font-size: 0.5em;
}
section.work h1::before {
content: "Work / ";
}
section.work h1 {
font-weight: 500;
font-style: italic;
@ -411,6 +533,31 @@ section.work h1 {
padding: 1ch 1ch 0.7ch;
}
section.work-index {
height: 50vh;
justify-content: space-evenly;
}
section.work-index video {
height: 100%;
width: 100%;
object-fit: cover;
}
section.work-index h1 {
padding: 1ch;
background-color: white;
}
section.work-index h1 a {
color: black !important;
}
section.work-index p {
padding: 1ch;
background-color: white;
}
section h1 a {
color: var(--white) !important;
}
@ -429,7 +576,10 @@ section.work p {
section.members {
position: relative;
color: var(--white);
}
section.members p {
padding: 0;
}
section.members h1::before {
@ -446,6 +596,7 @@ section.members ul {
gap: 1ch;
}
section.members p a,
section.members ul a {
color: var(--white);
fill: var(--white);
@ -453,6 +604,7 @@ section.members ul a {
transition: fill 0.5s;
}
section.members p a:hover,
section.members ul a:hover {
color: var(--emma-red);
fill: var(--emma-red);
@ -516,6 +668,15 @@ section#pacbi em {
font-style: italic;
}
section#pacbi a:hover {
color: var(--emma-red);
}
section iframe.vimeo {
width: 100%;
height: 100%;
}
footer {
font-family: var(--title-font);
font-size: var(--footer-font-size);

52
site/style/reset.css

@ -0,0 +1,52 @@
/* http://meyerweb.com/eric/tools/css/reset/
v5.0.1 | 20191019
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
main, menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, main, menu, nav, section {
display: block;
}
/* HTML5 hidden-attribute fix for newer browsers */
*[hidden] {
display: none;
}
body {
line-height: 1;
}
menu, ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}

52
site/work/star-catcher.md

@ -0,0 +1,52 @@
---
title: Star Catcher
client: Adelle Lin
year: 2023
url: https://touchtech.io/Star-Catcher-Our-Shared-Planet
video: /assets/work/star-catcher.mp4
order: 3
homepage: true
blurb: >
Procedural prehistoric plants created for [Adelle Lin](https://twitter.com/adellelin) and [Matt Pinner](https://www.instagram.com/mpinner/)
---
<section style="background-image: url('DSC03380-crop.jpg')">
Through the metaphor of capturing and releasing stars, “Star Catcher” is an immersive interactive media artwork exploring themes of extraction and collective care. This piece invites audiences to reflect on the impact of joint actions on the ecology of a fictional world, emphasizing the consequences of resource exploitation in space. “Star Catcher” encourages collaborative engagement among the audience through collective movement and actions.
EMMA provided technical support through Unity 3D programming and game design conceptual development.
</section>
![](DSC03327-harvestworks.png)
<section black>
This is a text section, white text on black
</section>
<section black caption style="background-image: url('DSC03268-harvestworks.jpg')">
images with captions, markdown *works* [link][foo]
</section>
<section>
This is a text section, black text on white
Image carousel below
</section>
<section carousel>
![](DSC03268-harvestworks.jpg)
![](DSC03268-harvestworks.jpg)
<video muted autoplay loop src="video.mp4"></video>
![](DSC03327-harvestworks.png)
</section>
[foo]: https://en.wikipedia.org/wiki/Potoooooooo

BIN
site/work/star-catcher/DSC03268-harvestworks.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
site/work/star-catcher/DSC03327-harvestworks.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 587 KiB

BIN
site/work/star-catcher/DSC03380-crop.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 536 KiB

BIN
site/work/star-catcher/video.mp4

Binary file not shown.

12
site/work/swing-striker.md

@ -0,0 +1,12 @@
---
title: Swing Striker
url: https://giantfoxstudios.com/portfolio_page/swing-striker/
video: /assets/work/swing-striker.mp4
client: Giant Fox
year: 2022
order: 2
homepage: true
blurb: >
Intergalactic grappling hook soccer for [Giant Fox Studios](https://giantfoxstudios.com/)
---

17
site/work/what-brings-you-in.md

@ -0,0 +1,17 @@
---
title: What Brings You In
url: https://www.leslieting.com/what-brings-you-in
video: /assets/work/wbyi.mp4
client: Leslie Ting
year: 2024
order: 1
homepage: true
blurb: >
An experimental interactive digital performance series by [Leslie Ting](https://www.leslieting.com/)
---
<section>
What Brings You In
</section>

23
vite.config.js

@ -1,23 +0,0 @@
import { resolve } from 'path';
import { defineConfig } from 'vite'
import handlebars from 'vite-plugin-handlebars';
import git from 'git-describe'
const VERSION = git.gitDescribeSync().raw
const DATE = Date()
export default defineConfig({
base: "./",
build: {
rollupOptions: {
input: {
main: resolve(__dirname, 'index.html'),
pacbi: resolve(__dirname, 'pacbi.html'),
}
}
},
plugins: [handlebars({
context: { VERSION, DATE },
partialDirectory: resolve(__dirname, "partials"),
})]
})

61
work/what-brings-you-in/index.html

@ -1,61 +0,0 @@
<!doctype html>
<html lang="en">
{{> header }}
<body>
{{> menu }}
<section class="auto white-black">
<p>
<a href="https://www.leslieting.com/what-brings-you-in">What Brings
You In</a> is an ongoing experimental interactive musical
performance series by artist <a href="https://www.leslieting.com/">Leslie Ting</a>. The live show
combines in-person and online components into a unified hybrid
experience of sound, mindfulness, and connectivity.
</p>
</section>
<section class="work">
<img src="/assets/work/wbyi.jpg">
<cite class="black-white">
<a target="_blank" href="https://summerworks.ca/show/what-brings-you-in">Summerworks
2022</a>, Henry Chan
</cite>
</section>
<section class="auto black-white">
<p>
EMMA developed and maintains all the software systems for What
Brings You In, including the browser-based interactive experiences,
synthesizers, and server software. We were involved at every step of
the prototyping process, leveraging our experience to rapidly roll
out experiments for the creative team as they iterated on their
concepts at different venues.
</p>
<p>
To tackle the demanding synchronization needs of a live interactive
concert we developed a novel technique to synchronize control
messages and media which we talked about <a href="https://www.youtube.com/watch?v=mKxir7xdG7s">in an EMMA
Skill
Share video</a>.
</p>
</section>
<section class="work">
<img src="/assets/work/wbyi3.jpg" />
<cite class="black-white">
<a target="_blank" href="https://summerworks.ca/show/what-brings-you-in">Summerworks
2022</a>, Henry Chan
</cite>
</section>
<section class="work">
<img src="/assets/work/wbyi2.jpg">
<cite class="black-white">
<a target="_blank" href="https://summerworks.ca/show/what-brings-you-in">Summerworks
2022</a>, Henry Chan
</cite>
</section>
{{> footer }}
</body>
</html>
<!-- {{ VERSION }} {{ DATE }} -->
Loading…
Cancel
Save