Skip to content

Commit 601b829

Browse files
committed
Big updates
1 parent eaaabd5 commit 601b829

File tree

2 files changed

+203
-19
lines changed

2 files changed

+203
-19
lines changed

index.html

Lines changed: 120 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,9 @@
2727
<img src="https://bsdc.sfo2.cdn.digitaloceanspaces.com/lazr-logo.png" alt="Big Sky Dev Con Logo"
2828
style="width: 97px; object-fit: contain; height: 100%">
2929
<div class="navbar-items">
30+
<a href="https://www.youtube.com/@montanaprogrammers2412/streams" target="_blank" class="livestream-btn red-btn"><span class="dot"></span>Live Stream ▶▶▶</a>
3031
<a href="https://www.montanaprogrammers.org/community-guidelines" target="_blank">Code Of Conduct</a>
31-
<a href="https://bsdc25.eventbrite.com" target="_blank">Tickets ▶▶▶</a>
32+
<a href="https://bsdc25.eventbrite.com" target="_blank" class="tickets-btn">Tickets ▶▶▶</a>
3233
</div>
3334
</nav>
3435

@@ -63,8 +64,8 @@
6364
<div class="about-section flex-container flex-column">
6465
<div class="about-text text-body">
6566
<p>Big Sky Dev Con is a summer tech conference in Bozeman, Montana, hosted by Montana Programmers.
66-
This years event features hours of presentations—17 talks in total—covering everything from running LLMs on mobile and JSX without React to Rust-powered potato cannons, HTMX 3D games, and teaching Vim at scale. Its a mix of real-world software, ridiculous side projects, and lessons from the edge of whats possible in dev, design, and tech business.</p>
67-
<p>Join Montanas tech community this August and get inspired to build something a little wild. If you're tired of boring conferences, this is your kind of conference.</p>
67+
This year's event features hours of presentations—17 talks in total—covering everything from running LLMs on mobile and JSX without React to Rust-powered potato cannons, HTMX 3D games, and teaching Vim at scale. It's a mix of real-world software, ridiculous side projects, and lessons from the edge of what's possible in dev, design, and tech business.</p>
68+
<p>Join Montana's tech community this August and get inspired to build something a little wild. If you're tired of boring conferences, this is your kind of conference.</p>
6869
</div>
6970
</div>
7071
</div>
@@ -87,12 +88,12 @@ <h2 class="speakers-title text-title">
8788
<div class="speaker">
8889
<img src="https://bsdc.sfo2.cdn.digitaloceanspaces.com/speakers/typecraft.png" />
8990
<div class="speaker-name">typecraft</div>
90-
<div class="speaker-info">Currently slinging JS for HashiCorp; Previously slung JS for Amazon, Apple and Netflix. Host of Whiskey Web and Whatnot, member of the Ember Learning Core Team.</div>
91+
<div class="speaker-info">I am a developer, and lifelong nerd. Currently working as a senior Rails API developer. And a content creator (typecraft). Most of my career has been in a full-stack capacity, bouncing between Rails, React/Next, Elixir, and back to Rails.</div>
9192
</div>
9293
<div class="speaker">
9394
<img src="https://bsdc.sfo2.cdn.digitaloceanspaces.com/speakers/stephanie_gredell.jpeg" />
9495
<div class="speaker-name">Stephanie Gredell</div>
95-
<div class="speaker-info"></div>
96+
<div class="speaker-info">I have been at LinkedIn for the last 11 years as a software engineer. Prior to LinkedIn, I had 10 years of professional experience at small to medium companies and been a nerdy programmer since I was 12. While I spent a good portion of my career doing UI work, I have been working in the backend for the last 7 years. Currently I work in Infra on the gRPC team at LinkedIn.</div>
9697
</div>
9798
<div class="speaker">
9899
<img src="https://bsdc.sfo2.cdn.digitaloceanspaces.com/speakers/carson.png" />
@@ -102,12 +103,12 @@ <h2 class="speakers-title text-title">
102103
<div class="speaker">
103104
<img src="https://bsdc.sfo2.cdn.digitaloceanspaces.com/speakers/kendall_drgigi.JPG" />
104105
<div class="speaker-name">Dr. Gigi & Kendall Hamilton</div>
105-
<div class="speaker-info"></div>
106+
<div class="speaker-info">Dr. Gigi Hamilton is an organizational psychologist, executive coach, and author of The Cape Escape. With 25+ years of experience, she helps professionals grow careers and lead through tech and gaming, using her RISE Framework to bridge innovation and leadership. Kendall Hamilton is a top-ranked Rocket League player, esports consultant, and performance coach. He helps professionals leverage gaming for career success, translating skills like strategy and teamwork into tech, AI, and leadership development.</div>
106107
</div>
107108
<div class="speaker">
108109
<img src="https://bsdc.sfo2.cdn.digitaloceanspaces.com/speakers/adam_stepinski.jpg" />
109110
<div class="speaker-name">Adam Stepinski</div>
110-
<div class="speaker-info"></div>
111+
<div class="speaker-info">17 years in tech as a software engineer, manager, and director. Started my career at Google, but soon got the startup bug and worked on an education technology startup just as tablets started gaining popularity in schools. Past 8 years in various roles at Instawork, where we were early adopters of Intercooler/htmx. Created Hyperview at Instawork to build our 2 flagship mobile apps.</div>
111112
</div>
112113
<div class="speaker">
113114
<img src="https://bsdc.sfo2.cdn.digitaloceanspaces.com/speakers/barrett.jpeg" />
@@ -122,7 +123,7 @@ <h2 class="speakers-title text-title">
122123
<div class="speaker">
123124
<img src="https://bsdc.sfo2.cdn.digitaloceanspaces.com/speakers/dennis.jpg" />
124125
<div class="speaker-name">Dennis Ivy</div>
125-
<div class="speaker-info"></div>
126+
<div class="speaker-info">Working on @appwrite, contributor to @freecodecamp & @traversymedia, developer advocate, instructor.</div>
126127
</div>
127128
<div class="speaker">
128129
<img src="https://bsdc.sfo2.cdn.digitaloceanspaces.com/speakers/warren.jpg" />
@@ -137,27 +138,27 @@ <h2 class="speakers-title text-title">
137138
<div class="speaker">
138139
<img src="https://bsdc.sfo2.cdn.digitaloceanspaces.com/speakers/tony_ennis.png" />
139140
<div class="speaker-name">Tony Ennis</div>
140-
<div class="speaker-info"></div>
141+
<div class="speaker-info">Product builder/entrepreneur. Avid hypertexter. Startup founder (yc s21). Created html-first.com and a number of no-build frameworks. Runs https://reallygoodsoftware.net</div>
141142
</div>
142143
<div class="speaker">
143144
<img src="https://bsdc.sfo2.cdn.digitaloceanspaces.com/speakers/duncan_lutz.jpg" />
144145
<div class="speaker-name">Duncan Lutz</div>
145-
<div class="speaker-info"></div>
146+
<div class="speaker-info">I started my journey into tech in 2022 creating basic web applications. Since then I've branched out significantly, building web scrapers, large-scale data pipelines, backend API's, CLI Tooling, a Rust / HTMX web framework, and more. At my day job I work primarily in Javascript, Python, Go and Rust, but I branch out into other languages whenever possible.</div>
146147
</div>
147148
<div class="speaker">
148149
<img src="https://bsdc.sfo2.cdn.digitaloceanspaces.com/speakers/ken_wheeler.jpeg" />
149150
<div class="speaker-name">Ken Wheeler</div>
150-
<div class="speaker-info"></div>
151+
<div class="speaker-info">i made a bunch of open source, got canceled, disappeared into finance and now i cook and have a cutie wife</div>
151152
</div>
152153
<div class="speaker">
153154
<img src="https://bsdc.sfo2.cdn.digitaloceanspaces.com/speakers/dan_vail.jpeg" />
154155
<div class="speaker-name">Dan Vail</div>
155-
<div class="speaker-info"></div>
156+
<div class="speaker-info">C++ developer working on Elder Scrolls Online. Has good calves.</div>
156157
</div>
157158
<div class="speaker">
158159
<img src="https://bsdc.sfo2.cdn.digitaloceanspaces.com/speakers/jon_hartway.jpeg" />
159160
<div class="speaker-name">Jon-Michael Hartway</div>
160-
<div class="speaker-info"></div>
161+
<div class="speaker-info">I'm a software engineer at a medium sized telecommunications company but i've been programming for almost 12 years now. Outside of programming I also like to tinker with networking equipment, servers, and general electronics.</div>
161162
</div>
162163
<div class="speaker">
163164
<img src="https://bsdc.sfo2.cdn.digitaloceanspaces.com/speakers/alex.png" />
@@ -183,55 +184,63 @@ <h2 class="schedule-title text-title">
183184
<div class="block-content">
184185
Light breakfast offered
185186
</div>
187+
<div class="block-extra"></div>
186188
</div>
187189
<div class="schedule-block">
188190
<div class="block-time">9:00am - 9:10am</div>
189191
<div class="block-title">Opening Remarks</div>
190192
<div class="block-content">
191193
From Montana Programmers & BSDC Organizer
192194
</div>
195+
<div class="block-extra"></div>
193196
</div>
194197
<div class="schedule-block schedule-block--speaker">
195198
<div class="block-time">9:15am - 9:35am</div>
196199
<div class="block-title">Carson Gross</div>
197200
<div class="block-content">
198201
TBD
199202
</div>
203+
<div class="block-extra"></div>
200204
</div>
201205
<div class="schedule-block schedule-block--speaker">
202206
<div class="block-time">9:40am - 10:00am</div>
203207
<div class="block-title">Stephanie Gredell</div>
204208
<div class="block-content">
205209
From Human To Bots
206210
</div>
211+
<div class="block-extra"></div>
207212
</div>
208213
<div class="schedule-block schedule-block--speaker">
209214
<div class="block-time">10:05am - 10:25am</div>
210215
<div class="block-title">typecraft (Chris Power)</div>
211216
<div class="block-content">
212217
VaaS (Vim as a service) -- How to teach vim to thousands of people with Rails and Go
213218
</div>
219+
<div class="block-extra"></div>
214220
</div>
215221
<div class="schedule-block schedule-block--speaker">
216222
<div class="block-time">10:30am - 10:50am</div>
217223
<div class="block-title">Robert Wagner</div>
218224
<div class="block-content">
219225
HTML is stealing our jobs!
220226
</div>
227+
<div class="block-extra"></div>
221228
</div>
222229
<div class="schedule-block schedule-block--speaker">
223230
<div class="block-time">10:55am - 11:15am</div>
224231
<div class="block-title">Warren Buffering</div>
225232
<div class="block-content">
226233
Browsers are for Reads, Native Apps are for Writes
227234
</div>
235+
<div class="block-extra"></div>
228236
</div>
229237
<div class="schedule-block schedule-block--speaker">
230238
<div class="block-time">11:20am - 11:40am</div>
231239
<div class="block-title">Jon-Michael Hartway</div>
232240
<div class="block-content">
233241
Building things for twitter clout(http://x.com/)
234242
</div>
243+
<div class="block-extra"></div>
235244
</div>
236245
<div class="schedule-block">
237246
<div class="block-time">11:40am - 12:50pm</div>
@@ -243,34 +252,39 @@ <h2 class="schedule-title text-title">
243252
<div class="block-content">
244253
you can just build things
245254
</div>
255+
<div class="block-extra"></div>
246256
</div>
247257
<div class="schedule-block schedule-block--speaker">
248258
<div class="block-time">1:20pm - 1:40pm</div>
249259
<div class="block-title">Duncan Lutz</div>
250260
<div class="block-content">
251261
Potatoes Go Brrr: Adventures in High-Speed Embedded Rust
252262
</div>
263+
<div class="block-extra"></div>
253264
</div>
254265
<div class="schedule-block schedule-block--speaker">
255266
<div class="block-time">1:45pm - 2:05pm</div>
256267
<div class="block-title">Mike Amundsen</div>
257268
<div class="block-content">
258269
Making Connections and Solving Problems : Hypermedia's Legacy and Future
259270
</div>
271+
<div class="block-extra"></div>
260272
</div>
261273
<div class="schedule-block schedule-block--speaker">
262274
<div class="block-time">2:10pm - 2:30pm</div>
263275
<div class="block-title">Barrett A Breshears</div>
264276
<div class="block-content">
265-
Backends?!? Where we are going we dont need backends
277+
Backends?!? Where we are going we don't need backends
266278
</div>
279+
<div class="block-extra"></div>
267280
</div>
268281
<div class="schedule-block schedule-block--speaker">
269282
<div class="block-time">2:35pm - 2:55pm</div>
270283
<div class="block-title">Adam Stepinski</div>
271284
<div class="block-content">
272285
Hyperview: Building a Hypermedia client for Mobile apps
273286
</div>
287+
<div class="block-extra"></div>
274288
</div>
275289
<div class="schedule-block">
276290
<div class="block-time">2:55pm - 3:15pm</div>
@@ -282,41 +296,47 @@ <h2 class="schedule-title text-title">
282296
<div class="block-content">
283297
Two Sides of the Game: How Esports & Gaming Skills Drive Success in Tech & Leadership
284298
</div>
299+
<div class="block-extra"></div>
285300
</div>
286301
<div class="schedule-block schedule-block--speaker">
287302
<div class="block-time">3:45pm - 4:05pm</div>
288303
<div class="block-title">Alex Petros</div>
289304
<div class="block-content">
290305
TBD
291306
</div>
307+
<div class="block-extra"></div>
292308
</div>
293309
<div class="schedule-block schedule-block--speaker">
294310
<div class="block-time">4:10pm - 4:30pm</div>
295311
<div class="block-title">Dennis Ivy</div>
296312
<div class="block-content">
297313
TBD
298314
</div>
315+
<div class="block-extra"></div>
299316
</div>
300317
<div class="schedule-block schedule-block--speaker">
301318
<div class="block-time">4:30pm - 4:50pm</div>
302319
<div class="block-title">Turner Houghton</div>
303320
<div class="block-content">
304321
JSX minus react plus htmx
305322
</div>
323+
<div class="block-extra"></div>
306324
</div>
307325
<div class="schedule-block schedule-block--speaker">
308326
<div class="block-time">4:50pm - 5:10pm</div>
309327
<div class="block-title">Tony Ennis</div>
310328
<div class="block-content">
311-
Hypertext Rails - The Ultimate Guide
329+
The Platform and a Stylesheet (A path to Platform <> SPA Parity)
312330
</div>
331+
<div class="block-extra"></div>
313332
</div>
314333
<div class="schedule-block schedule-block--speaker">
315334
<div class="block-time">5:15pm - 5:35pm</div>
316335
<div class="block-title">Dan Vail</div>
317336
<div class="block-content">
318-
Im dumb and so can you!
337+
I'm dumb and so can you!
319338
</div>
339+
<div class="block-extra"></div>
320340
</div>
321341
<div class="schedule-block">
322342
<div class="block-time">5:35pm - 5:45pm</div>
@@ -647,9 +667,25 @@ <h2 class="sponsors-subtitle text-title">
647667
}
648668
}
649669

670+
// Shuffle speakers on every page load
671+
document.addEventListener('DOMContentLoaded', function () {
672+
const speakersGrid = document.querySelector('.speakers-grid');
673+
if (!speakersGrid) return;
674+
// Get all speaker elements
675+
const speakers = Array.from(speakersGrid.children);
676+
// Fisher-Yates shuffle
677+
for (let i = speakers.length - 1; i > 0; i--) {
678+
const j = Math.floor(Math.random() * (i + 1));
679+
[speakers[i], speakers[j]] = [speakers[j], speakers[i]];
680+
}
681+
// Remove all speakers from grid
682+
speakersGrid.innerHTML = '';
683+
// Append shuffled speakers
684+
speakers.forEach(speaker => speakersGrid.appendChild(speaker));
685+
});
650686

651687
function countdown () {
652-
const conferenceDate = moment(new Date('2025-08-02T09:00:00Z'));
688+
const conferenceDate = moment(new Date('2025-08-02T08:00:00Z'));
653689
const countdownEl = document.querySelector('.conference-text .countdown');
654690
const now = moment();
655691
const duration = moment.duration(conferenceDate.diff(now));
@@ -659,12 +695,78 @@ <h2 class="sponsors-subtitle text-title">
659695
minutes: duration.minutes(),
660696
seconds: duration.seconds(),
661697
}
698+
const isConferenceDay = now.toDate() > conferenceDate.toDate();
699+
700+
if (isConferenceDay) {
701+
document.querySelector('.livestream-btn').style.display = 'block';
702+
document.querySelector('.livestream-btn').style.visibility = 'visible';
703+
document.querySelector('.tickets-btn').style.display = 'none';
704+
document.querySelector('.tickets-btn').style.visibility = 'hidden';
705+
} else {
706+
document.querySelector('.livestream-btn').style.display = 'none';
707+
document.querySelector('.livestream-btn').style.visibility = 'hidden';
708+
document.querySelector('.tickets-btn').style.display = 'block';
709+
document.querySelector('.tickets-btn').style.visibility = 'visible';
710+
}
662711

663712
const sep = flashClock ? ':' : ':';
664713
flashClock = !flashClock;
665714

666-
countdownEl.innerText = `{ ${timeLeft.days}${sep}${timeLeft.hours}${sep}${timeLeft.minutes}${sep}${timeLeft.seconds} }`
715+
countdownEl.innerText = isConferenceDay ? '🎉 Welcome To BSDC 2025!' : `{ ${timeLeft.days}${sep}${timeLeft.hours}${sep}${timeLeft.minutes}${sep}${timeLeft.seconds} }`
716+
}
717+
718+
function randomColor() {
719+
const h = Math.floor(Math.random() * 360);
720+
return `hsl(${h}, 100%, 60%)`;
721+
}
722+
function launchPixelFirework() {
723+
const container = document.querySelector('.pixel-fireworks-container');
724+
if (!container) return;
725+
const x = Math.random() * window.innerWidth;
726+
const y = Math.random() * window.innerHeight * 0.7 + window.innerHeight * 0.15;
727+
const numPixels = 12 + Math.floor(Math.random() * 8);
728+
for (let i = 0; i < numPixels; i++) {
729+
const angle = (Math.PI * 2 * i) / numPixels;
730+
const distance = 60 + Math.random() * 60;
731+
const px = document.createElement('div');
732+
px.className = 'pixel-firework';
733+
px.style.left = `${x}px`;
734+
px.style.top = `${y}px`;
735+
px.style.background = randomColor();
736+
container.appendChild(px);
737+
setTimeout(() => {
738+
px.style.transition = 'transform 0.7s cubic-bezier(.4,2,.6,1), opacity 0.7s';
739+
px.style.transform = `translate(${Math.cos(angle) * distance}px, ${Math.sin(angle) * distance}px) scale(0.7)`;
740+
px.style.opacity = 0;
741+
}, 10);
742+
setTimeout(() => {
743+
px.remove();
744+
}, 800);
745+
}
746+
}
747+
function enablePixelFireworks() {
748+
if (document.querySelector('.pixel-fireworks-container')) return;
749+
const container = document.createElement('div');
750+
container.className = 'pixel-fireworks-container';
751+
document.body.appendChild(container);
752+
window._pixelFireworkInterval = setInterval(launchPixelFirework, 400);
753+
}
754+
function disablePixelFireworks() {
755+
clearInterval(window._pixelFireworkInterval);
756+
const container = document.querySelector('.pixel-fireworks-container');
757+
if (container) container.remove();
758+
}
759+
function togglePixelFireworks(enable) {
760+
if (enable) {
761+
document.body.classList.add('pixel-fireworks');
762+
enablePixelFireworks();
763+
} else {
764+
document.body.classList.remove('pixel-fireworks');
765+
disablePixelFireworks();
766+
}
667767
}
768+
// Example: Uncomment to auto-enable on load
769+
// togglePixelFireworks(true);
668770

669771
</script>
670772
<!-- <script type="module" src="./script.js"></script> -->

0 commit comments

Comments
 (0)