~jzp/jzp.se

2522ca6ccad2b24e1add8e74e3d99144f2b91207 — Johan Persson 4 months ago master
Initial commit
A  => .gitignore +1 -0
@@ 1,1 @@
dist

A  => Makefile +19 -0
@@ 1,19 @@
BUCKET=jzp.se

all: index.html assets

clean:
	rm -rf dist

assets:
	mkdir -p dist
	cp -R assets/* dist

%.html: %.scrbl
	mkdir -p dist
	racket $< > dist/$@

upload: all
	aws s3 sync dist s3://$(BUCKET)

.PHONY: all clean assets upload

A  => assets/me.png +0 -0

A  => assets/normalize.css +473 -0
@@ 1,473 @@
/*! normalize.css 2012-01-31T16:06 UTC - http://github.com/necolas/normalize.css */

/* =============================================================================
   HTML5 display definitions
   ========================================================================== */

/*
 * Corrects block display not defined in IE6/7/8/9 & FF3
 */

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
nav,
section {
    display: block;
}

/*
 * Corrects inline-block display not defined in IE6/7/8/9 & FF3
 */

audio,
canvas,
video {
    display: inline-block;
    *display: inline;
    *zoom: 1;
}

/*
 * Prevents modern browsers from displaying 'audio' without controls
 */

audio:not([controls]) {
    display: none;
}

/*
 * Addresses styling for 'hidden' attribute not present in IE7/8/9, FF3, S4
 * Known issue: no IE6 support
 */

[hidden] {
    display: none;
}


/* =============================================================================
   Base
   ========================================================================== */

/*
 * 1. Corrects text resizing oddly in IE6/7 when body font-size is set using em units
 *    http://clagnut.com/blog/348/#c790
 * 2. Prevents iOS text size adjust after orientation change, without disabling user zoom
 *    www.456bereastreet.com/archive/201012/controlling_text_size_in_safari_for_ios_without_disabling_user_zoom/
 */

html {
    font-size: 100%; /* 1 */
    -webkit-text-size-adjust: 100%; /* 2 */
    -ms-text-size-adjust: 100%; /* 2 */
}

/* 
 * Addresses font-family inconsistency between 'textarea' and other form elements.
 */

html,
button,
input,
select,
textarea {
    font-family: sans-serif;
}

/*
 * Addresses margins handled incorrectly in IE6/7
 */

body {
    margin: 0;
}


/* =============================================================================
   Links
   ========================================================================== */

/*
 * Addresses outline displayed oddly in Chrome
 */

a:focus {
    outline: thin dotted;
}

/*
 * Improves readability when focused and also mouse hovered in all browsers
 * people.opera.com/patrickl/experiments/keyboard/test
 */

a:hover,
a:active {
    outline: 0;
}


/* =============================================================================
   Typography
   ========================================================================== */

/*
 * Neutralise smaller font-size in 'section' and 'article' in FF4+, Chrome, S5
 * Fix IE6/7 heading font-size not being relative to the root font-size
 */

h1 {
    font-size: 2em;
    margin: 0.67em 0;
}

h2 {
    font-size: 1.5em;
    margin: 0.83em 0;
}

h3 {
    font-size: 1.17em;
    margin: 1em 0;
}

h4 {
    font-size: 1em;
    margin: 1.33em 0;
}

h5 {
    font-size: 0.83em;
    margin: 1.67em 0;
}

h6 {
    font-size: 0.75em;
    margin: 2.33em 0;
}

/*
 * Addresses styling not present in IE7/8/9, S5, Chrome
 */

abbr[title] {
    border-bottom: 1px dotted;
}

/*
 * Addresses style set to 'bolder' in FF3+, S4/5, Chrome
*/

b, 
strong { 
    font-weight: bold; 
}

blockquote {
    margin: 1em 40px;
}

/*
 * Addresses styling not present in S5, Chrome
 */

dfn {
    font-style: italic;
}

/*
 * Addresses styling not present in IE6/7/8/9
 */

mark {
    background: #ff0;
    color: #000;
}

/*
 * Corrects font family set oddly in IE6, S4/5, Chrome
 * en.wikipedia.org/wiki/User:Davidgothberg/Test59
 */

pre,
code,
kbd,
samp {
    font-family: monospace, serif;
    _font-family: 'courier new', monospace;
    font-size: 1em;
}

/*
 * Improves readability of pre-formatted text in all browsers
 */

pre {
    white-space: pre;
    white-space: pre-wrap;
    word-wrap: break-word;
}

/*
 * 1. Addresses CSS quotes not supported in IE6/7
 * 2. Addresses quote property not supported in S4
 */

/* 1 */

q {
    quotes: none;
}

/* 2 */

q:before,
q:after {
    content: '';
    content: none;
}

small {
    font-size: 75%;
}

/*
 * Prevents sub and sup affecting line-height in all browsers
 * gist.github.com/413930
 */

sub,
sup {
    font-size: 75%;
    line-height: 0;
    position: relative;
    vertical-align: baseline;
}

sup {
    top: -0.5em;
}

sub {
    bottom: -0.25em;
}


/* =============================================================================
   Lists
   ========================================================================== */

ul,
ol {
    margin-left: 0;
    padding: 0 0 0 40px;
}

dd {
    margin: 0 0 0 40px;
}

nav ul,
nav ol {
    list-style: none;
    list-style-image: none;
}


/* =============================================================================
   Embedded content
   ========================================================================== */

/*
 * 1. Removes border when inside 'a' element in IE6/7/8/9, FF3
 * 2. Improves image quality when scaled in IE7
 *    code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/
 */

img {
    border: 0; /* 1 */
    -ms-interpolation-mode: bicubic; /* 2 */
}

/*
 * Corrects overflow displayed oddly in IE9 
 */

svg:not(:root) {
    overflow: hidden;
}


/* =============================================================================
   Figures
   ========================================================================== */

/*
 * Addresses margin not present in IE6/7/8/9, S5, O11
 */

figure {
    margin: 0;
}


/* =============================================================================
   Forms
   ========================================================================== */

/*
 * Corrects margin displayed oddly in IE6/7
 */

form {
    margin: 0;
}

/*
 * Define consistent border, margin, and padding
 */

fieldset {
    border: 1px solid #c0c0c0;
    margin: 0 2px;
    padding: 0.35em 0.625em 0.75em;
}

/*
 * 1. Corrects color not being inherited in IE6/7/8/9
 * 2. Corrects text not wrapping in FF3 
 * 3. Corrects alignment displayed oddly in IE6/7
 */

legend {
    border: 0; /* 1 */
    padding: 0;
    white-space: normal; /* 2 */
    *margin-left: -7px; /* 3 */
}

/*
 * 1. Corrects font size not being inherited in all browsers
 * 2. Addresses margins set differently in IE6/7, FF3+, S5, Chrome
 * 3. Improves appearance and consistency in all browsers
 */

button,
input,
select,
textarea {
    font-size: 100%; /* 1 */
    margin: 0; /* 2 */
    vertical-align: baseline; /* 3 */
    *vertical-align: middle; /* 3 */
}

/*
 * Addresses FF3/4 setting line-height on 'input' using !important in the UA stylesheet
 */

button,
input {
    line-height: normal; /* 1 */
}

/*
 * 1. Improves usability and consistency of cursor style between image-type 'input' and others
 * 2. Corrects inability to style clickable 'input' types in iOS
 * 3. Removes inner spacing in IE7 without affecting normal text inputs
 *    Known issue: inner spacing remains in IE6
 */

button,
input[type="button"], 
input[type="reset"], 
input[type="submit"] {
    cursor: pointer; /* 1 */
    -webkit-appearance: button; /* 2 */
    *overflow: visible;  /* 3 */
}

/*
 * Re-set default cursor for disabled elements
 */

button[disabled],
input[disabled] {
    cursor: default;
}

/*
 * 1. Addresses box sizing set to content-box in IE8/9
 * 2. Removes excess padding in IE8/9
 * 3. Removes excess padding in IE7
      Known issue: excess padding remains in IE6
 */

input[type="checkbox"],
input[type="radio"] {
    box-sizing: border-box; /* 1 */
    padding: 0; /* 2 */
    *height: 13px; /* 3 */
    *width: 13px; /* 3 */
}

/*
 * 1. Addresses appearance set to searchfield in S5, Chrome
 * 2. Addresses box-sizing set to border-box in S5, Chrome (include -moz to future-proof)
 */

input[type="search"] {
    -webkit-appearance: textfield; /* 1 */
    -moz-box-sizing: content-box;
    -webkit-box-sizing: content-box; /* 2 */
    box-sizing: content-box;
}

/*
 * Removes inner padding and search cancel button in S5, Chrome on OS X
 */

input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button {
    -webkit-appearance: none;
}

/*
 * Removes inner padding and border in FF3+
 * www.sitepen.com/blog/2008/05/14/the-devils-in-the-details-fixing-dojos-toolbar-buttons/
 */

button::-moz-focus-inner,
input::-moz-focus-inner {
    border: 0;
    padding: 0;
}

/*
 * 1. Removes default vertical scrollbar in IE6/7/8/9
 * 2. Improves readability and alignment in all browsers
 */

textarea {
    overflow: auto; /* 1 */
    vertical-align: top; /* 2 */
}


/* =============================================================================
   Tables
   ========================================================================== */

/* 
 * Remove most spacing between table cells
 */

table {
    border-collapse: collapse;
    border-spacing: 0;
}

A  => assets/style.css +31 -0
@@ 1,31 @@

html {
    font-family: 'Source Code Pro', monospace;
    font-size:1.1em;
    background-color: hsl(0, 0%, 15%);
    color: hsl(0, 0%, 80%);

    /* font hack for dark themes */
    -webkit-font-smoothing: antialiased !important;
    text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.004);
    -webkit-text-stroke: 1px transparent;
}
a:link {
  color: hsl(0, 0%, 95%);
}
a:hover {
  color: hsl(0, 0%, 95%) !important;
}
a:active {
  color: hsl(0, 0%, 95%);
}
a:visited {
  color: hsl(0, 0%, 95%);
}
p {
    padding-top:0.3em;
    line-height: 1.5em;
}
code {
    font-style:italic;
}

A  => assets/typesetter-colour.css +27 -0
@@ 1,27 @@
/* Typesetter.css Ⓒ2012-2019 Timothy Allen
 * https://gitlab.com/Screwtapello/typesetter-css/
 */
html {
  background: #fffcf0;
  color: #333350;
}
:link {
  color: #55C;
}
:link:hover {
  color: #33E;
  background: rgba(0, 0, 0, 0.1);
}
:visited {
  color: #848;
}
:visited:hover {
  color: #A3A;
}
:link:active,
:visited:active {
  color: #E33;
}
tr:nth-child(even) {
  background: rgba(0, 0, 0, 0.1);
}

A  => assets/typesetter-layout.css +236 -0
@@ 1,236 @@
/* Typesetter.css Ⓒ2012-2019 Timothy Allen
 * https://gitlab.com/Screwtapello/typesetter-css/
 */
html {
  font-size: 1em;
  line-height: 1.25rem;
  text-align: justify;
  -moz-hyphens: auto;
  -webkit-hyphens: auto;
  -ms-hyphens: auto;
  hyphens: auto;
}
body {
  max-width: 35rem;
  margin-left: auto;
  margin-right: auto;
  padding: 0 1.25rem;
  padding-bottom: 3.75rem;
  position: relative;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  margin: 1.25rem 0;
}
h1 {
  font-size: 1.5em;
  line-height: 2.5rem;
}
h2,
h3,
h4,
h5,
h6 {
  font-size: 1.0em;
  line-height: 1.25rem;
}
h1 {
  font-weight: bold;
  text-align: center;
}
h2 {
  font-weight: bold;
}
h3 {
  font-weight: inherit;
  font-variant: small-caps;
}
h4 {
  font-weight: inherit;
  font-style: italic;
}
h5 {
  font-weight: inherit;
  font-size: 0.875em;
}
h6 {
  font-weight: inherit;
  font-size: 0.750em;
}
div,
ul,
ol,
li,
address,
table,
pre,
nav,
aside {
  margin: 1.25rem 0;
}
p {
  margin: 0;
}
p + p {
  text-indent: 1.25rem;
}
ul,
ol {
  padding-left: 0;
  margin-left: 2.5rem;
}
li ul,
li ol {
  margin-top: 0;
  margin-bottom: 0;
}
dt {
  margin-top: 1.25rem;
}
dt + dt {
  margin-top: 0;
}
dd {
  margin-bottom: 1.25rem;
  margin-left: 2.5rem;
}
blockquote {
  margin: 1.25rem 2.5rem;
}
table {
  margin-left: auto;
  margin-right: auto;
}
thead {
  border-bottom: 0.125rem solid currentColor;
}
tfoot {
  border-top: 0.125rem solid currentColor;
}
thead th,
tfoot th,
thead td,
tfoot td {
  line-height: 1.125rem;
}
td,
th {
  font-size: 0.75rem;
  padding: 0 0.625rem;
}
td:first-child,
th:first-child {
  padding-left: 0;
}
td:last-child,
th:last-child {
  padding-right: 0;
}
pre {
  font-size: 0.75rem;
}
code {
  hyphens: manual;
}
hr {
  color: inherit;
  margin-top: 1.125rem;
  margin-bottom: 1.25rem;
  border: none;
  border-top: 0.125rem solid;
}
aside,
nav {
  font-size: 0.75rem;
  line-height: 1.25rem;
}
aside h1,
nav h1 {
  font-size: 1.000rem;
  line-height: 1.25rem;
}
aside :first-child,
nav :first-child {
  margin-top: 0;
}
/* By default, navigation should appear inline */
nav {
  text-align: center;
  /* Flatten the navigation hierarchy */
  /* Use vertical bars to separate each item. */
}
nav ul {
  margin-left: 0;
}
nav ul,
nav li {
  display: inline;
}
nav li:before {
  content: ' | ';
}
nav li:first-of-type:before {
  content: '';
}
nav li > ul:before {
  content: ' | ';
}
/*
 * By default, asides should appear inline, but narrower because they have
 * a smaller font size.
 */
aside {
  max-width: 20rem;
  margin-left: auto;
  margin-right: auto;
}
/* If we have sufficient width to put stuff on the sides... */
@media (min-width: 60rem) {
  aside,
  nav {
    margin-top: 0;
    margin-bottom: 1.25rem;
    width: 10rem;
    text-align: left;
  }
  aside {
    clear: right;
    float: right;
    margin-right: -11.25rem;
  }
  nav {
    text-align: left;
    clear: left;
    float: left;
    margin-left: -11.25rem;
    /* Now we have room to display the hierarchy */
  }
  nav ul,
  nav li {
    display: block;
    margin: 0;
  }
  nav ul ul {
    margin-left: 1.25rem;
  }
  nav li > ul:before {
    content: '';
  }
  nav li:before {
    content: '';
  }
}
/* If we don't even have our minimum width, don't bother justifying. */
@media (max-width: 35rem) {
  html {
    text-align: left;
  }
}
/* Special support for footnotes from Pandoc */
div.footnotes {
  font-size: 0.75rem;
}

A  => assets/typesetter.css +3 -0
@@ 1,3 @@
@import "normalize.css";
@import "typesetter-layout.css";
@import "typesetter-colour.css";

A  => index.scrbl +57 -0
@@ 1,57 @@
#lang scribble/html
@require[scribble/html/extra]
@doctype{html}
@html[lang:"en"]{
    @head{
        @title{jzp's hypertext extravaganza!}
        @meta[charset:"utf-8"]
        @meta[
            name:"viewport"
            content:"width=device-width, initial-scale=1"
        ]
        @link[rel:"stylesheet"  href:"https://fonts.googleapis.com/css?family=Source+Code+Pro"]
        @link[rel:"stylesheet"  href:"typesetter.css"]
        @link[rel:"stylesheet"  href:"style.css"]
        @link[rel:"icon"        href:"data:image/x-icon;base64,AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEREREREREAARERERERAQABEBEREQARAAERAAAAEREAAREREREREQABEREAERERAAEREBEBEREAAREREREREQABAQEREQEBAAEQEREREBEAAQEBEREBAQABERERERERAAAAAAAAAAAAAAAAAAAAAAD//wAAgAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAIADAAD//wAA"]
    }
    @body{
        @h1{Hello!}
        @aside{
            @figure{
                @img[src:"me.png" alt:"My Susan Kare-esque self-portrait"]
                @figcaption{A somewhat accurate depiction of my mug.}
            }
        }
        @p{
            How nice of you to stop by! You have reached the hypertext home of
            Johan @code{jzp} Persson, your friendly neighborhood nothing-in-particular.
        }
        @p{
            I used to @a[href:"http://jzp.chaosnet.org"]{blog} and
            @a[href:"gopher://sdf.lonestar.org:70/1/users/jzp"]{phlog} over at
            @a[href:"http://sdf.org"]{SDF}, but I lost my key in a nasty
            backup incident, and don't have the heart to bother @code{smj} for
            another reset. I'm in no hurry to share my thoughts anyway.
        }
        @p{
            Whenever I'm not actively occupied being a dad and a husband, I spend
            my time running a @a[href:"https://2130.se"]{small consultancy} and
            meander cheerfully between various projects, obsessions and interests.
            It's kind of nice, really.
        }
        @p{
            You can check out the scant amount of code I've published on
            @a[href:"https://github.com/jozip"]{github}, though I strongly prefer
            @a[href:"https://git.sr.ht/~jzp"]{sourcehut}. If electronic music and
            the vaporesque is your thing, you can check out whatever I've reposted
            in the past on my @a[href:"https://soundcloud.com/johnxerox"]{soundcloud}.
            You can also catch me doing the occasional retweet on
            @a[href:"https://twitter.com/jzp_"]{twitter}.
        }
        @p{
            That's pretty much it, I guess. Take care!
            @br{}@br{}
            / Johan
        }
    }
}