9.3 KiB
Odd Stråbø
Odd har drevet med programmering siden 2007, og har siden 2009 hatt Python som hovedspråk, men har også vert innom mange andre programmeringsspråk opp igjenom årene. Han har lang erfaring med versjonkontrollsystemer som Git og Mercurial, og har også erfaring med å flytte kodehistorie over fra ett versjonkontrollsystem til ett annet.
Han har en forkjerlighet for åpen kildekode, og bruker gjerne fritiden på å bidra til diverse prosjekter han er en bruker av. Han er også glad i blant annet elektronikk, radio og planter, og kombinerer gjerne disse prosjektene slik som for eksempel IoT sensorer som gir flotte temperaturgrafer fra drivhuset.
Linker
- GitHub: https://github.com/oddstr13
- LinkedIn: https://www.linkedin.com/in/odd-str%C3%A5b%C3%B8/
- Instagram: https://www.instagram.com/oddstrabo/
Språk
- Norsk: Morsmål
- Engelsk: Flytende
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)
Kompetanser: Python, CLI, Git, GitHub, GitHub Actions (CI/CD), YAML, JSON, XML, C#, .NET, Zip, checksum, RegEx, PyTest, Click (Python), PyPI
Tidsrom: 2020-07 til nå
Utvikling og vedlikehold av komandolinjeverktøy for kompilering, og publisering av Jellyfin plugins.
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)
Kompetanser: C#, .NET, dotnet, Git, GitHub, GitHub Actions (CI/CD), API, REST, YAML
Tidsrom: 2020 til nå
Utvikling av nytt plugin for henting av album-bilder fra Cover Art Archive. Oppsett av GitHub Actions CI for å enkelt kunne publisere nye versjoner.
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)
Kompetanser: Python, SQLite, PyTest, Kodi, API, REST, JSON, Git, GitHub, GitHub Actions (CI/CD), Devcontainers, Azure CI/CD
Tidsrom: 2019 til nå
Hans arbeidsoppgaver på dette prosjektet har inkludert blant annet modernisering av kodebasen, optimalisering, vedlikehold, feilsøking og feilretting. Han har hovedansvar for publisering av nye versjoner, samt review av pull-requests og issue-triage.
Mye av arbeidet har gått ut på å modernisere kodebasen for å gjøre den lettere å vedlikeholde, samt å sette opp CI/CD for å lette arbeidet med å publisere nye versjoner.
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
Kompetanser: Python, MQTT, logic analyzer, Git, PyTest, struct, JSON, Python typing, Serial (RS-232), RRD, Bluetooth, BLE, Home Assistant, Java, De-compile, reverse-engineering, elektronikk
Tidsrom: 2021 til nå
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.
Personlig nettside
Beskrivelse: Personlig blog og fotogalleri
URL: https://github.com/oddstr13-openshell-no/django-website
Status: Aktiv (Personlig nettside, fullt ansvar), maintainance backburner
Kompetanser: Python, Django, PostgreSQL, SQLite, Docker, nginx, HTML5, CSS3, gunicorn, Linux, SSL, Git, GitHub, supervisord, JavaScript
Roller: Systemutvilker / Devops / Backend / Frontend / Web admin
Tidsrom: 2014 til nå
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. Alt fra å installere operativsystemet på serveren til å konfigurere serverprogrammvaren med SSL sertifikat.
Topptrim Oppdal
Beskrivelse: Hjemmeside for frivillig organisasjon.
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)
Kompetanser: PHP, MySQL, HTML5, CSS3, JavaScript, Leaflet (maps), Git, SFTP, Click (Python), SQLAlchemy, CSV, JSON
Roller: Systemutvilker / Devops / Backend / Frontend / Web admin
Tidsrom: 2012 til nå
Utviklet ny nettside for publisering av nye turmål ved nyttår, og overført data fra gammelt system. Oppdatering av nettsiden når endringer i underliggende teknologier gjør dette nødvending. Vedlikehold av nettsiden, oppdatering og publisering av ny informasjon. Utvikling av komandolinjeverktøy for å gjøre det lettere å normalisere data og publisere informasjon til databasen.
Njord
Beskrivelse: IRC-bot skrevet i Python
Status: Inaktiv
Kompetanser: Python, IRC, Text parsing, Linux, Chatbot, hot-reloading, SVN, Mercurial, Pluginarkitektur, OOP, socket, XML, API, RegEx, JSON, REST, Unicode, UTF-8
Roller: Systemutvikler / Devops / Backend
Tidsrom: 2009 til 2015
Utvikling av IRC chat bot med plugin system. Plugin kan hot-reloades.
MinecartMeter
Beskrivelse: Spillutvidelse
URL: https://github.com/oddstr13/MinecartMeter
Status: Inaktiv
Kompetanser: Java, Maven, Git, GitHub, GitHub Actions (CI/CD)
Roller: Systemutvikler
Tidsrom: 2011, 2021
Utvikling av Bukkit plugin for Minecraft i Java.
nRF52840 802.15.4
Beskrivelse: Proof of concept for 802.15.4 kommunikasjon med nRF52840 devkit
URL: https://github.com/oddstr13/dk-rtic-smoltcp-6lowpan
Status: Inaktiv
Kompetanser: Rust, Embedded, Git, GitHub, IEEE 802.15.4, RF, Radio, IoT, JTAG/SWD, nrf-hal, nRF52840, ARM Cortex-M4
Roller: Systemutvikler
Tidsrom: 2021
Programmering av mikrokontroller. 2.4GHz trådløs IoT komunikasjon. Fiksing av bugs upstream.
Arduino UKHASnet node
Beskrivelse: UKHASnet IoT sensor node
URL: https://github.com/OpenShell-no/openshell-ukhasnet-arduino
Status: Backburner
Kompetanser: Arduino, C++, C, Makefile, Embedded, Radio, Git, GitHub, Mercurial, BitBucket, Jenkins, AVR, SPI, ESP8266, RFM69, Radio, GFSK, OneWire, Serial, GPS, IoT, Jenkins (CI/CD), KiCad EDA, Schematics, Soldering, Python, Multicast, NodeRED, JavaScript, Node.js, Home Assistant, MQTT
Roller: Systemutvikler, Electronics engineer
Tidsrom: 2015 til nå
Valg av komponenter, PCB design, lodding, testing, feilsøking og programmering. Design av kretskort med KiCad. Sammenligning og valg av komponenter. Lese datablad for å forstå hvordan mikrokontrollere og sensorer fungerer internt. Programmering av mikrokontrollere og backend for å ta i mot data. Oppsett og konfigurering av InfluxDB og Grafana for å visualisere data i grafer. Bruk av Muticast, NodeRED og MQTT for å levere sensordata til Home Assistant lokalt, uten internett.