Skip to content

Commit ea9eaaf

Browse files
committed
Revert "Merge pull request #18 from exokitxr/remove-blog"
This reverts commit 5c2112c, reversing changes made to 002dedc.
1 parent 4bcd0a4 commit ea9eaaf

File tree

19 files changed

+260
-1
lines changed

19 files changed

+260
-1
lines changed

COPYsrc/index.html

+8
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
<div class="navbar-nav">
1616
<a class="nav-item nav-link pr-4 pl-4" href="docs/"><h5 class="font-weight-normal">Docs</h2></a>
1717
<a class="nav-item nav-link pr-4 pl-4" href="faq/"><h5 class="font-weight-normal">FAQ</h2></a>
18+
<a class="nav-item nav-link pr-4 pl-4" href="blog/"><h5 class="font-weight-normal">Blog</h2></a>
1819
<a class="nav-item nav-link pr-4 pl-4" href="community/"><h5 class="font-weight-normal">Community</h2></a>
20+
<a class="nav-item nav-link pr-4 pl-4" href="showcase/"><h5 class="font-weight-normal">Showcase</h2></a>
1921
</div>
2022
</div>
2123

@@ -40,9 +42,15 @@ <h2 style="font-family: Bison;">Exokit</h2>
4042
<div class="col-12 mb-4">
4143
<a href="faq/"><h5 class="font-weight-light">FAQ</h5></a>
4244
</div>
45+
<div class="col-12 mb-4">
46+
<a href="blog/"><h5 class="font-weight-light">Blog</h5></a>
47+
</div>
4348
<div class="col-12 mb-4">
4449
<a href="community/"><h5 class="font-weight-light">Community</h5></a>
4550
</div>
51+
<div class="col-12 mb-4">
52+
<a href="showcase/"><h5 class="font-weight-light">Showcase</h5></a>
53+
</div>
4654
<div class="col-12 mb-4">
4755
<i id="closeLittleNav" class="fas fa-times fa-2x" style="margin-bottom: 5vh; cursor: pointer;"></i>
4856
</div>

COPYsrc/style/blog.css

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
.blog .blogHero{
2+
position: relative;
3+
min-height: 100vh;
4+
}
5+
.blog img{
6+
border-radius: 10px;
7+
}

ORGANIZATION.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ Powered by [Hexo](https://hexo.io/)
1010
- `COPYsrc` - Landing page files copied over after generating Hexo files.
1111
- `src` - Content. Do not put CSS/JavaScript files here because Hexo will malform them.
1212
- `_data/` -
13+
- `_posts/` - Blog posts.
14+
- `blog/index.md` - Hexo blog section metadata. Does **not** contain blog posts.
1315
- `community/index.md` - Community page.
1416
- `faq/index.md` - FAQ page.
15-
- `images/` - Site images
17+
- `images/` - Site and blog images
1618
- `themes/` - Layout, CSS, releases.
1719
- `exokit/`
1820
- `layout/` - HTML and templates.

_config.prod.yml

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ description: "Native VR/AR/XR engine for JavaScript"
99
email:
1010
language:
1111
robots: all
12+
blog_title: Blog
1213

1314
# Color for `<meta name="theme-color">`.
1415
## https://html.spec.whatwg.org/multipage/semantics.html#meta-theme-color
@@ -19,6 +20,7 @@ theme_color: black
1920
## If your site is put in a sub-directory, set URL as `http://yoursite.com/child` and root as `/child/`.
2021
url: https://exokit.org
2122
root: /
23+
permalink: blog/:title/
2224
tag_dir: tags
2325
archive_dir: archives
2426
category_dir: categories

scripts/redirects.js

+5
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ hexo.extend.generator.register('site-redirects', function () {
1414
]);
1515
});
1616

17+
hexo.extend.generator.register('blog-redirects', function () {
18+
return expandRedirectObjs([
19+
]);
20+
});
21+
1722
hexo.extend.generator.register('community-short-url-redirects', function () {
1823
return expandRedirectObjs([
1924
['github/', hexo.config.github.exokit.url],

src/_posts/helloworld.md

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
title: "Hello World"
3+
date: 2018-1-1
4+
layout: blog
5+
image:
6+
src: https://raw.githubusercontent.com/exokitxr/exokit/master/icon.png
7+
author: https://twitter.com/exokitxr|Exokit
8+
---
9+
10+
## Hello World

src/_posts/introducing-exokit.md

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
title: "Introducing Exokit: A Javascript Web Engine for the Post Screen Era"
3+
date: 2018-03-30
4+
layout: blog
5+
image:
6+
src: https://raw.githubusercontent.com/exokitxr/exokit/master/icon.png
7+
author: Nicholas Loomis
8+
---
9+
10+
## **The Industry Today**
11+
12+
We have always dreamed of the future as a species, from Back to the Future to the recent Ready Player One, we are a society of dreamers when it comes to imagining what we can create with technology. In order to make that future a reality, we constantly push towards newer, faster, ever-improving mediums. Connecting to the internet, and the creativity of web development, have both been things that — as of late — have been a bit stabilized in how things are done; with Exokit, we hope to change that.
13+
14+
Exokit is a new JavaScript engine that is built for the post-screen (mixed reality) age: it’s fast, open source, and made for developers to really unlock parts of online development that haven’t been there before. To quote one of Exokit’s developers, “Javascript (and the browser/engine platform as a whole) has become ubiquitous as both a language and a delivery mechanism for applications. The places where it was previously unthinkable to use JavaScript or a web browser — due to performance or impedance mismatch in programming model, for example — are being fixed with the likes of WASM and platform extensions like workers and off-screen rendering.”
15+
16+
Of course alongside that, we need to mention the big platform goal Exokit is aiming for, which is the virtual, mixed, and augmented reality platforms, with products such as Magic Leap. Until now, web development on these platforms has been restrictive and difficult, with even the top development teams having to come up with hacks all over the place to get their projects working as intended. But as said before, that’s where Exokit comes in. “Integrating with other engines and frameworks is still a nightmare. Nobody’s solved this and everyone’s using hacks. I’m not convinced binary compatibility with native code is truly solvable at the JS layer. The sentiment I hear a lot from people reluctant to use the browser as a platform for games and VR/AR is that the platform is too restrictive. There are things that, for security and compatibility reasons, a traditional browser can’t let sites do. That includes a vast world of graphics features that WebGL/WebXR forbids in the spec, and native integrations that are by definition impossible in a traditional JS sandbox.” As you can see, developer restriction is the problem Exokit will address throughout its own development.
17+
18+
## **The Mission of Exokit**
19+
20+
The mission statement of Exokit and its team is that they are going to empower people to construct their own realities. “We want to empower VR and web developers with AR features today. In particular, we’d like to move the ball forward on amazing new APIs provided by the MLSDK, and experiment with native integrations between the web and existing 3D engines like Unreal and Unity (which a lot of developer are clamoring for). And of course, we think the world could use a truly hackable, embeddable, post-screen web engine that doesn’t move at a glacial pace (in both performance and features).” As the quote states, along with Magic Leap’s release of its SDK (Software Development Kit), a lot can be done in order to move forward with the development of new avenues of connection, web experiences, and real-life integration, which is exactly the space Exokit hopes to fill.
21+
22+
## **Exokit’s Main Features/Capabilities**
23+
24+
“By being simple and cutting ties with legacy browser stuff like 2D, it becomes easy to quickly extend and grok. And unlike Chrome, which takes a lot to build, you can change Exokit by editing a .js file.” Exokit is web development, compatible with native code, with no legacy code being dragged behind it, and on top of all of that, it’s open source. This, as stated earlier, allows web developers to operate more freely, and to convert already-made creations to VR/MR/AR more easily than ever before. “We’re basically trying to connect the dots from today to a pervasive AR future. And it starts with seamlessly taking existing content into the framework of the future.”
25+
26+
Something that we haven’t mentioned yet, that also brings Exokit up a notch in our eyes, is the native code integration with Unity or Unreal as well, done through how Exokit’s sandboxing is tweaked from the normal “browser way” that we are used to with Chrome or Firefox. “With the world of graphics features that WebGL forbids in the spec, and the native integrations that are by definition impossible in a traditional JS sandbox, things need to change. That’s why Exokit is a Node application and can run native code, and it uses a completely different notion of sandboxing (process isolation of the whole browser, like a game on Steam). There’s a full native escape hatch for sites to run and plug into true native code, including plain Unity and Unreal.”
27+
28+
Turning now more towards potential developers wanting to work with Exokit and get creating in Magic Leap and VR/AR, we put together a couple lists of things we thought you might want to know:
29+
30+
## **A quick overview of the things Exokit can do**
31+
32+
Load any http(s) site, Parse a programmatic DOM, Run any `<script>`, Load any `<image>`, `<video>`, `<audio>`, Register and run Web Workers, Render Canvas2D, Render WebGL, Render WebVR, Handle gamepad input, Iframe isolation, Embed anywhere with Node, Run tests, and Power a web bot.
33+
34+
## **Things Exokit supports**
35+
36+
HTTP(S), HTML5, JS, DOM, CanvasRenderingContext2D, Image tag, Audio tag, Video tag, Keyboard events, Mouse events, WebGL, WebVR, Gamepad API, No HTML layouts, and No CSS.
37+
38+
Other things of note: Exokit can’t render HTML, but it can draw Canvas and WebGL/WebXR: natively, and fast. This means you can code robust AR and VR experiences using your favorite flavor of JavaScript, just like you code a website. Under the hood, everything is plain OpenGL, so it plays nice with Windows, Linux, macOS, and Magic Leap. Exokit also builds and runs in Magic Leap’s SDK simulator right now, and will work on the hardware’s upcoming release.
39+
40+
## **Current Development**
41+
42+
“I’d say we’re 80% of the way to a public alpha release; it’s mostly just bugs and polish. But having a browser as a footing unlocks an infinite world of tangential business models. From advertising to hosting to custom support and a lot more. I don’t know how far along we are to that, because it’s not clear what the truly profitable thing would be. It needs rapid experimentation once the browser part is debugged and shipped.” As per that quote, the current build still needs plenty of “rejiggering” to solidify exactly what we have so far out of Exokit, but it’s looking strong as it comes towards its final stages before alpha 1.0 release!
43+
44+
To quickly touch on future plans and development: some points of note that the developers left us with were that they still would love to help create, “A way to deploy your Magic Leap immersive sites instantly and share them in a hub. Kind of like Github but the sites are live, they have 3d previews, and you can immerse yourself in them immediately in Exokit. I want to help people develop for ML with JS as soon as possible.” Always good to see that the team wants to get more people into their creative platform and the future they see for web development. Be sure to check out our other articles on Exokit and follow on our social media to get in on the development of this next wave of progress towards the future!

src/blog/index.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
title: Blog
3+
type: blog
4+
layout: blog
5+
blog_index: true
6+
---

src/community/index.md

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ people who come together to make developing WebXR a rewarding experience.
2121

2222
## News
2323

24+
- [Blog](../blog/) - collects the latest
25+
news, upcoming events, and cool projects that other people are working on.
2426
- [Twitter](https://twitter.com/exokitxr) - Keep up to date with awesome
2527
projects that people are doing and announcements.
2628

themes/exokit/layout/blog.ejs

+98
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
<%- partial('partials/secondary/sidebar_wordmark') %>
2+
<aside id="sidebar" class="sidebar borderless-links">
3+
<%- partial('partials/secondary/sidebar_header', {site: site}) %>
4+
5+
<div class="list">
6+
<h3 class="section-title">Blog Posts</h3>
7+
<ul class="subnav section-subnav blog-subnav">
8+
<% site.posts.sort('-date').forEach(function (post) { %>
9+
<li class="subnav-item <%= post.title === page.title ? ' subnav-item-current' : '' %>">
10+
<a href="<%- page_url(post.path) %>"
11+
class="subnav-link<%= post.title === page.title ? ' current' : '' %>"
12+
title="<%- post.title %>">
13+
<%- post.title %>
14+
</a>
15+
</li>
16+
<% }); %>
17+
</ul>
18+
</div>
19+
</aside>
20+
21+
<div class="content content--blog copy post">
22+
<%- partial('partials/secondary/mobile_header') %>
23+
24+
<div class="copy__wrap">
25+
<% if (page.blog_index) { %>
26+
<h1 class="page__title"><%- config.blog_title %></h1>
27+
28+
<%- page.content %>
29+
30+
<% page.posts.each(function (post) { %>
31+
<article class="post post--listing">
32+
<a href="<%- page_url(post.path) %>">
33+
<h2 class="post__heading"><%- post.title %></h2>
34+
</a>
35+
<%- partial('partials/blog/metadata', {post: post}) %>
36+
37+
<% if (post.excerpt) { %>
38+
<%- partial('partials/blog/image', {image: post.image, title: post.title}) %>
39+
<div class="post__excerpt"><%- post.excerpt %></div>
40+
<% } %>
41+
42+
<a href="<%- page_url(post.path) %>" class="post__more">Read more &hellip;</a>
43+
</article>
44+
<% }) %>
45+
46+
<footer class="footer guide-links c">
47+
<% var prevPost = page.prev %>
48+
<% var nextPost = page.next %>
49+
<% if (page.prev) { %>
50+
<span class="float-left"><a href="<%- page_url(prevPost.path) %>" class="guide-link guide-link-left"><%- prevPost.title %></a></span>
51+
<% } %>
52+
<% if (page.next) { %>
53+
<span class="float-right"><a href="<%- page_url(nextPost.path) %>" class="guide-link guide-link-right"><%- nextPost.title %></a></span>
54+
<% } %>
55+
</footer>
56+
<% } else { %>
57+
<article class="post post-full">
58+
<p class="page__section">
59+
<a href="<%- url_for('blog/') %>" class="borderless-link">Blog</a>
60+
</p>
61+
62+
<h1 class="page__title post__heading"><%- page.title %></h1>
63+
<%- partial('partials/blog/metadata', {post: page}) %>
64+
65+
<%- partial('partials/blog/image', {image: page.image, title: page.title}) %>
66+
67+
<%- page.content %>
68+
69+
</article>
70+
71+
<footer class="footer guide-links c">
72+
<% // Yes, these are correct. %>
73+
<% var prevPost = page.next %>
74+
<% var nextPost = page.prev %>
75+
<% if (prevPost) { %>
76+
<span class="float-left"><a href="<%- page_url(prevPost.path) %>" class="guide-link guide-link-left"><%- prevPost.title %></a></span>
77+
<% } %>
78+
<% if (nextPost) { %>
79+
<span class="float-right"><a href="<%- page_url(nextPost.path) %>" class="guide-link guide-link-right"><%- nextPost.title %></a></span>
80+
<% } %>
81+
</footer>
82+
<% } %>
83+
84+
<footer class="footer footnote">
85+
<p>Except where otherwise noted, content on this site is licensed under the <a href="https://creativecommons.org/licenses/by-sa/3.0/" rel="external">Creative Commons Attribution Share-Alike License v3.0</a> or any later version.</p>
86+
<% if (!page.blog_index) { %>
87+
<p>Found a typo or suggestion for the docs? <br><br> <a href="<%- website_github_edit_url('_posts/' + page.slug + '.md') %>" class="github-file-link" rel="external">Suggest an edit on GitHub</a></p>
88+
<% } %>
89+
</footer>
90+
</div>
91+
92+
<% if (!page.blog_index) { %>
93+
<div class="secondary-sidebar">
94+
<%- partial('partials/toc', {page: page}) %>
95+
</div>
96+
<% } %>
97+
</div>
98+
</div>

themes/exokit/layout/index.ejs

+3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
<li class="menu-item">
1818
<a href="<%- url_for('faq/') %>">FAQ</a>
1919
</li>
20+
<!-- <li class="menu-item">
21+
<a href="<%- url_for('blog/') %>">Blog</a>
22+
</li> -->
2023
<li class="menu-item">
2124
<a href="<%- url_for('community/') %>">Community</a>
2225
</li>

themes/exokit/layout/layout.ejs

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
<% pageTitle = page.full_title || (isHome ? projectTitle : pageTitle + config.title) %>
1111
<% src = page.image && page.image.src %>
1212
<% if (src && src.indexOf('http') === -1) { %>
13+
<% src = absolute_url_for('/images/blog/' + src); %>
1314
<% } %>
1415
<% var metaImage = src || (absolute_url_for(meta_image(page, 'images/card.jpg'), {secure: false}) + '?v2') %>
1516
<% var metaImageSecure = src || (absolute_url_for(meta_image(page, 'images/card.jpg'), {secure: true}) + '?v2') %>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<% if (image) { %>
2+
<% src = image.src; %>
3+
<% if (src.indexOf('http') === -1) { %>
4+
<% var src = '/images/blog/' + image.src; %>
5+
<% } %>
6+
7+
<% if (image.href) { %>
8+
<a class="post__image borderless-link" href="<%= image.href %>">
9+
<img src="<%= src %>" alt="<%= title %>">
10+
</a>
11+
<% } else {%>
12+
<img src="<%= src %>" alt="<%= title %>">
13+
<% } %>
14+
<% } %>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<div class="post__metadata">
2+
<p class="post__timestamp"><%= blog_date(post.date) %></p>
3+
<% if (post.author) { %>
4+
<p class="post__author">By <%- blog_attribution(post.author) %></p>
5+
<% } %>
6+
</div>

themes/exokit/layout/partials/examples/sidebar.ejs

+11
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,17 @@
2020
Get Started
2121
</a>
2222

23+
<div class="list examples-list blog-list">
24+
<h2 class="page-title"><a href="/blog">Blog</a></h2>
25+
<ul id="examplesSubnav"
26+
class="subnav examples-subnav borderless-links">
27+
<% var lastPost = site.posts.sort('-date').data[0] %>
28+
<li class="example-item">
29+
<a class="subnav-link" href="<%- lastPost.path %>" title="<%- lastPost.title %>"><%- lastPost.title %></a>
30+
</li>
31+
</ul>
32+
</div>
33+
2334
<!-- Documentation list. -->
2435
<div class="list examples-list">
2536
<ul id="examplesSubnav"

themes/exokit/layout/partials/secondary/sidebar_header.ejs

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<%
22
var links = [
33
{url: 'docs/introduction/', text: 'Docs'},
4+
{url: 'blog/', text: 'Blog'},
45
{url: 'community/', text: 'Community'},
56
{url: 'showcase/', text: 'Showcase'},
67
{url: config.github.exokitxr.url, text: 'GitHub', slug: 'github', title: 'Exokit Project Repository'},

themes/exokit/source/css/_common.styl

+2
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ h4
102102
.copy__wrap
103103
padding 40px
104104

105+
[data-page-type="blog"] .copy__wrap
106+
padding-top: 20px;
105107

106108
.nav, .subnav
107109
list-style-type none

themes/exokit/source/css/index.styl

+20
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,26 @@ span[itemprop]
337337
top 4px
338338
width 20px
339339

340+
.blog-list
341+
display none
342+
padding-bottom 10px
343+
+media--desktop()
344+
display block
345+
346+
.blog-list .page-title a
347+
border-bottom 0
348+
font-weight 300
349+
font-size 15px
350+
color rgba(0,0,0,0.6)
351+
font-weight 100
352+
letter-spacing 0.02em
353+
354+
.blog-list .subnav-link
355+
width 210px
356+
overflow hidden
357+
text-overflow ellipsis
358+
white-space nowrap
359+
340360
.example-nav
341361
margin-top 18px
342362
+media--768()

themes/exokit/source/css/secondary.styl

+17
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,9 @@ a
223223
.post__projects-text
224224
li p
225225
display inline
226+
.blog-attribution
227+
border none
228+
color $medium
226229

227230
.post__timestamp
228231
font-weight 500
@@ -237,6 +240,9 @@ a
237240
p
238241
margin 0
239242

243+
.content--blog h1 + .post--listing
244+
margin-top 9px /* To align the borders nicely since there's no visible <h1>. */
245+
240246
.post--listing + .post--listing
241247
margin-top 30px
242248

@@ -441,6 +447,14 @@ video
441447
.docs-header + blockquote
442448
margin 4em 0 2em
443449

450+
.blog-subnav a
451+
font-size: 15px;
452+
line-height: 1.8;
453+
max-width: 100%;
454+
overflow: hidden;
455+
text-overflow: ellipsis;
456+
white-space: nowrap;
457+
444458
[data-is-mobile="true"] #docs-version
445459
border 1px solid #CCC
446460

@@ -535,6 +549,9 @@ video
535549
text-overflow ellipsis
536550
white-space nowrap
537551

552+
.content--blog .page__title
553+
margin-bottom 7px
554+
538555
.logo__wordmark
539556
margin-bottom 20px
540557

0 commit comments

Comments
 (0)