- {language && (
-
-
-
-
- {language.name}
-
- )}
-
- {stars > 0 && (
-
- )}
-
- {forks > 0 && (
-
- )}
-
-
-
Updated {formatDistanceToNowStrict(parseISO(updatedAt), { addSuffix: true })}
+
+ {language && (
+
+
+
+
+ {language.name}
+ )}
+
+ {stars > 0 && (
+
+ )}
+
+ {forks > 0 && (
+
+ )}
+
+
+ Updated {formatDistanceToNowStrict(parseISO(updatedAt), { addSuffix: true })}
- );
-}
+
+);
+
+export default RepoCard;
diff --git a/components/video/FullPageVideo.tsx b/components/video/FullPageVideo.tsx
index f7ff16e0..a473cc84 100644
--- a/components/video/FullPageVideo.tsx
+++ b/components/video/FullPageVideo.tsx
@@ -3,10 +3,10 @@ import type { ReactPlayerProps } from "react-player";
import styles from "./FullPageVideo.module.scss";
-export default function FullPageVideo(props: ReactPlayerProps) {
- return (
-
-
-
- );
-}
+const FullPageVideo = (props: ReactPlayerProps) => (
+
+
+
+);
+
+export default FullPageVideo;
diff --git a/pages/_app.tsx b/pages/_app.tsx
index c89a2f55..aa04fc6e 100644
--- a/pages/_app.tsx
+++ b/pages/_app.tsx
@@ -18,7 +18,7 @@ import "../styles/typography.scss";
import "../styles/highlight.scss";
import "../styles/index.scss";
-export default function App({ Component, pageProps }: AppProps) {
+const App = ({ Component, pageProps }: AppProps) => {
const router = useRouter();
useEffect(() => {
@@ -202,4 +202,6 @@ export default function App({ Component, pageProps }: AppProps) {
>
);
-}
+};
+
+export default App;
diff --git a/pages/birthday.tsx b/pages/birthday.tsx
index 75c6b6c5..c5f42b25 100644
--- a/pages/birthday.tsx
+++ b/pages/birthday.tsx
@@ -7,43 +7,41 @@ import { TapeIcon } from "../components/icons";
import thumbnail from "../public/static/images/birthday/thumb.png";
-export default function Birthday() {
- return (
- <>
-
-
-
- 1996.MOV
- >
- }
- />
-
-
-
-
-
- >
- );
-}
+const Birthday = () => (
+
+
+
+ 1996.MOV
+ >
+ }
+ />
+
+
+
+
+
+);
+
+export default Birthday;
diff --git a/pages/cli.tsx b/pages/cli.tsx
index 2e36de87..5f48136e 100644
--- a/pages/cli.tsx
+++ b/pages/cli.tsx
@@ -7,88 +7,85 @@ import { BotIcon } from "../components/icons";
import cliImg from "../public/static/images/cli/screenshot.png";
-export default function CLI() {
- return (
-
-
-
- CLI
- >
- }
- />
-
-
-
- The{" "}
-
- Jake Jarvis
- {" "}
- CLI (aka the most useless Node module ever published, in history, by anyone, ever).
-
-
-
-
-
- Usage
-
- npx @jakejarvis/cli
-
- Inspired by
-
- Built with
-
- -
-
- ink
- {" "}
- - React for interactive command-line apps
-
- -
-
- meow
- {" "}
- - CLI helper
-
-
+const CLI = () => (
+
+
+
+ CLI
+ >
+ }
+ />
+
+
-
- View source on GitHub.
-
-
- License
-
- MIT ©{" "}
+ The{" "}
Jake Jarvis
-
- ,{" "}
-
- Sindre Sorhus
-
+ {" "}
+ CLI (aka the most useless Node module ever published, in history, by anyone, ever).
-
-
-
- );
-}
+
+
+
+
+ Usage
+
+ npx @jakejarvis/cli
+
+ Inspired by
+
+ Built with
+
+ -
+
+ ink
+ {" "}
+ - React for interactive command-line apps
+
+ -
+
+ meow
+ {" "}
+ - CLI helper
+
+
+
+
+ View source on GitHub.
+
+
+ License
+
+ MIT ©{" "}
+
+ Jake Jarvis
+
+ ,{" "}
+
+ Sindre Sorhus
+
+
+
+
+
+);
+
+export default CLI;
diff --git a/pages/contact.tsx b/pages/contact.tsx
index 2eb23b04..281c41c2 100644
--- a/pages/contact.tsx
+++ b/pages/contact.tsx
@@ -4,56 +4,56 @@ import PageTitle from "../components/page/PageTitle";
import ContactForm from "../components/contact/ContactForm";
import { MailIcon, LockIcon } from "../components/icons";
-export default function Contact() {
- return (
-
-
-
- Contact Me
- >
- }
- />
-
-
-
-
- );
-}
+ code {
+ background: none;
+ border: 0;
+ padding: 0;
+ word-spacing: -0.175em;
+ white-space: normal;
+ }
+ `}
+
+
+);
+
+export default Contact;
diff --git a/pages/feed.atom.ts b/pages/feed.atom.ts
index dad442cd..3ed22b67 100644
--- a/pages/feed.atom.ts
+++ b/pages/feed.atom.ts
@@ -2,6 +2,8 @@ import { getAllNotes } from "../lib/parse-notes";
import { buildFeed } from "../lib/build-feed";
import type { GetServerSideProps } from "next";
+const AtomPage = () => null;
+
export const getServerSideProps: GetServerSideProps = async (context) => {
const notes = getAllNotes(["title", "date", "image", "slug", "description"]);
const feed = buildFeed(notes);
@@ -16,6 +18,4 @@ export const getServerSideProps: GetServerSideProps = async (context) => {
};
};
-const AtomPage = () => null;
-
export default AtomPage;
diff --git a/pages/feed.xml.ts b/pages/feed.xml.ts
index c8441dcd..c0ebd4f2 100644
--- a/pages/feed.xml.ts
+++ b/pages/feed.xml.ts
@@ -2,6 +2,8 @@ import { getAllNotes } from "../lib/parse-notes";
import { buildFeed } from "../lib/build-feed";
import type { GetServerSideProps } from "next";
+const RssPage = () => null;
+
export const getServerSideProps: GetServerSideProps = async (context) => {
const notes = getAllNotes(["title", "date", "image", "slug", "description"]);
const feed = buildFeed(notes);
@@ -16,6 +18,4 @@ export const getServerSideProps: GetServerSideProps = async (context) => {
};
};
-const RssPage = () => null;
-
export default RssPage;
diff --git a/pages/hillary.tsx b/pages/hillary.tsx
index ced2e39a..e947e8be 100644
--- a/pages/hillary.tsx
+++ b/pages/hillary.tsx
@@ -6,74 +6,72 @@ import Video from "../components/video/FullPageVideo";
import thumbnail from "../public/static/images/hillary/thumb.png";
-export default function Hillary() {
- return (
- <>
-
-
-
-
-
+
+
+);
+
+export default Hillary;
diff --git a/pages/index.tsx b/pages/index.tsx
index d84dcb63..18ec89ce 100644
--- a/pages/index.tsx
+++ b/pages/index.tsx
@@ -39,362 +39,346 @@ const ColorLink = ({ children, href, lightColor, darkColor, title, external = fa
);
};
-export default function Index() {
- return (
-
-
-
- Hi there! I'm Jake.{" "}
-
-
-
-
+const Index = () => (
+
+
+
+ Hi there! I'm Jake.{" "}
+
+
+
+
-
- I'm a frontend web developer based in{" "}
-
- Boston
-
- .
-
+
+ I'm a frontend web developer based in{" "}
+
+ Boston
+
+ .
+
-
- I specialize in{" "}
-
- modern JS frameworks
- {" "}
- and{" "}
-
- vanilla JavaScript
- {" "}
- to make nifty{" "}
-
- JAMstack sites
- {" "}
- with dynamic{" "}
-
- Node.js
- {" "}
- services. But I'm fluent in non-buzzwords like{" "}
-
- PHP
-
- ,{" "}
-
- Ruby
-
- , and{" "}
-
- Go
- {" "}
- too.
-
+
+ I specialize in{" "}
+
+ modern JS frameworks
+ {" "}
+ and{" "}
+
+ vanilla JavaScript
+ {" "}
+ to make nifty{" "}
+
+ JAMstack sites
+ {" "}
+ with dynamic{" "}
+
+ Node.js
+ {" "}
+ services. But I'm fluent in non-buzzwords like{" "}
+
+ PHP
+
+ ,{" "}
+
+ Ruby
+
+ , and{" "}
+
+ Go
+ {" "}
+ too.
+
-
- Whenever possible, I also apply my experience in{" "}
-
- application security
-
- ,{" "}
-
- serverless stacks
-
- , and{" "}
-
- DevOps automation
-
- .
-
+
+ Whenever possible, I also apply my experience in{" "}
+
+ application security
+
+ ,{" "}
+
+ serverless stacks
+
+ , and{" "}
+
+ DevOps automation
+
+ .
+
-
- I fell in love with{" "}
+
+ I fell in love with{" "}
+
+ frontend web design
+ {" "}
+ and{" "}
+
+ backend programming
+ {" "}
+ back when my only source of income was{" "}
+
- frontend web design
- {" "}
- and{" "}
-
- backend programming
- {" "}
- back when my only source of income was{" "}
-
-
- the Tooth Fairy
-
-
- . I've improved a bit since then, I think...
-
-
-
- Over the years, some of my side projects{" "}
-
- have
- {" "}
-
- been
- {" "}
-
- featured
- {" "}
-
- by
- {" "}
-
- various
- {" "}
-
- media
- {" "}
-
- outlets
+ the Tooth Fairy
- .
-
+
+ . I've improved a bit since then, I think...
+
-
- You can find more of my work on{" "}
-
- GitHub
- {" "}
- and{" "}
-
- LinkedIn
-
- . I'm always available to connect over{" "}
-
- email
- {" "}
-
-
- 2B0C 9CF2 51E6 9A39
-
-
- ,{" "}
-
- Twitter
-
- , or{" "}
-
- SMS
- {" "}
- as well!
-
+
+ Over the years, some of my side projects{" "}
+
+ have
+ {" "}
+
+ been
+ {" "}
+
+ featured
+ {" "}
+
+ by
+ {" "}
+
+ various
+ {" "}
+
+ media
+ {" "}
+
+ outlets
+
+ .
+
-
+
+
+);
- @keyframes wave {
- 0% {
- transform: rotate(0deg);
- }
- 5% {
- transform: rotate(14deg);
- }
- 10% {
- transform: rotate(-8deg);
- }
- 15% {
- transform: rotate(14deg);
- }
- 20% {
- transform: rotate(-4deg);
- }
- 25% {
- transform: rotate(10deg);
- }
- 30% {
- transform: rotate(0deg);
- }
-
- // pause for 3.5 out of 5 seconds
- 100% {
- transform: rotate(0deg);
- }
- }
- `}
-
-
- );
-}
+export default Index;
diff --git a/pages/leo.tsx b/pages/leo.tsx
index 48d04285..941a207d 100644
--- a/pages/leo.tsx
+++ b/pages/leo.tsx
@@ -6,74 +6,74 @@ import Video from "../components/video/FullPageVideo";
import thumbnail from "../public/static/images/leo/thumb.png";
-export default function Leo() {
- return (
- <>
-
-
-
-
- (
+ <>
+
+
+
+
+
-
- Video is property of{" "}
-
- G4techTV Canada
- {" "}
- &{" "}
-
- Leo Laporte
-
- . © 2007 G4 Media, Inc.
-
-
-
-
-
- >
- );
-}
+ .copyright a {
+ font-weight: 700;
+ }
+ `}
+
+
+
+ >
+);
+
+export default Leo;
diff --git a/pages/license.tsx b/pages/license.tsx
index 397c3a78..b378a9dc 100644
--- a/pages/license.tsx
+++ b/pages/license.tsx
@@ -4,472 +4,466 @@ import Content from "../components/Content";
import PageTitle from "../components/page/PageTitle";
import { LicenseIcon } from "../components/icons";
-export default function License() {
- return (
-
-
-
- License
- >
- }
- />
-
-
- Unless otherwise noted, content on this website is published under the{" "}
-
- Creative Commons Attribution 4.0 International Public License
- {" "}
- (CC-BY-4.0), which means that you can copy, redistribute, remix, transform, and build upon the content for
- any purpose as long as you give appropriate credit (such as a hyperlink to the original URL).
-
-
- The{" "}
-
- full license
- {" "}
- is re-printed below.
-
-
- Creative Commons Attribution 4.0 International Public License
-
-
-
+
+
+
+
+
+ Creative Commons Corporation ("Creative Commons") is not a law firm and does not provide legal services or
+ legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other
+ relationship. Creative Commons makes its licenses and related information available on an "as-is" basis.
+ Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and
+ conditions, or any related information. Creative Commons disclaims all liability for damages resulting
+ from their use to the fullest extent possible.
+
-
+
+ Using Creative Commons Public Licenses
+
+ Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights
+ holders may use to share original works of authorship and other material subject to copyright and certain
+ other rights specified in the public license below. The following considerations are for informational
+ purposes only, are not exhaustive, and do not form part of our licenses.
+
+
+ -
-
- Creative Commons Corporation ("Creative Commons") is not a law firm and does not provide legal services
- or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or
- other relationship. Creative Commons makes its licenses and related information available on an "as-is"
- basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their
- terms and conditions, or any related information. Creative Commons disclaims all liability for damages
- resulting from their use to the fullest extent possible.
-
-
-
- Using Creative Commons Public Licenses
-
- Creative Commons public licenses provide a standard set of terms and conditions that creators and other
- rights holders may use to share original works of authorship and other material subject to copyright and
- certain other rights specified in the public license below. The following considerations are for
- informational purposes only, are not exhaustive, and do not form part of our licenses.
-
-
- -
-
- Considerations for licensors: Our public licenses are intended for use by those
- authorized to give the public permission to use material in ways otherwise restricted by copyright and
- certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and
- conditions of the license they choose before applying it. Licensors should also secure all rights
- necessary before applying our licenses so that the public can reuse the material as expected. Licensors
- should clearly mark any material not subject to the license. This includes other CC-licensed material,
- or material used under an exception or limitation to copyright.{" "}
-
- More considerations for licensors
-
- .
-
-
- -
-
- Considerations for the public: By using one of our public licenses, a licensor grants
- the public permission to use the licensed material under specified terms and conditions. If the
- licensor's permission is not necessary for any reason–for example, because of any applicable exception
- or limitation to copyright–then that use is not regulated by the license. Our licenses grant only
- permissions under copyright and certain other rights that a licensor has authority to grant. Use of the
- licensed material may still be restricted for other reasons, including because others have copyright or
- other rights in the material. A licensor may make special requests, such as asking that all changes be
- marked or described. Although not required by our licenses, you are encouraged to respect those requests
- where reasonable.{" "}
-
- More considerations for the public
-
- .
-
-
-
- Licensed Rights
-
- By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and
- conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the
- extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in
- consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in
- consideration of benefits the Licensor receives from making the Licensed Material available under these
- terms and conditions.
-
- Section 1 – Definitions.
-
- a. Adapted Material means material subject to Copyright and Similar Rights that is derived
- from or based upon the Licensed Material and in which the Licensed Material is translated, altered,
- arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and
- Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a
- musical work, performance, or sound recording, Adapted Material is always produced where the Licensed
- Material is synched in timed relation with a moving image.
-
-
- b. Adapter's License means the license You apply to Your Copyright and Similar Rights in
- Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.
-
-
- c. Copyright and Similar Rights means copyright and/or similar rights closely related to
- copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database
- Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License,
- the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
-
-
- d. Effective Technological Measures means those measures that, in the absence of proper
- authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright
- Treaty adopted on December 20, 1996, and/or similar international agreements.
-
-
- e. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or
- limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
-
-
- f. Licensed Material means the artistic or literary work, database, or other material to
- which the Licensor applied this Public License.
-
-
- g. Licensed Rights means the rights granted to You subject to the terms and conditions of
- this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the
- Licensed Material and that the Licensor has authority to license.
-
-
- h. Licensor means the individual(s) or entity(ies) granting rights under this Public
- License.
-
-
- i. Share means to provide material to the public by any means or process that requires
- permission under the Licensed Rights, such as reproduction, public display, public performance,
- distribution, dissemination, communication, or importation, and to make material available to the public
- including in ways that members of the public may access the material from a place and at a time individually
- chosen by them.
-
-
- j. Sui Generis Database Rights means rights other than copyright resulting from Directive
- 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases,
- as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
-
-
- k. You means the individual or entity exercising the Licensed Rights under this Public
- License. Your has a corresponding meaning.
-
- Section 2 – Scope.
-
- a.{" "}
-
- License grant.
-
-
-
- -
-
- Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide,
- royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in
- the Licensed Material to:
-
- A. reproduce and Share the Licensed Material, in whole or in part; and
- B. produce, reproduce, and Share Adapted Material.
-
- -
-
- Exceptions and Limitations. For the avoidance of doubt, where Exceptions and
- Limitations apply to Your use, this Public License does not apply, and You do not need to comply with
- its terms and conditions.
-
-
- -
-
- Term. The term of this Public License is specified in Section 6(a).
-
-
- -
-
- Media and formats; technical modifications allowed. The Licensor authorizes You to
- exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to
- make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any
- right or authority to forbid You from making technical modifications necessary to exercise the Licensed
- Rights, including technical modifications necessary to circumvent Effective Technological Measures. For
- purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never
- produces Adapted Material.
-
-
- -
-
- Downstream recipients.
-
-
- A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed
- Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the
- terms and conditions of this Public License.
-
-
- B. No downstream restrictions. You may not offer or impose any additional or different
- terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing
- so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
-
-
- -
-
- No endorsement. Nothing in this Public License constitutes or may be construed as
- permission to assert or imply that You are, or that Your use of the Licensed Material is, connected
- with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to
- receive attribution as provided in Section 3(a)(1)(A)(i).
-
-
-
-
- b.{" "}
-
- Other rights.
-
-
-
- -
-
- Moral rights, such as the right of integrity, are not licensed under this Public License, nor are
- publicity, privacy, and/or other similar personality rights; however, to the extent possible, the
- Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent
- necessary to allow You to exercise the Licensed Rights, but not otherwise.
-
-
- -
-
Patent and trademark rights are not licensed under this Public License.
-
- -
-
- To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of
- the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable
- statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right
- to collect such royalties.
-
-
-
- Section 3 – License Conditions.
- Your exercise of the Licensed Rights is expressly made subject to the following conditions.
-
- a.{" "}
-
- Attribution.
-
-
-
- -
-
If You Share the Licensed Material (including in modified form), You must:
- A. retain the following if it is supplied by the Licensor with the Licensed Material:
-
- i. identification of the creator(s) of the Licensed Material and any others designated to receive
- attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
-
- ii. a copyright notice;
- iii. a notice that refers to this Public License;
- iv. a notice that refers to the disclaimer of warranties;
- v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
-
- B. indicate if You modified the Licensed Material and retain an indication of any previous
- modifications; and
-
-
- C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the
- URI or hyperlink to, this Public License.
-
-
- -
-
- You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means,
- and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the
- conditions by providing a URI or hyperlink to a resource that includes the required information.
-
-
- -
-
- If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to
- the extent reasonably practicable.
-
-
- -
-
- If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients
- of the Adapted Material from complying with this Public License.
-
-
-
- Section 4 – Sui Generis Database Rights.
-
- Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed
- Material:
-
-
- a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share
- all or a substantial portion of the contents of the database;
-
-
- b. if You include all or a substantial portion of the database contents in a database in which You have Sui
- Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its
- individual contents) is Adapted Material; and
-
-
- c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the
- contents of the database.
-
-
- For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this
- Public License where the Licensed Rights include other Copyright and Similar Rights.
-
- Section 5 – Disclaimer of Warranties and Limitation of Liability.
-
- a.{" "}
-
- Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the
- Licensed Material as-is and as-available, and makes no representations or warranties of any kind
- concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without
- limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement,
- absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known
- or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may
- not apply to You.
-
-
-
- b.{" "}
-
- To the extent possible, in no event will the Licensor be liable to You on any legal theory (including,
- without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential,
- punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or
- use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses,
- costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this
- limitation may not apply to You.
-
-
-
- c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner
- that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
-
- Section 6 – Term and Termination.
-
- a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if
- You fail to comply with this Public License, then Your rights under this Public License terminate
- automatically.
-
- b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
-
- -
-
- automatically as of the date the violation is cured, provided it is cured within 30 days of Your
- discovery of the violation; or
-
-
- -
-
upon express reinstatement by the Licensor.
-
-
-
- For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek
- remedies for Your violations of this Public License.
-
-
- c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or
- conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this
- Public License.
-
- d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
- Section 7 – Other Terms and Conditions.
-
- a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You
- unless expressly agreed.
-
-
- b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are
- separate from and independent of the terms and conditions of this Public License.
-
- Section 8 – Interpretation.
-
- a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit,
- restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without
- permission under this Public License.
-
-
- b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be
- automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be
- reformed, it shall be severed from this Public License without affecting the enforceability of the remaining
- terms and conditions.
-
-
- c. No term or condition of this Public License will be waived and no failure to comply consented to unless
- expressly agreed to by the Licensor.
-
-
- d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any
- privileges and immunities that apply to the Licensor or You, including from the legal processes of any
- jurisdiction or authority.
-
-
-
- Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to
- apply one of its public licenses to material it publishes and in those instances will be considered the
- "Licensor." The text of the Creative Commons public licenses is dedicated to the public domain under the{" "}
+ Considerations for licensors: Our public licenses are intended for use by those
+ authorized to give the public permission to use material in ways otherwise restricted by copyright and
+ certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and
+ conditions of the license they choose before applying it. Licensors should also secure all rights
+ necessary before applying our licenses so that the public can reuse the material as expected. Licensors
+ should clearly mark any material not subject to the license. This includes other CC-licensed material, or
+ material used under an exception or limitation to copyright.{" "}
- CC0 Public Domain Dedication
-
- . Except for the limited purpose of indicating that material is shared under a Creative Commons public
- license or as otherwise permitted by the Creative Commons policies published at{" "}
-
- creativecommons.org/policies
-
- , Creative Commons does not authorize the use of the trademark "Creative Commons" or any other trademark
- or logo of Creative Commons without its prior written consent including, without limitation, in connection
- with any unauthorized modifications to any of its public licenses or any other arrangements,
- understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this
- paragraph does not form part of the public licenses.
-
-
- Creative Commons may be contacted at{" "}
-
- creativecommons.org
+ More considerations for licensors
.
-
-
-
-
- );
-}
+
+
+
+ Considerations for the public: By using one of our public licenses, a licensor grants the
+ public permission to use the licensed material under specified terms and conditions. If the licensor's
+ permission is not necessary for any reason–for example, because of any applicable exception or limitation
+ to copyright–then that use is not regulated by the license. Our licenses grant only permissions under
+ copyright and certain other rights that a licensor has authority to grant. Use of the licensed material
+ may still be restricted for other reasons, including because others have copyright or other rights in the
+ material. A licensor may make special requests, such as asking that all changes be marked or described.
+ Although not required by our licenses, you are encouraged to respect those requests where reasonable.{" "}
+
+ More considerations for the public
+
+ .
+
+
+
+
Licensed Rights
+
+ By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and
+ conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the
+ extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in
+ consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in
+ consideration of benefits the Licensor receives from making the Licensed Material available under these terms
+ and conditions.
+
+
Section 1 – Definitions.
+
+ a. Adapted Material means material subject to Copyright and Similar Rights that is derived
+ from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged,
+ transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights
+ held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work,
+ performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in
+ timed relation with a moving image.
+
+
+ b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your
+ contributions to Adapted Material in accordance with the terms and conditions of this Public License.
+
+
+ c. Copyright and Similar Rights means copyright and/or similar rights closely related to
+ copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database
+ Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the
+ rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
+
+
+ d. Effective Technological Measures means those measures that, in the absence of proper
+ authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright
+ Treaty adopted on December 20, 1996, and/or similar international agreements.
+
+
+ e. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or
+ limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
+
+
+ f. Licensed Material means the artistic or literary work, database, or other material to
+ which the Licensor applied this Public License.
+
+
+ g. Licensed Rights means the rights granted to You subject to the terms and conditions of
+ this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the
+ Licensed Material and that the Licensor has authority to license.
+
+
+ h. Licensor means the individual(s) or entity(ies) granting rights under this Public License.
+
+
+ i. Share means to provide material to the public by any means or process that requires
+ permission under the Licensed Rights, such as reproduction, public display, public performance, distribution,
+ dissemination, communication, or importation, and to make material available to the public including in ways
+ that members of the public may access the material from a place and at a time individually chosen by them.
+
+
+ j. Sui Generis Database Rights means rights other than copyright resulting from Directive
+ 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases,
+ as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
+
+
+ k. You means the individual or entity exercising the Licensed Rights under this Public
+ License. Your has a corresponding meaning.
+
+
Section 2 – Scope.
+
+ a.{" "}
+
+ License grant.
+
+
+
+ -
+
+ Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide,
+ royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the
+ Licensed Material to:
+
+ A. reproduce and Share the Licensed Material, in whole or in part; and
+ B. produce, reproduce, and Share Adapted Material.
+
+ -
+
+ Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations
+ apply to Your use, this Public License does not apply, and You do not need to comply with its terms and
+ conditions.
+
+
+ -
+
+ Term. The term of this Public License is specified in Section 6(a).
+
+
+ -
+
+ Media and formats; technical modifications allowed. The Licensor authorizes You to
+ exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make
+ technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or
+ authority to forbid You from making technical modifications necessary to exercise the Licensed Rights,
+ including technical modifications necessary to circumvent Effective Technological Measures. For purposes
+ of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces
+ Adapted Material.
+
+
+ -
+
+ Downstream recipients.
+
+
+ A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material
+ automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and
+ conditions of this Public License.
+
+
+ B. No downstream restrictions. You may not offer or impose any additional or different
+ terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing
+ so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
+
+
+ -
+
+ No endorsement. Nothing in this Public License constitutes or may be construed as
+ permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with,
+ or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive
+ attribution as provided in Section 3(a)(1)(A)(i).
+
+
+
+
+ b.{" "}
+
+ Other rights.
+
+
+
+ -
+
+ Moral rights, such as the right of integrity, are not licensed under this Public License, nor are
+ publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor
+ waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to
+ allow You to exercise the Licensed Rights, but not otherwise.
+
+
+ -
+
Patent and trademark rights are not licensed under this Public License.
+
+ -
+
+ To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of
+ the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable
+ statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to
+ collect such royalties.
+
+
+
+
Section 3 – License Conditions.
+
Your exercise of the Licensed Rights is expressly made subject to the following conditions.
+
+ a.{" "}
+
+ Attribution.
+
+
+
+ -
+
If You Share the Licensed Material (including in modified form), You must:
+ A. retain the following if it is supplied by the Licensor with the Licensed Material:
+
+ i. identification of the creator(s) of the Licensed Material and any others designated to receive
+ attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
+
+ ii. a copyright notice;
+ iii. a notice that refers to this Public License;
+ iv. a notice that refers to the disclaimer of warranties;
+ v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
+
+ B. indicate if You modified the Licensed Material and retain an indication of any previous modifications;
+ and
+
+
+ C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the
+ URI or hyperlink to, this Public License.
+
+
+ -
+
+ You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and
+ context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the
+ conditions by providing a URI or hyperlink to a resource that includes the required information.
+
+
+ -
+
+ If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the
+ extent reasonably practicable.
+
+
+ -
+
+ If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of
+ the Adapted Material from complying with this Public License.
+
+
+
+
Section 4 – Sui Generis Database Rights.
+
+ Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
+
+
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share
+ all or a substantial portion of the contents of the database;
+
+
+ b. if You include all or a substantial portion of the database contents in a database in which You have Sui
+ Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its
+ individual contents) is Adapted Material; and
+
+
+ c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the
+ contents of the database.
+
+
+ For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public
+ License where the Licensed Rights include other Copyright and Similar Rights.
+
+
Section 5 – Disclaimer of Warranties and Limitation of Liability.
+
+ a.{" "}
+
+ Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the
+ Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning
+ the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation,
+ warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent
+ or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable.
+ Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
+
+
+
+ b.{" "}
+
+ To the extent possible, in no event will the Licensor be liable to You on any legal theory (including,
+ without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential,
+ punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use
+ of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs,
+ expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may
+ not apply to You.
+
+
+
+ c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner
+ that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
+
+
Section 6 – Term and Termination.
+
+ a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You
+ fail to comply with this Public License, then Your rights under this Public License terminate automatically.
+
+
b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
+
+ -
+
+ automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery
+ of the violation; or
+
+
+ -
+
upon express reinstatement by the Licensor.
+
+
+
+ For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies
+ for Your violations of this Public License.
+
+
+ c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or
+ conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this
+ Public License.
+
+
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
+
Section 7 – Other Terms and Conditions.
+
+ a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You
+ unless expressly agreed.
+
+
+ b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are
+ separate from and independent of the terms and conditions of this Public License.
+
+
Section 8 – Interpretation.
+
+ a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit,
+ restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without
+ permission under this Public License.
+
+
+ b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be
+ automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be
+ reformed, it shall be severed from this Public License without affecting the enforceability of the remaining
+ terms and conditions.
+
+
+ c. No term or condition of this Public License will be waived and no failure to comply consented to unless
+ expressly agreed to by the Licensor.
+
+
+ d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any
+ privileges and immunities that apply to the Licensor or You, including from the legal processes of any
+ jurisdiction or authority.
+
+
+
+ Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply
+ one of its public licenses to material it publishes and in those instances will be considered the
+ "Licensor." The text of the Creative Commons public licenses is dedicated to the public domain under the{" "}
+
+ CC0 Public Domain Dedication
+
+ . Except for the limited purpose of indicating that material is shared under a Creative Commons public
+ license or as otherwise permitted by the Creative Commons policies published at{" "}
+
+ creativecommons.org/policies
+
+ , Creative Commons does not authorize the use of the trademark "Creative Commons" or any other trademark or
+ logo of Creative Commons without its prior written consent including, without limitation, in connection with
+ any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or
+ agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form
+ part of the public licenses.
+
+
+ Creative Commons may be contacted at{" "}
+
+ creativecommons.org
+
+ .
+
+
+
+
+
+);
+
+export default License;
diff --git a/pages/notes/[slug].tsx b/pages/notes/[slug].tsx
index c7ada289..05c9c5c2 100644
--- a/pages/notes/[slug].tsx
+++ b/pages/notes/[slug].tsx
@@ -19,54 +19,52 @@ import rehypeExternalLinks from "rehype-external-links";
import rehypeSlug from "rehype-slug";
import rehypeAutolinkHeadings from "rehype-autolink-headings";
-export default function Page({ source, frontMatter, slug }) {
- return (
- <>
-
(
+ <>
+
-
+ ],
+ }}
+ twitter={{
+ handle: `@${config.twitterHandle}`,
+ site: `@${config.twitterHandle}`,
+ cardType: "summary_large_image",
+ }}
+ />
+
-
-
-
-
-
-
-
-
- >
- );
-}
+
+
+
+
+
+
+
+
+ >
+);
export const getStaticProps: GetStaticProps = async ({ params }) => {
const filePath = path.join(NOTES_PATH, `${params.slug}.mdx`);
@@ -111,3 +109,5 @@ export const getStaticPaths: GetStaticPaths = async () => {
fallback: false,
};
};
+
+export default Note;
diff --git a/pages/notes/index.tsx b/pages/notes/index.tsx
index 2c4a045f..84bf4006 100644
--- a/pages/notes/index.tsx
+++ b/pages/notes/index.tsx
@@ -6,17 +6,13 @@ import List from "../../components/notes/List";
import { getAllNotes } from "../../lib/parse-notes";
import type { GetStaticProps } from "next";
-export default function Notes({ notesByYear }) {
- return (
- <>
-
-
-
-
-
- >
- );
-}
+const Notes = ({ notesByYear }) => (
+
+
+
+
+
+);
export const getStaticProps: GetStaticProps = async () => {
const allNotes = getAllNotes(["date", "slug", "title"]);
@@ -30,3 +26,5 @@ export const getStaticProps: GetStaticProps = async () => {
},
};
};
+
+export default Notes;
diff --git a/pages/previously.tsx b/pages/previously.tsx
index 7a29d62b..5c61d9af 100644
--- a/pages/previously.tsx
+++ b/pages/previously.tsx
@@ -21,229 +21,229 @@ import img_2009_07 from "../public/static/images/previously/2009_07.png";
import img_2012_09 from "../public/static/images/previously/2012_09.png";
import img_2018_04 from "../public/static/images/previously/2018_04.png";
-export default function Previously() {
- return (
- <>
-
-
-
- Previously on...
- >
- }
- />
-
-
+const Previously = () => (
+ <>
+
+
+
+ Previously on...
+ >
+ }
+ />
+
+
+
+
+
+
+ ...the{" "}
-
+ Cringey Chronicles™
+ {" "}
+ of this website's past.
+
+
+
+
+
+
+ Trigger warning: marquees, Comic Sans MS, popups,{" "}
+
+ color: limegreen
+
+ ...{" "}
+
+ Click for the{" "}
+
+ FULL
+ {" "}
+ experience anyway.
+
+
+
+
+
+ November 2001 (
+
+ archived source
-
- ...the{" "}
-
- Cringey Chronicles™
- {" "}
- of this website's past.
-
-
+ )
+
+
-
+
-
- Trigger warning: marquees, Comic Sans MS, popups,{" "}
-
- color: limegreen
-
- ...{" "}
-
- Click for the{" "}
-
- FULL
- {" "}
- experience anyway.
+
+
+ February 2002
+
+
+
+
+
+
+ October 2002
+
+
+
+
+
+
+ August 2003
+
+
+
+
+
+
+ November 2004
+
+
+
+
+
+
+ April 2006
+
+
+
+
+
+
+ May 2006
+
+
+
+
+
+
+ January 2007
+
+
+
+
+
+
+ April 2007
+
+
+
+
+
+
+ May 2007
+
+
+
+
+
+
+ July 2009
+
+
+
+
+
+
+
+
+
+ September 2012 (
+
+ archived source
-
-
-
-
- November 2001 (
-
- archived source
-
- )
-
-
+ )
+
+
-
+
-
-
- February 2002
-
-
-
-
-
-
- October 2002
-
-
-
-
-
-
- August 2003
-
-
-
-
-
-
- November 2004
-
-
-
-
-
-
- April 2006
-
-
-
-
-
-
- May 2006
-
-
-
-
-
-
- January 2007
-
-
-
-
-
-
- April 2007
-
-
-
-
-
-
- May 2007
-
-
-
-
-
-
- July 2009
-
-
-
-
-
-
-
+
+
+
+
+
+ April 2018 (
+
+ archived source
-
- September 2012 (
-
- archived source
-
- )
-
-
+ )
+
+
+
+
+
+
+ >
+);
-
-
-
-
-
-
-
- April 2018 (
-
- archived source
-
- )
-
-
-
-
-
-
- >
- );
-}
+export default Previously;
diff --git a/pages/privacy.tsx b/pages/privacy.tsx
index 6b20c2f5..01471727 100644
--- a/pages/privacy.tsx
+++ b/pages/privacy.tsx
@@ -8,213 +8,213 @@ import { PrivacyIcon } from "../components/icons";
import faunaImg from "../public/static/images/privacy/fauna_hits.png";
-export default function Privacy() {
- return (
-
-
-
- Privacy
- >
- }
- />
-
- Okay, this is an easy one. 😉
+const Privacy = () => (
+
+
+
+ Privacy
+ >
+ }
+ />
+
+ Okay, this is an easy one. 😉
- Hosting
+ Hosting
+
+ Pages and first-party assets on this website are served by{" "}
+
+ ▲ Vercel
+
+ . Refer to their{" "}
+
+ privacy policy
+ {" "}
+ for more information.
+
+
+ For a likely excessive level of privacy and security, this website is also mirrored on the{" "}
+
+ 🧅 Tor network
+ {" "}
+ at:
+
+
- Pages and first-party assets on this website are served by{" "}
-
- ▲ Vercel
-
- . Refer to their{" "}
-
- privacy policy
- {" "}
- for more information.
-
-
- For a likely excessive level of privacy and security, this website is also mirrored on the{" "}
-
- 🧅 Tor network
- {" "}
- at:
-
-
-
-
- jarvis2i2vp4j4tbxjogsnqdemnte5xhzyi7hziiyzxwge3hzmh57zad.onion
-
-
-
-
- Analytics
-
- A very simple hit counter on each blog post tallies an aggregate number of pageviews (i.e.{" "}
- hits = hits + 1
) in a{" "}
-
- Fauna
- {" "}
- database. Individual views and identifying (or non-identifying) details are{" "}
- never stored or logged.
-
-
- The{" "}
- serverless function
- {" "}
- and{" "}
+ jarvis2i2vp4j4tbxjogsnqdemnte5xhzyi7hziiyzxwge3hzmh57zad.onion
+
+
+
+
+ Analytics
+
+ A very simple hit counter on each blog post tallies an aggregate number of pageviews (i.e.{" "}
+ hits = hits + 1
) in a{" "}
+
+ Fauna
+ {" "}
+ database. Individual views and identifying (or non-identifying) details are{" "}
+ never stored or logged.
+
+
+ The{" "}
+
+ serverless function
+ {" "}
+ and{" "}
+
+ client script
+ {" "}
+ are open source, and{" "}
+
+ snapshots of the database
+ {" "}
+ are public.
+
+
+
+
+ Fathom Analytics
+
+ , a very{" "}
+
+ privacy-focused
+ {" "}
+ service, is also used to gain insights into referrers, search terms, etc.{" "}
+ without collecting anything identifiable about you. (My{" "}
+
+ dashboard
+ {" "}
+ is completely public, too!)
+
+
+
+
+ Vercel Analytics
+ {" "}
+ keeps track of{" "}
+
+ "web vitals"
+ {" "}
+ (input delays, layout shifts, etc.), also in an anonymous and aggregate fashion.
+
+
+ Third-Party Content
+
+ Occasionally, embedded content from third-party services is included in posts, and some may contain tracking
+ code that is outside of my control. Please refer to their privacy policies for more information:
+
+
- Third-Party Content
-
- Occasionally, embedded content from third-party services is included in posts, and some may contain tracking
- code that is outside of my control. Please refer to their privacy policies for more information:
-
-
+ Fighting Spam
+
+ Using{" "}
+
+ hCaptcha
+ {" "}
+ to fight bot spam on the contact form was an easy choice over seemingly
+ unavoidable alternatives like{" "}
+
+ reCAPTCHA
+
+ .
+
+
+ You can refer to hCaptcha's{" "}
+
+ privacy policy
+ {" "}
+ and{" "}
+
+ terms of service
+ {" "}
+ for more details. While some information is sent to the hCaptcha API about your behavior{" "}
+ (on the contact page only), at least you won't be helping a certain internet conglomerate{" "}
+
+ train their self-driving cars
+
+ . 🚗
+
+
+ I also enabled the setting to donate 100% of my{" "}
+
+ HMT token
+ {" "}
+ earnings to the{" "}
+
+ Wikimedia Foundation
+
+ , for what it's worth. (A few cents, probably... 💰)
+
+
+
+
+);
- Fighting Spam
-
- Using{" "}
-
- hCaptcha
- {" "}
- to fight bot spam on the contact form was an easy choice over seemingly
- unavoidable alternatives like{" "}
-
- reCAPTCHA
-
- .
-
-
- You can refer to hCaptcha's{" "}
-
- privacy policy
- {" "}
- and{" "}
-
- terms of service
- {" "}
- for more details. While some information is sent to the hCaptcha API about your behavior{" "}
- (on the contact page only), at least you won't be helping a certain internet conglomerate{" "}
-
- train their self-driving cars
-
- . 🚗
-
-
- I also enabled the setting to donate 100% of my{" "}
-
- HMT token
- {" "}
- earnings to the{" "}
-
- Wikimedia Foundation
-
- , for what it's worth. (A few cents, probably... 💰)
-
-
-
-
- );
-}
+export default Privacy;
diff --git a/pages/projects.tsx b/pages/projects.tsx
index c5ca9026..894054db 100644
--- a/pages/projects.tsx
+++ b/pages/projects.tsx
@@ -6,57 +6,55 @@ import RepoCard from "../components/projects/RepoCard";
import { ProjectsIcon } from "../components/icons";
import type { GetStaticProps } from "next";
-export default function Projects({ repos }) {
- return (
-
-
-
- Projects
- >
+const Projects = ({ repos }) => (
+
+
+
+ Projects
+ >
+ }
+ />
+
+
+ {repos.map((repo) => (
+
+
+
+ ))}
+
+
+
-
-
+
+
+);
export const getStaticProps: GetStaticProps = async () => {
// https://docs.github.com/en/graphql/reference/objects#repository
@@ -119,3 +117,5 @@ export const getStaticProps: GetStaticProps = async () => {
revalidate: 600,
};
};
+
+export default Projects;
diff --git a/pages/uses.tsx b/pages/uses.tsx
index a68c0616..4b168bb1 100644
--- a/pages/uses.tsx
+++ b/pages/uses.tsx
@@ -8,1092 +8,1084 @@ import { LaptopIcon } from "../components/icons";
import desktopImg from "../public/static/images/uses/bigsur.png";
-export default function Uses() {
- return (
-
+
+
+
+);
+
+export default Uses;
diff --git a/yarn.lock b/yarn.lock
index 275b90fa..40b53604 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1525,9 +1525,9 @@
integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
"@types/node@*":
- version "17.0.5"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.5.tgz#57ca67ec4e57ad9e4ef5a6bab48a15387a1c83e0"
- integrity sha512-w3mrvNXLeDYV1GKTZorGJQivK6XLCoGwpnyJFbJVK/aTBQUxOCaa/GlFAAN3OTDFcb7h5tiFG+YXCO2By+riZw==
+ version "17.0.6"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.6.tgz#cc1589c9ee853b389e67e8fb4384e0f250a139b9"
+ integrity sha512-+XBAjfZmmivILUzO0HwBJoYkAyyySSLg5KCGBDFLomJo0sV6szvVLAf4ANZZ0pfWzgEds5KmGLG9D5hfEqOhaA==
"@types/normalize-package-data@^2.4.0":
version "2.4.1"
@@ -1999,14 +1999,14 @@ camelcase@^5.3.1:
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
camelcase@^6.2.0:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.1.tgz#250fd350cfd555d0d2160b1d51510eaf8326e86e"
- integrity sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
+ integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
caniuse-lite@^1.0.30001283, caniuse-lite@^1.0.30001286, caniuse-lite@^1.0.30001294:
- version "1.0.30001294"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001294.tgz#4849f27b101fd59ddee3751598c663801032533d"
- integrity sha512-LiMlrs1nSKZ8qkNhpUf5KD0Al1KCBE3zaT7OLOwEkagXMEDij98SiOovn9wxVGQpklk9vVC/pUSqgYmkmKOS8g==
+ version "1.0.30001295"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001295.tgz#68a60f8f0664f342b2835c5d8898b4faea7b3d51"
+ integrity sha512-lSP16vcyC0FEy0R4ECc9duSPoKoZy+YkpGkue9G4D81OfPnliopaZrU10+qtPdT8PbGXad/PNx43TIQrOmJZSQ==
ccount@^1.0.0:
version "1.1.0"
@@ -2201,17 +2201,17 @@ copy-to-clipboard@^3.3.1:
toggle-selection "^1.0.6"
core-js-compat@^3.18.0, core-js-compat@^3.19.1:
- version "3.20.1"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.1.tgz#96917b4db634fbbbc7b36575b2e8fcbf7e4f9691"
- integrity sha512-AVhKZNpqMV3Jz8hU0YEXXE06qoxtQGsAqU0u1neUngz5IusDJRX/ZJ6t3i7mS7QxNyEONbCo14GprkBrxPlTZA==
+ version "3.20.2"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.2.tgz#d1ff6936c7330959b46b2e08b122a8b14e26140b"
+ integrity sha512-qZEzVQ+5Qh6cROaTPFLNS4lkvQ6mBzE3R6A6EEpssj7Zr2egMHgsy4XapdifqJDGC9CBiNv7s+ejI96rLNQFdg==
dependencies:
browserslist "^4.19.1"
semver "7.0.0"
core-js-pure@^3.19.0:
- version "3.20.1"
- resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.20.1.tgz#f7a2c62f98de83e4da8fca7b78846d3a2f542145"
- integrity sha512-yeNNr3L9cEBwNy6vhhIJ0nko7fE7uFO6PgawcacGt2VWep4WqQx0RiqlkgSP7kqUMC1IKdfO9qPeWXcUheHLVQ==
+ version "3.20.2"
+ resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.20.2.tgz#5d263565f0e34ceeeccdc4422fae3e84ca6b8c0f"
+ integrity sha512-CmWHvSKn2vNL6p6StNp1EmMIfVY/pqn3JLAjfZQ8WZGPOlGoO92EkX9/Mk81i6GxvoPXjUqEQnpM3rJ5QxxIOg==
cosmiconfig@^7.0.1:
version "7.0.1"
@@ -2587,13 +2587,12 @@ eslint-import-resolver-typescript@^2.4.0:
tsconfig-paths "^3.9.0"
eslint-module-utils@^2.7.1:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c"
- integrity sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==
+ version "2.7.2"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129"
+ integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==
dependencies:
debug "^3.2.7"
find-up "^2.1.0"
- pkg-dir "^2.0.0"
eslint-plugin-import@^2.25.2:
version "2.25.3"
@@ -4458,9 +4457,9 @@ picocolors@^1.0.0:
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
- integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
pidtree@^0.3.0:
version "0.3.1"
@@ -4472,13 +4471,6 @@ pify@^3.0.0:
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
-pkg-dir@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
- integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
- dependencies:
- find-up "^2.1.0"
-
pkg-dir@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760"