• Björeman // Melin, avsnitt 241: En kille som vill rädda en tjej

    Avsnitt 241 av min och Fredriks podd är speciell av flera anledningar: vår gemensamme vän Christian är med och vi fick också chansen att diskutera Microsofts kommande ändringar av Outlook, President Trumps senaste äventyr och amerikansk politik i största allmänhet. Vi hann också med en kortare diskussion om filmen Tenet.

    Lyssna gärna.

  • Installera Mastodon i FreeBSD 12.2

    Som tidigare meddelats har jag börjat migrera bort mina CentOS 7 servrar till FreeBSD 12.2 istället. I vissa fall har det varit enkelt, och i andra fall har det varit ett rent helskotta. I skrivande stund har jag precis klarat av en migrering: min Mastodon-server, och jag har 2-3 kvar som är riktigt jobbiga också, men vi korsar den bron när vi kommer till den som det brukar heta. Om du vill läsa lite mer om mina tankar om Mastodon kan du göra det här.

    Att installera Mastodon

    Börja med att installera Mastodon på en server med FreeBSD. Om du gör den till en server som tillåter registreringar så kan du tänka på att gott om minne, processorkraft och diskyta kommer bespara dig problem i framtiden. Min Mastodon-server har ett 20-tal användare, mer eller mindre, aktiva, och min databas låg på närmare en gigabyte i storlek och katalogen med bilder och annat som användarna postat eller fått i sina flöden uppgick till 70-80 gigabyte. Servern jag kör det på har två processorkärnor och åtta gigabyte internminne, vilket säkert går att banta lite men jag gillar marginaler och servern tuffar på bra som den är:

    Innan du sätter igång och installerar Mastodon är det bra att läsa på lite. Det finns gott om dokumentation att läsa, och det enda som saknas egentligen är det där lilla problemet: det finns ingen installationsguide för oss som kör FreeBSD. Tidigare fanns Mastodon paketerat via FreeBSD:s inbyggda pakethanterare men det har försvunnit av någon anledning.

    När du installerat din server, gett den ett fullständigt värdnamn i /etc/rc.conf (inklusive domän och tld) så kan du börja installera lite paket:

    $ pkg install bash sudo

    Därefter är det dags att installera ännu fler paket. Här är det frestande att installera senare versioner än de jag listar här nedan men problemet är att Mastodon exempelvis inte stödjer den senaste versionen av Ruby så följ denna guide så ska det gå bra:

    $ pkg install git imagemagick-nox11 ffmpeg libxml2 libxslt gcc protobuf pkgconf autoconf automake gmake bison python readline ncurses openssl libyaml icu libffi gdbm libidn redis postgresql96-server postgresql96-contrib postgresql96-client ruby-2.6 ruby-26-gems rubygem-bundler node yarn npm nginx

    Därefter skapar du användaren för Mastodon:

    $ pw useradd -n mastodon -u 144 -c "Mastodon User" -m -d /usr/local/www/mastodon -s /usr/local/bin/bash

    Sedan är det dags att “installera” Mastodon:

    $ su - mastodon
    $ git clone https://github.com/tootsuite/mastodon.git live
    $ cd ~/live
    $ git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
    $ bundle install -j$(getconf NPROCESSORS_ONLN) --deployment --without development test
    $ yarn install --pure-lockfile
    $ exit

    Konfigurera PostgreSQL

    Att lattja med databasen som körs med Mastodon är ett kapitel för sig. Det finns många varianter på hur man gör detta men jag listar hur jag gjort här och det har fungerat.

    Först initierar du databasen:

    $ /usr/local/etc/rc.d/postgresql initdb

    Därefter startar du PostgreSQL:

    service postgresql onestart

    Därefter skapar du användare och databas för Mastodon:

    $ sudo su - postgres
    $ psql
    CREATE USER mastodon CREATEDB;
    CREATE DATABASE mastodon_production;
    GRANT ALL PRIVILEGES ON DATABASE mastodon_production TO mastodon; \q

    Konfigurera Nginx

    Nginx fungerar som en proxy mellan Mastodon och resten av omvärlden. Det är mot Nginx du skickar trafiken från ditt LAN och WAN där Nginx tar emot trafiken på port 80 eller 443 och skickar den “bakåt” till Mastodon på port 3000 och 4000.

    Jag har lagt upp mina konfigurationsfiler här som du kan ladda ned och titta på. Notera att konfigurationsfilen för Mastodon ska placeras under katalogen conf.d i rootkatalogen för Nginx som är /usr/local/etc/nginx/.

    Det är också en god idé att du tittar på att installera Let’s Encrypt och skaffar dig ett certifikat till din Mastodon-server. I och med att certifikatet hanteras av Nginx är detta enkelt och inget denna guide går igenom.

    Starta sedan Nginx med kommandot service nginx onestart

    Skapa serviceobjekt för Mastodon

    Mastodon består av tre olika komponenter som ska startas av operativsystemet genom att placera tre filer i /usr/local/etc/rc.d. Mina tre exempel på dessa filer kan du ladda ner här. Värt att notera är att dessa filer placerar process-id-filerna (pid) i /var/run - du kan ändra detta själv i filerna efter tycke och smak, men notera att du sedan måste göra motsvarande ändringar i andra filer i Mastodon oavsett om du använder samma inställningar som jag eller egna, nämligen dessa två:

    ~/live/config/pumba.rb - på rad 4 lägger du in följande rad:
    pidfile '/var/run/mastodon_web.pid'

    ~/live/config/sidekiq.yml - längst ner i filen lägger du in följande rad: :pidfile: /var/run/mastodon_workers.pid

    Du kan behöva justera rättigheterna för /var/run om PID-filerna inte skrivs där.

    Gör de tre processfilerna körbara med följande kommando:

    chmod +x /usr/local/etc/rc.d/mastodon_*

    Justera Redis för lokala anslutningar

    I Redis konfigurationsfil finns det tydliga tecken på att Redis ska acceptera anslutningar från localhost (127.0.0.1) på port 6379 i och med denna rad:

    bind 127.0.0.1

    Av någon anledning räcker inte detta utan jag fick modifiera raden så här:

    bind 127.0.0.1 192.168.1.10 där 192.168.1.10 är IP-adressen på Mastodon-servern. Denna IP-adress ersätter du givetvis med den faktiska adressen på din egna server.

    Förbered Mastodon

    Det är dags att förbereda Mastodon för sin första körning.

    Skapa katalogen för loggar:

    $ mkdir /var/log/mastodon
    $ chown mastodon /var/log/mastodon

    Gå över till Mastodon-användaren med följande kommando:

    sudo su - mastodon

    Ge sedan följande kommando:

    $ cd ~/live $ RAILS_ENV=production bundle exec rake mastodon:setup $ RAILS_ENV=production bundle exec rails assets:precompile

    När detta är klart kan du sedan redigera ~/live/.env.production. Notera särskilt att du måste konfigurera någon form av e-postfunktion så användare kan registrera sig hos dig, få e-post med information om nya följare, och så vidare.

    Starta alla tjänster automagiskt

    Det är trevligt när ens tjänster startar automagiskt vid omboot och liknande. Lägg in följande rader i /etc/rc.conf:

    redis_enable="YES"
    postgresql_enable="YES"
    nginx_enable="YES"
    mastodon_stream_enable="YES"
    mastodon_web_enable="YES"
    mastodon_workers_enable="YES"

    Boota till sist om din server och se att allt kommer upp ordentligt. Kolla i loggarna för Nginx och Mastodon efter felmeddelanden från uppstarten. Ser allt rimligt bra ut kan du testa att surfa till din nya Mastodon-server, registrera ditt konto och se till att du blir administratör för servern innan du släpper på användare utifrån.

    Lycka till!

  • Sven Erik Karlsson (1944-2020)

    För 20 år sedan presenterade min mamma en ny man i sitt liv efter ett antal år som singel. Han hette Sven Erik men alla kallade honom kort och gott för Svenne. Det stod snart klart att Svenne inte var som de flesta män tenderade att vara i den åldern - istället var han en varm person som brydde sig om alla han träffade och alltid var positiv och trevlig. Den värme han snabbt visade mig, min dåvarande fru och vår nyfödda dotter avtog inte under åren då vi fick ännu en dotter. Senare gifte jag om mig och fick två söner till som han snabbt tog till sig. Han och min mamma tog med mina två första barn på semestrar, något de fortfarande har ljusa och varma minnen av.

    Mina två syskon fick två barn vardera ungefär samtidigt som mina söner kom till världen och även där var Svenne närvarande och brydde sig genuint om sina bonusbarnbarn som om de vore hans egna. Utöver de åtta bonusbarnbarn han fick genom min mamma hade han också tre egna barn som i sin tur gav honom fem barnbarn och ett barnbarnsbarn. För mina barn och mina syskons barn var Svenne i praktiken deras farfar och morfar, även om deras riktiga dito fortfarande är i livet är han inte den närvarande typen trots att han har ett gott hjärta innerst inne.

    För några år sedan drabbades Svenne av hudcancer. Han överlevde den fajten men cancern återkom och spred sig snabbt genom kroppen till den punkt då läkarna tvingades ge upp kampen - inga behandlingar hjälpte och efter en lång tids kamp mot sjukdomen tvingades Svenne till slut kapitulera. Han somnade in natten till idag, den 18 december, på Södertälje sjukhus - samma sjukhus jag och mina två syskon föddes på.

    Cancer är ingen rättvis sjukdom. Det finns de som lever ett osunt leverne med alkohol och tobak genom hela livet som inte drabbas av det, och de som lever ett sunt friskt liv och blir sjuka av det ändå. Svenne tillhörde den senare kategorin - han gillade att röra på sig, var en aktiv jägare och trivdes inte att sitta på rumpan och lata sig annat än när han fick åka till Scaniarinken i Södertälje och se sitt älskade Södertälje SK spela hockey.

    Svenne blev 76 år gammal. Han sörjs av sin hustru och livskamrat sedan 20 år tillbaka, tre barn från ett tidigare äktenskap, fem barnbarn, ett barnbarnsbarn, åtta bonusbarnbarn och otaliga vänner och arbetskamrater han mött och lärt känna genom åren. Minnet av honom är ljust och starkt och kommer att finnas med alla oss som fick förmånen att lära känna honom för resten av våra liv.

  • Bättre nätverksprestanda i FreeBSD under VMware

    Jag har börjat göra mig av med alla virtuella servrar som kör CentOS7 efter att Red Hat beslutat sig för att döda CentOS i den form det existerar idag. Jag hadesedan tidigare bestämt mig för att lämna CentOS och Linux i allmänhet som plattform för mina virtuella maskiner och istället köra det mesta på FreeBSD, och även om CentOS 7 kommer stödjas med uppdateringar fram till 2024 så har jag satt igång och migrerat över funktion efter funktion och även om jag har ett antal servrar kvar att migrera till FreeBSD så går det stadigt framåt. Alltid något, som det brukar heta.

    Large Recieve Offload

    FreeBSD 12.2, som jag kör som version i mina virtuella FreeBSD-servrar, har fungerat riktigt stabilt under VMware ESXi 6.5, men jag funderade ändå på om det gick att vässa prestanda lite på maskinerna. Jag hade en svag känsla av att jag kunde få ut mer prestanda när det gällde nätverkstrafiken, och jodå, det kunde jag.

    Genom att först installera Open VM Tools på varje server, därefter växla över till VMXNet3 som nätverkskort för varje maskin och slutligen slå på en funktion kallad LRO, eller Large Receive Offload, så kunde jag få upp hastigheten ordentligt. Med VMXNet3 får varje virtuell maskin 10Gbit/s som nätverkshastighet inne i VMware’s egna nätverksstack, men utan lro fann jag att jag inte kunde få ut särskilt bra prestanda med FreeBSD 12.2.

    Här resultaten från ett test med Iperf3 mellan en FreeBSD 12.2-server som har lro påslaget och en annan som inte har det:

    [ 5] local 10.0.1.83 port 45935 connected to 10.0.1.201 port 5201
    [ ID] Interval Transfer Bitrate Retr Cwnd
    [ 5] 0.00-1.00 sec 109 MBytes 915 Mbits/sec 0 1.34 MBytes
    [ 5] 1.00-2.00 sec 112 MBytes 942 Mbits/sec 0 1.42 MBytes
    [ 5] 2.00-3.00 sec 112 MBytes 941 Mbits/sec 0 1.45 MBytes
    [ 5] 3.00-4.00 sec 112 MBytes 941 Mbits/sec 0 1.49 MBytes
    [ 5] 4.00-5.00 sec 112 MBytes 942 Mbits/sec 0 1.49 MBytes
    [ 5] 5.00-6.00 sec 112 MBytes 941 Mbits/sec 0 1.51 MBytes
    [ 5] 6.00-7.00 sec 112 MBytes 942 Mbits/sec 0 1.51 MBytes
    [ 5] 7.00-8.00 sec 112 MBytes 941 Mbits/sec 0 1.51 MBytes
    [ 5] 8.00-9.00 sec 112 MBytes 941 Mbits/sec 0 1.51 MBytes
    [ 5] 9.00-10.00 sec 112 MBytes 941 Mbits/sec 0 1.51 MBytes

    [ ID] Interval Transfer Bitrate Retr
    [ 5] 0.00-10.00 sec 1.09 GBytes 939 Mbits/sec 0 sender
    [ 5] 0.00-10.01 sec 1.09 GBytes 937 Mbits/sec receiver

    Här resultatet mellan samma servrar när båda har lro påslaget:

    [ 5] local 10.0.1.83 port 14664 connected to 10.0.1.202 port 5201
    [ ID] Interval Transfer Bitrate Retr Cwnd
    [ 5] 0.00-1.00 sec 1.76 GBytes 15.1 Gbits/sec 0 1.58 MBytes
    [ 5] 1.00-2.00 sec 2.38 GBytes 20.5 Gbits/sec 0 1.77 MBytes
    [ 5] 2.00-3.00 sec 2.47 GBytes 21.2 Gbits/sec 0 1.77 MBytes
    [ 5] 3.00-4.00 sec 2.44 GBytes 20.9 Gbits/sec 0 1.77 MBytes
    [ 5] 4.00-5.00 sec 2.50 GBytes 21.5 Gbits/sec 0 1.77 MBytes
    [ 5] 5.00-6.00 sec 2.47 GBytes 21.3 Gbits/sec 0 1.77 MBytes
    [ 5] 6.00-7.00 sec 2.38 GBytes 20.5 Gbits/sec 0 1.77 MBytes
    [ 5] 7.00-8.00 sec 2.45 GBytes 21.0 Gbits/sec 0 1.77 MBytes
    [ 5] 8.00-9.00 sec 2.48 GBytes 21.3 Gbits/sec 0 1.77 MBytes
    [ 5] 9.00-10.00 sec 2.47 GBytes 21.2 Gbits/sec 0 1.77 MBytes

    [ ID] Interval Transfer Bitrate Retr
    [ 5] 0.00-10.00 sec 23.8 GBytes 20.5 Gbits/sec 0 sender
    [ 5] 0.00-10.04 sec 23.8 GBytes 20.4 Gbits/sec receiver

    Så här gör du

    Att installera Open VM Tools i FreeBSD och därefter slå på lro är enkelt.

    Börja med att leta rätt på Open VM Tools:

    pkg search open-vm-tools-nox11
    open-vm-tools-nox11-11.1.5,2 Open VMware tools for FreeBSD VMware guests

    Installera det:

    pkg install open-vm-tools-nox11-11.1.5,2

    När installationen är klar redigerar du /etc/rc.conf och lägger till följande rader:

    ifconfig_vmx0="inet 10.0.1.83 netmask 255.255.255.0 lro"
    defaultrouter="10.0.1.1"
    sshd_enable="YES"
    vmware_guest_vmblock_enable="YES"
    vmware_guest_vmhgfs_enable="NO"
    vmware_guest_vmmemctl_enable="YES"
    vmware_guest_vmxnet_enable="YES"
    vmware_guestd_enable="YES"

    Givetvis byter du ut värden för IP-adress, nätmask och router mot dina egna värden. Stäng därefter av servern, ta bort det gamla E1000-nätverkskortet och lägg till ett nytt som du sätter till VMXNet3. Har du inte rört till det alldeles kommer din maskin starta upp igen som vanligt och nu har du betydligt bättre nätverksprestanda mot FreeBSD 12.2.

  • Chattprogrammen vår tids kontorslandskap

    Slack har fått ny ägare. Prislappen landade på hisnande 27,7 miljarder dollar, eller drygt 234 miljarder svenska kronor, och den nye ägaren heter Salesforce, ett stort bolag i USA men fortfarande hyfsat anonymt här i Sverige.

    Frågan är dock om de faktiskt kan ta upp fajten med Microsofts erbjudande i form av Teams och Office 365 - Microsoft passerade 110 miljoner användare av Teams, som skapades just för att möta konkurrensen från Slack, medan Slack har 12-15 miljoner användare. Det är dock en annan diskussion. Det jag pratar om nu är huruvida Slack och Teams gör mer skada än nytta.

    Casey Newton har skrivit en artikel om Slack och om hur de på sätt och vis redan förlorat:

    Slack tiptoed into the conversation in the middle of the decade and almost immediately became the fastest-growing enterprise software tool of all time. In 2015, just 18 months after it launched, Slack reported having more than 1 million daily users — a figure then unheard of in enterprise software.

    It had a great backstory — a last-ditch pivot from a failed video game called Glitch — and, in Stewart Butterfield, one of the tech world’s most charming founders. It also had a bold pitch: it was going to “kill email” — or, at the very least, reduce your reliance on it — and it would do so by integrating hundreds of other services into real-time work chat, creating a kind of all-knowing command console for your organization.

    En fråga jag måste ställa är denna: är det någon som faktiskt tycker om att arbeta i Slack, Teams, Mattermost eller någon annan liknande lösning? Jag minns när Slack gick ut och sa att de skulle “döda e-posten”, men om det är något som är bra med e-post är just att man dels kan hitta information hyfsat enkelt, och man kan också välja att svara på ett mail när man har tid. De interna chattklienter som finns i princip i varenda bolag idag är absolut användbara för att slänga iväg en snabb fråga, men de är också oerhörda tidstjuvar som stör dig i tid och otid.

    2017 skrev Benjamin Pollack en text om varför han hatar Slack. Jag känner igen mig i mycket i hans text, som börjar så här:

    A Long Thyme Agoe, in the Days Before Slack, I had three different ways of being contacted, and they served three very different purposes, with radically different interrupt priorities. I had emails, which could wait; I had phone calls, which couldn’t; and I had the company IRC server, which was usually where I went to waste time by sharing links to things that either made me get very angry or made me laugh hysterically.1 In this system, the important, time-sensitive thing can interrupt me, and everything else can’t. That’s great for productivity and great for my sanity, and the people were happy and things were good.

    Slack totally just trashed everything. It’s email and phone calls and cat pictures, all rolled into one. So sometimes Slack notifications are totally not time-sensitive (@here Hey I need coloring books for my niece, any suggestions? also she’s afraid of animals clowns food people and dinosaurs and also allergic to paper kthxbye!), and sometimes they require an immediate action (@here Dr. Poison just showed up and tl;dr maybe run for it idk?)—and until I’ve read the message, I have absolutely no idea whether it deserves my immediate attention.

    Om du inte rört din dator på en stund, kanske för att du sitter och läser en text eller funderar på ett problem, är det inte omöjligt att du får ett meddelande i stil med “är du där?” från en kollega, eller chef. Din ikon i chattprogrammet har ju gått från grön till gul, där gul betyder att du inte längre är aktiv.

    Slack beskriver sig också som en sorts informationshubb, en “allsvetande kommandokonsol för din organisation” som Casey Newton skriver ovan, men det bygger i allra högsta grad på att alla som är anslutna till företagets chattplattform är aktiva, svarar och deltar i diskussioner. Gör man det så är Slack, Teams och de andra en omedelbar succé men nästa fråga man då måste ställa sig är denna: var tar man tiden från till att vara aktiv och deltagande? Är det okej att stänga av klienten i några timmar, eller kanske en hel dag, för att man behöver koncentrera sig och inte vill bli störd?

    Slack hade tidigaren slogan som gick nåt i den här stilen: “Slack - where work happens”. Numera har de utvecklat denna en aning:

    Teamwork can be hard, messy, complicated… and still the best way to work. That’s why we made Slack — a place where people get work done, together.

    Jag ställer mig åter igen frågan om den här kulturen att man samlas runt en produkt som Slack eller Teams faktiskt är så sund egentligen. Personligen stänger jag av Teams, som vi kör på min arbetsplats, lite då och då för att jag behöver koncentrera mig. Min chef är helt okej med det, och vill man så kan man också slå på så man får en e-postnotifiering om man missat ett meddelande i Teams. Ibland sätter jag “mute” på ett team där det chattras väldans mycket just för att jag sitter och arbetar med annat och återkommande notifieringar (på tal om tidstjuvar - vem tyckte notifieringarna var en bra ide?) om dessa meddelanden helt enkelt stör mig i mitt arbete.

    Monica Torres:

    When I hear the Slack ping that announces a new message, I feel a Pavlovian pull to read it, right then, right away. There’s a red circle noting the number of new messages that nudges me to drop whatever I’m doing and click. That’s surely by design. Tristan Harris, a former Google employee turned industry critic, notes that red is a known trigger color.

    These psychological pulls are not great for my productivity and peace of mind, but for me, that’s not the worst thing about Slack. What’s become clear from my years of using Slack at work is that it is, first and foremost, a tool of corporate surveillance. Slack stands for “Searchable Log of All Communication and Knowledge,” after all. Its positive use depends on how much you trust your employer not to read your messages, because yes, they have complete access.

    Givetvis äger din arbetsgivare informationen i de verktyg som arbetsgivaren tillhandahåller men i dessa tider där många av oss sitter hemma hela dagarna och i brist på annat socialt umgänge kanske börjar prata privata saker med någon kollega kan det vara bra att veta: din arbetsgivare kan läsa allt du skriver, även privata meddelanden, i Teams, Slack och andra lösningar.

    Benjamin Pollack igen:

    Stop using Slack. I hate it; you also should hate it. It’s distracting. It murders productivity. It destroys old tools. It exploits psychological needs in such a way that it kills your soul and hangs it up to dry over a lava pit, where the clothesline catches fire and your soul falls into the fire and somehow you’re not dead, just a zombie, forever, reading zombie notifications on your zombie iPhone and wondering whether “@here brains?” is a lunch invite or an insult until you read the backlog.

    I dessa jobba-hemma-tider kan jag förstå och respektera att lösningar av det här slaget är viktigare än någonsin, men precis som att sitta i ett bullrigt kontorslandskap och bli störd var femte minut så måste det finnas tid där man faktiskt kan ägna sig åt att jobba i lugn och ro.

    Stäng av Slack. Avsluta Teams. Hoppa ur Mattermost. Om någon undrar varför kan du helt enkelt säga: “Jag behövde lugn och ro. Maila om det är något”. Kommer det formella krav på att du “alltid ska vara tillgänglig” så kanske det är dags att fundera på att hitta en annan arbetsgivare som litar på dig och låter dig göra ditt jobb i lugn och ro.