Portfolio/Programmers portfolio.md
2024-03-02 14:40:53 +01:00

4.7 KiB

Odd Stråbø

Personal website

Beskrivelse: Personlig blog og fotogalleri
URL: https://github.com/oddstr13-openshell-no/django-website
Status: Aktiv (Personlig nettside, fullt ansvar), maintainance backburner
Technologies used: Python, Django, PostgreSQL, SQLite, Docker, nginx, HTML5, CSS3, gunicorn, Linux, SSL, Git, GitHub

Dette prosjektet består i en personlig nettside som er utviklet fra bunnen av ved hjelp av rammeverket Django. Store deler av koden består av Python, resten er stort sett Jinja templating, HTML 5 og ren CSS 3, med noe JavaScript for helt enkle funksjoner. I utgangspunktet var PostgreSQL brukt som database, men denne ble byttet ut med SQLite, da nettsiden ser veldig lett trafikk, og det er lettere å flytte en filbasert database enn en serverbasert løsning.
Nettsiden består av en enkel blog, et galleri og en "pastebin" for deling av mindre kodesnippets.

Hele prosjektet, inklusive programmering og server oppsett er ett enmannsprosjekt. Allt fra å installere operativsystemet på serveren til å konfigurere serverprogrammvaren med SSL sertifikat.

Topptrim Oppdal

Beskrivelse: Hjemmeside for frivillig organisasjon.
Project scope: Full stack devops
Mine bidrag: Hele prosessen med design og programmering av frontend og backend, inklusive overføring av data fra den gamle nettsiden, etter bestilling fra kunde. Pågående drift, og publisering av nytt innhold.
URL: https://topptrimoppdal.no/
Status: Aktiv (fullt ansvar)
Technologies used: PHP, MySQL, HTML5, CSS3, JavaScript, Leaflet (maps), Git

JPRM

Beskrivelse: Verktøy for kompilering av C# plugins, og vedlikehold av pakkebibliotek (plugin repository) for Jellyfin.
Mine bidrag: Ide, design, implementasjon, vedlikehold, CI og publisering.
URL: https://github.com/oddstr13/jellyfin-plugin-repository-manager
Status: Aktiv (fullt ansvar)
Technologies used: Python, CLI, Git, GitHub, GitHub Actions (CI/CD), YAML, JSON, XML, .NET, Zip, checksum, RegEx, PyTest, Click (Python), PyPI

Opprinnelsen til dette verktøyet kommer fra behovet for å pålitelig kunne vedlikeholde pakkebiblioteket til Jellyfin-prosjektet. Han har stått for design og utvikling og vedlikehold av prosjektet, som inkluderer blant annet deler av pakke-metadata formatet, og hvordan dette blir lagret i pakkene, kommandolinjegrensesnittet, og all koden som skal til for å ta kildekoden av et plugin, gjøre det om til binærfiler klare for dirstibusjon (ved hjelp av kommandolinjeverktøyet dotnet) og selve publiseringen av pakker til biblioteket slik at Jellyfin kan finne og oppdatere pakkene.

Jellyfin Cover Art Archive Plugin

Beskrivelse: Ett Jellyfin plugin for å hente metadata (CD-cover bilder) fra Cover Art Archive.
Mine bidrag: Innledende implementasjon og oppsett av CI/CD, samt noe pågående vedlikehold.
URL: https://github.com/jellyfin/jellyfin-plugin-coverartarchive
Status: Aktiv (delt ansvar)
Teknologies used: C#, .NET, Git, GitHub, GitHub Actions (CI/CD), API, REST, YAML

Jellyfin for Kodi

Beskrivelse: Jellyfin addon for Kodi mediasenter
Mine bidrag: Opprydding og rebranding etter fork, optimalisering, vedlikehold, feilsøking, publisering
URL: https://github.com/jellyfin/jellyfin-kodi
Status: Aktiv (project lead)
Technologies used: Python, SQLite, PyTest, Kodi, API, REST, JSON, Git, GitHub, GitHub Actions (CI/CD)

Solar panel monitoring

Beskrivelse: Dette prosjektet går ut på å koble en generisk MPPT solcellekontroller til ett standardisert hjemmeautomasjons system.
Mine bidrag: Idé, reverse engineering, feilsøking og programmering
URL: https://git.service.openshell.network/oddstr13/srne-mqtt
Status: Aktiv
Technologies used: Python, MQTT, logic analyzer, Git, PyTest, struct, JSON, Python typing, Serial (RS-232), RRD, Bluetooth, BLE, Home Assistant, Java, De-compile

Dette prosjektet har hovedsaklig bestått i å finne ut av hvordan ett udokumentert grensesnitt fungerer, og hvordan trekke ut den interesange informasjonen fra enheten. Solcelleladeren hadde en blåtannmodul tilgjengelig som ekstra tilbehør, og med denne hørte det til en android app.
Protokollen er blitt delvis dokumentert ved hjelp av opptak av blåtannkommunikasjon og logikkanalysator, samt tolking av den sterkt obfuskerte dekompilerte java app-koden.
Ett Python bibliotek for å kommunisere med blåtannmodulen ble først utviklet, men siden ble denne modulen byttet ut med en direkte serielltilkobling for økt stabilitet.
Data blir sendt til via MQTT til Home Assistant som gir tilgang til ett raskt overblikk i en android app samt styring av utstrøm, men også sendt vidre til Prometheus og InfluxDB for bruk til grafer i Grafana.