-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathabout.html
More file actions
389 lines (370 loc) · 18.4 KB
/
about.html
File metadata and controls
389 lines (370 loc) · 18.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
---
title: About
layout: default
---
{% include nav.html %}
<main class="row-wrap">
<a href="https://en.gravatar.com/whusterj" target="_blank" class="no-highlight">
<img src="http://gravatar.com/avatar/4e5a5a2d5be8c26770a7d901b5898a9e?s=800"
style="width: 100%; height: auto; max-width: 13rem;" alt="Portrait of William via Gravatar">
</a>
<p class="bio">
Entrepreneur. Engineer. Angel Investor. 🍖📻 Ham Radio Operator. Some kind of artist.
Right now I'm working on <a href="https://www.thinknimble.com" target="_blank">ThinkNimble</a>,
where we are building software for organizations we admire.
</p>
<p>
<strong>Not Written by AI</strong> — I use AI daily as a coding assistant and research tool. I think it's
great and also scary. The lines get blurry sometimes, but it is crucially important to me that every word
I put down on this site is generated from my own meat-based neural net and reflect as much as possible
my own "natural general intelligence." I hope they are of some value.
</p>
<p>
<strong>🍖📻 Ham Radio</strong>
<a href="https://www.qrz.com/db/W3WYM">W3WYM</a>
</p>
<p>
<strong>𝕏</strong>
<a href="https://x.com/whusterj">@whusterj</a>
</p>
<p>
<strong>Github</strong>
<a href="https://github.com/whusterj">whusterj</a>
</p>
<div class="credits-section">
<h2>Credits Roll</h2>
<p>Software I've built or helped build since 2007.</p>
<ul>
<li>2025 <a href="https://www.ecue.ai/">Ecue</a> - AI Agent migration</li>
<li>2025 <a href="https://app.opening.guru/">Opening Guru</a> - End-to-end chess app</li>
<li>2025 <a href="https://quadrantstrategies.com/">Quadrant Strategies</a> - Panelist Platform</li>
<li>2025 <a href="https://vuenome.com/">VueNome</a> - AI Agent Build</li>
<li>2025 <a href="https://myhyde.com/uni/my-career-closet/">Hyde MCC Career Fair</a> - Technical Leadership, AI Recommender</li>
<li>2025 <a href="https://www.hivewealth.com/">Hive Wealth</a> - Technical Leadership</li>
<li>2025 <a href="https://brize.ai/">Brize</a> - End-to-end AI MVP</li>
<li>2025 <a href="https://app.thrippy.fun/">ThriftShop/Thrippy</a> - End-to-end AI MVP</li>
<li>2025 <a href="https://gopursue.com/">GoPursue</a> - End-to-end AI MVP</li>
<li>2025 <a href="https://www.projectbasta.com/">Project Basta</a> - V2 Rebuild Scoring Algorithm</li>
<li>2024-26 <a href="https://www.darksaberlabs.com/">DarkSaber</a> - Tech Leadership, Project Leadership, Radio</li>
<li>2024-25 <a href="https://puttrax.com/">Puttrax</a> - Tech Leadership, Hardware, ML</li>
<li>2024-25 Billflow for <a href="https://www.penningtonpartners.co/">Pennington Partners</a> - Internal Tool</li>
<li>2024 <a href="https://www.barometerxp.com/">Barometer XP</a> - Games Platform</li>
<li>2024 <a href="https://www.experiolabs.ai/">Experio</a> - Tech Leadership, AI Architecture</li>
<li>2024 <a href="https://data4living.com/">Data4Living</a> - Tech Leadership, Patent Application</li>
<li>2024 <a href="https://start.markshhc.com/">Marks Home Care</a> - Tech Leadership</li>
<li>2024 <a href="https://www.equati.ai/">Equati</a> - Tech Leadership, Software Architecture</li>
<li>2024 <a href="https://www.delvedeeper.ai/">Delve</a> - Embeddings/LLM, Ingest Scalability</li>
<li>2024 <a href="https://acuity.health/">Acuity Health</a> - HealthIndex, Transformer/LLM Research</li>
<li>2024 <a href="https://www.arclet.com/">Arclet</a> - Fractional CTO</li>
<li>2024 <a href="https://thedinnerdaily.com/">Dinner Daily</a> - Fractional CTO</li>
<li>2024 Brumby Horse - Supported FastAI Weight Prediction Model</li>
<li>2024 Limitless 3D Prints - Tech Leadership</li>
<li>2024-2026 <a href="https://github.com/thinknimble/tn-cli">TN CLI</a></li>
<li>2023-24 <a href="https://www.capitalpride.org/">Capital Pride App</a> - Load Testing & Architecture</li>
<li>2023-24 Lexx - Engineering Plan, Recommender System, UX Redesign</li>
<li>2023 Alignment View - 360-degree Video Processing, ThreeJS</li>
<li>2023 <a href="https://www.projectbasta.com/">Project Basta</a> - Student/Job Match Scoring</li>
<li>2023 <a href="https://www.manual.care/">Manual</a> - Video Encoding and Transcription Pipeline</li>
<li>2023 <a href="https://thedinnerdaily.com/">Dinner Daily</a> - Maintenance and Migration Plan</li>
<li>2023 Julep - Tech Leadership, React Native</li>
<li>2023 <a href="https://spurlocal.org">SpurLocal</a> - Site Rebrand</li>
<li>2023 <a href="https://www.airtechnologiesinc.com/">Air Technologies</a> - Discovery, Architecture</li>
<li>2023 VueNome - Discovery, Architecture</li>
<li>2022 <a href="https://storyraise.com">Yearly Report / Storyraise</a> - App Rebuild</li>
<li>2022 Worthy Mentoring 2.0 - React Native CI/CD Pipeline</li>
<li>2022 <a href="https://squirreledu.co/">Squirrel</a> - Financial Literacy Video Game</li>
<li>2022 Swoopt - Ticket Syncing Service</li>
<li>2022 <a href="https://www.bysavi.com/">Savi</a> - API Proxy & Webhooks Service</li>
<li>2022 uand2 - Two-sided market + Network Visualization</li>
<li>2021 <a href="https://www.joinpropio.com/">NanEd/Propio</a> - Technical Management</li>
<li>2021 <a href="https://www.bysavi.com/">Savi</a> - Application Errors Analysis (ML)</li>
<li>2020 <a href="https://office.thinknimble.com/">The ThinkNimble Office</a> - Unity HTML5 Experiment</li>
<li>2020 Antique Stories - React Native, In-App Purchases</li>
<li>2020 <a href="https://lightenarrangements.com/">Lighten</a> - Staff Portal, Album Manager</li>
<li>2020 <a href="https://workwithcanary.com/">Canary</a> - Hardship Loans Platform</li>
<li>2020 <a href="https://github.com/thinknimble/tn-models-fp">tn-models</a> - JavaScript API patterns library</li>
<li>2020 <a href="https://github.com/thinknimble/tn-utils">tn-utils</a> - JavaScript utilities library</li>
<li>2020 <a href="https://github.com/thinknimble/tn-harvester">tn-reports, tn-harvester</a> - Internal reporting tool</li>
<li>2020 YIA Event Hub - Pandemic virtual conference platform</li>
<li>2020 <a href="https://glowmode.com/">Glowmode</a> - React Native + In-App Purchases</li>
<li>2019 Changeroots - React Native Candidate Comparison</li>
<li>2019 <a href="https://github.com/thinknimble/tn-bootstrapper">tn-bootstrapper</a> v1.0</li>
<li>2019 <a href="https://www.bysavi.com/">Savi</a> - Plaid Integration</li>
<li>2019 <a href="https://www.bysavi.com/">Savi</a> - Loan Repayments Calculator</li>
<li>2019 <a href="https://www.bysavi.com/">Savi</a> - PSLF Calculator</li>
<li>2019 <a href="https://www.spotandtango.com/">Spot & Tango</a> - Unkibble Animated Marketing Website</li>
<li>2019 <a href="https://www.spotandtango.com/">Spot & Tango</a> - Subscription Calculator & Service</li>
<li>2019 <a href="https://www.leadmn.org/">LeadMN</a> - React Native App & Backend</li>
<li>2019 Here to Career - React Native App & Backend</li>
<li>2019 <a href="https://hopeforhenry.org/">Hope for Henry</a> - Survey Video Game</li>
<li>2019 <a href="https://www.edsights.io/">EdSights</a> - VueJS + Django App, Infrastructure</li>
<li>2019 Dressmate - Clothing Resale Platform</li>
<li>2019 Imby - Matching Algorithm</li>
<li>2018 Festi - React Native Mobile App</li>
<li>2018 Pact Survey</li>
<li>2018 CFP - Legacy PHP Site</li>
<li>2018 CFP - Board Match Site</li>
<li>2018 Givebutter - Quickbooks and Lob Integrations</li>
<li>2018 CFP - Learning Commons Site</li>
<li>2018 Soil Nerd - Soil Analysis Calculator</li>
<li>2018 TopKnott - Two-sided marketplace</li>
<li>2017 FACE Addiction Website - WordPress</li>
<li>2017 AllowIt / ClassPulse - React Native + FullStack</li>
<li>2017 Ordway - Salesforce.com Integration</li>
<li>2017 tn-marketing - First version of ThinkNimble's marketing site</li>
<li>2017 Eastern Senior Highschool - WordPress</li>
<li>2017 Park City Giving Guide - Holiday Donations Platform</li>
<li>2017 Aspire - Operations Management Dashboard</li>
<li>2017 Aspire - QBO Integration, Automated Invoicing & Bookkeeping</li>
<li>2016 Aspire - Recommendation Algorithm</li>
<li>2015 Aspire - Team Perks Platform</li>
<li>2014 Alert! Alert! npm Package</li>
<li>2014 Aspire - Personal Perks Platform (Co-Founded, scaled to $2M ARR, acquired)</li>
<li>2014 Lucierna Redesign & Integration - A SmartBear acquisition</li>
<li>2013 AlertSite UX Redesign / AngularJS Build</li>
<li>2012 <a href="https://modavanti.com">Modavanti.com</a> - E-commerce for sustainable fashion</li>
<li>2011 Compass Connect Social Network</li>
<li>2011 Compass Mentor Training Platform</li>
<li>2010 Compass WordPress-based Website</li>
<li>2009 Compass Flash-based Website</li>
<li>2008 A New Leaf - Subscription e-commerce</li>
<li>2007 Fabretto - PHP Site</li>
</ul>
</div>
<div class="four-thousand-weeks">
<h2>My 4000 Weeks</h2>
<p>Born September 24, 1987</p>
<p class="stats">Week {{ weeks_lived }} of 4000 • {{ site.time | date: "%B %d, %Y" }}</p>
<style>
.four-thousand-weeks {
margin-top: 2rem;
text-align: center;
}
.four-thousand-weeks h2 {
margin-bottom: 0.5rem;
}
.stats {
font-size: 0.8rem;
color: var(--text-color, #666);
margin-bottom: 1rem;
}
.weeks-container {
display: flex;
flex-direction: column;
max-width: 56rem;
margin: 1rem auto;
overflow-x: auto;
padding-bottom: 1rem; /* Add padding for scrollbar */
}
.week-labels-row {
display: flex;
margin-bottom: 0.5rem;
align-items: center;
padding-bottom: 0.2rem;
min-width: 32rem; /* Match year-row width */
}
.year-label {
font-size: 0.8rem;
width: 3rem;
text-align: right;
margin-right: 0.5rem;
font-weight: bold;
flex-shrink: 0;
}
.year-row {
display: flex;
margin-bottom: 0.3rem;
height: 1.1rem;
align-items: center;
min-width: 32rem; /* Ensure minimum width for horizontal scrolling */
}
.half-year {
display: flex;
min-width: 15rem; /* Ensure minimum width for dots */
}
.half-separator {
width: 0.7rem;
flex-shrink: 0;
}
.week-dot {
width: 0.45rem;
height: 0.45rem;
border-radius: 50%;
margin: 0 0.05rem;
display: inline-block;
box-sizing: border-box;
}
.week-label {
font-size: 0.7rem;
color: var(--text-color, #666);
font-weight: bold;
}
.week-lived {
background-color: var(--text-color, #333);
border: 1px solid var(--text-color, #333);
}
.week-current {
background-color: #ff5252;
border: 1px solid #ff5252;
position: relative;
z-index: 1;
}
.week-birth {
background-color: #52a9ff;
border: 1px solid #52a9ff;
position: relative;
z-index: 1;
}
.week-remaining {
background-color: transparent;
border: 1px solid var(--text-color, #333);
}
@media (prefers-color-scheme: dark) {
.week-lived {
background-color: var(--text-color, #eee);
border: 1px solid var(--text-color, #eee);
}
.week-current {
background-color: #ff5252;
border: 1px solid #ff5252;
}
.week-birth {
background-color: #52a9ff;
border: 1px solid #52a9ff;
}
.week-remaining {
background-color: transparent;
border: 1px solid var(--text-color, #eee);
}
}
</style>
<div class="weeks-container">
<!-- Week labels -->
<div class="week-labels-row">
<div class="year-label"></div>
<div class="half-year" style="position: relative;">
<span class="week-label" style="position: absolute; left: 0.1rem;">1</span>
<span class="week-label" style="position: absolute; right: 0.1rem;">26</span>
{% for week_num in (1..26) %}
<span class="week-dot" style="visibility: hidden;"></span>
{% endfor %}
</div>
<div class="half-separator"></div>
<div class="half-year" style="position: relative;">
<span class="week-label" style="position: absolute; left: 0.1rem;">27</span>
<span class="week-label" style="position: absolute; right: 0.1rem;">52</span>
{% for week_num in (1..26) %}
<span class="week-dot" style="visibility: hidden;"></span>
{% endfor %}
</div>
</div>
{% comment %}
Calculate date values and week numbers
{% endcomment %}
{% comment %}
Get birth date and current date in seconds
{% endcomment %}
{% assign birth_timestamp = "1987-09-24" | date: "%s" | plus: 0 %}
{% assign current_timestamp = site.time | date: "%s" | plus: 0 %}
{% comment %}
Calculate seconds lived and convert to days then weeks
Divide by seconds in a day (86400) then divide by 7 for weeks
{% endcomment %}
{% assign seconds_lived = current_timestamp | minus: birth_timestamp %}
{% assign days_lived = seconds_lived | divided_by: 86400 %}
{% assign weeks_lived = days_lived | divided_by: 7 %}
{% comment %}
For debugging, you can uncomment this and hardcode values when testing locally
But the above calculation will be dynamic based on site.time when deployed
{% endcomment %}
{% comment %}
{% assign weeks_lived = 1949 %}
{% endcomment %}
{% comment %}
Calculate absolute week number where birth is week 1
{% endcomment %}
{% assign total_weeks = 4000 %}
{% assign weeks_per_year = 52 %}
{% assign half_year = 26 %}
{% assign total_years = total_weeks | divided_by: weeks_per_year %}
{% comment %}
Calculate birth week position within first year (1987) dynamically
{% endcomment %}
{% assign jan1_1987 = "1987-01-01" | date: "%s" | plus: 0 %}
{% assign seconds_to_birth = birth_timestamp | minus: jan1_1987 %}
{% assign days_to_birth = seconds_to_birth | divided_by: 86400 %}
{% assign birth_week_of_year = days_to_birth | divided_by: 7 | plus: 1 %}
{% comment %}
Create a week counter starting from 1
{% endcomment %}
{% assign absolute_week = 1 %}
{% for year in (1987..2063) %}
{% assign week_in_year = 1 %}
<div class="year-row">
<div class="year-label">{{ year }}</div>
<!-- First half of the year -->
<div class="half-year">
{% for week_num in (1..26) %}
{% if year == 1987 and week_num < birth_week_of_year %}
<span class="week-dot week-remaining" title="Before birth ({{ year }}, Week {{ week_num }})"></span>
{% elsif year == 1987 and week_num == birth_week_of_year %}
<span class="week-dot week-birth" title="Birth Week! ({{ year }}, Week {{ week_num }})"></span>
{% assign absolute_week = absolute_week | plus: 1 %}
{% elsif absolute_week <= weeks_lived %}
{% if absolute_week == weeks_lived %}
<span class="week-dot week-current" title="Current Week {{ absolute_week }} of 4000 ({{ year }}, Week {{ week_num }})"></span>
{% else %}
<span class="week-dot week-lived" title="Week {{ absolute_week }} of 4000 ({{ year }}, Week {{ week_num }})"></span>
{% endif %}
{% assign absolute_week = absolute_week | plus: 1 %}
{% else %}
<span class="week-dot week-remaining" title="Week {{ absolute_week }} of 4000 ({{ year }}, Week {{ week_num }})"></span>
{% assign absolute_week = absolute_week | plus: 1 %}
{% endif %}
{% assign week_in_year = week_in_year | plus: 1 %}
{% endfor %}
</div>
<!-- Separator between half years -->
<div class="half-separator"></div>
<!-- Second half of the year -->
<div class="half-year">
{% for week_num in (27..52) %}
{% if year == 1987 and week_num < birth_week_of_year %}
<span class="week-dot week-remaining" title="Before birth ({{ year }}, Week {{ week_num }})"></span>
{% elsif year == 1987 and week_num == birth_week_of_year %}
<span class="week-dot week-birth" title="Birth Week! ({{ year }}, Week {{ week_num }})"></span>
{% assign absolute_week = absolute_week | plus: 1 %}
{% elsif absolute_week <= weeks_lived %}
{% if absolute_week == weeks_lived %}
<span class="week-dot week-current" title="Current Week {{ absolute_week }} of 4000 ({{ year }}, Week {{ week_num }})"></span>
{% else %}
<span class="week-dot week-lived" title="Week {{ absolute_week }} of 4000 ({{ year }}, Week {{ week_num }})"></span>
{% endif %}
{% assign absolute_week = absolute_week | plus: 1 %}
{% else %}
<span class="week-dot week-remaining" title="Week {{ absolute_week }} of 4000 ({{ year }}, Week {{ week_num }})"></span>
{% assign absolute_week = absolute_week | plus: 1 %}
{% endif %}
{% assign week_in_year = week_in_year | plus: 1 %}
{% endfor %}
</div>
</div>
{% endfor %}
</div>
</div>
<!--
<p>
<strong>GPG:</strong><br>
<a href="https://sks-keyservers.net/pks/lookup?op=get&search=0xBA694FBD002258AC">0xBA694FBD002258AC</a><br>
<span>706B 7783 3654 9776 DF8F 4937 BA69 4FBD 0022 58AC</span>
</p>
-->
<p>
<strong>Gimme Some Internet Monay</strong><br>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>ETH: 0x3Fbf06aa2CBBFd2555eF5b697a3bbc956627b08e
XCH: xch1cznqqlfqj4hd2a3kyn2ryn806epsmvt0leupda3u744ykvnhswls4v44h5
BTC: 1PMzFUpHbuBMyhtDuDqKX6vVk1cmHvjb2T</code></pre></div></div>
</p>
</main>