diff --git a/lib/ui/components/icons/Icon.js b/lib/ui/components/icons/Icon.js
index f2a08799..b4db2189 100644
--- a/lib/ui/components/icons/Icon.js
+++ b/lib/ui/components/icons/Icon.js
@@ -2,6 +2,8 @@
 import { shape, string } from "prop-types";
 import React from "react";
 import styled from "styled-components";
+import { FaLink } from "react-icons/fa";
+import { SiBluesky, SiMastodon } from "react-icons/si";
 
 import { defaultThm } from "ui/themes";
 import { icomoon } from "assets/fonts";
@@ -30,11 +32,47 @@ const IconEl = styled.i`
   }
 `;
 
-const Icon = props => (
-  
-    {props.text ? {props.text} : null}
-  
-);
+const Icon = props => {
+  switch (props.name) {
+    // I'm not going to generate a new IcoMoon font for these
+    // and in any case they don't have Bluesky or Mastdon readily
+    // available anyway. Generating icons with react-icons is 100%
+    // more flexible
+    case 'bluesky':
+      return (
+        
+          
+        
+      )
+    case 'mastodon':
+      return (
+        
+          
+        
+      )
+    case 'website':
+      return (
+        
+          
+        
+      )
+    default:
+      return (
+        
+          {props.text ? {props.text} : null}
+        
+      )
+  }
+};
 
 Icon.propTypes = {
   name: string.isRequired,
diff --git a/lib/ui/templates/PeopleTpl.js b/lib/ui/templates/PeopleTpl.js
index 7f3693a1..8439cd12 100644
--- a/lib/ui/templates/PeopleTpl.js
+++ b/lib/ui/templates/PeopleTpl.js
@@ -195,12 +195,15 @@ export const pageQuery = graphql`
           id
           html
           frontmatter {
+            bluesky
             fname
             github
             lname
+            mastodon
             quote
             score
             twitter
+            website
             uid
             avatar {
               childImageSharp {
@@ -235,12 +238,15 @@ export const pageQuery = graphql`
           id
           html
           frontmatter {
+            bluesky
             fname
             github
             lname
+            mastodon
             quote
             score
             twitter
+            website
             uid
             avatar {
               childImageSharp {
@@ -275,12 +281,15 @@ export const pageQuery = graphql`
           id
           html
           frontmatter {
+            bluesky
             fname
             github
             lname
+            mastodon
             quote
             score
             twitter
+            website
             uid
             avatar {
               childImageSharp {
diff --git a/lib/ui/templates/ofPeople/Person.js b/lib/ui/templates/ofPeople/Person.js
index 192b31cc..791e13f6 100644
--- a/lib/ui/templates/ofPeople/Person.js
+++ b/lib/ui/templates/ofPeople/Person.js
@@ -69,7 +69,16 @@ const PersonLinks = styled.div`
 const Member = props => {
   const { defaultAvatar } = props;
   const { frontmatter } = props.data;
-  const { avatar, fname, github, lname, twitter } = frontmatter;
+  const {
+    avatar,
+    bluesky,
+    fname,
+    github,
+    lname,
+    mastodon,
+    twitter,
+    website
+  } = frontmatter;
   return (
     
       
@@ -82,12 +91,42 @@ const Member = props => {
           {fname} {lname}
         
         
+          {website ? (
+             e.stopPropagation()}
+              href={`https://${website}/`}
+              rel="external noopener noreferrer"
+              target="_blank"
+            >
+              
+            
+          ) : null}
+          {bluesky ? (
+             e.stopPropagation()}
+              href={`https://bsky.app/profile/${bluesky}`}
+              rel="external noopener noreferrer"
+              target="_blank"
+            >
+              
+            
+          ) : null}
+          {mastodon ? (
+             e.stopPropagation()}
+              href={`https://${mastodon}`}
+              rel="external noopener noreferrer"
+              target="_blank"
+            >
+              
+            
+          ) : null}
           {twitter ? (
              e.stopPropagation()}
               href={`https://twitter.com/${twitter}`}
-              rel="external"
-              target="_blank noreferrer nofollow"
+              rel="external noopener noreferrer"
+              target="_blank"
             >
               
             
@@ -96,8 +135,8 @@ const Member = props => {
              e.stopPropagation()}
               href={`https://github.com/${github}`}
-              rel="external"
-              target="_blank noreferrer nofollow"
+              rel="external noopener noreferrer"
+              target="_blank"
             >
               
             
diff --git a/lib/ui/templates/ofPeople/PersonModal.js b/lib/ui/templates/ofPeople/PersonModal.js
index ec709d31..dcdb7cc8 100644
--- a/lib/ui/templates/ofPeople/PersonModal.js
+++ b/lib/ui/templates/ofPeople/PersonModal.js
@@ -60,7 +60,17 @@ const PersonSocial = styled.div`
 const Member = props => {
   const { defaultAvatar } = props;
   const { frontmatter, html } = props.data;
-  const { avatar, fname, github, lname, quote, twitter } = frontmatter;
+  const {
+    avatar,
+    bluesky,
+    fname,
+    github,
+    lname,
+    mastodon,
+    quote,
+    twitter,
+    website
+  } = frontmatter;
   return (
     
       
@@ -78,12 +88,51 @@ const Member = props => {
           
           {quote}
           
-            
-               GitHub
-            
-            
-               Twitter
-            
+            {website && (
+              
+                 Website
+              
+            )}
+            {bluesky && (
+              
+                 Bluesky
+              
+            )}
+            {mastodon && (
+              
+                 Mastodon
+              
+            )}
+            {twitter && (
+              
+                 Twitter
+              
+            )}
+            {github && (
+              
+                 GitHub
+              
+            )}
           
         
       
diff --git a/package.json b/package.json
index 03bcff18..e695464d 100644
--- a/package.json
+++ b/package.json
@@ -34,6 +34,7 @@
     "react": "17.0.2",
     "react-dom": "17.0.2",
     "react-helmet": "6.1.0",
+    "react-icons": "^5.3.0",
     "react-plx": "1.3.17",
     "styled-components": "5.3.3"
   },
diff --git a/src/pages/people/bios/fatima-khalid.md b/src/pages/people/bios/fatima-khalid.md
index e2ae6db1..05d25b01 100644
--- a/src/pages/people/bios/fatima-khalid.md
+++ b/src/pages/people/bios/fatima-khalid.md
@@ -8,6 +8,9 @@ role:
   - member: false
   - accomplice: false
 avatar: fatima-khalid.jpg
+website: 
+bluesky: 
+mastodon: 
 twitter: sugaroverflow
 github: sugaroverflow
 quote: Thank you for literally keeping everything from falling apart - Matt Stempeck
diff --git a/src/pages/people/bios/ian-anderson.md b/src/pages/people/bios/ian-anderson.md
index 9c561541..6d30b996 100644
--- a/src/pages/people/bios/ian-anderson.md
+++ b/src/pages/people/bios/ian-anderson.md
@@ -8,6 +8,9 @@ role:
   - member: true
   - accomplice: false
 avatar: ian-anderson.jpg
+website: 
+bluesky: 
+mastodon: 
 twitter: senorinfinito
 github: ijanderso
 quote: 
diff --git a/src/pages/people/bios/jason-miller.md b/src/pages/people/bios/jason-miller.md
index 7a443203..aa98abcc 100644
--- a/src/pages/people/bios/jason-miller.md
+++ b/src/pages/people/bios/jason-miller.md
@@ -8,6 +8,9 @@ role:
   - member: false
   - accomplice: false
 avatar: 
+website: 
+bluesky: 
+mastodon: 
 twitter: millllllllllz
 github: JasonMiller
 quote: 
diff --git a/src/pages/people/bios/joanna-bogusz.md b/src/pages/people/bios/joanna-bogusz.md
index f4463549..0d5d5330 100644
--- a/src/pages/people/bios/joanna-bogusz.md
+++ b/src/pages/people/bios/joanna-bogusz.md
@@ -8,6 +8,9 @@ role:
   - member: false
   - accomplice: true
 avatar: joanna-bogusz.jpg
+website: 
+bluesky: 
+mastodon: 
 twitter: 
 github: 
 quote: 
diff --git a/src/pages/people/bios/julia-smith.md b/src/pages/people/bios/julia-smith.md
index 928bb8b3..868f0d80 100644
--- a/src/pages/people/bios/julia-smith.md
+++ b/src/pages/people/bios/julia-smith.md
@@ -8,6 +8,9 @@ role:
   - member: false
   - accomplice: true
 avatar: julia-smith.png
+website: 
+bluesky: 
+mastodon: 
 twitter: smythological
 github: julia-smith
 quote: OPPORTUNITY, n. A favorable occasion for grasping a disappointment. – Ambrose Bierce
diff --git a/src/pages/people/bios/justin-reese.md b/src/pages/people/bios/justin-reese.md
index 1f35741c..1c7eac78 100644
--- a/src/pages/people/bios/justin-reese.md
+++ b/src/pages/people/bios/justin-reese.md
@@ -8,6 +8,9 @@ role:
   - member: false
   - accomplice: true
 avatar: justin-reese.jpg
+website: 
+bluesky: 
+mastodon: 
 twitter: reefdog
 github: reefdog
 quote: “The story was gradually taking shape. Pilon liked it this way. It ruined a story to have it all come out quickly. The good story lay in half-told things which must be filled in out of the hearer’s own experiences.” — Tortilla Flat
diff --git a/src/pages/people/bios/kate-darling.md b/src/pages/people/bios/kate-darling.md
index fd75fe86..07f2ff29 100644
--- a/src/pages/people/bios/kate-darling.md
+++ b/src/pages/people/bios/kate-darling.md
@@ -8,6 +8,9 @@ role:
   - member: false
   - accomplice: false
 avatar: kate-darling.jpg
+website: 
+bluesky: 
+mastodon: 
 twitter: grok_
 github: grok
 quote: Quick someone give me a good quote
diff --git a/src/pages/people/bios/kavya-sukumar.md b/src/pages/people/bios/kavya-sukumar.md
index 62201dfe..d66a2e70 100644
--- a/src/pages/people/bios/kavya-sukumar.md
+++ b/src/pages/people/bios/kavya-sukumar.md
@@ -8,6 +8,9 @@ role:
   - member: true
   - accomplice: true
 avatar: kavya-sukumar.jpg
+website: 
+bluesky: 
+mastodon: 
 twitter: kavyasukumar
 github: kavyasukumar
 quote: She is a diversity lottery - A recruiter who accidentally cc'ed me on an internal mail about my job application
diff --git a/src/pages/people/bios/laurian-gridinoc.md b/src/pages/people/bios/laurian-gridinoc.md
index db59ef97..03cc672f 100644
--- a/src/pages/people/bios/laurian-gridinoc.md
+++ b/src/pages/people/bios/laurian-gridinoc.md
@@ -8,6 +8,9 @@ role:
   - member: false
   - accomplice: true
 avatar: laurian-gridinoc.jpg
+website: 
+bluesky: 
+mastodon: 
 twitter: gridinoc
 github: Laurian
 quote: Puisque nos dieux et nos espoirs ne sont plus que scientifiques, pourquoi nos amours ne le deviendraient-ils pas également? — Auguste Villiers de l’Isle-Adam, L’Ève future
diff --git a/src/pages/people/bios/lou-huang.md b/src/pages/people/bios/lou-huang.md
index f2df569a..a7596789 100644
--- a/src/pages/people/bios/lou-huang.md
+++ b/src/pages/people/bios/lou-huang.md
@@ -8,13 +8,15 @@ role:
   - member: true
   - accomplice: true
 avatar: lou-huang.jpg
-twitter: saikofish
+website: louhuang.com
+bluesky: louh.bsky.social
+mastodon: jawns.club/@lou
+# twitter: saikofish
 github: louh
 quote: Unlike the rest of you losers, I’ve made at least 20% of the shots I didn’t take
 score: 1
 ---
 
-Lou is an open source software developer, user interface engineer, urban designer, recovering architect and professional internet trickster based in Brooklyn, NY. He is the founder and CEO of Streetmix, a collaborative urban design platform.
-
-He is currently serving as Bad Idea Factory’s Treasure Goblin and works on a number of frivolous projects under the guise of secretly undermining capitalism. Sometimes he will stream livecoding and video games on [Twitch](https://www.twitch.tv/saikofish).
+Lou is an open source software developer, user interface engineer, urban designer, recovering architect and professional internet trickster based in Philadelphia, PA. He is the founder of [Streetmix](https://streetmix.net/), a collaborative urban design platform.
 
+He is currently serving as Bad Idea Factory’s Undersecretary of the Interior and works on a number of frivolous projects under the guise of secretly undermining capitalism.
diff --git a/src/pages/people/bios/margo-dunlap.md b/src/pages/people/bios/margo-dunlap.md
index bada4a62..72b201da 100644
--- a/src/pages/people/bios/margo-dunlap.md
+++ b/src/pages/people/bios/margo-dunlap.md
@@ -8,6 +8,9 @@ role:
   - member: false
   - accomplice: true
 avatar: margo-dunlap.jpg
+website: 
+bluesky: 
+mastodon: 
 twitter: MargoDunlap
 github: margoyle
 quote: 
diff --git a/src/pages/people/bios/mark-boas.md b/src/pages/people/bios/mark-boas.md
index f7c18cf7..b232d09a 100644
--- a/src/pages/people/bios/mark-boas.md
+++ b/src/pages/people/bios/mark-boas.md
@@ -8,6 +8,9 @@ role:
   - member: true
   - accomplice: true
 avatar: mark-boas.jpg
+website: 
+bluesky: 
+mastodon: 
 twitter: maboa
 github: maboa
 quote: Well, in that case, sir, I hope you will not object if I also offer the doctor my most enthusiastic contrafibularities – Sir Edmund Blackadder
diff --git a/src/pages/people/bios/matt-stempeck.md b/src/pages/people/bios/matt-stempeck.md
index 3a3f6354..723e46ce 100644
--- a/src/pages/people/bios/matt-stempeck.md
+++ b/src/pages/people/bios/matt-stempeck.md
@@ -8,6 +8,9 @@ role:
   - member: true
   - accomplice: true
 avatar: matt-stempeck.jpg
+website: 
+bluesky: 
+mastodon: 
 twitter: mstem
 github: mstem
 quote: 
diff --git a/src/pages/people/bios/mike-tigas.md b/src/pages/people/bios/mike-tigas.md
index 8cccff2c..ebc59dcc 100644
--- a/src/pages/people/bios/mike-tigas.md
+++ b/src/pages/people/bios/mike-tigas.md
@@ -8,6 +8,9 @@ role:
   - member: false
   - accomplice: false
 avatar: mike-tigas.jpg
+website: 
+bluesky: 
+mastodon: 
 twitter: mtigas
 github: mtigas
 quote: ¯\_(ツ)_/¯
diff --git a/src/pages/people/bios/paul-schultz.md b/src/pages/people/bios/paul-schultz.md
index 57a31503..7ab752aa 100644
--- a/src/pages/people/bios/paul-schultz.md
+++ b/src/pages/people/bios/paul-schultz.md
@@ -8,6 +8,9 @@ role:
   - member: false
   - accomplice: false
 avatar: paul-schultz.jpg
+website: 
+bluesky: 
+mastodon: 
 twitter: 
 github: paulwschultz
 quote: All you have to do is click the right amount of buttons. - Sean (Day[9]) Plott
diff --git a/src/pages/people/bios/piotr-fedorczyk.md b/src/pages/people/bios/piotr-fedorczyk.md
index bd15b626..d136b930 100644
--- a/src/pages/people/bios/piotr-fedorczyk.md
+++ b/src/pages/people/bios/piotr-fedorczyk.md
@@ -8,6 +8,9 @@ role:
   - member: false
   - accomplice: true
 avatar: piotr-fedorczyk.png
+website: 
+bluesky: 
+mastodon: 
 twitter: presentday
 github: piotrf
 quote: I have no regrets
diff --git a/src/pages/people/bios/ted-han.md b/src/pages/people/bios/ted-han.md
index f90a2654..e8a9f17b 100644
--- a/src/pages/people/bios/ted-han.md
+++ b/src/pages/people/bios/ted-han.md
@@ -8,6 +8,9 @@ role:
   - member: false
   - accomplice: true
 avatar: ted-han.jpg
+website: 
+bluesky: 
+mastodon: 
 twitter: knowtheory
 github: knowtheory
 quote: Ted Han could not be reached for comment
diff --git a/yarn.lock b/yarn.lock
index 45ba3a01..8ca93d8e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9803,6 +9803,11 @@ react-helmet@6.1.0:
     react-fast-compare "^3.1.1"
     react-side-effect "^2.1.0"
 
+react-icons@^5.3.0:
+  version "5.3.0"
+  resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-5.3.0.tgz#ccad07a30aebd40a89f8cfa7d82e466019203f1c"
+  integrity sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==
+
 react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0:
   version "16.13.1"
   resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"