summaryrefslogtreecommitdiff
path: root/src/pages/projects.js
blob: 0c55834ac90d4f086f9c0070798b1413358094bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
import React from 'react'

import Layout from '../components/layout'
import { Project } from '../components/project'

import functional from '../images/functional.png'
import camera from '../images/camera.png'
import storageService from '../images/storage-service.png'
import gpsMonitor from '../images/gps-monitor.png'
import slask from '../images/slask.png'
import ie from '../images/ie.png'

export const projects = [
  {
    name: 'cnaked',
    brief:
      'A Battlesnake so close to the metal, 6 CVEs have been opened while reading',
    date: 'Feb 2019 - Present',
    desc: (
      <p>
        A fast snake where everything is implemented by hand in C to perform a
        fast traversal of all possible game states. The implementation is still
        unfinished but I hope to enter it in the Battlesnake 2020 competition.
      </p>
    ),
    url: '//github.com/nvandoorn/cnaked'
  },
  {
    name: 'naive',
    brief: 'A naive implementation of a NoSQL database',
    date: 'Jan 2019 - Present',
    desc: (
      <p>
        A small realtime NoSQL database that can be used locally or over a
        network. The public interface for this database mimic that of the
        Firebase Realtime Database and data is persisted using a static JSON
        file. For that reason, I do not suggest using this in production.
      </p>
    ),
    url: '//github.com/nvandoorn/naive',
    showOnCv: true
  },
  {
    name: 'Pipefitter',
    brief: 'Automated audits and monitoring for your ISP',
    date: 'Nov 2018 - Present',
    desc: (
      <p>
        My home internet performance is consistently below spec and my ISP never
        believes me. Hopefully they will soon. Designed for maximum plug-ability
      </p>
    ),
    url: '//github.com/nvandoorn/pipefitter',
    showOnCv: true
  },
  {
    name: 'funCtional',
    brief: 'Functional programming in C with statically allocated memory',
    date: 'Aug 2018',
    desc: (
      <p>
        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.
      </p>
    ),
    imgUrl: functional,
    inProd: true,
    url: '//github.com/nvandoorn/functional'
  },
  {
    name: 'Legato Storage Service',
    brief: 'Non-volatile time series data storage',
    date: 'Jun 2018 - Present',
    imgUrl: storageService,
    desc: (
      <p>
        The Legato Linux framework offers out of the box support for uploading
        time series data, but not storing it locally. For this reason, we
        created this service to persist data for offline cases.
      </p>
    ),
    url: '//github.com/brnkl/legato-storage-service'
  },
  {
    name: 'Legato GPS Monitor',
    brief:
      'Monitor GPS in a separate process to avoid blocking single threaded apps',
    date: 'April 2018',
    imgUrl: gpsMonitor,
    desc: (
      <p>
        Instead of managing and synchronizing a thread to monitor GPS location
        on embedded devices, this service asynchronously monitors the GPS
        position and allows users to retrieve it using an inter process API (see
        more about Legato IPC APIs here).
      </p>
    ),
    inProd: true,
    url: '//github.com/brnkl/gps-monitor',
    showOnCv: true
  },
  {
    name: 'CF3 Config App',
    brief: 'Automatically configure common settings for CF3 based modules',
    date: 'April 2018',
    desc: (
      <p>
        Sierra Wireless offers a range of cellular modules based on a common
        socket with a common set of inputs and outputs.A range of commonly used
        input / output pins and UART connections must be configured by running
        an AT command over a serial connection to the CF3 based modem.Run this
        app once and the CF3 based module will support the full range of GPIO
        pins and UARTs in the Linux userspace.
      </p>
    ),
    inProd: true,
    url: ''
  },
  {
    name: 'Legato Camera Driver',
    brief: 'Support for the VC0706 camera on a Legato based project',
    date: 'Nov 2017 - Dec 2017',
    desc: (
      <p>
        The VC0706 camera is one of the only low power remote cameras with an
        open protocol (serial port based).The seller, Adafruit, supplies open
        source drivers implemented in Python and C++ with the purpose of running
        on Arduino based systems. This means a dependency on certain Arduino
        libraries for reading and writing to the serial port. We re-implemented
        the C++ driver in C without the dependence on anything not included in
        Linux (with the exception of a few Legato specific macros).
      </p>
    ),
    imgUrl: camera,
    inProd: true,
    url: '//github.com/brnkl/VC0706-cam-lib',
    showOnCv: true
  },
  {
    name: 'ccss',
    brief: 'A slightly more polite variant of CSS',
    date: 'Jul 2017',
    links: '',
    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.`,
    imgUrl: '',
    url: '//github.com/nvandoorn/ccss'
  },
  {
    name: 'slask',
    brief: 'A lightweight log viewer and server all in one',
    date: 'Mar 2017 - Present',
    desc: (
      <p>
        slask is designed to make remote systems debugging easy. During my time
        at Forest Technology Systems (FTS), we worked on a remote weather
        station based on a single board Linux computer. During the early days, I
        spent large amounts of time transferring and filtering log files using a
        mix of <em>scp</em>, <em>grep</em>, and <em>less</em>.
      </p>
    ),
    imgUrl: slask,
    url: '//github.com/nvandoorn/slask'
  },
  {
    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`,
    imgUrl: ie,
    url: '//github.com/nvandoorn/IEMediaQueries'
  }
]

export default () => (
  <Layout>
    {projects.map(project => (
      <Project {...project} key={project.name} />
    ))}
  </Layout>
)