import React from 'react'
import Layout from '../components/layout'
import { Project } from '../components/project'
import camera from '../images/camera.png'
import gpsMonitor from '../images/gps-monitor.png'
import slask from '../images/slask.png'
import cnakedTestSuite from '../images/cnaked-test-suite.png'
import naiveChat from '../images/naive-chat.png'
export const projects = [
{
name: 'sunlight-theme',
url: 'https://github.com/nvandoorn/sunlight-theme',
brief: 'A theme provider for current level of sunlight',
date: 'April 2019',
projectDetails: [
{
listItems: [
<>
Component to provide the level of sunlight to all children using{' '}
emotion-theming
>,
<>
Support for mapping sunlight level to theme (middleware
{' '}
prop)
>,
<>
Small wrapper around{' '}
use-sunlight
>
]
}
]
},
{
name: 'use-sunlight',
url: 'https://github.com/nvandoorn/use-sunlight',
brief: 'A React hook for the current level of sunlight',
date: 'March 2019',
showOnCv: true,
projectDetails: [
{
listItems: [
<>
Based on{' '}
useLocation
>,
'Tested with Storybook and Jest',
<>
Useful for theme providers such as{' '}
emotion-theming
>
]
}
]
},
{
name: 'cnaked',
brief: (
<>
A Battlesnake so close to the
metal, 6 CVEs have been opened while reading
>
),
date: 'Feb 2019 - Present',
url: 'https://github.com/nvandoorn/cnaked',
projectDetails: [
{
listItems: [
`Prototype for Battlesnake 2019, will be entered in contest in 2020`,
`Dangerously close to the metal`,
`All in on test driven development`,
'Likely to be re-written in Rust'
],
images: [
{
imgUrl: cnakedTestSuite,
caption: 'cnaked Test Suite'
}
]
}
]
},
{
name: 'naive',
brief: 'A naive implementation of a NoSQL database',
date: 'Jan 2019 - Present',
projectDetails: [
{
listItems: [
'Designed to mimic the Firebase Realtime Database API',
'Written in TypeScript for the browser and Node',
'Code organized as monorepo with independent builds and integration tests',
'Can be used with a local filesystem or remote filesystem',
`Persisted in a static JSON file (don't use this in prod)`
],
images: [
{
imgUrl: naiveChat,
caption: 'Chat Client Using Naive'
}
]
}
],
url: 'https://github.com/nvandoorn/naive'
},
{
name: 'Pipefitter',
brief: 'Automated audits and monitoring for your ISP',
date: 'Nov 2018 - Present',
desc: `My home internet performance is consistently below spec and my ISP never
believes me. Hopefully they will soon. Designed for maximum
plug-ability.`,
url: 'https://github.com/nvandoorn/pipefitter'
},
{
name: 'funCtional',
brief: 'Functional programming in C with statically allocated memory',
date: 'Aug 2018',
desc: `I like functional programming and I like C, so I tried to combine the
two. In reality, a simple for loop is better, but I had fun trying this.`,
inProd: true,
url: 'https://github.com/nvandoorn/functional'
},
{
name: 'Legato Storage Service',
brief: 'Non-volatile time series data storage',
date: 'Jun 2018 - Feb 2019',
desc: `A service that provide non-volatile storage for time series data.
All reads and writes are multi-process safe so this service is useful for when
one service is logging data and another is sending data.`,
url: 'https://github.com/brnkl/legato-storage-service'
},
{
name: 'Legato GPS Monitor',
showOnCv: true,
brief:
'Monitor GPS in a separate process to avoid blocking single threaded apps',
date: 'April 2018',
projectDetails: [
{
listItems: [
'Allow single threaded apps to read the latest position without blocking',
'Dynamically poll and cache GPS location based on accuracy',
'Expose GPS API as synchronous methods reading from cache'
],
images: [
{
imgUrl: gpsMonitor,
caption: 'GPS Monitor with BRNKL App',
noShadow: true
}
]
}
],
inProd: true,
url: 'https://github.com/brnkl/gps-monitor'
},
{
name: 'CF3 Config App',
brief: 'Automatically configure common settings for CF3 based modules',
date: 'April 2018',
desc: `Automatically configure Sierra Wireless CF3 based modules for
common GPIO and UART configurations.`,
inProd: true,
url: 'https://github.com/brnkl/cf3-config'
},
{
name: 'Legato Camera Driver',
brief: 'Support for the VC0706 camera on a Legato based project',
date: 'Nov 2017 - Dec 2017',
projectDetails: [
{
listItems: [
'Port of an Arduino style driver to Linux',
'Integrated with Sierra Wireless Legato Framework',
'In use with Sierra Wireless customers (see forums)'
],
images: [
{
imgUrl: camera,
caption: 'Camera Driver with BRNKL App',
noShadow: true
}
]
}
],
inProd: true,
url: 'https://github.com/brnkl/VC0706-cam-lib',
showOnCv: true
},
{
name: 'ccss',
brief: 'A slightly more polite variant of CSS',
date: 'Jul 2017',
desc: `ccss transforms the correct spelling of colour to color in your CSS. This was intended
to be part one of a series of awful CSS transforms.`,
url: 'https://github.com/nvandoorn/ccss'
},
{
name: 'slask',
brief: 'A lightweight log viewer and server all in one',
date: 'March 2017 - Present',
url: 'https://github.com/nvandoorn/slask',
projectDetails: [
{
listItems: [
'Log server implemented run in Node',
'Log client implemented with React',
'Support for custom configs and custom log parsing'
],
images: [
{
imgUrl: slask,
caption: 'slask Client Screenshot'
}
]
}
]
},
{
name: 'IE Media Queries',
brief: 'Support media queries in Internet Explorer 8',
date: 'April 2013',
desc: `IE Media Queries is a Javascript polyfill for Internet Explorer 8's lack of
media query support. IE8 is more or less dead and unsupported, but I still
enjoyed re-creating unsupported functionality`,
url: 'https://github.com/nvandoorn/IEMediaQueries'
},
{
name: 'times-table-tester',
brief: 'Code is easier than mental math',
date: 'March 2007',
url: 'https://github.com/nvandoorn/times-table-tester',
desc: 'In 6th grade I made command line app to quiz myself on times tables.'
}
]
export default () => (
{projects.map(project => (
))}
)