Compare commits

..

8 Commits

26 changed files with 462 additions and 70 deletions

View File

@@ -30,3 +30,23 @@ body.phone .logo {
body.phone .calBanner .col:first-child { body.phone .calBanner .col:first-child {
display: none; display: none;
} }
.calGridTable {
white-space: nowrap;
}
.calGridTable th {
background-color: #f3f3f3;
font-weight: normal;
font-size: 0.85em;
}
.cal-grid-label {
font-weight: bold;
background-color: #f3f3f3;
}
.cal-grid-cell {
cursor: pointer;
font-size: 0.9em;
}
.cal-grid-cell:hover {
background-color: #94b6bd;
color: #ffffff;
}

View File

@@ -2,6 +2,19 @@ $(document).ready(function () {
var nextCtl = $('#vars').attr('nextCtl'); var nextCtl = $('#vars').attr('nextCtl');
var c = $('button.accordion-button[data-bs-target="#ctl' + nextCtl + '"]'); var c = $('button.accordion-button[data-bs-target="#ctl' + nextCtl + '"]');
$(c).click(); $(c).click();
document.querySelectorAll('[data-bs-toggle="tooltip"]').forEach(function(el) {
new bootstrap.Tooltip(el);
});
$('.cal-grid-cell').click(function() {
var ctl = $(this).data('ctl');
var btn = $('button.accordion-button[data-bs-target="#ctl' + ctl + '"]');
if (btn.hasClass('collapsed')) {
btn.click();
}
btn.closest('.accordion-item')[0].scrollIntoView({ behavior: 'smooth', block: 'start' });
});
$('button[action]').click(function() { $('button[action]').click(function() {
var action = $(this).attr('action'); var action = $(this).attr('action');
var url = null; var url = null;
@@ -19,6 +32,66 @@ $(document).ready(function () {
window.open( url, target ); window.open( url, target );
} }
}); });
$('.unlock-pin').click(async function() {
const btn = $(this);
const pinDisplay = btn.siblings('.pin-display');
const ciphertext = btn.data('ciphertext');
const iv = btn.data('iv');
const salt = btn.data('salt');
const tag = btn.data('tag');
const password = prompt("Enter the members password to unlock the PIN:");
if (!password) return;
try {
const decrypted = await decryptPin(ciphertext, iv, salt, tag, password);
pinDisplay.val(decrypted);
btn.text('Copy').removeClass('unlock-pin').attr('action', 'copy').attr('value', decrypted);
// Re-bind the click event for the new copy action (or use delegation)
btn.off('click').click(function() {
navigator.clipboard.writeText($(this).attr('value'));
alert('PIN copied to clipboard!');
});
} catch (e) {
alert(e.message);
}
});
async function decryptPin(ciphertextBase64, ivBase64, saltBase64, tagBase64, password) {
const encoder = new TextEncoder();
const passwordKey = await crypto.subtle.importKey(
"raw", encoder.encode(password), "PBKDF2", false, ["deriveKey"]
);
const salt = Uint8Array.from(atob(saltBase64), c => c.charCodeAt(0));
const iv = Uint8Array.from(atob(ivBase64), c => c.charCodeAt(0));
const tag = Uint8Array.from(atob(tagBase64), c => c.charCodeAt(0));
const ciphertext = Uint8Array.from(atob(ciphertextBase64), c => c.charCodeAt(0));
const data = new Uint8Array(ciphertext.length + tag.length);
data.set(ciphertext);
data.set(tag, ciphertext.length);
const key = await crypto.subtle.deriveKey(
{ name: "PBKDF2", salt, iterations: 100000, hash: "SHA-256" },
passwordKey,
{ name: "AES-GCM", length: 256 },
false,
["decrypt"]
);
try {
const decrypted = await crypto.subtle.decrypt(
{ name: "AES-GCM", iv, tagLength: 128 },
key,
data
);
return new TextDecoder().decode(decrypted);
} catch (e) {
throw new Error("Decryption failed. Probably wrong password.");
}
}
var isPhone = /Mobi|Android|iPhone|iPod/i.test(navigator.userAgent) || window.innerWidth <= 768; var isPhone = /Mobi|Android|iPhone|iPod/i.test(navigator.userAgent) || window.innerWidth <= 768;
if (isPhone) { if (isPhone) {
$("body").addClass("phone"); $("body").addClass("phone");

View File

@@ -90,11 +90,63 @@ use Michelf\Markdown;
</p> </p>
</div> </div>
</div> </div>
<div class="row mt-2 calDetails">
<div class="col">
<?php <?php
$events = getEvents(); $events = getEvents();
$now = new DateTime();
$futureEvents = array_reverse(array_values(array_filter($events, function($e) use ($now) {
return (new DateTime($e['start'])) >= (new DateTime('today'));
})));
?> ?>
<div class="row mt-4 calGrid">
<div class="col">
<table class="table table-bordered calGridTable">
<thead>
<tr>
<th></th>
<?php foreach ($futureEvents as $event): ?>
<th class="text-center"><?= (new DateTime($event['start']))->format('j M') ?></th>
<?php endforeach; ?>
</tr>
</thead>
<tbody>
<tr>
<td class="cal-grid-label">Location</td>
<?php foreach ($futureEvents as $event): ?>
<td class="text-center cal-grid-cell">
<?= htmlspecialchars($event['location'] ?? '') ?>
</td>
<?php endforeach; ?>
</tr>
<tr>
<td class="cal-grid-label">Presentation 1</td>
<?php foreach ($futureEvents as $event): ?>
<td class="text-center cal-grid-cell"
data-ctl="<?= $event['ctl'] ?>"
<?php if (!empty($event['presentation1']['topic'])): ?>
data-bs-toggle="tooltip" data-bs-placement="top" title="<?= htmlspecialchars($event['presentation1']['topic']) ?>"
<?php endif; ?>>
<?= htmlspecialchars($event['presentation1']['presenter'] ?? '') ?>
</td>
<?php endforeach; ?>
</tr>
<tr>
<td class="cal-grid-label">Presentation 2</td>
<?php foreach ($futureEvents as $event): ?>
<td class="text-center cal-grid-cell"
data-ctl="<?= $event['ctl'] ?>"
<?php if (!empty($event['presentation2']['topic'])): ?>
data-bs-toggle="tooltip" data-bs-placement="top" title="<?= htmlspecialchars($event['presentation2']['topic']) ?>"
<?php endif; ?>>
<?= htmlspecialchars($event['presentation2']['presenter'] ?? '') ?>
</td>
<?php endforeach; ?>
</tr>
</tbody>
</table>
</div>
</div>
<div class="row mt-2 calDetails">
<div class="col">
<div class="accordion" id="accordionExample"> <div class="accordion" id="accordionExample">
<?php <?php
$nextCtl = null; $nextCtl = null;
@@ -137,6 +189,24 @@ use Michelf\Markdown;
} }
?> ?>
</div> </div>
<?php if ( isset($event["pin"]) ) { ?>
<div class="input-group mt-3 mb-3">
<span class="input-group-text">PIN</span>
<?php if ( is_array($event["pin"]) ) { ?>
<input type="text" class="form-control pin-display" disabled value="********">
<button class="btn btn-outline-secondary unlock-pin" type="button"
data-ciphertext="<?= $event["pin"]["ciphertext"] ?>"
data-iv="<?= $event["pin"]["iv"] ?>"
data-salt="<?= $event["pin"]["salt"] ?>"
data-tag="<?= $event["pin"]["tag"] ?>">
Unlock
</button>
<?php } else { ?>
<input type="text" class="form-control" disabled value="<?= $event["pin"] ?>">
<button class="btn btn-outline-secondary" type="button" action="copy" value="<?= $event["pin"] ?>">Copy</button>
<?php } ?>
</div>
<?php } ?>
<?php if ( in_array( "description", array_keys($event) ) ) { ?> <?php if ( in_array( "description", array_keys($event) ) ) { ?>
<h5 class="card-title mb-2">Description</h5> <h5 class="card-title mb-2">Description</h5>
<p><?= $event["description"] ?></p> <p><?= $event["description"] ?></p>

View File

@@ -1,6 +1,6 @@
- 7.30 pm - Welcome - 7.30 pm - Welcome
- 7.35 pm - Agreement on Agenda Items - 7.35 pm - Agreement on Agenda Items
- 7.40 pm - Administrivia (if any) - 7.40 pm - Administrivia (if any)
- 7.45 pm - Presentation 1 - James: Git - 7.45 pm - Presentation 1
- 8.15 pm - Presentation 2 - Terry: Fossil - 8.15 pm - Presentation 2
- 8.45 pm - Loose (Discourse) Threads - 8.45 pm - Loose (Discourse) Threads

View File

@@ -2,7 +2,7 @@
2. 7.35 pm - Agreement on Agenda Items 2. 7.35 pm - Agreement on Agenda Items
3. 7.40 pm - Administrivia (if any) 3. 7.40 pm - Administrivia (if any)
1. Logos: JD proposed images 1. Logos: JD proposed images
4. 7.45 pm - Presentation 1 - Meshtastic - Up close and Personal 4. 7.45 pm - Presentation 1
5. 8.45 pm - Loose (Discourse) Threads - Proposed topics 5. 8.45 pm - Loose (Discourse) Threads - Proposed topics
1. ? Fossil 1. ? Fossil
2. ? Key signing 2. ? Key signing

View File

@@ -2,8 +2,8 @@
2. 7.35 pm - Agreement on Agenda Items 2. 7.35 pm - Agreement on Agenda Items
3. 7.40 pm - Administrivia (if any) 3. 7.40 pm - Administrivia (if any)
1. HLB Logo 1. HLB Logo
4. 7.45 pm - Presentation 1 - NixOS - @techman 4. 7.45 pm - Presentation 1
5. 8.15 pm - Presentation 2 - Hyprland and starship - @jdownie 5. 8.15 pm - Presentation 2
6. 8.45 pm - Loose (Discourse) Threads 6. 8.45 pm - Loose (Discourse) Threads
1. Proposed 1. Proposed
1. OpenPGP 1. OpenPGP

View File

@@ -2,11 +2,11 @@
1. 6.30 pm - Welcome 1. 6.30 pm - Welcome
2. 6.35 pm - Agreement on Agenda Items 2. 6.35 pm - Agreement on Agenda Items
1. 6.40 pm - Administrivia (if any) 1. 6.40 pm - Administrivia (if any)
1. 6.45 pm - Presentation 1 - Homelab Certificate Management - @Belfry 1. 6.45 pm - Presentation 1
1. 7.15 pm - Loose (Discourse) Threads 1. 7.15 pm - Loose (Discourse) Threads
1. Proposed 1. Proposed
1. Self hosted email - @zeeclor 1. Self hosted email - @zeeclor
2. Ultimate Note Taking - Joplin vs Obisidian vs? 2. Ultimate Note Taking - Joplin vs Obisidian vs?
1. 7.45 pm - Presentation 2 - [n8n](https://github.com/n8n-io) - @shirbo 1. 7.45 pm - Presentation 2
1. 8.15 pm - Next meeting 1. 8.15 pm - Next meeting
1. 8.30 pm - Close 1. 8.30 pm - Close

View File

@@ -2,8 +2,8 @@
1. 7.30 pm - Welcome 1. 7.30 pm - Welcome
2. 7.35 pm - Agreement on Agenda Items 2. 7.35 pm - Agreement on Agenda Items
1. 7.40 pm - Administrivia (if any) 1. 7.40 pm - Administrivia (if any)
1. 7.45 pm - Presentation 1 - WSL @kangie 1. 7.45 pm - Presentation 1
1. 8.15 pm - Presentation 2 - NixOS - The Curly Bits - @techman 1. 8.15 pm - Presentation 2
1. 8.45 pm - Loose (Discourse) Threads 1. 8.45 pm - Loose (Discourse) Threads
1. Proposed 1. Proposed
1. Docker app of the month - [IT Tools](https://www.youtube.com/watch?v=Mebe5-plYfE) / [Tandoor](https://www.youtube.com/watch?v=7-nb3muJxI0&t=450s) 1. Docker app of the month - [IT Tools](https://www.youtube.com/watch?v=Mebe5-plYfE) / [Tandoor](https://www.youtube.com/watch?v=7-nb3muJxI0&t=450s)

View File

@@ -1,8 +1,8 @@
1. 6.30 pm - Welcome 1. 6.30 pm - Welcome
2. 6.35 pm - Agreement on Agenda Items 2. 6.35 pm - Agreement on Agenda Items
1. 6.40 pm - Administrivia (if any) 1. 6.40 pm - Administrivia (if any)
1. 6.45 pm - Presentation 1 - 1. 6.45 pm - Presentation 1
1. 7.15 pm - Presentation 2 - Homelab DNS - AdGuard Home / Pi-Hole / Technetium / NextDNS / Bind9 - @Belfry 1. 7.15 pm - Presentation 2
1. 7.45 pm - Loose (Discourse) Threads 1. 7.45 pm - Loose (Discourse) Threads
1. Proposed 1. Proposed
3. OpenWRT / OPNSense / ?pfSense 3. OpenWRT / OPNSense / ?pfSense

View File

@@ -4,8 +4,8 @@
1. Future invited speakers 1. Future invited speakers
2. HLB future projects 2. HLB future projects
3. Online promotion 3. Online promotion
2. 7.15 pm - Presentation 2 - DNS part2 - @Belfry 2. 7.15 pm - Presentation 1
3. 7.45 pm - Presentation 2 - Getting started with Docker @jdownie 3. 7.45 pm - Presentation 2
1. Proposed 1. Proposed
1. Gardening with [Grist](https://www.getgrist.com)- @matthew919 1. Gardening with [Grist](https://www.getgrist.com)- @matthew919
2. Routers - [openWRT](https://openwrt.org) vs [OPNsense](https://opnsense.org) 2. Routers - [openWRT](https://openwrt.org) vs [OPNsense](https://opnsense.org)

View File

@@ -1,8 +1,8 @@
1. 6.30 pm - Welcome 1. 6.30 pm - Welcome
2. 6.35 pm - Agreement on Agenda Items 2. 6.35 pm - Agreement on Agenda Items
1. 6.40 pm - Administrivia (if any) 1. 6.40 pm - Administrivia (if any)
1. 6.45 pm - Presentation 1 - Getting started with docker - @jdownie 1. 6.45 pm - Presentation 1
2. 7.15 pm - Presentation 2 - Q&A - Your questions asked 2. 7.15 pm - Presentation 2
3. 7.45 pm - Loose (Discourse) Threads 3. 7.45 pm - Loose (Discourse) Threads
1. Proposed 1. Proposed
1. DNS - "It's always DNS." 1. DNS - "It's always DNS."

View File

@@ -1,7 +1,7 @@
1. 7.30 pm - Welcome 1. 7.30 pm - Welcome
2. 7.35 pm - Agreement on Agenda Items 2. 7.35 pm - Agreement on Agenda Items
1. 7.40 pm - Administrivia (if any) 1. 7.40 pm - Administrivia (if any)
1. 7.45 pm - Presentation 1 - My journey to freeBSD and back - @techman 1. 7.45 pm - Presentation 1
1. 8.15 pm - Recent Discourse Threads 1. 8.15 pm - Recent Discourse Threads
1. Proposed 1. Proposed
1. Proxmox GUI monitors 1. Proxmox GUI monitors

View File

@@ -1,8 +1,8 @@
1. 6.30 pm - Welcome 1. 6.30 pm - Welcome
2. 6.35 pm - Agreement on Agenda Items 2. 6.35 pm - Agreement on Agenda Items
1. 6.40 pm - Administrivia (if any) 1. 6.40 pm - Administrivia (if any)
1. 6.45 pm - Presentation 1 - Solar in your Home Assistant - @Belfry 1. 6.45 pm - Presentation 1
2. 7.15 pm - Presentation 2 - Loose ends - vLANs and DNS 2. 7.15 pm - Presentation 2
3. 7.45 pm - Recent (Discourse) Threads 3. 7.45 pm - Recent (Discourse) Threads
1. Proposed 1. Proposed
1. Managed switches 1. Managed switches

View File

@@ -1,7 +1,7 @@
1. 7.30 pm - Welcome 1. 7.30 pm - Welcome
2. 7.35 pm - Agreement on Agenda Items 2. 7.35 pm - Agreement on Agenda Items
1. 7.40 pm - Administrivia (if any) 1. 7.40 pm - Administrivia (if any)
1. 7.45 pm - Presentation 1 - Solar management in Home Assistant - @Belfry 1. 7.45 pm - Presentation 1
2. 8.15 pm - NixOS v freeBSD v15 on Starlink Standby 2. 8.15 pm - NixOS v freeBSD v15 on Starlink Standby
3. 8.45 pm - Recent Discourse Threads 3. 8.45 pm - Recent Discourse Threads
1. Proposed 1. Proposed

View File

@@ -1,8 +1,8 @@
1. 7.30 pm - Welcome 1. 7.30 pm - Welcome
2. 7.35 pm - Agreement on Agenda Items 2. 7.35 pm - Agreement on Agenda Items
1. 7.40 pm - Administrivia (if any) 1. 7.40 pm - Administrivia (if any)
1. 7.45 pm - Presentation 1 - ipv6 - Your computer uses it, why shouldn't you? - @Belfry 1. 7.45 pm - Presentation 1
2. 8.15 pm - Presentation 2 - Push notifications in Home Assistant, n8n and Uptime Kuma - @shirbo 2. 8.15 pm - Presentation 2
4. 8.45 pm - Recent Discourse Threads 4. 8.45 pm - Recent Discourse Threads
1. Proposed 1. Proposed
1. HA Goodies 1. HA Goodies

View File

@@ -1,8 +1,8 @@
1. 6.30 pm - Welcome 1. 6.30 pm - Welcome
2. 6.35 pm - Agreement on Agenda Items 2. 6.35 pm - Agreement on Agenda Items
1. 6.40 pm - Administrivia (if any) 1. 6.40 pm - Administrivia (if any)
1. 6.45 pm - Presentation 1 - Git best practices - @AB 1. 6.45 pm - Presentation 1
2. 7.15 pm - Presentation 2 - Customising the home page menu - @jdownie 2. 7.15 pm - Presentation 2
3. 7.45 pm - Recent (Discourse) Threads 3. 7.45 pm - Recent (Discourse) Threads
1. Proposed 1. Proposed
4. Solar solutions with Home Assistant 4. Solar solutions with Home Assistant

View File

@@ -2,8 +2,8 @@
2. 7.35 pm - Agreement on Agenda Items 2. 7.35 pm - Agreement on Agenda Items
1. 7.40 pm - Administrivia (if any) 1. 7.40 pm - Administrivia (if any)
- Future Meeting Dates (rough date planning) - Future Meeting Dates (rough date planning)
1. 7.45 pm - Presentation 1 - Sway Customisation - @jdownie 1. 7.45 pm - Presentation 1
2. 8.15 pm - Presentation 2 - Homelab Brisbane in 2026 2. 8.15 pm - Presentation 2
4. 8.45 pm - Recent Discourse Threads 4. 8.45 pm - Recent Discourse Threads
1. Proposed 1. Proposed
1. Fabric 1. Fabric

View File

@@ -1,7 +1,7 @@
1. 6.30 pm - Welcome 1. 6.30 pm - Welcome
2. 6.35 pm - Agreement on Agenda Items 2. 6.35 pm - Agreement on Agenda Items
1. 6.40 pm - Administrivia (if any) 1. 6.40 pm - Administrivia (if any)
1. 6.45 pm - Presentation 1 - Sway customisation - @jdownie (held over from last meeting) 1. 6.45 pm - Presentation 1
3. 7.15 pm - Recent (Discourse) Threads 3. 7.15 pm - Recent (Discourse) Threads
1. Proposed 1. Proposed
1. Antigravity & Claude Opus 4.6 1. Antigravity & Claude Opus 4.6

View File

@@ -2,8 +2,8 @@
2. 7.35 pm - Agreement on Agenda Items 2. 7.35 pm - Agreement on Agenda Items
1. 7.40 pm - Administrivia (if any) 1. 7.40 pm - Administrivia (if any)
- Future Meeting Dates (rough date planning) - Future Meeting Dates (rough date planning)
1. 7.45 pm - Presentation 1 - Fabric - the AI pipeline - @techman 1. 7.45 pm - Presentation 1
2. 8.15 pm - Presentation 2 - Energy management in Home Assistant - Q&A 2. 8.15 pm - Presentation 2
4. 8.45 pm - Recent Discourse Threads 4. 8.45 pm - Recent Discourse Threads
1. Proposed 1. Proposed
1. Audio Bookshelf 1. Audio Bookshelf

View File

@@ -1,8 +1,8 @@
1. 6.30 pm - Welcome 1. 6.30 pm - Welcome
2. 6.35 pm - Agreement on Agenda Items 2. 6.35 pm - Agreement on Agenda Items
1. 6.40 pm - Administrivia (if any) 1. 6.40 pm - Administrivia (if any)
1. 6.45 pm - Presentation 1 - Environmental sensor project - @Marco 1. 6.45 pm - Presentation 1
1. 7.15 pm - Presentation 2 - [Repair Cafe](https://www.repaircafe.org/en/cafe/repair-cafe-keperra-the-grove/) - Arjen Lentz - to be confirmed 1. 7.15 pm - Presentation 2
3. 7.45 pm - Recent (Discourse) Threads 3. 7.45 pm - Recent (Discourse) Threads
1. Proposed 1. Proposed
1. [Linux Remote Desktop](https://discourse.homelabbrisbane.com.au/t/linux-remote-desktop/380) 1. [Linux Remote Desktop](https://discourse.homelabbrisbane.com.au/t/linux-remote-desktop/380)

View File

@@ -1,8 +1,8 @@
3. 6.30 pm - Welcome 3. 6.30 pm - Welcome
2. 6.35 pm - Agreement on Agenda Items 2. 6.35 pm - Agreement on Agenda Items
1. 6.40 pm - Administrivia (if any) 1. 6.40 pm - Administrivia (if any)
1. 6.45 pm - Presentation 1 - Environmental sensor project - @Marco 1. 6.45 pm - Presentation 1
2. 7.15 pm - Presentation 2 - Where are we? - GPS Geolocation in Linux - @Belfry 2. 7.15 pm - Presentation 2
3. 7.45 pm - Recent (Discourse) Threads 3. 7.45 pm - Recent (Discourse) Threads
1. Proposed 1. Proposed
1. [Linux Remote Desktop](https://discourse.homelabbrisbane.com.au/t/linux-remote-desktop/380) 1. [Linux Remote Desktop](https://discourse.homelabbrisbane.com.au/t/linux-remote-desktop/380)

View File

@@ -2,8 +2,8 @@
2. 7.35 pm - Agreement on Agenda Items 2. 7.35 pm - Agreement on Agenda Items
1. 7.40 pm - Administrivia (if any) 1. 7.40 pm - Administrivia (if any)
- Future Meeting Dates (rough date planning) - Future Meeting Dates (rough date planning)
1. 7.45 pm - Presentation 1 - Machine learning: Privacy considerations - @Marcos 1. 7.45 pm - Presentation 1
2. 8.15 pm - Presentation 2 - Solar feed in strategies - @Ceasar909 2. 8.15 pm - Presentation 2
4. 8.45 pm - Recent Discourse Threads 4. 8.45 pm - Recent Discourse Threads
1. Proposed 1. Proposed
1. Cool Remote Control 1. Cool Remote Control

View File

@@ -1,8 +1,8 @@
3. 6.30 pm - Welcome 3. 6.30 pm - Welcome
2. 6.35 pm - Agreement on Agenda Items 2. 6.35 pm - Agreement on Agenda Items
1. 6.40 pm - Administrivia (if any) 1. 6.40 pm - Administrivia (if any)
1. 6.45 pm - Presentation 1 - Open-source coding assistants with locally-running LLMs - @skaylan 1. 6.45 pm - Presentation 1
1. 7.15 pm - Presentation 2 - Getting started with home assistant for solar / power management - @GregY 1. 7.15 pm - Presentation 2
3. 7.45 pm - Recent (Discourse) Threads 3. 7.45 pm - Recent (Discourse) Threads
1. Proposed 1. Proposed
1. Pending 1. Pending

View File

@@ -2,8 +2,8 @@
2. 7.35 pm - Agreement on Agenda Items 2. 7.35 pm - Agreement on Agenda Items
1. 7.40 pm - Administrivia (if any) 1. 7.40 pm - Administrivia (if any)
- Future Meeting Dates (rough date planning) - Future Meeting Dates (rough date planning)
1. 7.45 pm - Presentation 1 - Automation Engines - N8N, OpenClaw and Claude Code - @shirbo 1. 7.45 pm - Presentation 1
2. 8.15 pm - Presentation 2 - 2. 8.15 pm - Presentation 2
4. 8.45 pm - Recent Discourse Threads 4. 8.45 pm - Recent Discourse Threads
1. Proposed 1. Proposed
1. Pending 1. Pending

View File

@@ -1,8 +1,8 @@
3. 6.30 pm - Welcome 3. 6.30 pm - Welcome
2. 6.35 pm - Agreement on Agenda Items 2. 6.35 pm - Agreement on Agenda Items
1. 6.40 pm - Administrivia (if any) 1. 6.40 pm - Administrivia (if any)
2. 6.45 pm - Presentation 1 - [Repair Cafe](https://www.repaircafe.org/en/cafe/repair-cafe-keperra-the-grove/) - Arjen Lentz 2. 6.45 pm - Presentation 1
3. 7.15 pm - Presentation 2 - 3. 7.15 pm - Presentation 2
4. 7.45 pm - Recent (Discourse) Threads 4. 7.45 pm - Recent (Discourse) Threads
1. Proposed 1. Proposed
1. Pending 1. Pending

View File

@@ -5,7 +5,21 @@
"end": "2026-07-23T21:30", "end": "2026-07-23T21:30",
"title": "July 2026 In Person Catch Up", "title": "July 2026 In Person Catch Up",
"description": "Monthly In Person Get Together. Check Discourse for room details.", "description": "Monthly In Person Get Together. Check Discourse for room details.",
"location": "Carindale Library" "location": "Carindale Library",
"pin": {
"ciphertext": "XUFjTcV3",
"iv": "WtpvNa5aSMRMHoVL",
"salt": "jEZ5NzPNSCnhuBzmdybmkw==",
"tag": "cD15oQ0UJM5UNQ8Wb8GlIg=="
},
"presentation1": {
"presenter": "",
"topic": ""
},
"presentation2": {
"presenter": "",
"topic": ""
}
}, },
{ {
"coordinates": "", "coordinates": "",
@@ -13,7 +27,15 @@
"end": "2026-07-09T21:30", "end": "2026-07-09T21:30",
"title": "July 2026 Online Catch Up", "title": "July 2026 Online Catch Up",
"description": "Monthly Online Jitsi Get Together", "description": "Monthly Online Jitsi Get Together",
"location": "Jitsi" "location": "Jitsi",
"presentation1": {
"presenter": "",
"topic": ""
},
"presentation2": {
"presenter": "",
"topic": ""
}
}, },
{ {
"coordinates": "-27.50129,153.1027015", "coordinates": "-27.50129,153.1027015",
@@ -21,7 +43,21 @@
"end": "2026-06-25T21:30", "end": "2026-06-25T21:30",
"title": "June 2026 In Person Catch Up", "title": "June 2026 In Person Catch Up",
"description": "Monthly In Person Get Together. Check Discourse for room details.", "description": "Monthly In Person Get Together. Check Discourse for room details.",
"location": "Carindale Library" "location": "Carindale Library",
"pin": {
"ciphertext": "XUFjTcV3",
"iv": "WtpvNa5aSMRMHoVL",
"salt": "jEZ5NzPNSCnhuBzmdybmkw==",
"tag": "cD15oQ0UJM5UNQ8Wb8GlIg=="
},
"presentation1": {
"presenter": "",
"topic": ""
},
"presentation2": {
"presenter": "",
"topic": ""
}
}, },
{ {
"coordinates": "", "coordinates": "",
@@ -29,7 +65,15 @@
"end": "2026-06-11T21:30", "end": "2026-06-11T21:30",
"title": "June 2026 Online Catch Up", "title": "June 2026 Online Catch Up",
"description": "Monthly Online Jitsi Get Together", "description": "Monthly Online Jitsi Get Together",
"location": "Jitsi" "location": "Jitsi",
"presentation1": {
"presenter": "",
"topic": ""
},
"presentation2": {
"presenter": "",
"topic": ""
}
}, },
{ {
"start": "2026-05-28T18:30", "start": "2026-05-28T18:30",
@@ -37,7 +81,15 @@
"title": "May 2026 In Person Catch Up", "title": "May 2026 In Person Catch Up",
"description": "", "description": "",
"coordinates": "?,?", "coordinates": "?,?",
"location": "" "location": "",
"presentation1": {
"presenter": "Arjen Lentz",
"topic": "Repair Cafe"
},
"presentation2": {
"presenter": "",
"topic": ""
}
}, },
{ {
"coordinates": "", "coordinates": "",
@@ -45,7 +97,15 @@
"end": "2026-05-07T21:30", "end": "2026-05-07T21:30",
"title": "May 2026 Online Catch Up", "title": "May 2026 Online Catch Up",
"description": "Monthly Online Jitsi Get Together.", "description": "Monthly Online Jitsi Get Together.",
"location": "Jitsi" "location": "Jitsi",
"presentation1": {
"presenter": "@shirbo",
"topic": "Automation Engines - N8N, OpenClaw and Claude Code"
},
"presentation2": {
"presenter": "",
"topic": ""
}
}, },
{ {
"start": "2026-04-23T18:30", "start": "2026-04-23T18:30",
@@ -53,7 +113,16 @@
"title": "April 2026 In Person Catch Up", "title": "April 2026 In Person Catch Up",
"description": "Monthly In Person Get Together. We'll be in meeting room 3. I'll post the PIN number for the meeting rooms on Discourse.", "description": "Monthly In Person Get Together. We'll be in meeting room 3. I'll post the PIN number for the meeting rooms on Discourse.",
"coordinates": "-27.38621539644283,153.0351689206467", "coordinates": "-27.38621539644283,153.0351689206467",
"location": "Chermside Library" "location": "Chermside Library",
"pin": {"ciphertext":"yeGr4KjI","iv":"O7AxFgIwWUhCUwgR","salt":"lLIqzElx9NadqbXIw8ttEw==","tag":"NtlkyQOKXSpx5hXYG8HcAA=="},
"presentation1": {
"presenter": "@skaylan",
"topic": "Open-source coding assistants with locally-running LLMs"
},
"presentation2": {
"presenter": "@GregY",
"topic": "Getting started with Home Assistant for solar / power management"
}
}, },
{ {
"coordinates": "", "coordinates": "",
@@ -61,7 +130,15 @@
"end": "2026-04-09T21:30", "end": "2026-04-09T21:30",
"title": "April 2026 Online Catch Up", "title": "April 2026 Online Catch Up",
"description": "Monthly Online Jitsi Get Together.", "description": "Monthly Online Jitsi Get Together.",
"location": "Jitsi" "location": "Jitsi",
"presentation1": {
"presenter": "@Marcos",
"topic": "Machine learning: Privacy considerations"
},
"presentation2": {
"presenter": "@Ceasar909",
"topic": "Solar feed in strategies"
}
}, },
{ {
"start": "2026-03-25T18:30", "start": "2026-03-25T18:30",
@@ -69,7 +146,15 @@
"title": "March 2026 In Person Catch Up", "title": "March 2026 In Person Catch Up",
"description": "Monthly In Person Get Together.", "description": "Monthly In Person Get Together.",
"coordinates": "-27.38621539644283,153.0351689206467", "coordinates": "-27.38621539644283,153.0351689206467",
"location": "Chermside Library" "location": "Chermside Library",
"presentation1": {
"presenter": "@Marco",
"topic": "Environmental sensor project"
},
"presentation2": {
"presenter": "@Belfry",
"topic": "Where are we? - GPS Geolocation in Linux"
}
}, },
{ {
"coordinates": "", "coordinates": "",
@@ -77,7 +162,15 @@
"end": "2026-03-05T21:30", "end": "2026-03-05T21:30",
"title": "March 2026 Online Catch Up", "title": "March 2026 Online Catch Up",
"description": "Monthly Online Jitsi Get Together.", "description": "Monthly Online Jitsi Get Together.",
"location": "Jitsi" "location": "Jitsi",
"presentation1": {
"presenter": "@techman",
"topic": "Fabric - the AI pipeline"
},
"presentation2": {
"presenter": "",
"topic": "Energy management in Home Assistant - Q&A"
}
}, },
{ {
"coordinates": "-27.38621539644283,153.0351689206467", "coordinates": "-27.38621539644283,153.0351689206467",
@@ -85,7 +178,15 @@
"end": "2026-02-19T21:30", "end": "2026-02-19T21:30",
"title": "February 2026 In Person Catch Up", "title": "February 2026 In Person Catch Up",
"description": "Monthly In Person Get Together. The PIN number for meeting room 2 is 947300", "description": "Monthly In Person Get Together. The PIN number for meeting room 2 is 947300",
"location": "Chermside Library" "location": "Chermside Library",
"presentation1": {
"presenter": "@jdownie",
"topic": "Sway customisation"
},
"presentation2": {
"presenter": "",
"topic": ""
}
}, },
{ {
"coordinates": "", "coordinates": "",
@@ -93,7 +194,15 @@
"end": "2026-02-05T21:30", "end": "2026-02-05T21:30",
"title": "February 2026 Online Catch Up", "title": "February 2026 Online Catch Up",
"description": "Monthly Online Jitsi Get Together", "description": "Monthly Online Jitsi Get Together",
"location": "Jitsi" "location": "Jitsi",
"presentation1": {
"presenter": "@jdownie",
"topic": "Sway Customisation"
},
"presentation2": {
"presenter": "",
"topic": "Homelab Brisbane in 2026"
}
}, },
{ {
"coordinates": "-27.50129,153.1027015", "coordinates": "-27.50129,153.1027015",
@@ -101,7 +210,15 @@
"end": "2026-01-22T21:30", "end": "2026-01-22T21:30",
"title": "January 2026 In Person Catch Up", "title": "January 2026 In Person Catch Up",
"description": "Monthly In Person Get Together. The PIN number for meeting room 1 is 593134.", "description": "Monthly In Person Get Together. The PIN number for meeting room 1 is 593134.",
"location": "Carindale Library" "location": "Carindale Library",
"presentation1": {
"presenter": "@AB",
"topic": "Git best practices"
},
"presentation2": {
"presenter": "@jdownie",
"topic": "Customising the home page menu"
}
}, },
{ {
"coordinates": "", "coordinates": "",
@@ -109,7 +226,15 @@
"end": "2026-01-06T21:30", "end": "2026-01-06T21:30",
"title": "January 2026 Online Catch Up", "title": "January 2026 Online Catch Up",
"description": "Monthly Online Jitsi Get Together", "description": "Monthly Online Jitsi Get Together",
"location": "Jitsi" "location": "Jitsi",
"presentation1": {
"presenter": "@Belfry",
"topic": "IPv6 - Your computer uses it, why shouldn't you?"
},
"presentation2": {
"presenter": "@shirbo",
"topic": "Push notifications in Home Assistant, n8n and Uptime Kuma"
}
}, },
{ {
"coordinates": "", "coordinates": "",
@@ -117,7 +242,15 @@
"end": "2025-12-09T21:30", "end": "2025-12-09T21:30",
"title": "December 2025 Online Catch Up", "title": "December 2025 Online Catch Up",
"description": "Monthly Online Jitsi Get Together", "description": "Monthly Online Jitsi Get Together",
"location": "Jitsi" "location": "Jitsi",
"presentation1": {
"presenter": "@Belfry",
"topic": "Solar management in Home Assistant"
},
"presentation2": {
"presenter": "",
"topic": "NixOS v FreeBSD v15 on Starlink Standby"
}
}, },
{ {
"coordinates": "-27.38621539644283,153.0351689206467", "coordinates": "-27.38621539644283,153.0351689206467",
@@ -125,7 +258,15 @@
"end": "2025-11-27T21:30", "end": "2025-11-27T21:30",
"title": "November 2025 In Person Catch Up", "title": "November 2025 In Person Catch Up",
"description": "Monthly In Person Get Together. The PIN number for the meeting room is 452400.", "description": "Monthly In Person Get Together. The PIN number for the meeting room is 452400.",
"location": "Chermside Library" "location": "Chermside Library",
"presentation1": {
"presenter": "@Belfry",
"topic": "Solar in your Home Assistant"
},
"presentation2": {
"presenter": "",
"topic": "Loose ends - vLANs and DNS"
}
}, },
{ {
"coordinates": "", "coordinates": "",
@@ -133,7 +274,15 @@
"end": "2025-11-11T21:30", "end": "2025-11-11T21:30",
"title": "November 2025 Online Catch Up", "title": "November 2025 Online Catch Up",
"description": "Monthly Online Jitsi Get Together", "description": "Monthly Online Jitsi Get Together",
"location": "Jitsi" "location": "Jitsi",
"presentation1": {
"presenter": "@techman",
"topic": "My journey to FreeBSD and back"
},
"presentation2": {
"presenter": "",
"topic": ""
}
}, },
{ {
"coordinates": "-27.50129,153.1027015", "coordinates": "-27.50129,153.1027015",
@@ -141,7 +290,15 @@
"end": "2025-10-23T21:00", "end": "2025-10-23T21:00",
"title": "October 2025 In Person Catch Up", "title": "October 2025 In Person Catch Up",
"description": "Monthly In Person Get Together. The PIN number for the meeting room is 593134.", "description": "Monthly In Person Get Together. The PIN number for the meeting room is 593134.",
"location": "Carindale Library" "location": "Carindale Library",
"presentation1": {
"presenter": "@jdownie",
"topic": "Getting started with Docker"
},
"presentation2": {
"presenter": "",
"topic": "Q&A - Your questions asked"
}
}, },
{ {
"coordinates": "", "coordinates": "",
@@ -149,7 +306,15 @@
"end": "2025-10-14T21:00", "end": "2025-10-14T21:00",
"title": "October 2025 Online Catch Up", "title": "October 2025 Online Catch Up",
"description": "Monthly Online Jitsi Get Together", "description": "Monthly Online Jitsi Get Together",
"location": "Jitsi" "location": "Jitsi",
"presentation1": {
"presenter": "@Belfry",
"topic": "DNS part 2"
},
"presentation2": {
"presenter": "@jdownie",
"topic": "Getting started with Docker"
}
}, },
{ {
"coordinates": "-27.50129,153.1027015", "coordinates": "-27.50129,153.1027015",
@@ -157,7 +322,15 @@
"end": "2025-09-25T21:00", "end": "2025-09-25T21:00",
"title": "September 2025 In Person Catch Up", "title": "September 2025 In Person Catch Up",
"description": "Monthly In Person Get Together", "description": "Monthly In Person Get Together",
"location": "Carindale Library" "location": "Carindale Library",
"presentation1": {
"presenter": "",
"topic": ""
},
"presentation2": {
"presenter": "@Belfry",
"topic": "Homelab DNS - AdGuard Home / Pi-Hole / Technetium / NextDNS / Bind9"
}
}, },
{ {
"coordinates": "", "coordinates": "",
@@ -165,7 +338,15 @@
"end": "2025-09-09T21:00", "end": "2025-09-09T21:00",
"title": "September 2025 Online Catch Up", "title": "September 2025 Online Catch Up",
"description": "Monthly Online Jitsi Get Together", "description": "Monthly Online Jitsi Get Together",
"location": "Jitsi" "location": "Jitsi",
"presentation1": {
"presenter": "@kangie",
"topic": "WSL"
},
"presentation2": {
"presenter": "@techman",
"topic": "NixOS - The Curly Bits"
}
}, },
{ {
"coordinates": "-27.38621539644283,153.0351689206467", "coordinates": "-27.38621539644283,153.0351689206467",
@@ -173,7 +354,15 @@
"end": "2025-08-21T21:00", "end": "2025-08-21T21:00",
"title": "August 2025 In Person Catch Up", "title": "August 2025 In Person Catch Up",
"description": "Monthly In Person Get Together", "description": "Monthly In Person Get Together",
"location": "Chermside Library" "location": "Chermside Library",
"presentation1": {
"presenter": "@Belfry",
"topic": "Homelab Certificate Management"
},
"presentation2": {
"presenter": "@shirbo",
"topic": "n8n"
}
}, },
{ {
"coordinates": "", "coordinates": "",
@@ -181,7 +370,15 @@
"end": "2025-08-12T21:30", "end": "2025-08-12T21:30",
"title": "August 2025 Online Catch Up", "title": "August 2025 Online Catch Up",
"description": "Monthly Online Jitsi Get Together", "description": "Monthly Online Jitsi Get Together",
"location": "Jitsi" "location": "Jitsi",
"presentation1": {
"presenter": "@techman",
"topic": "NixOS"
},
"presentation2": {
"presenter": "@jdownie",
"topic": "Hyprland and starship"
}
}, },
{ {
"start": "2025-07-24T18:30:00", "start": "2025-07-24T18:30:00",
@@ -189,14 +386,30 @@
"title": "July 2025 In Person Catch Up", "title": "July 2025 In Person Catch Up",
"description": "Monthly In Person Get Together", "description": "Monthly In Person Get Together",
"location": "Chermside Library", "location": "Chermside Library",
"coordinates": "-27.38621539644283,153.0351689206467" "coordinates": "-27.38621539644283,153.0351689206467",
"presentation1": {
"presenter": "",
"topic": "Meshtastic - Up close and Personal"
},
"presentation2": {
"presenter": "",
"topic": ""
}
}, },
{ {
"start": "2025-07-08T19:00:00", "start": "2025-07-08T19:00:00",
"end": "2025-07-08T21:00", "end": "2025-07-08T21:00",
"title": "July 2025 Online Catch Up", "title": "July 2025 Online Catch Up",
"description": "Monthly Online Jitsi Get Together", "description": "Monthly Online Jitsi Get Together",
"location": "Jitsi" "location": "Jitsi",
"presentation1": {
"presenter": "James",
"topic": "Git"
},
"presentation2": {
"presenter": "Terry",
"topic": "Fossil"
}
}, },
{ {
"start": "2025-06-19T18:30:00", "start": "2025-06-19T18:30:00",
@@ -204,13 +417,29 @@
"title": "June 2025 In Person Catch Up", "title": "June 2025 In Person Catch Up",
"description": "Social get-together. Discussion about large language models and meshtastic experiments. Clumsy attempt at adhering to an agenda and taking minutes.", "description": "Social get-together. Discussion about large language models and meshtastic experiments. Clumsy attempt at adhering to an agenda and taking minutes.",
"location": "Chermside Library", "location": "Chermside Library",
"coordinates": "-27.38621539644283,153.0351689206467" "coordinates": "-27.38621539644283,153.0351689206467",
"presentation1": {
"presenter": "",
"topic": ""
},
"presentation2": {
"presenter": "",
"topic": ""
}
}, },
{ {
"start": "2025-06-10T19:00:00", "start": "2025-06-10T19:00:00",
"end": "2025-06-10T21:00", "end": "2025-06-10T21:00",
"title": "June 2025 Online Catch Up", "title": "June 2025 Online Catch Up",
"description": "Getting started with meshtastic", "description": "Getting started with meshtastic",
"location": "Jitsi" "location": "Jitsi",
"presentation1": {
"presenter": "",
"topic": ""
},
"presentation2": {
"presenter": "",
"topic": ""
}
} }
] ]