summaryrefslogtreecommitdiff
path: root/src/pages/projects.js
blob: 8ee306c0a0f191ed71381bda7d511929119e5b3a (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
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: 'I tried to make a really fast snake',
    url: '//github.com/nvandoorn/cnaked'
  },
  {
    name: 'naive',
    brief: 'A naive implementation of a NoSQL database',
    date: 'Jan 2019 - Present',
    desc:
      'Use this database in prod and you will be on the news for the wrong reasons',
    url: '//github.com/nvandoorn/naive',
    showOnCv: true
  },
  {
    name: 'Pipefitter',
    brief: 'Automated audits and monitoring for your ISP',
    date: 'Nov 2018 - Present',
    desc: `My home internet performance is really bad and my ISP never believes me.
          Hopefully they will soon. Designed for maximum plug-ability`,
    url: '//github.com/nvandoorn/pipefitter',
    showOnCv: true
  },
  {
    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.`,
    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: `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.`,
    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: `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).`,
    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: `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.`,
    inProd: true,
    url: ''
  },
  {
    name: 'Legato Camera Driver',
    brief: 'Support for the VC0706 camera on a Legato based project',
    date: 'Nov 2017 - Dec 2017',
    desc: `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).`,
    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: (
      <>
        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>.
      </>
    ),
    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>
)