Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion content/contact.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,4 @@ template = "page.html"
[extra]
+++

Get in touch by emailing hello [at] (n0.computer)
Get in touch by emailing hello [at] (n0.computer) or by [booking a meeting](https://cal.com/team/number-0/n0-protocol-services)
2 changes: 1 addition & 1 deletion content/n0ps.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
+++
title = "number 0 protocol services"
title = "number 0 services"
description = "Build on the edge with the team that lives there"
template="n0ps.html"
+++
17 changes: 4 additions & 13 deletions content/roles/_index.md → content/people/_index.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
+++
title = "Work with number 0"
description = "Open positions"
title = "People"
description = "One of the very few teams with a proven track record of shipping direct connection topologies in production apps"

# Template to use to render this section page.
template = "roles/index.html"
template = "people/index.html"

# The given template is applied to ALL pages below the section, recursively.
# If you have several nested sections, each with a page_template set, the page
# will always use the closest to itself.
# However, a page's own `template` variable will always have priority.
# Not set by default.
page_template = "roles/page.html"
# page_template =

# The date of the post.
# Two formats are allowed: YYYY-MM-DD (2012-10-02) and RFC3339 (2002-10-02T15:00:00Z).
Expand Down Expand Up @@ -52,12 +52,3 @@ aliases = []
in_search_index = true

+++

## Open Roles at number 0

### We have no open roles at this time.

Rather than leave "ghost roles" open that we don't intend to fill, we're opting to keep this page empty. If you're a truly standout human & think you'd be an incredible fit for out team, please reach out via email to "hello" at this website, or thorugh the iroh discord. Nearly all of our team has come to us thorugh "the passion door", instead of having an explicit role they applied for.

Thanks,
The number 0 team
6 changes: 6 additions & 0 deletions content/people/asmir-avdicevic.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
+++
title = "Asmir Avdicevic"
description = "arqu"
+++

Asmir enjoys geeking around with software and hardware. Putting together things from the home work bench and home lab up all the way into the cloud. At n0 you will usually find him on the metrics and ops side of things but also likes to take a stroll through the odd corners and problems.
6 changes: 6 additions & 0 deletions content/people/brendan-obrien.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
+++
title = "Brendan O'Brian"
description = "b5"
+++

Brendan is passionate about distributed systems, improving the internet, and making technical concepts accessible through storytelling. His main job at number 0 is copy-pasting links to documents.
6 changes: 6 additions & 0 deletions content/people/diva-martinez.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
+++
title = "Diva Martínez"
description = "divagant-martian"
+++

Diva loves to work close to computers. She's been doing protocol work the last years and it's her main role at n0.
6 changes: 6 additions & 0 deletions content/people/floris-bruynooghe.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
+++
title = "Floris Bruynooghe"
description = "flub"
+++

Floris enjoys working on the least user-visible engineering problems. At n0 he obsesses over exactly how to shuffle bytes over the many wires of the internet. He hopes you never noticed.
6 changes: 6 additions & 0 deletions content/people/franz-heinzmann.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
+++
title = "Franz Heinzmann"
description = "Frando"
+++

Franz came to n0 from ever-unfinished efforts to make peer-to-peer tools work for grassroots media. He’s relieved to finally build solid foundations for real this time. When not busy with iroh core development, he’s probably creating a demo or protocol prototype to bring iroh into new areas.
6 changes: 6 additions & 0 deletions content/people/friedel-ziegelmayer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
+++
title = "Friedel Ziegelmayer"
description = "dignifiedquire"
+++

Dig is in a deep love and hate relationship with computers for over 20 years, and continues to engage with them for reasons unknown to him. At n0 he tries to make sure that not the computers but the good humans come out on top at the end, because he still believes that computers are meant to make our lifes better.
6 changes: 6 additions & 0 deletions content/people/kasey-huizinga.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
+++
title = "Kasey Huizinga"
description = "ramfox"
+++

Kasey enjoys working with smart folks on difficult engineering problems that solve real issues. Her primary responsibilities at n0 are wrangling releases and people.
6 changes: 6 additions & 0 deletions content/people/philipp-kruger.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
+++
title = "Philipp Krüger"
description = "matheus23"
+++

Philipp took a long walk through many programming-related interests from game development to frontend to functional programming to cryptography, but nowadays writes networking software. When he joined, he helped make iroh run in browsers and now is the person everyone else trusts too much to touch the cryptographic bits. Occasionally he might disappear into the nearest forest for a trail run.
6 changes: 6 additions & 0 deletions content/people/rae-mckelvey.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
+++
title = "Rae McKelvey"
description = "okdistrubte"
+++

Rae is passionate about helping people build great technology that works anytime, anywhere — even with disrupted service, dead zones, or hostile infrastructure. At n0, Rae focuses on growth and adoption.
6 changes: 6 additions & 0 deletions content/people/rudiger-klaehn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
+++
title = "Rüdiger Klaehn"
description = "rklaehn"
+++

Rüdiger likes simple things that work. He is so stubborn that he continues to work on a problem until he considers it solved. At n0 he has the opportunity to do just that for content-addressed storage and peer to peer networking. He did space stuff in the past and still likes to watch rocket launches with his 4 kids.
106 changes: 106 additions & 0 deletions js/site.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
document.addEventListener("DOMContentLoaded", function() {
// ---------------- Selected Navbar Link -------------------------
let navbar_links = document.querySelectorAll('.nav-links a');
let trim_last_slash = window.location.href.replace(/\/$/, '');
let selected_navbar_link = [...navbar_links].filter((item) => {
return ((item.href === trim_last_slash) || (item.href === window.location.href))
})
if (selected_navbar_link.length !== 0) {
for (let element of selected_navbar_link) {
element.className = "bg-gray-900 text-white px-3 py-2 rounded-md text-sm font-medium"
}
}

document.getElementById('toggle-sidebar')?.addEventListener('click', toggleSidebar);


document.getElementById('toggle-mobile-menu')?.addEventListener('click', toggleMobileMenu);

// Products dropdown (desktop)
const prodToggle = document.getElementById('toggle-products-dropdown');
const prodMenu = document.getElementById('products-dropdown');
if (prodToggle && prodMenu) {
console.debug('Products dropdown initialized', {prodToggle, prodMenu});
prodToggle.addEventListener('click', function(e) {
console.debug('Products toggle clicked');
e.stopPropagation();
const isOpen = prodMenu.classList.contains('hidden') === false;
if (isOpen) {
prodMenu.classList.add('hidden');
prodMenu.setAttribute('aria-hidden', 'true');
prodToggle.setAttribute('aria-expanded', 'false');
} else {
prodMenu.classList.remove('hidden');
prodMenu.setAttribute('aria-hidden', 'false');
prodToggle.setAttribute('aria-expanded', 'true');
}
});

// Close when clicking outside
document.addEventListener('click', function(e) {
if (!prodMenu.classList.contains('hidden')) {
if (!prodMenu.contains(e.target) && !prodToggle.contains(e.target)) {
prodMenu.classList.add('hidden');
prodMenu.setAttribute('aria-hidden', 'true');
prodToggle.setAttribute('aria-expanded', 'false');
}
}
});

// Close on escape
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape') {
if (!prodMenu.classList.contains('hidden')) {
prodMenu.classList.add('hidden');
prodMenu.setAttribute('aria-hidden', 'true');
prodToggle.setAttribute('aria-expanded', 'false');
}
}
});
}
});

function switchTheme() {
let current_theme = ([...document.documentElement.classList].includes('dark')) ? 'dark' : 'light';
if (current_theme === 'dark') {
localStorage.theme = 'light';
document.documentElement.classList.remove('dark');
document.getElementById('light').classList.add('hidden');
document.getElementById('dark').classList.remove('hidden');
document.getElementById("syntax_highlight").href = "/syntax-light.css";
} else {
localStorage.theme = 'dark';
document.documentElement.classList.add('dark');
document.getElementById('dark').classList.add('hidden');
document.getElementById('light').classList.remove('hidden');
document.getElementById("syntax_highlight").href = "/syntax-dark.css";
}
}

function toggleSidebar() {
let sidebar = document.getElementById('sidebar');
if ([...sidebar.classList].includes('translate-x-0')) {
document.body.style.removeProperty("overflow")
sidebar.classList.remove('translate-x-0')
sidebar.classList.add('-translate-x-full')
} else {
document.body.style.setProperty("overflow", "hidden")
sidebar.classList.remove('-translate-x-full')
sidebar.classList.add('translate-x-0')
}
}

function toggleMobileMenu() {
let menu = document.querySelector('#mobile-menu div.nav-links');
if ([...menu.classList].includes('h-screen')) {
document.body.classList.remove("overflow-hidden", "relative")
document.documentElement.classList.remove("overscroll-none",)
menu.classList.remove('h-screen')
menu.classList.add('h-0')
} else {
document.body.classList.add("overflow-hidden", "relative")
document.documentElement.classList.add("overscroll-none",)
menu.classList.remove('h-0')
menu.classList.add('h-screen')
}
}
43 changes: 43 additions & 0 deletions src/js/site.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,49 @@ document.addEventListener("DOMContentLoaded", function() {


document.getElementById('toggle-mobile-menu')?.addEventListener('click', toggleMobileMenu);

// Products dropdown (desktop)
const prodToggle = document.getElementById('toggle-products-dropdown');
const prodMenu = document.getElementById('products-dropdown');
if (prodToggle && prodMenu) {
console.debug('Products dropdown initialized', {prodToggle, prodMenu});
prodToggle.addEventListener('click', function(e) {
console.debug('Products toggle clicked');
e.stopPropagation();
const isOpen = prodMenu.classList.contains('hidden') === false;
if (isOpen) {
prodMenu.classList.add('hidden');
prodMenu.setAttribute('aria-hidden', 'true');
prodToggle.setAttribute('aria-expanded', 'false');
} else {
prodMenu.classList.remove('hidden');
prodMenu.setAttribute('aria-hidden', 'false');
prodToggle.setAttribute('aria-expanded', 'true');
}
});

// Close when clicking outside
document.addEventListener('click', function(e) {
if (!prodMenu.classList.contains('hidden')) {
if (!prodMenu.contains(e.target) && !prodToggle.contains(e.target)) {
prodMenu.classList.add('hidden');
prodMenu.setAttribute('aria-hidden', 'true');
prodToggle.setAttribute('aria-expanded', 'false');
}
}
});

// Close on escape
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape') {
if (!prodMenu.classList.contains('hidden')) {
prodMenu.classList.add('hidden');
prodMenu.setAttribute('aria-hidden', 'true');
prodToggle.setAttribute('aria-expanded', 'false');
}
}
});
}
});

function switchTheme() {
Expand Down
Binary file added static/img/Github_logo_svg.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading