Autolayout af stemmesedler
Jeg dvælede ved at alle landets 98 kommuner, ved hvert valg købte eksterne grafikertimer til layout af deres stemmesedler. Een ting er pris, men en anden ting er at stemmesedlers opbygning meget let snyder hjernen og layout-fejl så overses. Du kender det f.eks. fra ord der er stavet forkert.
Jeg har nu strikket en webløsning sammen og ovenstående er automatisk genereret ud fra en simpel Excel-fil. Det tager ca et par sekunder at generere en trykklar fil; og tælles al tidsforbrug med, så måske 10-20 sekunder versus 2-4 købte grafikertimer.
Men det vigtigste her er at fejl nu undgåes, såsom manglende afkrydsningfelter. Det driller demokrati-følelsen hos borgerne og skaber masser af støj på kommunalgangen. Potentielt påvirker det et partis stemmer.
Det vil ligge online inden næste valg, til gratis brug for kommunerne.
Kommunefugl
En gave til IT- og digitalisering hos Herning Kommune.
Lavede den da projektleder-kontoret slukøret berettede, at de ikke måtte få bevilget en "Birdie" til tjek af Co2 i luften.Hvis man ikke kender "Birdie", er det en fugl man hænger op, der "dør" når Co2 i luften kommer over en hvis grænse.
Min hjerne kom i tanke om at der var en fugl i byvåbnet, og så gik den derfra - via leg;
Træarbejde, 3D-print, kodning af microcontroller, sensor, print-ætsning, diverse elektronik, lodning, skæreplotter, smil og fnis, var opskriften hen mod resultatet.
Næbbet roterer løst og hænger derved nedad, når fuglen drejer de 180 dødsgrader.
Planlægningsskærm med Google sync
Når jeg går halvsøvningt ned af min trappe om morgenen, fanger en sensor bevægelsen og viser mig de næste dages aftaler, på en nu tændt skærm, pladask i hovedhøjde foran mig.Ville have bedre overblik, uden alt "bulshittet" fra andre løsninger, så valgte selv at udvikle løs. Er udviklet i node.js/Electron og har integreret sync med Googles kalender-API.
Kører på en Raspberry Pi.
Viser kun vågne timer og kun "I dag", "I morgen" og "i overmorgen" i timevisning - resten følger i en liste. Derudover er min opgaveliste ligeså vist til venstre og klokken samt vejret i 3 timers intervaller.
Kører jeg programmet på min pc, vises yderligere til tilføjelse/tilpasning af aftaler, opgaver mm., afslutte opgaver, samt jeg kan "trække" opgaver fra opgavelisten ind på en given time, til adhoc og hurtig planlægning heraf.
Det matcher temmeligt godt min fritidshjerne og søvnige morgengrimshedsfjæs og det var temmeligt spændende at stykke sammen! At få leget med Googles Kalender API.
Custom Busy-light
Denne udfordrede mig. Ikke på bygning af enheden, men på neddykningen i usb-protokollen og programmeringen af dette.
Jeg ville nemlig - 1:1 - få enheden til at præsentere sig for computeren som en officiel enhed, så den kunne benyttes i eksisterende og officiel software.Det betød direkte aflæsning på usb-kablet fra en købeenhed med en logic analyzer, lære koncepter som usb-descriptors og det generelle handshake der sker, når man isætter en usb-enhed. Og derefter afkode alt dette, så det kunne replikeres i min egen enheds programmering.
Det lykkedes heldigvis, men samtidig lærte jeg hands on, hvor usikkert usb er. Jeg ville kunne præsentere mig som hvilken som helst enhed - et tastatur, en printer, en lagerenhed - og få disse enheders rettigheder til systemet. Tastatur/mus er f.eks. aldrig(?) sikret sikkerhedsmæssigt og man ville kunne taste, eksekvere og kopiere løs, med brugerens egne rettigheder.
Auto-lock via persongenkendelse
Et stykke software jeg kodede mig, da den gode vane med at få låst sin computer når den blev forladt, ikke altid kom i spil.Er lavet i node.js/Electron og bruger en machine-learning model backend i et Tensorflow-baseret bibliotek, til at se om der sidder en person bag skærmen, ud fra en række parametre. F.eks max-afstand fra skærmen. FFmpeg bruges ligeledes backend, til at knipse billeder fra ens webcam.
Den låser computeren efter 5 sekunder (eller hvad man retter timeouten til), hvis ingen bruger sidder foran computeren.
På sigt vil jeg udvide den til, at man kan træne sin egen model ud fra egne billeder on the fly. Altså så programmet kun genkender den ene person den er trænet på og ellers låser skærmen.
Automatisering af luftrenser
Min manuelle luftrenser trængte til lidt automatik. Ønskede at kunne styre den ud fra tidsplaner og triggere.Med en god portion reverse-engineering af elektronikken, fik jeg påloddet yderligere relevant elektronik og ledninger, samt isat en microcontroller med WIFI som styring. En Raspberry Pi Pico W.
Fik kodet mig styringen til aflæsning af nuværende tilstand og som kan lave "knaptryk" til hastighedsskift ol. Styringen er kodet inklusiv et lille API så det kan styres af anden software.
PT. styres det over wifi af Home Assistant, som sørger for at lade den køre op på max hastighed (jetfly!) 4 timer hver nat.
Tænker niveauskift når jeg forlader hjemmet, også kunne være en senere ting.
Belysning af trykrammer
Manglede en UV-belyser - med timer - til når jeg legede med tøjtryk derhjemme. De er dyre og primært til industribrug, så hvorfor ikke bikse en selv?Efter byggen kasse, boren af 600 mikrohuller, isætning af 300 UV-LED'er, endnu flere lodninger her og der og diverse tryl, kom jeg i mål. Pyh!
En microcontroller og hjemmestrikket kode herpå, blev hjernen som styrer timer, display, højtaler, knapper mm. og det spiller lige som jeg vil have det!
Opgradering af skæreplotter
Skærmen til min meget gamle skæreplotter døde (en slags printer som skærer istedet for at printe). En ny kunne muligvis skaffes, men den var dyr og havde længe tænkt at opgradere fra den gamle grønne monokrom-lcd, til noget nutidigt.... og hvorfor ikke ligeså tilføje trådløs "print" fremfor kablet, lagerplads, nyt frontpanel og andet hyl, nu jeg var igang.
Det krævede den helt store omgang nørd. det gamle skærmsignal skulle f.eks. helt low level oversættes til noget der kunne sendes til den nye skærm, så måtte aflæse bits direkte på skærmkablet og manuelt afkode logikken. Data modtaget via wifi, skulle sendes videre byte for byte serielt.
Men alt lykkedes og tilføjede som bonus, at skærejobsdataen blev oversat og vist på skærmen under skæring; plus menusystem og andet visuelt kræs. Den gamle skærm viste blot et par tal, et logo og et par ord.
Opgradering af rullegardiner
Mine gamle manuelle rullegardiner skulle da have motor og automatik!Fik tilpasset en grund-3d model til rullegardiner, så det matchede mine behov og rullegardiner, isat lille stepper-motor, lavet en fuga-kompatibel knap til indmuring, trukket kabler i væggen og lavet koden til styringen på en microcontroller. Inklusiv et API, så det kunne styres udover med knap i væggen.
Nu kører rullegardinerne automatisk op ved solopgang og ned ved solnedgang, styret af Home Assistant via det API jeg lavede. Det rammer helt hvad jeg ønskede.