Compare commits
4 Commits
responsive
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
aa1875cc75 | ||
|
d8e3848563 | ||
|
cd37aa2a0d | ||
|
d3446bffcc |
@ -1,111 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Greg Shuflin — Software Developer</title>
|
||||
<meta charset='utf-8'>
|
||||
<meta name='viewport' content='width=device-width'>
|
||||
<link href="style-mobile.css" rel="stylesheet">
|
||||
<link rel="icon" type="image/x-icon" href="favicon.png">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header>
|
||||
<div class="links">
|
||||
<h1>Greg Shuflin — Software Developer</h1>
|
||||
<ul>
|
||||
<li>Download <a href="./resume/Greg-Shuflin-Resume.pdf">my resume</a></li>
|
||||
<li>Contact me:
|
||||
<ul>
|
||||
<li><a class="emailLink" href="mailto:greg.shuflin+developerportfolio@protonmail.com">greg.shuflin@protonmail.com</a></li>
|
||||
<li><a href='https://www.linkedin.com/in/gregshuflin/'>LinkedIn</a></li>
|
||||
<li><a href="nostr:npub1t4tqw45837fzs0589jqqna0s5wcmzstnsvw2vlrj7934w9l25sgsgnjcsl">Nostr </a>
|
||||
<code class="nostrPubkey">npub1t4tqw45837fzs0589jqqna0s5wcmzstnsvw2vlrj7934w9l25sgsgnjcsl</code>
|
||||
</li>
|
||||
<!--
|
||||
<li>
|
||||
<p>SSH public key:
|
||||
<code>ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBYZzw9jdXezBuENVPZ+p3FipNN2gT9BUo7nlCTIqLhE</code>
|
||||
</li>
|
||||
-->
|
||||
</ul>
|
||||
</div>
|
||||
<div class="photo">
|
||||
<img src='self.jpg' alt='Self-photo'>
|
||||
</div>
|
||||
</header>
|
||||
<main>
|
||||
<section>
|
||||
<h2>About me</h2>
|
||||
<p>I'm a software engineer with broad expertise across several different
|
||||
disciplines of industry software development, particularly network
|
||||
programming, full-stack web development, all things cryptocurrency, and
|
||||
modern cloud-focused devops/Unix systems administration. On the side, I
|
||||
dabble in 3d graphics, functional programming/type theory, programming
|
||||
language design, and mucking about with microcontrollers.
|
||||
|
||||
<p>I've shipped code in <strong>Rust</strong>, <strong>Python</strong>,
|
||||
<strong>C/C++</strong>, <strong>Ruby</strong> (on Rails),
|
||||
<strong>Scala</strong>, <strong>Elm</strong>, and <strong>Haskell</strong>.
|
||||
My educational credentials are B.A.s in <strong>Linguistics</strong>,
|
||||
<strong>Computer Science</strong> and <strong>Japanese</strong> from the
|
||||
<strong>University of California, Berkeley</strong>. My language of choice
|
||||
for most sorts of software project is Rust these days, but there's a whole
|
||||
wide world out there of interesting developments in programming language
|
||||
research - I'd love to write, say, <a href="https://www.idris-lang.org/">Idris</a> for a living one day.
|
||||
|
||||
<p>My passion as a software developer is software correctness - I think the
|
||||
industry as a whole places too little emphasis on writing software that does
|
||||
the right thing from the beginning. I want to use the best tools and
|
||||
practices available to write software that is easily maintainable and
|
||||
minimizes bugs from the start of a project onwards.
|
||||
</section>
|
||||
<section>
|
||||
<h2>Open-source contributions</h2>
|
||||
|
||||
<p>My professional Github profile is <a href="https://github.com/gshuflin">@gshuflin</a>. I have
|
||||
used <a href="https://github.com/neunenak">@neunenak</a> as a personal Github profile in the past, and still use it
|
||||
for contributing to projects that use Github as their main git repository host. I've moved most of my personal code
|
||||
to a self-hosted <a href="https://gitea.com">Gitea</a> instance at <a href="https://code.everydayimshuflin.com/greg">code.everydayimshuflin.com</a>, to
|
||||
reduce my dependency on cloud services I have no control over.
|
||||
|
||||
<ul>
|
||||
|
||||
<li>As part of my work at Toolchain Labs, I was a <a href="https://github.com/pantsbuild/pants/commits?author=gshuflin">contributor</a>
|
||||
to the <a href="https://www.pantsbuild.org/">Pants</a> build system.
|
||||
Much of my work on this project involved porting the codebase from a
|
||||
legacy Python execution engine to a modern and more performant Rust
|
||||
execution engine.</li>
|
||||
|
||||
<li>I maintain a <a href="https://github.com/typst/typst">typst</a> package
|
||||
<a href="https://code.everydayimshuflin.com/greg/typst-lepizig-glossing">leipzig-glossing</a>
|
||||
for typesetting linguistic interlinear glosses according to the Leipzig Glossing
|
||||
Rules.</li>
|
||||
|
||||
<li>I'm a user of and <a href="https://github.com/casey/just/commits?author=neunenak">occasional
|
||||
contributor to</a> the <a href="https://github.com/casey/just">just</a>
|
||||
command runner, written in Rust.</li>
|
||||
|
||||
|
||||
<li>A wrote a quick and dirty <a href="https://code.everydayimshuflin.com/greg/rust-parser-combinator">parser combinator
|
||||
library</a> in Rust, mostly as a proof of concept. I'd like to see if I can incorporate some of the
|
||||
ideas from the paper <a href="https://research.rug.nl/en/publications/efficient-parsing-with-parser-combinators">
|
||||
Efficient parsing with parser combinators</a> to make it faster.</li>
|
||||
|
||||
|
||||
<li>I contributed a basic <a href="https://github.com/koka-lang/koka/pull/193/commits/ab290a41a4249450d9934a4c23d2b8ed7e98b448">Vim
|
||||
plugin</a> for the <a href="https://koka-lang.github.io/koka/doc/book.html">Koka</a> language,
|
||||
an research programming language experimenting with the very neat idea of
|
||||
algebraic effect systems.</li>
|
||||
|
||||
<li>I wrote a simple Rust command line program for <a href="https://github.com/neunenak/hilite">
|
||||
for highlighting stderr console output</a>, inspired by Mike Schiraldi's hilite utility, which
|
||||
I used at Meraki for making the actual errors more obvious in lengthy C++ compiler output. It
|
||||
is published on <a href="https://crates.io/crates/hilite">crates.io</a>.</li>
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
347
index.html
347
index.html
@ -1,190 +1,173 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<head>
|
||||
<title>Greg Shuflin — Software Developer</title>
|
||||
<meta charset='utf-8'>
|
||||
<meta name='viewport' content='width=device-width'>
|
||||
<title>Greg Shuflin - Software Developer</title>
|
||||
<link rel="icon" type="image/x-icon" href="favicon.png">
|
||||
<link href="style.css" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<div id='main'>
|
||||
<header>
|
||||
<div>
|
||||
<h1>Greg Shuflin - Software Developer</h1>
|
||||
<div class="important-links">
|
||||
<p>Download a copy of <a href="./resume/Greg-Shuflin-Resume.pdf">my resume</a>.
|
||||
|
||||
<p>Contact me via <a class="emailLink" href="mailto:greg.shuflin+developerportfolio@protonmail.com">greg.shuflin@protonmail.com</a>
|
||||
or <a href='https://www.linkedin.com/in/gregshuflin/'>LinkedIn</a>.
|
||||
|
||||
<p>My Nostr public key: <a href="nostr:npub1t4tqw45837fzs0589jqqna0s5wcmzstnsvw2vlrj7934w9l25sgsgnjcsl">
|
||||
npub1t4tqw45837fzs0589jqqna0s5wcmzstnsvw2vlrj7934w9l25sgsgnjcsl
|
||||
</a>
|
||||
|
||||
<p>SSH public key:
|
||||
<code>ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBYZzw9jdXezBuENVPZ+p3FipNN2gT9BUo7nlCTIqLhE</code>
|
||||
|
||||
|
||||
<p>See open-source code I've written:
|
||||
<ul>
|
||||
<li> <a href="https://github.com/gshuflin">@gshuflin</a> (professional GitHub account)
|
||||
<li> <a href="https://github.com/neunenak">@neunenak</a> (personal GitHub account)
|
||||
<li> <a href="https://code.everydayimshuflin.com/greg">code.everydayimshuflin.com</a> (self-hosted <a href="https://gitea.com/">Gitea</a> instance).
|
||||
</ul>
|
||||
<link rel="icon" type="image/x-icon" href="favicon.png">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header>
|
||||
<div class="links">
|
||||
<h1>Greg Shuflin — Software Developer</h1>
|
||||
<ul>
|
||||
<li>Download <a href="./resume/Greg-Shuflin-Resume.pdf">my resume</a></li>
|
||||
<li>Contact me:
|
||||
<ul>
|
||||
<li><a class="emailLink" href="mailto:greg.shuflin+developerportfolio@protonmail.com">greg.shuflin<wbr/>@protonmail.com</a></li>
|
||||
<li><a href='https://www.linkedin.com/in/gregshuflin/'>LinkedIn</a></li>
|
||||
<li><a href="nostr:npub1t4tqw45837fzs0589jqqna0s5wcmzstnsvw2vlrj7934w9l25sgsgnjcsl">Nostr </a>
|
||||
<code class="nostrPubkey">npub1t4tqw45837fzs0589jqqna0s5wcmzstnsvw2vlrj7934w9l25sgsgnjcsl</code>
|
||||
</li>
|
||||
<!--
|
||||
<li>
|
||||
<p>SSH public key:
|
||||
<code>ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBYZzw9jdXezBuENVPZ+p3FipNN2gT9BUo7nlCTIqLhE</code>
|
||||
</li>
|
||||
-->
|
||||
</ul>
|
||||
</div>
|
||||
</header>
|
||||
<main>
|
||||
<div class="photo">
|
||||
<img src='self.jpg' alt='Self-photo'>
|
||||
</div>
|
||||
<section>
|
||||
<h2>About me</h2>
|
||||
<p>I'm a software engineer with broad expertise across several different
|
||||
disciplines of industry software development, particularly network
|
||||
programming, full-stack web development, all things cryptocurrency, and
|
||||
modern cloud-focused devops/Unix systems administration. On the side, I
|
||||
dabble in 3d graphics, functional programming/type theory, programming
|
||||
language design, and mucking about with microcontrollers.
|
||||
|
||||
<p>I've shipped code in <strong>Rust</strong>, <strong>Python</strong>,
|
||||
<strong>C/C++</strong>, <strong>Ruby</strong> (on Rails),
|
||||
<strong>Scala</strong>, <strong>Elm</strong>, and <strong>Haskell</strong>.
|
||||
My educational credentials are B.A.s in <strong>Linguistics</strong>,
|
||||
<strong>Computer Science</strong> and <strong>Japanese</strong> from the
|
||||
<strong>University of California, Berkeley</strong>. My language of choice
|
||||
for most sorts of software project is Rust these days, but there's a whole
|
||||
wide world out there of interesting developments in programming language
|
||||
research - I'd love to write, say, <a href="https://www.idris-lang.org/">Idris</a> for a living one day.
|
||||
|
||||
<p>My passion as a software developer is software correctness - I think the
|
||||
industry as a whole places too little emphasis on writing software that does
|
||||
the right thing from the beginning. I want to use the best tools and
|
||||
practices available to write software that is easily maintainable and
|
||||
minimizes bugs from the start of a project onwards.
|
||||
</section>
|
||||
<section>
|
||||
<h2>Open-source contributions</h2>
|
||||
|
||||
<p>My professional Github profile is <a href="https://github.com/gshuflin">@gshuflin</a>. I have
|
||||
used <a href="https://github.com/neunenak">@neunenak</a> as a personal Github profile in the past, and still use it
|
||||
for contributing to projects that use Github as their main git repository host. I've moved most of my personal code
|
||||
to a self-hosted <a href="https://gitea.com">Gitea</a> instance at <a href="https://code.everydayimshuflin.com/greg">code.everydayimshuflin.com</a>, to
|
||||
reduce my dependency on cloud services I have no control over.
|
||||
|
||||
<ul>
|
||||
|
||||
<li>As part of my work at Toolchain Labs, I was a <a href="https://github.com/pantsbuild/pants/commits?author=gshuflin">contributor</a>
|
||||
to the <a href="https://www.pantsbuild.org/">Pants</a> build system.
|
||||
Much of my work on this project involved porting the codebase from a
|
||||
legacy Python execution engine to a modern and more performant Rust
|
||||
execution engine.</li>
|
||||
|
||||
<li>I maintain a <a href="https://github.com/typst/typst">typst</a> package
|
||||
<a href="https://code.everydayimshuflin.com/greg/typst-lepizig-glossing">leipzig-glossing</a>
|
||||
for typesetting linguistic interlinear glosses according to the Leipzig Glossing
|
||||
Rules.</li>
|
||||
|
||||
<li>I'm a user of and <a href="https://github.com/casey/just/commits?author=neunenak">occasional
|
||||
contributor to</a> the <a href="https://github.com/casey/just">just</a>
|
||||
command runner, written in Rust.</li>
|
||||
|
||||
|
||||
<li>A wrote a quick and dirty <a href="https://code.everydayimshuflin.com/greg/rust-parser-combinator">parser combinator
|
||||
library</a> in Rust, mostly as a proof of concept. I'd like to see if I can incorporate some of the
|
||||
ideas from the paper <a href="https://research.rug.nl/en/publications/efficient-parsing-with-parser-combinators">
|
||||
Efficient parsing with parser combinators</a> to make it faster.</li>
|
||||
|
||||
|
||||
<li>I contributed a basic <a href="https://github.com/koka-lang/koka/pull/193/commits/ab290a41a4249450d9934a4c23d2b8ed7e98b448">Vim
|
||||
plugin</a> for the <a href="https://koka-lang.github.io/koka/doc/book.html">Koka</a> language,
|
||||
an research programming language experimenting with the very neat idea of
|
||||
algebraic effect systems.</li>
|
||||
|
||||
<li>I wrote a simple Rust command line program for <a href="https://github.com/neunenak/hilite">
|
||||
for highlighting stderr console output</a>, inspired by Mike Schiraldi's hilite utility, which
|
||||
I used at Meraki for making the actual errors more obvious in lengthy C++ compiler output. It
|
||||
is published on <a href="https://crates.io/crates/hilite">crates.io</a>.</li>
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
<section>
|
||||
<h2>Some personal projects</h2>
|
||||
<p>A few side projects I've worked on that I think are particularly interesting.</p>
|
||||
|
||||
<section>
|
||||
<h3>Schala</h3>
|
||||
|
||||
<p>I've been interested in programming language implementations since my college compilers class,
|
||||
and interested in type theory ever since I learned about Haskell. <a href="https://code.everydayimshuflin.com/greg/schala">
|
||||
Schala</a> is a Rust framework I've been sporadically working on to give me a place to experiment with multiple programming
|
||||
language ideas, and also the name of the language I'm using this framework to implement. Schala is intended to be an
|
||||
expression-based functional-encouraging programming language using ML-style types with Rust-like syntax.
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Browser games</h3>
|
||||
<p> These are all open-source collabrations with
|
||||
<a href='https://github.com/AlexNisnevich'>Alex Nisnevich</a> and several
|
||||
other occasional contributors.
|
||||
<ul>
|
||||
<li><a href="https://alexnisnevich.github.io/untrusted/">Untrusted</a>
|
||||
<a href="https://github.com/AlexNisnevich/untrusted" class='codeLink'>(code)</a>
|
||||
- a Javascript roguelike. Every level is deliberately unbeatable, and
|
||||
the player must edit the source code of the level in order to progress.
|
||||
Me and <a href='https://github.com/AlexNisnevich'>Alex Nisnevich</a>
|
||||
are the two primary developers.
|
||||
An early version of the game won first place in
|
||||
the Spring 2013 Berkeley CSUA hackathon.
|
||||
|
||||
<li>
|
||||
<a href="https://github.com/neunenak/assholetransitbureaucrat2015">
|
||||
Asshole Transit Bureaucrat 2015
|
||||
</a>
|
||||
- entry for the <a href="https://ldjam.com/">Ludum Dare</a> 33 72-hour game jam (theme "you are the monster"),
|
||||
where the player takes on the role of a corrupt public transit bureaucrat
|
||||
who is paid-off by an evil ride-sharing corporation, and tasked with
|
||||
making the public bus system worse. Written in
|
||||
<a href='https://elm-lang.org/'>Elm</a>, a Haskell-like pure functional
|
||||
language that compiles to Javascript/HTML.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://alexnisnevich.github.io/kalevala/'>Kalevala</a>
|
||||
|
||||
<a href='https://github.com/AlexNisnevich/kalevala' class='codeLink'>
|
||||
(code)
|
||||
</a>
|
||||
- a two-player tile-placing game inspired by the board game
|
||||
Völuspá by Scott Caputo. The frontend is written in Elm, the backend
|
||||
is a <a href='https://github.com/neunenak/voluspa-server' class='codeLink'>fairly-simple Haskell server.</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section>
|
||||
<h3>Other projects</h3>
|
||||
<ul>
|
||||
<li><a href="https://code.everydayimshuflin.com/greg/SNES-ASM">SNES Assembly language</a>: some experiments in writing
|
||||
custom ROMs in the assembly language used by the Super Nintendo/Super Famicom/SNES.
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<div id='selfPhoto'>
|
||||
<img src='self.jpg' alt='Self-photo' width='240'>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<h2>About me</h2>
|
||||
|
||||
<p>I'm a software engineer with broad expertise across several different
|
||||
disciplines of industry software development, particularly network
|
||||
programming, full-stack web development, all things cryptocurrency, and
|
||||
modern cloud-focused devops/Unix systems administration. On the side, I
|
||||
dabble in 3d graphics, functional programming/type theory, programming
|
||||
language design, and mucking about with microcontrollers.
|
||||
|
||||
<p>I've shipped code in <strong>Rust</strong>, <strong>Python</strong>,
|
||||
<strong>C/C++</strong>, <strong>Ruby</strong> (on Rails),
|
||||
<strong>Scala</strong>, <strong>Elm</strong>, and <strong>Haskell</strong>.
|
||||
My educational credentials are B.A.s in <strong>Linguistics</strong>,
|
||||
<strong>Computer Science</strong> and <strong>Japanese</strong> from the
|
||||
<strong>University of California, Berkeley</strong>. My language of choice
|
||||
for most sorts of software project is Rust these days, but there's a whole
|
||||
wide world out there of interesting developments in programming language
|
||||
research - I'd love to write, say, <a
|
||||
href="https://www.idris-lang.org/">Idris</a> for a living one
|
||||
day.
|
||||
|
||||
<p>My passion as a software developer is software correctness - I think the
|
||||
industry as a whole places too little emphasis on writing software that does
|
||||
the right thing from the beginning. I want to use the best tools and
|
||||
practices available to write software that is easily maintainable and
|
||||
minimizes bugs from the start of a project onwards.
|
||||
|
||||
|
||||
<h2>Open-source contributions</h2>
|
||||
|
||||
<p>My professional Github profile is <a href="https://github.com/gshuflin">@gshuflin</a>. I have
|
||||
used <a href="https://github.com/neunenak">@neunenak</a> as a personal Github profile in the past, and still use it
|
||||
for contributing to projects that use Github as their main git repository host. I've moved most of my personal code
|
||||
to a self-hosted <a href="https://gitea.com">Gitea</a> instance at <a href="https://code.everydayimshuflin.com/greg">code.everydayimshuflin.com</a>, to
|
||||
reduce my dependency on cloud services I have no control over.
|
||||
|
||||
<ul>
|
||||
|
||||
<li>As part of my work at Toolchain Labs, I was a <a
|
||||
href="https://github.com/pantsbuild/pants/commits?author=gshuflin">contributor</a>
|
||||
to the <a href="https://www.pantsbuild.org/">Pants</a> build system.
|
||||
Much of my work on this project involved porting the codebase from a
|
||||
legacy Python execution engine to a modern and more performant Rust
|
||||
execution engine
|
||||
|
||||
<li>I maintain a <a href="https://github.com/typst/typst">typst</a> package
|
||||
<a href="https://code.everydayimshuflin.com/greg/typst-lepizig-glossing">leipzig-glossing</a>
|
||||
for typesetting linguistic interlinear glosses according to the Leipzig Glossing
|
||||
Rules.
|
||||
|
||||
<li>I'm a user of and <a
|
||||
href="https://github.com/casey/just/commits?author=neunenak">occasional
|
||||
contributor to</a> the <a href="https://github.com/casey/just">just</a>
|
||||
command runner, written in Rust.
|
||||
|
||||
|
||||
<li>A wrote a quick and dirty <a href="https://gitea.everydayimshuflin.com/greg/rust-parser-combinator">parser combinator
|
||||
library</a> in Rust, mostly as a proof of concept. I'd like to see if I can incorporate some of the
|
||||
ideas from the paper <a href="https://research.rug.nl/en/publications/efficient-parsing-with-parser-combinators">
|
||||
Efficient parsing with parser combinators</a> to make it faster.
|
||||
|
||||
|
||||
<li>I contributed a basic <a
|
||||
href="https://github.com/koka-lang/koka/pull/193/commits/ab290a41a4249450d9934a4c23d2b8ed7e98b448">Vim
|
||||
plugin</a> for the <a
|
||||
href="https://koka-lang.github.io/koka/doc/book.html">Koka</a> language,
|
||||
an research programming language experimenting with the very neat idea of
|
||||
algebraic effect systems.
|
||||
|
||||
<li>I wrote a simple Rust command line program for <a href="https://github.com/neunenak/hilite">
|
||||
for highlighting stderr console output</a>, inspired by Mike Schiraldi's hilite utility, which
|
||||
I used at Meraki for making the actual errors more obvious in lengthy C++ compiler output. It
|
||||
is published on <a href="https://crates.io/crates/hilite">crates.io</a>.
|
||||
|
||||
<!-- <li>I recently started porting the <a href="https://github.com/neunenak/sshfs">SSHFS</a> UNIX utility -->
|
||||
<!-- from C to Rust. -->
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<h2>Some personal projects</h2>
|
||||
<p>A few side projects I've worked on
|
||||
that I think are particularly interesting.
|
||||
|
||||
<div>
|
||||
<h3>Schala</h3>
|
||||
|
||||
<p>I've been interested in programming language implementations since my college compilers class,
|
||||
and interested in type theory ever since I learned about Haskell. <a href="https://gitea.everydayimshuflin.com/greg/schala">
|
||||
Schala</a> is a Rust framework I've been sporadically working on to give me a place to experiment with multiple programming
|
||||
language ideas, and also the name of the language I'm using this framework to implement. Schala is intended to be an
|
||||
expression-based functional-encouraging programming language using ML-style types with Rust-like syntax.
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h3>Browser games</h3>
|
||||
<p> These are all open-source collabrations with
|
||||
<a href='https://github.com/AlexNisnevich'>Alex Nisnevich</a> and several
|
||||
other occasional contributors.
|
||||
<ul>
|
||||
<li><a href="https://alexnisnevich.github.io/untrusted/">Untrusted</a>
|
||||
<a href="https://github.com/AlexNisnevich/untrusted" class='codeLink'>(code)</a>
|
||||
- a Javascript roguelike. Every level is deliberately unbeatable, and
|
||||
the player must edit the source code of the level in order to progress.
|
||||
Me and <a href='https://github.com/AlexNisnevich'>Alex Nisnevich</a>
|
||||
are the two primary developers.
|
||||
An early version of the game won first place in
|
||||
the Spring 2013 Berkeley CSUA hackathon.
|
||||
|
||||
<li>
|
||||
<a href="https://github.com/neunenak/assholetransitbureaucrat2015">
|
||||
Asshole Transit Bureaucrat 2015
|
||||
</a>
|
||||
- entry for the <a href="https://ldjam.com/">Ludum Dare</a> 33 72-hour game jam (theme "you are the monster"),
|
||||
where the player takes on the role of a corrupt public transit bureaucrat
|
||||
who is paid-off by an evil ride-sharing corporation, and tasked with
|
||||
making the public bus system worse. Written in
|
||||
<a href='https://elm-lang.org/'>Elm</a>, a Haskell-like pure functional
|
||||
language that compiles to Javascript/HTML.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://alexnisnevich.github.io/kalevala/'>Kalevala</a>
|
||||
|
||||
<a href='https://github.com/AlexNisnevich/kalevala' class='codeLink'>
|
||||
(code)
|
||||
</a>
|
||||
- a two-player tile-placing game inspired by the board game
|
||||
Völuspá by Scott Caputo. The frontend is written in Elm, the backend
|
||||
is a <a href='https://github.com/neunenak/voluspa-server' class='codeLink'>fairly-simple Haskell server.</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h3>Other projects</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="https://gitea.everydayimshuflin.com/greg/SNES-ASM">SNES Assembly language</a>: some experiments in writing
|
||||
custom ROMs in the assembly language used by the Super Nintendo/Super Famicom/SNES.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,61 +0,0 @@
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
padding: 0em 0.5em;
|
||||
background-color:#2B2B4D;
|
||||
color: white;
|
||||
font-family: "Fira Sans", sans-serif;
|
||||
font-size: 20px;
|
||||
line-height: 1.5;
|
||||
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 961px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
h1 {
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
code.nostrPubkey {
|
||||
display: none;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #f74848;
|
||||
font-weight:bolder;
|
||||
}
|
||||
a:visited {
|
||||
color:#f74848;
|
||||
}
|
||||
a.codeLink {
|
||||
color:#31E631;
|
||||
font-weight:normal;
|
||||
}
|
||||
a.emailLink {
|
||||
color:#31E631;
|
||||
font-family: "monospace";
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.photo img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
/* Desktop */
|
||||
@media only screen and (min-width: 961px) {
|
||||
code.nostrPubkey {
|
||||
display: revert;
|
||||
}
|
||||
}
|
||||
|
84
style.css
84
style.css
@ -1,62 +1,74 @@
|
||||
@import url(https://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic,700italic);
|
||||
|
||||
h1 {
|
||||
font-family: Ubuntu;
|
||||
}
|
||||
|
||||
@media (min-width: 600px) {
|
||||
header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
|
||||
#selfPhoto {
|
||||
margin-top: 20px;
|
||||
margin-right: 30px;
|
||||
}
|
||||
|
||||
@media (min-width: 80rem) {
|
||||
#main {
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
width:960px;
|
||||
}
|
||||
}
|
||||
|
||||
section.important-links {
|
||||
font-size: large;
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
padding: 0em 0.5em;
|
||||
background-color:#2B2B4D;
|
||||
color: white;
|
||||
font-family: "Fira Sans", sans-serif;
|
||||
font-size: 20px;
|
||||
line-height: 1.5;
|
||||
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
b {
|
||||
font-weight:bolder;
|
||||
.container {
|
||||
width: 100%;
|
||||
max-width: 961px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
h1 {
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
code.nostrPubkey {
|
||||
display: none;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #f74848;
|
||||
font-weight:bolder;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color:#f74848;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom:10px;
|
||||
}
|
||||
a.codeLink {
|
||||
color:#31E631;
|
||||
font-weight:normal;
|
||||
}
|
||||
|
||||
a.emailLink {
|
||||
color:#31E631;
|
||||
font-family: "monospace";
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.photo {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.photo img {
|
||||
width: 100%;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* Desktop */
|
||||
@media only screen and (min-width: 961px) {
|
||||
code.nostrPubkey {
|
||||
display: revert;
|
||||
}
|
||||
|
||||
.photo {
|
||||
float: right;
|
||||
width: 400px;
|
||||
margin: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user