diff --git a/index-mobile.html b/index-mobile.html deleted file mode 100644 index b7dd033..0000000 --- a/index-mobile.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - Greg Shuflin — Software Developer - - - - - - -
-
- -
-
-
- Self-photo -
-
-

About me

-

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. - -

I've shipped code in Rust, Python, - C/C++, Ruby (on Rails), - Scala, Elm, and Haskell. - My educational credentials are B.A.s in Linguistics, - Computer Science and Japanese from the - University of California, Berkeley. 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, Idris for a living one day. - -

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. -

-
-

Open-source contributions

- -

My professional Github profile is @gshuflin. I have - used @neunenak 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 Gitea instance at code.everydayimshuflin.com, to - reduce my dependency on cloud services I have no control over. - -

    - -
  • As part of my work at Toolchain Labs, I was a contributor - to the Pants 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.
  • - -
  • I maintain a typst package - leipzig-glossing - for typesetting linguistic interlinear glosses according to the Leipzig Glossing - Rules.
  • - -
  • I'm a user of and occasional - contributor to the just - command runner, written in Rust.
  • - - -
  • A wrote a quick and dirty parser combinator - library in Rust, mostly as a proof of concept. I'd like to see if I can incorporate some of the - ideas from the paper - Efficient parsing with parser combinators to make it faster.
  • - - -
  • I contributed a basic Vim - plugin for the Koka language, - an research programming language experimenting with the very neat idea of - algebraic effect systems.
  • - -
  • I wrote a simple Rust command line program for - for highlighting stderr console output, 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 crates.io.
  • - -
-
-
-

Some personal projects

-

A few side projects I've worked on that I think are particularly interesting.

- -
-

Schala

- -

I've been interested in programming language implementations since my college compilers class, - and interested in type theory ever since I learned about Haskell. - Schala 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. -

- -
-

Browser games

-

These are all open-source collabrations with - Alex Nisnevich and several - other occasional contributors. -

    -
  • Untrusted - (code) - - 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 Alex Nisnevich - are the two primary developers. - An early version of the game won first place in - the Spring 2013 Berkeley CSUA hackathon. - -
  • - - Asshole Transit Bureaucrat 2015 - - - entry for the Ludum Dare 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 - Elm, a Haskell-like pure functional - language that compiles to Javascript/HTML. -
  • - -
  • - Kalevala - - - (code) - - - 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 fairly-simple Haskell server. - -
  • -
-
-
-

Other projects

-
    -
  • SNES Assembly language: some experiments in writing - custom ROMs in the assembly language used by the Super Nintendo/Super Famicom/SNES. -
  • -
-
-
-
-
- - diff --git a/index.html b/index.html index 1a68eef..f2edad1 100644 --- a/index.html +++ b/index.html @@ -1,190 +1,173 @@ - + + Greg Shuflin — Software Developer - Greg Shuflin - Software Developer - - - -
-
-
-

Greg Shuflin - Software Developer

-
- -

About me

- -

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. - -

I've shipped code in Rust, Python, - C/C++, Ruby (on Rails), - Scala, Elm, and Haskell. - My educational credentials are B.A.s in Linguistics, - Computer Science and Japanese from the - University of California, Berkeley. 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, Idris for a living one - day. - -

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. - - -

Open-source contributions

- -

My professional Github profile is @gshuflin. I have - used @neunenak 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 Gitea instance at code.everydayimshuflin.com, to - reduce my dependency on cloud services I have no control over. - -

- - - -

Some personal projects

-

A few side projects I've worked on - that I think are particularly interesting. - -

-

Schala

- -

I've been interested in programming language implementations since my college compilers class, - and interested in type theory ever since I learned about Haskell. - Schala 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. -

- -
-

Browser games

-

These are all open-source collabrations with - Alex Nisnevich and several - other occasional contributors. -

-
- -
-

Other projects

- - -
-
- + diff --git a/style-mobile.css b/style-mobile.css deleted file mode 100644 index e02c5c0..0000000 --- a/style-mobile.css +++ /dev/null @@ -1,74 +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 { - 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; -} -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; - } -} - diff --git a/style.css b/style.css index 2fb252f..e02c5c0 100644 --- a/style.css +++ b/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; + } +} +