Hemma
Försöker rätt mycket att inte använda teknik jag jobbar med för privata projekt då det är ett roligt (och som bieffekt effektivt) sätt att inte helt snöa in på en specifik teknik.
Körde under många år filosofin att välja ett till två programspråk i början av året som jag hört/läst om, sedan så långt som praktiskt möjligt göra alla hemmaprojekt i det språket. Gav mig bl.a. på saker som Project Euler och Advent of Code, lagom nivå när man lär sig ett nytt språk.
Tror det primära jag lärt mig av språktestade är att de flesta populära språk har fördelar och nackdelar, de flesta språk är egentligen i det stora hela rätt redundanta. Självklart ska alla som vill göra ett eget språk få försöka, men som enskild utvecklare tror jag det har ett högre värde att vara riktigt bra i något/några enstaka språk (vilka är mindre viktigt, styrs ju i praktiken ofta av externa faktorer).
Känner att jag för tillfället testat nog med språk, det slutande tillföra speciellt mycket efter man fått hyfsad kläm på en bra bit över tio olika programspråk. Känner att allt som behöver göras kan lösas med: JS (det är webbens assembler och går inte att undvika 2019), Go (mitt favoritspråk just nu), R ("data-mining"), C++ och BASH (enbart som klister).
Håller specifikt på med ett hemmasnickrat övervakningssystem av elförbrukning, ute/inne temperatur, luftfuktighet, etc. Som databas används Influxdb körandes på en NUC, det är enda PC-komponenten i systemet. Kändes inte som RPi var helt optimal som databasserver, men hade garanterat fungera för detta om man bara anslutit en disk via USB.
Centralpunkten i hela systemet är en program som heter Mosquitto, det är en MQTT-broker (MQTT = Message Queuing Telemetry Transport, ett protokoll för att publicera och prenumerera på händelser).
Använder primärt Arduino-system (ESP8266 samt ESP32) för att mäta saker, undantaget är inhämtning av husets totala elförbrukning. Köpte denna utrustning för att mäta elförbrukning, visade sig att det trådlösa protokollet var frekvensmodulerad över 433 MHz medan de flesta enkla mottagare för Arduino använder sig av amplitudmodulering.
Gick att lösa med en USB-dongel för DAB-radio + en RPi3.
Tack vare lysande stöd för att använda C-bibliotek i Go (t.ex. WiringPi) är allt som jag utvecklat för RPI enheterna skrivet i just Go. Python är helt OK, men Go är långt mer effekt och gillar statiskt typade språk mycket mer än dynamiskt typade. På flera sätt känns Go som ett statiskt typat Python, skillnaden är att Go är långt mer lämpad att effektivt utnyttja de 4 relativt svaga CPU-kärnorna i en RPi3.
På Arduino-systemen kör en väldigt nedskalad variant av C++. Kan nog mer beskrivas som C med lite småsaker från C++ påklistrat. Men det är ju helt rätt teknik för en mikrokontroller tycker jag.
Kvar att göra på övervakningssystemet är någon form av webbaserad applikation för att se status. Användning av MQTT för det trivialt att få in "live-data" i JS-koden som körs på enheten då det finns flera websocket-baserade bibliotek för detta. Har tyvärr icke-existerande CSS-kunskaper, så här finns ju något nytt att lära sig
Till skillnad från många andra tycker jag JS är ett helt OK språk, kanske för att jag inte försöker programmera JS som en dålig variant av Java/C#. Tycker faktiskt prototyp-baserad OOP är bättre än sättet Java/C#/C++ m.fl. angriper OOP (skriver i princip aldrig OO i C++, styrkan i C++ är lågnivåfinesser samt generisk programmering, tycker OO-delarna är rätt mediokra).
Jobb
Jobbar primärt som arkitekt på en OS-kärna, så majoriteten av all kod skrivs i C. Men blir också en del C++ då alla unit-tester är skrivna i C++ (baserat på Google Test/Mock).
Mycket av automatisering, t.ex. av testing och skapande av releaser, är en kombination av Python och BASH. Men då vi allt mer använder Jenkins lär det krypa in Groovy med tiden. Har för tillfället minimal erfarenhet av Groovy, så har ingen åsikt om det språket än.