Test av Google Cloud Vision API

I torsdags släppte Google Beta-versionen av Google Cloud Vision API. Via API-et kan man skicka upp bilder och få tillbaka taggar som beskriver vad bilden visar – allt från vilken blomma som finns på bilden till kända landmärken, eller att kategoriera olämpligt innehåll vilket är användbart för tjänster där användare laddar upp bilder. Vidare kan API-et detektera ansikten och deras ansiktsuttryck samt tolka text. Något som explicit undantas är ansiktsigenkänning, en funktion vi vet att Google är bra på redan. Om man vill ha ansiktsigenkänning kan man istället använda Microsofts motsvarande vision-API som har liknande funktioner. Microsofts API har dessutom funktioner relaterade till röst och video.

Tjänsterna öppnar helt klart nya möjligheter men ännu lite oklart om de kommer att ta marknaden med storm eller förbli ett litet API i marginalen bland många andra.

Jag provade att ta en bild ut från kontoret och se vad Google-tjänsten kunde gräva fram ur den. Urvalet objekt är ganska stort: Cykel, bro, väg, buss, hus, vatten, övergångsställe, gångbana. Spännande!

utsikt-kungsbron-small

Jag registrerade mig, skaffade en API-nyckel och curl-ade upp bilden till API-et. Svaret var:

”description”: ”transport”,
”score”: 0.95152622

Ja, den taggen funkar och utgör faktiskt en riktigt kompakt och funktionell beskrivning av hela bilden.

Men jag var nyfiken på mer. Jag hittade en skiss jag undrade om den kunde tolka:

whiteboard

svaret på den frågan blev

”description”: ”sketch”,
”score”: 0.8966288

Hm. ok.

Publicerad i Uncategorized

Code Night #4: Continuous Delivery med Tutum och Docker

I torsdags körde vi workshop hos IDG på Code Night #4 som hade temat Continuous Delivery.

Kvällen blev mycket lyckad och vi fick mingla runt bland många likasinnade.

Kvällen inleddes med korta föredrag på ämnet för att sedan bjuda in till workshop där Kristoffer och jag presenterade och demade våra erfarenheter kring att produktionssätta en tjänst med Docker-teknik på molntjänsten Tutum och AWS.

IMG_4880

Många var intresserade av att höra oss berätta om hur man kan bygga en applikation på det vis man verkligen vill, från scratch, nu 2016.

Syret i lokalen tog fort slut men folk höll ut och fick höra oss berätta om hur vi byggde en systemproduktionslina baserad på Docker, Tutum, GoCD och Amazon EC2, från källkodsrepo till produktionsmiljö. Vi gick igenom hur det är uppbyggt och fungerar och hur man arbetar med det.

Vår story baserades på utvecklingsresan med http://www.welcomeapp.se hösten 2015 där vi på kort tid tog vi fram frontendsystem, backendsystem med klustring, lastbalansering, backup, MQ och webbsajt samt flera pipelines.

Slides från kvällen: http://www.slideshare.net/KristofferVidmo/continuous-delivery-med-tutum-och-docker

Demosystemet (Spring Boot) finns på github: https://github.com/cag-demo/cag-demo-api

Under kvällen utlovade vi en en kvällslabb på temat Java-server med Docker i molnet, inbjudan till den finns här: https://blog.cag.se/?p=1387

Publicerad i Cloud Computing, Continuous Delivery, DevOps, DOcker, Java, Linux, Uncategorized

Labb Java-server med Docker i molnet

Torsdagen den 10:e mars kl 17.00-20.00 c:a kör vi en kvällslabb på kontoret i Kista där vi lär oss installera en Java-server som Docker-container i molnet.

Metoden är också användbar för att bygga tjänstestubbar för REST och SOAP.

Vi kommer att inleda med att installera Docker och clona repos med Git.

Formen är BYOL (Bring Your Own Laptop), men det gör alls inget om bara hälften har laptop så vi kör två på varje.

Labben är kostnadsfri och antalet platser är begränsade.

Vi bjuder på en lättare förtäring.

Anmäl dig till daniel.marell@cag.se

Adressen är
Jan Stenbecks Torg 17
Kista

Varmt välkomna!
Daniel Marell
Kristoffer Vidmo

Publicerad i Uncategorized

Jfokus 2016

Nu är årets Jfokus historia. I ett försök att ge en översiktlig bild av innehållet kategoriserade jag sessionerna enligt följande:
jfokus 2016

Den översta kategorin hamnade allt som är relaterat till “vanlig programutvecking med Java”: Metrics-verktyg, Lambda-knep, concurrency, DDD, JEE, JPA etc. De flesta sessionerna hamnade i detta fack, vilket är naturligt när majoriteten av besökarna är Java-utvecklare.

En stor del av sessionerna handlade som vanligt om Oracles arbete med och planer för Java-plattformen. Detta år var dessa sällsynt oinspirerande. Men ok, det kanske egentligen inte är så dumt om det mest intressanta sker med hjälp av själva Java-plattformen och inte i plattformen själv.

Mikrotjänster är heta och de möjliggör att många team kan jobba effektivt ihop. Bert Ertmans session var suverän där han på ett insiktsfullt och begåvat sätt målade landskapet kring mikrotjänster. En insikt jag bär med mig är att inte falla i återanvändningsfällan när man implementerar mikrotjänster. Hela idén är att tjänsterna ska vara oberoende och inte skapa ett CM-kaos. Kopiera faktiskt hellre koden, och inför absolut inte en gemensam AbstractMicroservice.

En annan insikt är att organisationen du arbetar i bör spegla arkitekturen du har. En mikrotjänstekitektur bör stödjas av en organisation där teamen äger sina tjänster.

Vi återkom ofta till nackdelarna och svårigheterna med mikrotjänster i och med att de drar med sig alla gamla problem som hör till distributed computing (*). En mikrotjänstearkitektur gör bäst ifrån sig i större organisationer med många team. Och kungen av mikrotjänsteramverk är fortfarande Spring Boot. JHipster som stämplar ut en applikation med Spring Boot och AngularJS var föremål för ett par sessioner:

En tydlig uppmaning från flera håll var: “Tänk inte ens tanken att införa mikrotjänster innan ni har DevOps på plats”

Continuous Delivery och Docker är något som de flesta redan accepterat som något åtråvärt, men fortfarande är inte majoriteten av oss där. En mikrotjänstearkitektur gör det enklare att nå Continuous Delivery och Docker passar också som handsken där. Många har provat Docker men få kör det än så länge i produktion. Jag var en av de få som fortfarande höll upp handen när Ray Tsang från Google sade “och håll kvar handen uppe ni som också har Docker i produktion”. Yes! En av få.

kubernetes

Dan North höll som vanligt en suverän session. Jag lyssnade på Beyond Features där Dan sågade modellen “Civil Engineering Shop” för mjukvaruutveckling. Modellen fungerar inte eftersom vi tror att vi vet vad målet är. Det är inga nyheter i den agila världen men ändå värt att återkomma till. Dan liknade vidare mjukvaruutveckling med kirugi, en fungerande liknelse tycker jag. Ingen vill ju egentligen ha kirurgi, men måste man bli opererad vill man bli skuren i så lite som möjligt. Påminner mig när Mattias Karlsson en gång sa något i stil med att “den bästa programvarulösningen är den vi slapp skriva”.

Förvånande lite handlade om automatisk test, vilket på senare år seglat upp i vårt medvetande som en av våra svåraste vardagsnötter att knäcka. Det kanske är så att problemet är så segt och att få eleganta lösningar finns att få föreläsare går igång på det.

På frontend äger AngularJS fortfarande. En session tillägnades uppstickaren React.js. Verktygen på frontendsidan är snabbt på väg upp men är långt ifrån ikapp mognadsmässigt (node, npm, bower). Överhuvudtaget märks det tydligt att frontend är betydligt mer omoget tekniskt än backend. En orsak tror jag är vad jag upplever vara en mer tillbakalutad inställning till beroendehantering, paketversionering och gränssnittkontrakt.

Ingen presenterade en bra lösning på automattestning för frontend.

NoSQL och Big Data var representerat i bara ett par sessioner.

Ämnen som berörde AI dök faktiskt upp i ett par sessioner i år. Det kanske blir fler nästa år.

På sparlåga i år: JEE, icke-Java JVM-språk (Clojure, Scala, Groovy, Ruby, Kotlin)

jfokus avslutning

Tack Mattias och Jfokus-teamet för Jfokus 2016!

Publicerad i Uncategorized

Säkra upp dina tjänster med certifikat från Let’s Encrypt

Nu finns det inte längre några ursäkter att inte ha https påslaget på sina tjänster. Let’s Encrypt (https://letsencrypt.org/) tillhandahåller gratis certifikat som fungerar i alla moderna webbläsare.

Jag roade mig med att sätta upp ett cert på min server hemma och passade på att skapa ett skript som automatiskt förnyar certet innan det går ut. Servern kör CentOS 7 med Apache, men det går lätt att modifiera till annan webbserver/operativ.

Strategin med Let’s Encrypt som jag följde var att låta dem starta en http-lyssnare i samband med att certet skapades. Sedan använder man en ACME-challenge i sin webbroot för uppdateringen för att slippa ta ner webbservern i samband med förnyelsen.

Så här gjorde jag för att skapa certet (man behöver Git och bc installerat på servern):

sudo mkdir /opt/letsencrypt
sudo chown : letsencrypt
git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
sudo servicectl stop httpd.service
/opt/letsencrypt/letsencrypt-auto certonly --standalone
sudo servicectl start httpd.service

Let’s Encrypts script kördes interaktivt och där angav jag hostnamn etc (cybermoose.org och www.cybermoose.org).

Nu finns certet under

/etc/letsencrypt/live/cybermoose.org/...

Man behöver sedan peta in lite SSL-relaterad info i sin virtuella host som lyssnar på det namnet:


ServerName cybermoose.org
ServerAlias www.cybermoose.org


SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/cybermoose.org/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/cybermoose.org/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/cybermoose.org/chain.pem
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"

Nu ska servern svara på https och leverera grönt hänglås i webbläsaren.

En bra sajt som testar kvaliteten på anslutningen är SSL Labs.

När detta ser bra ut kan man lägga till autouppdatering av certifikatet. För det används ett skript – le-renew-certificates.sh med tillhörande konfigurationsfil le-cybermoose.org-webroot.ini

Alla skript och konfigurationen finns på Github

Publicerad i Cloud Computing, DevOps, Linux

Motorvärmarstyrare med raspberry

Problem att lösa

Min fru jobbar skift.  En tidig kall vintermorgon så är det bra för husfriden att motorvärmaren till bilen har gått på.  Som både snål och miljövän så vill jag inte köra motorvärmaren mer än nödvändigt. Att ställa om en timer har vi gjort i flera år.  Det känns sååååå 2009 numera.

Byggstenar

tellstickFör att lösa problemet rotade jag i lådan och tog fram det jag hittade.  Först en Raspberry Pi att använda som en strömsnål enkel dator.  Sedan tog jag fram min Tellstick och en Nexus strömdapter (för att styra starkströmmarna).  Med dessa prylar så är det uppenbart att det kan bli en lösning.

nexaLösning

Raspberry_Pi_-_Model_AAtt styra Tellstick med en raspberry finns på andra forum att hitta.  Mitt problem var snarare hur tiden ska ställas in för när motorvärmaren ska gå i gång.  Till detta utnyttjar jag Google Calendar (som jag och min fru redan använder).  Var 15:e minut hämtar nu raspberryn hem vår delade kalender i ICS-format (Google stödjer att en kalender har en ”hemlig” url så att man får ut händelserna).  Detta får styra när motorvärmaren går på.  Min idé att utgå från fruns schema (som finns i en kalender) och starta värmaren X minuter före hon börjar föll inte i god jord – men det är såklart en enkel match att lägga till vid senare tillfälle.

Dessutom var det enkelt att göra en hemlig (för mig och min fru) webbsida där vi spontant kan starta/stoppa motorvärmaren i 60 minuter.  Med ett curl-anrop från raspberryn så returnerar webbservern ett resultat när man trycker på en knapp på webbsidan.

Kvar att göra

Jag har fortfarande ingen som sätter i kabeln i bilen.  Det har min fru däremot…..  Nästa bil ska nog ha en inbyggd modern motorvärmare som jag hört finns.
WS2801_pixel_node_100node_a_string_IP68

Extra effekt

Om jag nu har en Raspberry Pi påslagen dygnet runt så kan jag använda mina WS2801-lampor som är vattentåliga.  En programerbar julslinga blir fint i vintermörkret.  Jag har tidigare styrt lamporna med Arduino och Raspberry (se video).  Ni fattar nog poängen att man kan göra något trevligt med det.

Publicerad i C/C++, Linux

OS X El Capitan för Javautvecklare

Jag uppdaterade min Macbook till El Capitan idag och stötte bara på några små saker. Precis som vid uppdateringen till Yosemite och Mavericks så avinstallerar Apple Java 6. Det medför att IntelliJ inte startar efteråt, då dess launcher är hårdkodad att använda Java 6. Dessutom ser fonterna ut som skit rent ut sagt om man kör IntelliJ på en modern Java från Oracle.

Lösningen är att återinstallera Java 6 från Apple.

XCode command-line tools behöver installeras om:

xcode-select --install

Sen kommer det roliga – Apple låser numer ner ett antal kataloger så att inte ens root kan editera innehållet, bl.a. /bin och /usr. Dessutom ändrar de ägare av /usr/local till root, vilket ju effektivt förstör Homebrew.

sudo chown $(whoami):admin /usr/local && sudo chown -R $(whoami):admin /usr/local

följt av

brew doctor

Löste det. Enligt uppgift ska man fortfarande få ha tillgång till /usr/local, men det kan hända att kommande uppdateringar ändrar ägarskapet igen.

Mitt gamla trick att ändra /etc/paths att ha /usr/local/bin först för att kunna köra homebrew-installerade verktyg före Apples var orört efter uppdateringen och /etc/hosts går att editera.

Publicerad i Java, OS X

Bash-Git-Prompt uppdatering

Jag har ju tagit upp bash-git-prompt i ett tidigare upplägg och nu har det skett en uppdatering i dess arkitektur med stöd för teman. Det ger ett mer officiellt sätt att plugga in sig i var prompten ska renderas och hur.

Precis som förut installeras den genom att klona git-repot till sin hemmakatalog och lägga till ett par rader i sin .bash_profile eller motsvarande.


git clone https://github.com/ogr3/bash-git-prompt.git ~/.bash-git-prompt

Nytt i prompten är att den förutom den trunkerade PWD-informationen som visas i fönstertiteln och prompten så kan man även få returvärdet av senaste kommandot att visas.

Det finns två varianter av temat jag skapat med funktionen. Man väljer ett av dem genom att sätta följande variabel i .bash_profile (OS X) eller .bashrc (Linux):

GIT_PROMPT_THEME=TruncatedPwd_WindowTitle_NoExitStatus

eller

GIT_PROMPT_THEME=TruncatedPwd_WindowTitle

Sedan läser man bara in prompten:

source ~/.bash-git-prompt/gitprompt.sh

För att ytterligare underlätta de vanligaste manövrarna tillhandahålls även en fil som deklarerar några tvåställiga alias:

source ~/.bash-git-prompt/git-prompt-aliases

Så här ser alltså min installation ut:

GIT_PROMPT_THEME=TruncatedPwd_WindowTitle
source ~/.bash-git-prompt/gitprompt.sh
source ~/.bash-git-prompt/git-prompt-aliases
Publicerad i Linux, OS X

Microservices till frukost

Frukostseminarium är en mycket trevlig seminarieform, blev jag idag åter påmind om. Idag hade Calllista Enterprise ett mycket intressant och kompakt seminarium http://callistaenterprise.se/event/externa/2015-05-27_Microservices med många arkitektkollegor jag kände igen.

Magnus Larsson beskrev hur man delar upp en mikrotjänstearkitektur och hur man tänker sig att den skiljer sig från SOA.

Demon var cool. Han hade gjort en liten demoapplikation som bestod av en liten flock mikrotjänster och hade sedan lagt på Netflix Zuul, Eureka, Turbine, Hystrix Dashboard, ELK stack och startade förstås upp allting med docker-compose.

Screen Shot 2015-05-27 at 18.49.05

Sedan skalade han upp en av tjänsterna, docker kickar bara in och lastbalanseraren fångar bara upp, och vår inspektion i Kibana visade på att det funkade ju fin-fint.

Sedan testade han kretsbrytaren genom att simulera långa svarstider från en av tjänsterna.

Netflix prylar är definitivt värda besväret att kolla på – ”proven in battle” -de har ju pallat för de 24% av USAs internettrafik som Netflix utgör.

En annan sak jag fick med mig från diskussionerna efteråt, förutom en Callista reklamvattenflaska, var att kolla på Gatling som alternativ till JMeter för att prestandatesta med HTTP. Jag höll på att få med mig en tom frukostkaffekopp ut på Drottninggatan också, men jag kom på mig själv och lämnade tillbaka den.

Tack igen Magnus Larsson för en fantastisk start på den här dagen!

Publicerad i Cloud Computing, DevOps, Java

Build 2015

Bland molnen

Sitter i en Dreamliner på 40000 fot i 935 km/h på väg från Stockholm mot San Francisco och Build 2015.

Dreamliner

Dreamliner

Jag har just sett Birdman och reflekterar över det faktum att det är över 7 timmar kvar till SF. Planet är långt ifrån fullt jag har en egen stolsrad men livet vore inte livet om allt var perfekt. Ett ungt par sitter en och en halv stolsrad bort med en ny generation i sina armar som pockar på uppmärksamhet.

Ser med spänning fram mot konferensen och vad som ska presenteras där.

San Francisco

Anländer ett par dagar före konferensens start för att vänja mig vid tidszonen och hinna se något av staden.

Går från hotellet på Union Square till Fishermans wharf och Pier 39. Det är rejält soligt men det blåser en riktigt kall vind från havet. Stan passar på att visa upp några av sina värsta uppförsbackar på vägen så det sitter fint med en Bisonburgare på en riktig turistfälla med utsikt över Alcatraz.

San Francisco

Alcatraz väntar om man inte följer den smala vägen

Promenaden tillbaka går genom Italian district och San Francisco’s världsberömda Chinatown. Jag blir lika rödbränd som de jag smålett åt nere vid piren.

Jag och en annan svensk delegat som jag träffat på Arlanda försöker hyra en bil för att ta en tur över Golden Gate och sedan fortsätta mot redwoodskogarna. Det går åt skogen (trumvirvel), uthyrningsfirman kan bara erbjuda en Ford F150, vilken ingen av oss känner för att köra i den täta trafiken. Vi beger oss i stället till Oakley-butiken på Market street. Där träffar vi butiksbiträdet Debbie som tipsar oss om en buss, Muni 76x, den går över Golden Gate och till Marine Headlands. Hon ringer till och med till sin man, de bor nära bron,  för att kolla att det inte är någon dimma. Vi åker med bussen till Bonita Lighthouse. En mycket vacker tur i ett kuperat och vindpinat landskap, billigaste nöjet i SF? 2.49$ hop-on hop-off.

San Francisco

Golden Gate, men, men … ?

Konferens

Registreringen öppnar dagen innan den officiella starten av Build 2015, är där tidigt så att jag kan få tag i en konferens T-shirt som passar. Sen blir det en eller två maltdrycker på vägen till Microsoft Sveriges event på Roe i South Market området. De delar ut en kul väldigt reflektiv jacka som Volvo varit med och sponsrat, ingen lyckades fotografera den med blixt. Från Roe bär det av till Xamarins event på Jillians där är det en ordentlig kö, den första under konferensen, det blir många fler. Det visar sig att eventet slår upp portarna precis när vi ställer oss i kön och vi är inne på mindre än 10 minuter. Det blev kvällens sista mingel.

Build 2015

Morgon i San Francisco

En sedvanligt bisarr konferensfrukost bestånde av croissant, en kaka och ett egg väntar när jag anländer till Moscone Center West. Efter frukosten är det dags att köa till keynoten, det gäller att hänga på låset, de som kommer sist får inte plats i huvudsalen utan får följa keynoten på skärmar i mindre rum.

Build 2015

Rejäl kö till keynoten på Build 2015

Build 2015

Keynote är på väg att starta

Satya Nadella inleder konferensen med ett inspirerande tal och målar med den stora penseln.

Han följs av en rad kända Microsoft profiler bl a Scott, Scott och Scott.

En av de stora nyheterna är Microsofts nya operativsystem Windows 10 och det är grunden för många av de andra nyheterna som presenteras.
Ett av målen är att nå 1 miljard  aktiva Windows 10 installationer under 2018, för att operativet snabbt ska bli intressant för utvecklare kommer Windows 10 att erbjudas som en gratis uppgradering till Windows 8.

En ny applattform, Universal Windows Platform, presenteras. Den verkar mycket lovande och kommer ebjuda utvecklare möjlighet att utveckla appar i en miljö som känns hemtam. Fyra nya toolkits presenterades för utveckling på Universal Windows Platform, Webb, .NET / Win32, iOS och Android. De färdiga Universal Windows Apparna kan sedan distribueras via Windows Store.

Continuum, som kommer som en del i Windows 10, kommer att förändra möjligheterna att arbeta på enheter med lite för lite ”screen estate”, kopplar man till exempel telefonen till en större skärm kommer den utnyttja den större ytan, applikationerna anpassar sig och gränssnittet blir ungefär som på en vanlig PC. Om det kommer fungera lika bra som jag hoppas kommer det ge fantastiska möjligheter när det gäller mobilitet. Kontoret på fickan.

Edge tidigare känt som Project Spartan visas upp, Microsofts nya web browser.
Microsoft har ju länge haft en stor förbättringspotential med IE så det känns skönt att de försöker realisera den nu. Det här blogginlägget är skrivet i Windows 10 med hjälp av Edge, den verkar ganska skarp även i den här inte helt färdiga versionen.

Microsofts kanske mest hypade produkt någonsin, HoloLens, äntrar scenen till mångas stora förväntan. HoloLens är en dator man sätter på huvudet som projicerar 3D objekt ovanpå verkligheten. Nytt fönster i lägenheten, click, ny storbildstv, click, kliva in i ritningen på nya villan för att gå runt i rummen, click. Ta en titt på hur nya bilen skulle se ut med tribals i neon, click. Gå runt på Mars, click.

HoloLens

HoloLens

Demonstrationen var mycket imponerande och enligt de få som fick plats på en testkörning motsvarade den alla förhoppningar. Tyvärr lyckades jag inte boka mig, platserna tog slut väldigt väldigt fort.

HoloLens

En RasberryPi 2 kontrollerad bas med en virtuell robotkropp sedd genom en HoloLens

Visual Studio Code, en gratis lättviktig editor för kodning, släpptes på Windows, Mac och Linux. Det är första gången Microsoft förser utvecklarna med en riktig cross-platform kod-editor.

Microsoft släppte en preview på .NET Core för Windows, Linux and Mac OS X

De släppte även Visual Studio 2015 Release Candidate.

Build 2015

Docker för Windows!

Build 2015

Mellan passen fans det mycket intressant att se och göra.

Det här är givetvis bara en liten del av vad som presenterades, ett smakprov.

Jag rekommenderar er att ta en titt på områden som IoT, Azure och Office365.

Presentationerna går att se på nätet, det finns mycket intressant och matnyttigt att välja mellan.

Publicerad i .NET, Windows Taggar: , , , ,

Kategorier

LinkedIn Auto Publish Powered By : XYZScripts.com