Skip to content

Commit 72fc422

Browse files
committed
Improved typed salutations
1 parent 36b23d6 commit 72fc422

File tree

5 files changed

+184
-58
lines changed

5 files changed

+184
-58
lines changed

β€Ždocs/index.mdβ€Ž

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,23 @@
11
---
2-
title: πŸ‘‹
2+
title: πŸ‘‹πŸ€” uh, is this on? <i>*taps 🎀*</i>
33
hide:
44
- toc
55
- navigation
66
---
7-
<script src="https://cdn.jsdelivr.net/npm/typed.js@2.0.12"></script>
8-
<script>
9-
var typed = new Typed('h1', {
10-
startDelay: 000,
11-
showCursor: false,
12-
typeSpeed: 50,
13-
strings: {{ salutation_permutations() }},
14-
});
15-
// todo: cycle avatar
16-
</script>
7+
![avatar](media/avataaar.png){ align=left height=200px width=200px }
8+
![avatar](media/shaggy.svg){ align=right height=200px width=200px }
179

1810
## Michael Joseph
1911

20-
![avatar](media/shaggy.svg){ align=left height=200px width=200px }
21-
2212
I've [worked](/resume) in the computer / internet industry for the last {{ now().year - 1999}} years, primarily as a backend software engineer for web applications.
2313

2414
For most of that time, I've either been the lead of a small developer team or provided technical leadership and engineering management roles.
2515

2616
*[Michael Joseph]: yes, two first names, I know. MJ works as an internet handle, for people into the whole brevity thing as well as for disambiguation purpose
2717

28-
{{ skills_badge_urls() }}
29-
30-
31-
32-
33-
34-
18+
----
19+
<br/>
3520

21+
{{ skills_badge_urls() }}
3622

23+
{{ typed_salutations() }}

β€Žjustfileβ€Ž

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,6 @@ serve:
33

44
build:
55
poetry run mkdocs build
6+
7+
surge: build
8+
npx surge site michaeljoseph.surge.sh

β€Žpoetry.lockβ€Ž

Lines changed: 106 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

β€Žpyproject.tomlβ€Ž

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ toml = "^0.10.2"
1818
waybackpy = "^2.4.3"
1919
pyppeteer = "^0.2.5"
2020
mistune = {version = "2.0.0rc1", allow-prereleases = true}
21+
pybadges = "^2.2.1"
22+
requests-cache = "^0.8.1"
2123

2224
[tool.poetry.dev-dependencies]
2325
bpython = "^0.21"

β€Žsrc/resume/__init__.pyβ€Ž

Lines changed: 66 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1+
from itertools import product
12
from pathlib import Path
3+
import json
4+
import random
5+
26

37
def get_resume(format, name='resume'):
48
# TODO: load by format
@@ -28,6 +32,55 @@ def experience_skills(job_id=None):
2832

2933
return [s.strip() for s in skills[job_id].split('+') if s]
3034

35+
36+
def salutation_permutations():
37+
"""Say 'Hello, my name is' in a bunch of ways"""
38+
hellojis = 'πŸ‘‹ 🌊 πŸ™‹ πŸ––'.split()
39+
40+
hello = (
41+
'hello sawubona haai molo dumela'
42+
'hi yo sup hiya hey howzit hoesit aweh hola heita'
43+
).split()
44+
hello.extend(['whakind eksΓͺ', 'hoe lyk it'])
45+
46+
my_names_are = [
47+
'my name is',
48+
'my naam is',
49+
'igama lami ngu',
50+
'lebitso la ka ke'
51+
]
52+
53+
salutation_permutations = list(product(
54+
hellojis, hello, my_names_are
55+
))
56+
random.shuffle(salutation_permutations)
57+
58+
salutations = [
59+
f'πŸ€“{emoji} {hello}, {my_name_is} '
60+
for emoji, hello, my_name_is in salutation_permutations
61+
]
62+
return salutations
63+
64+
65+
TYPED_JS = "https://cdn.jsdelivr.net/npm/typed.js@2.0.12"
66+
def typed_salutations():
67+
return typed_js('h1', salutation_permutations())
68+
69+
def typed_js(dom_element, things_to_type):
70+
options = json.dumps(dict(
71+
smartBackspace=True,
72+
startDelay=3000,
73+
showCursor=False,
74+
typeSpeed=50,
75+
strings=things_to_type,
76+
))
77+
78+
return '\n'.join([
79+
f'<script src="{TYPED_JS}"></script>',
80+
f"<script>var typed = new Typed('{dom_element}', {options});</script>",
81+
])
82+
83+
3184
BADGE_URL_TEMPLATE = "https://img.shields.io/badge/{badge_name}?style={style}&logo={logo}&logoColor={colour}"
3285
SKILL_BADGE_MAP = {
3386
# browsers
@@ -81,36 +134,18 @@ def generate_badge_url(skill):
81134
'badge_name style logo colour'.split(),
82135
[skill_id, 'for-the-badge', skill, 'white'],
83136
)))
137+
def skills_badge_urls(company=None):
138+
badges = [
139+
generate_badge_url(skill)
140+
for skill in experience_skills(company)
141+
]
142+
# remove unrecognised skills
143+
badges = [b for b in badges if b]
144+
145+
return ' '.join([f'<img src="{url}"/>' for url in badges])
146+
147+
84148

85149
def define_env(env):
86-
@env.macro
87-
def skills_badge_urls(company=None):
88-
badges = [
89-
generate_badge_url(skill)
90-
for skill in experience_skills(company)
91-
]
92-
# remove unrecognised skills
93-
badges = [b for b in badges if b]
94-
95-
return ' '.join([f'<img src="{url}"/>' for url in badges])
96-
97-
@env.macro
98-
def salutation_permutations():
99-
howzits = 'hi yo sup howzit hiya hello'.split()
100-
hellojis = 'πŸ‘‹ 🌊 πŸ™‹ πŸ––'.split()
101-
# TODO: sample mood-db => moodmoji
102-
# TODO: local/pure-py translation?
103-
my_names_are = [
104-
'my name is',
105-
'my naam is',
106-
'igama lami ngu',
107-
'mi nobre es',
108-
'my name is',
109-
]
110-
return [
111-
'πŸ‘‹ hi, my name is',
112-
'πŸ‘‹ hi, my naam is',
113-
'πŸ‘‹ hi, igama lami ngu',
114-
'πŸ‘‹ hi, mi nobre es',
115-
'πŸ‘‹ hi, my name is',
116-
]
150+
env.variables['skills_badge_urls'] = skills_badge_urls
151+
env.variables['typed_salutations'] = typed_salutations

0 commit comments

Comments
Β (0)