See also the notes that occured during the Hackathon.
Come to our hackerspace hackathon and bring your own ideas and projects that could use some momentum. You don't have to be a hackerspace member or focus on hackerspace-related ideas.
Also there's no pressure to create a startup, build a minimum viable product (MVP), or anything of that nature. Instead, we're returning to the essence of hacking: enjoying a weekend of tinkering with things we love, surrounded by amazing individuals!
Bring your sleeping bag for sleepover. There are some couches available for crashing and there's shower available as well.
This will take place 27-30 of July 2023 at fifth floor of Akadeemia 21/1 (Küberneetika maja)
There will be prizes for one or more in following categories:
All that space has to offer:
Mentors:
[Your ideas here]
If you don't have account to edit this wiki, then put your ideas in this Etherpad:
https://pad.k-space.ee/p/hackathon-2023
E-mail aliases generator/forwarding service similar to https://simplelogin.io/email-forwarding/, https://relay.firefox.com/ and so on. The idea is to have disposable email addresses which are aliases to you real email. AFAIK k-space email supports generating aliases, so it needs to be packed an shaped into nice service.
at
, (at)
with @
and mailto:
addresses.Random:
[easy] Wire up electronic lock for workshop. Wire it up like the other doors.
[easy] Rugged casing for the door controllers. The doors are controller by Raspberry Pi's that have a custom door controller hat connected to them. These controllers could use a decent rugged case that keeps the components in place.
[medium] Wire up X-Carve: All the components are there to wire up the beast. This is replica of the 1x1m model and we have xPRO V5 Controller to run it.
[easy] DNS sniper: Service that monitors domain registration expiration and notifies you if a domain name registration is about to expire.
[medium] Pancake streaming service https://www.youtube.com/watch?v=kkzi-9xbmrY&ab_channel=DailyPicksandFlicks
[medium] Kubernetes image tracker: Tool that identifies running Docker image from Pod status
section. Checks and caches upstream Docker registry for available updates, calculates possible major, minor, patch updates and exports them as Prometheus metrics. Add pod mutation webhook to rewrite image tags, a'la replace :2
with specific :2.1.0@sha256:...
tag so all running images are explicitly tagged. This would make it possible to rewrite also all pods with imagePullPolicy: IfNotPresent
to prevent Kubernetes workers excessively talking Docker registry. Once all this is implemented, add dashboard where out of date pods are visualized and there is button to trigger update simply by restarting the Deployment
, StatefulSet
or DaemonSet
and image rewrite mechanism will take care of the rest. Add annotations for automatically triggering updates via Kubernetes Cronjob and such.
With the easy to use OIDC app registration adding apps becomes really easy so implementing some basic services should be breeze:
[easy] URL shortener: we have k6.ee domain that we got for URL shortening. We use k6.ee/1234 format for QR codes that link back to the inventory system. The plan was to allocate k6.ee/12345 format for members (with OIDC auth) and k6.ee/123456 for public service. These can be likely stored in a Kubernetes CRD to simplify matters.
[easy] Chore reminder: someone needs to check the mailbox once in a while to make sure parcel notices are not lost and other similar usecases. This is currently implemented with Slack, but there is no acknowledge mechanism here and they get easily overlooked. This could be implemented with Kubernetes CronJob and the acknowledgement service. Annoy the users as long as someone marks the chore as done. Possibly just use CronJob object state as the tracking mechanism and the OIDC setup for user authentication.
[easy] Doodle-like service for running polls and/or scheduling meetings.
Break down members site monolith:
[medium] Refactor inventory tracking to run as a separate service. Inventory system currently includes lockers, MAC addresses and more besides user inserted objects. This should be moved to separate service. Note that we have precreated k6.ee/1234 stickers that hook into the inventory system, so at least that part should remain compatible with new system. Inventory system currently has the concept of an owner (who owns the item) and user (who uses it), note that either can be a legal entity (OÜ), likely this mechanism should be broken down even further into a separate ownership service that maps different keyspaces (QR code, MAC address -- note that these might overlap) into owners and current users. Inventory tracking system should use S3/Minio for image storage, database currently is running on Mongo.
[medium] Refactor machines page to run as a separate service. Machines page essentially scrapes our Miktorik routers and switches and aggregates all the data in one webpage allowing people quickly find their devices and what IP-s get assigned to the devices. This could/should run as a service without persistence, but for this MAC address -> inventory item mapping needs to be somehow separated. Possibly introduce the concept of namespaces into inventory system and have MAC address as the inventory item key in such keyspace.
[complex] Deprecate accounting features and migrate all that to Merit Aktiva. For this we need to investigate Merit Aktiva API-s and somehow signal the start of billing period start into Merit.
More ideas:
[medium] Proxmox VM ordering service: With Proxmoxxer library implement a microservice for ordering a VM from Proxmox. This should talk to the machines page service above to find a free IP address from the public IP range, pull in the SSH keys of the user, allow specifying VM specs (vCPU-s, memory, disk) and associate ACL-s so user can self-service the VM via Proxmox web UI later.
[easy] Proxmox guest exporter: Currently we're lacking visibility into what's happening inside the Proxmox VM-s. Eg. what kernel is running, are the system upgrades applied, when was the last guest reboot? Fortunately Proxmox has guest agent installed and it would be possible to query this information from the Proxmox hosts. The Proxmox hosts already run Prometheus node-exporter and easiest would be just to set up a cronjob to scrape the VM-s and write metrics into a textfile that gets consumed by the Prometheus node-exporter.
[complex] Offboarding service: Make sure users' stuff gets garbage collected, that primarily includes used stuff in inventory (lockers, keys), VM-s in Proxmox and in future possibly also Git repos in Gitea, files in Nextcloud and more. Offboarding service should signal Merit Aktiva that billing period should end and should also send user an goodbye e-mail.
[medium] ZFS backup service: Many of us are using ZFS on their daily driver laptops. With native ZFS crypto it becomes feasible to provide ZFS backup service for hackerspace members. This backup service could use OIDC for dashboard and API key retrieval. Export backup timestamp Prometheus metrics and provide automatic alerting Alertmanager.