Lenovo Thinkpad P51 with Linux

It was time for me to update my laptop and I got this nice and powerful Thinkpad P51. Ditched Windows 10 and installed Kubuntu 18.04. Unfortunately, that was not enough to start using it and continue working. There were weird problems at the boot, and when I docked the laptop for the first time, I got no picture to the external monitors. After searching for solutions, I found some concerning posts as well as hints how it might be possible to get everything working. After some time of trial and experiment without success, I got frustrated. Should I have gotten a Mac this time?
But, I have used Linux for work since the kernel 1.0 was released in 1994 and don’t feel like changing to something else quite yet. Linux is still simply the best tool for most development tasks, even now almost a quarter of a century later.
Based on the certification https://certification.ubuntu.com/hardware/201702-25426/, the hardware should be fine. And it is. The basic problem is with the two graphics cards in the laptop and a working solution is to use the Nvidia card only.

Steps to make it work

First, go to BIOS setup and change Hybrid Graphics to Discrete Graphics
Linux on a Thinkpad
And disable Secure Boot
Linux on a Thinkpad
Boot up Linux and add acpi=force to your linux default parameters

sudo nano /etc/default/grub

Edit the line
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash nomodeset acpi=force

sudo update-grub

Add the following to /etc/modprobe.d/blacklist.conf

blacklist amd76x_edac
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv

Update the initramfs disk

sudo update-initramfs -u

Remove open source nvidia drivers

sudo apt-get remove --purge nvidia\* ; sudo apt autoremove

Download the proprietary Nvidia driver from http://www.nvidia.com/object/unix.html and install it. X needs to be stopped before installing the driver. Go to one of the virtual terminals and stop X before installing.

Note that on this computer, you actually need Fn-Ctrl-Alt-F[n] to get to the TTYs. I had problems getting to TTYs before realizing that the function keys need the Fn button.
sudo service sddm stop
sudo sh Downloads/NVIDIA-Linux-x86_64-390.59.run

Reboot and this should be it. Hope I remembered all steps. (smile)
Now after a couple of days of working, everything works fluently.
Linux on a Thinkpad
The downside to this solution is that the internal graphics card is not used in any situation and thus the power consumption is higher. This is probably not a big issue, but if you have a solution for this, please let me know.

Avatar

Sami Kallio

Sami on kokenut ohjelmistoarkkitehti ja huippuasiantuntijoista koostuvan tiimin vetäjä. Hän on osallistunut lukuisten erilaisten yksityisektorin ja julkishallinnnon tietojärjestelmien kehittämiseen vakuutusjärjestelmistä mediasektorille ja joukkoliikenteestä rahastotoimintaan Suomessa ja ulkomailla.

Piditkö lukemastasi? Jaa se myös muille.

Goforen ikiomat Arvojohtaja– ja Kehtaaja-oluet ovat saaneet alkunsa olutinnostuksen riivaamien goforelaisten ideasta ja hyvistä kontakteista pienpanimoihin. Praise ei ole poikkeus – se pantiin omalla reseptillä Hiisin käsityöläispanimolla valtavan olutharrastuksesta kumpuavan innostuksen saattelemana.

Tähtäimessä kesäinen janonsammuttaja

Gofore laajensi toimintaansa Jyväskylään reilu vuosi sitten, ja haaveet omasta, jyväskyläläislähtöisestä käsityöoluesta alkoivat vähitellen hautua. Tätä herkkua olisi mukava maistella perjantaisin afterworkin hengessä tai jakaa janoisille toimistovierailijoille ja yhteistyökumppaneille.

Idea omasta oluesta eli pöytälaatikossa jonkin aikaa, mutta Goforen olutkerhoon kuuluva Tatu Niittykangas kaivoi sen esiin. Pieni, mutta pippurinen joukko innostuneita otti asian edistääkseen Jyväskylässä.

Oluen suunnittelu aloitettiin viime vuoden syksynä. Pikaisten sähköpostiviestien jälkeen sovittiin vierailu panimo Hiisille – Hiisin toiminta-ajatus iski meihin syvään, ”haluamme tehdä sellaisia oluita, joita itse haluaisimme juoda”.

Ensivierailun aikana selvisi, että mm. jouluisen stout -oluen tekeminen olisi mahdotonta, koska Hiisin suosion myötä oluiden tilausjonot olivat puoli vuotta. Tänä ei kuitenkaan lannistanut, sillä raikkaamman kesäisen janonsammuttajan suunnitteleminen inspiroi yhtä paljon.

Praise the crew! Oluen nimen juuret yrityskulttuurissa

Tyylilajikikkailu olutmaailmassa on suurimmillaan tällä hetkellä: uusia tyylilajeja keksitään, väännellään ja muunnellaan jatkuvasti. Niinikään olutkerhoon kuuluva goforelainen Matti Ahinko heitti ilmoille tyylilajin India Red Lager, josta tulee myös hauska sananmuunnos / lyhenne In Real Life (IRL). Lukuisten nimiehdotusten joukosta Goforen kolmannen oman oluen nimeksi muodostui Praise, johon vielä liitettiin India Red Lager.
Koko nimi on siis Praise – India Red Lager.

Praise on Goforen kulttuuriin tiukasti nivoutuva termi, jolla kannustetaan hyvistä suorituksista palkitsemiseen. Praise on mm. yksi Goforella käytössä olevista Slackin kanavista, jossa työkavereita voi kehua kaikkien nähden.

Etikettitekstikin kuvaa praisetusta eli sitä, miten se Goforella näyttäytyy, meidän Tiia Hietalalle kiitos tekstintuotannosta.

Reseptissä mukana kokeellinen humala

Ensipalaverissa Hiisillä annettiin muutamia suuntaviivoja oluelle: väri, alkoholiprosentti, humalat, maltaat ja tyylilaji, mutta muilta osin olutmestarit saivat vapaat kädet. Piakkoin Hiisi ehdottikin reseptiä, jossa mukana kokeellinen humala HBC 431. Muita humalia reseptissä olivat Cascade ja Simcoe.

Itse mallasrungosta löytyy muun muassa Munichia ja erilaisia karamellimaltaita.

Hiivana on German Lager (White Labs #WLP830).

Panopäivänä panimon arki tutuksi

Panopäivänä pieni, puuhakas olutkerhoryhmä goforelaisia kävi Hiisillä ihmettelemässä pienpanimon arkea. Hiisin pullotuskone sylkäisi linjastolle yhtä monta jääkylmää Hiisi Kyyttö-olutta kuin ihmettelijöitä oli. Jokainen sai oman jääkylmän milk stoutinsa sammuttaakseen pahimman janonsa ja oman oluen odotuksesta syntyneet hikikarpalot.

Praisen etiketti ja muu oheismateriaali suunniteltiin kierolla twistillä

Oluen brändi ja sen etiketti suunniteltiin omin voimin tuotesuunnittelutoimisto MEOMin aiemmin Hiisille luomaa kuvakieltä ja Goforen yritysilmettä noudattaen. Lisämausteena kuitenkin oma kiero twist. Suunnittelusta vastasi Jyväskylän ainoa enemmän design-henkinen goforelainen Esa Juhana Lahikainen.

Suunnittelupuolella haasteita tarjosi kaulaetiketin ja kylkietiketin värien yhdenmukaisuuden varmistaminen, kuten myös tarkat elintarvikesäädösten mukaiset kaksikieliset merkinnät ja Hiisin brändin kunnioittaminen.

Goforen yritysilmeen värimaailmaa ei hyödynnetty suoraan, mutta brändille läheiset tulen värit ja violetin muunnokset vastaväreinä ovat etiketissä pääosassa. Mielenkiintoinen tausta saatiin aikaan roiskimalla paperille Jackson Pollockin tyyliin akryyliväreillä ja skannaamalla tuotokset tarkalla resoluutiolla. Jälkikäsittelyssä kontrasteja lisättiin ja värien määrää vähennettiin. Lopputuloksena on uniikki abstrakti jälki, jollaista on hyvin vaikea luoda digitaalisessa maailmassa. Analogisuus oli suunnittelutyössä siis tärkeä seikka.

Läpimurto designissa tapahtui silloin, kun keksittiin, että käden sormet saa asemoitua G-kirjaimen näköiseksi. Kuva, josta tuo idea löytyi, sisälsi eräänlaisen jokerihahmon. Jostain syystä tuo jokerimaisuus tuli inspiraation lähteeksi ja taustakuvan orgaaniseen tyyliin piirretty jokeri syntyi. Hänen käsissään voi nähdä kaksi G-kirjainta.

Etiketti nojaa siis vahvoihin peruselementteihin: vastaväreihin, orgaanisuuteen, kontrasteihin, yksinkertaiseen ja laadukkaaseen typografiaan ja omintakeiseen Praise-hahmoon.

Kegiketti

Lasinalunen


Oheistuotteina tehtiin myös Praise-lasinalunen ja Praise-tarroja sloganilla ”Praise the Crew”.

Vastaanotto: simply the best?

Olutta on toimitettu ensimmäinen erä myös muihin Goforen toimistoihin Suomessa. Vastaanotto on ollut todella myönteinen, ja Praise on jopa nostettu Goforen tähänastisista oluista parhaaksi.

Reseptiikka on ilmeisen onnistunut, kuten yhdestäkin kommentista kuului “ipamaista tatsia lagerissa” – tämä on juurikin sitä mitä lähdettiin hakemaan. Raikas, reilusti humaloitu janonsammuttaja helteisiin kesäpäiviin.

Oluita tullaan toimittamaan muutamille olutbloggareille, ja näitä blogauksia voi etsiä esimerkiksi Googlesta hakusanalla ”Praise India Red Lager”.

Nyt nautimme kesän ajan uudesta oluesta, mutta mitä tulee seuraavaksi? Goforella tuetaan goforelaisten keskinäistä ja rajoja rikkovaa yhdessäoloa ja erityistaitojen kehittämistä. Praisessa yhdistyy brändäys, sisällöntuotanto, typografia, etikettisuunnittelu, markkinointi, tuotteistaminen, visuaalinen suunnittelu, tuotesuunnittelu, konseptisuunnittelu, valokuvaus, taide, design, mitä näitä taitoja nyt on. Eli siis seuraavaa haastetta kohden, varmaan syksyksi uutta olutta…! 

Saatavuus

  • Jyväskylä: Harry’s
  • Helsinki: One Pint, Oljenkorsi, Il Birrificio, Sori Taproom ja Black Door
  • Tampere: Kultainen Apina

Saatavuutta voi tiedustella lisäksi https://untappd.com/b/hiisi-praise/2574130

Avatar

Gofore Crew Jyväskylä

Piditkö lukemastasi? Jaa se myös muille.

”Kauppaa ei synny, koska tuotteemme hinta on liian korkea”. ”Asiakas päätyy ostamaan kilpailijan tuotteita, koska niiden ominaisuudet houkuttelevat enemmän.” ”Panostamme seuraavaksi mobiilisovelluksen suunnitteluun, koska käyttäjämme sitä kaipaavat”. ”Palveluamme käyttää 500 asiakastamme.”
Miksi yritykset olettavat, kun perusteellisiin selvityksiin pohjautuvaa tietoa olisi helposti saatavilla? Jokaisella yrityksellä ja organisaatiolla on käsitys asiakkaistaan, heidän tarpeistaan ja käyttäytymisestään. Osalla käsitys on mututuntumaa tai valistunut arvaus, osalla kuitenkin onneksi tutkittua, ajantasaista tietoa.
Mutun ikäviin ominaisuuksiin kuuluu sen salakavala muuntuminen tiedoksi ja totuudeksi asiakas- ja käyttäjäymmärryksestä. Tämä muodonmuutos perustuu usein yksittäisen työntekijän vakuuttavaan tarinaan siitä, mitä asiakkaat todella haluavat. Tämä tarina on usein kuitenkin väritetty – ”tarve” voi todellisuudessa perustua yksittäiseen keskusteluun asiakkaan kanssa muutamia vuosia sitten. Kun on luonut tarinan, alkaa helposti uskoa siihen itsekin. Yksittäinen työntekijä voi hyvin olla teknologiajohtaja, myyjä tai projektijohtaja.
Tarina voi myös toki perustua asiakas- ja käyttäjätutkimuksen avulla kerättyyn tietoon – pinnallinen käyttäjätutkimus voi kuitenkin olla taakka, jonka virheellisiin johtopäätöksiin nojataan vielä vuosia myöhemmin. Yhtä vaarallinen on hyvinkin toteutettu käyttäjätutkimus, jonka parasta ennen päiväys on mennyt.
Muutoksen vauhti kiihtyy eli asiakkaiden toiveet, tarpeet ja toimintaympäristö muuttuvat jatkuvasti. Muutoksen vauhdissa tieto vanhenee ja vääristyy. Aidosti asiakaslähtöinen organisaatio on jatkuvasti korvat auki ja taistelee kollektiivista, vanhentunutta tietoa ja mutua vastaan aidolla asiakasymmärryksellä.

Asiakasymmärrys päätöksenteon peruspilariksi

Kokonaisvaltaista ja todellista asiakaskuvaa kohti.

Ei ole yllättävää, että asiakasymmärryksen kokonaiskuvan kehittäminen alkaa nykytilan selvittämisestä. Tämä auttaa ymmärtämään miten laajasti kehittäminen ja päätökset perustuvat asiakasymmärrykseen. Onko asiakasymmärrys mukana ohjaamassa yrityksen strategiaa ja kehityslinjauksia? Onko yrityksen arvolupaus rakennettu suljettujen ovien takana vai onko asiakkaat päästetty ääneen? Kehitetäänkö yksittäiset palvelut asiakaslähtöisesti?
Asiakasymmärrystä voi mitata ja sen laatua arvioida. Yksi keinoista on ylläpitää tietoa siitä, mitä päätöksenteon kannalta keskeistä asiakkaista tiedetään ja miltä osin asiakaskuntaa ei vielä riittävästi ymmärretä. Asiakasta on mahdotonta ymmärtää läpikotaisin ja onkin osattava keskittyä asiakasymmärrykseen, joka parhaiten ohjaa yrityksen päätöksentekoa ja toiminnan kehittämistä.
Hyvä keino ravistella organisaatiota on listata olettamukset omista asiakkaista ja selvittää olettamien todenperäisyys käyttäjätutkimuksen keinoin. Väitän, että monesti virheellisten olettamien oikaiseminen on jopa uusien käyttäjätarpeiden havaitsemista tärkeämpää.
Me Goforella pyrimme auttamaan asiakkaitamme taistelussa virheellistä, puutteellista ja vanhaa asiakasymmärrystä vastaan. Tavoitteemme on varmistaa, että asiakasymmärrys on jatkossa yksi päätöksenteon peruspilareista.
Mitä jos tekstin alun olettamus muuttuisi asiakasymmärryksen avulla seuraavasti?
”Hintamme ovat kilpailijoita vastaavalla tasolla tai jopa alle.” ”Asiakkaat arvostavat kilpailijoissa heidän palvelunsa helppoutta ja tehokkuutta.” ”Mobiilisovellus ei tällä hetkellä tuo asiakkaille lisäarvoa.” ”Palvelun on hankkinut 500 asiakasta, mutta sitä käyttää todellisuudessa aktiivisesti alle 200 yritystä.”
 

Mikko Nurmi

Mikko Nurmi

Mikko haluaa ratkoa yritysten ja yhteiskunnan ongelmia hyödyntäen käyttäjäymmärrystä, liiketoimintaosaamista ja uusien teknologioiden tuomia mahdollisuuksia. Osoituksena idearikkaudesta ovat yli sata myönnettyä patenttia käyttöliittymien ja digitaalisten palveluiden alueilta.

Piditkö lukemastasi? Jaa se myös muille.

The React Finland 2018 conference was held a couple of weeks ago and I had the opportunity to attend and listen what’s hot in the React world. The conference started with workshops which were followed by two days of talks of React, React Native, React VR and all things that go with developing web applications with them. The two conference days were packed with great talks and new information. Here’s a recap of the talks I found especially interesting and some of my notes which I posted to Twitter. If you need more views on the conference, one of the organisers did a post on the blog coverage.

React Finland 2018

React Finland combined the Finnish React community with an international flavour from Jani Eväkallio to Ken Wheeler and other leading talent from the community. The event was the first of its kind in Finland and consisted of a workshop day and two days of talks around the topic. It was nice that the event was a single track so you didn’t need to choose between interesting talks.
At work, I’ve been developing with React for a couple of years and have tried my hand with React Native so the topics were familiar. The conference provided some crafty new knowledge to learn from and maybe even put into production. Overall the conference was a great experience and everything went smoothly. Nice work from the React Finland conference team! And of course thanks to Gofore https://gofore.com/ who sponsored the conference and got me a ticket.

The New Best Practices — Jani Eväkallio

The first day’s keynote was by Jani Eväkallio who talked about ”The New Best Practices”. As the talk description said, ”When React was first introduced, it was ridiculed for going against established web development best practices as we knew them. Five years later, React is the gold standard for how we create user interfaces. Along the way, we’ve discovered a new set of tools, design patterns and programming techniques.”
The new best practices were:

  • Build big things from small things
  • Write code for humans first: flow, Typescript, storybook
  • Stay close to the language:
    • helps i.a. linters
  • Always prefer simplicity
  • Don’t break things:
    • Facebook makes React API changes easy to upgrade, depreciation well in advance, migration, documentation. it’s a flow, not versions. Use codemod.
  • Keep an open mind

You may ask ”what new best practices”? Yep, that’s the thing. We don’t need new best practices as concepts like Model-View-Controller and separation of concerns are still valid. We should use best practices which have been proven as they also work nicely with the React philosophy. Eväkallio also talked about why React will be around for a long time. It’s because components and interoperable components are an innovation primitive.

Immer: Immutability made easy — Michel Weststrate

Immutable data structures are a good thing and Michel Weststrate showed Immer, which is a tiny package that allows you to work with immutable data structures with unprecedented ease. Managing the state of the React app is a huge deal with Redux and any help is welcome. ”Immer doesn’t require learning new data structures or updated APIs, but instead creates a temporary shadow tree which can be modified using the standard JavaScript APIs. The shadow tree will be used to generate your next immutable state tree.”
The talk showed how to write reducers in a much more readable way, with half the code and without requiring additional large libraries. The talk slides are available online.

Styled Components, SSR, and Theming — Kasia Jastrzębska

Web applications need to be styled and Kasia Jastrzębska talked about CSS-in-JS with styled-components by going through the new API, performance improvements, server-side rendering with Next.js. She also showed the theming manager available with v2 of styled-components. The slides are available online.
The main takeaway from this talk was that CSS in React app can be written as you always have or by using CSS-in-JS solutions .There are several benefits of using styled-components but I’m still thinking how styles get scattered all over components.

Universal React Apps Using Next.js — Sia Karamalegos

53% of mobile site visits are abandoned if pages take longer than 3 seconds to load. – DoubleClick by Google, 2016

Every user’s hardware is different and processing speed can hinder user experience on client-side rendered React applications and so Sia Karamalegos talked about how server-side rendering and code-splitting can drastically improve user experience. By minimising the work that the client has to do. Performance and shipping your code matters. The talk showed how to easily build universal React apps using the Next.js framework and walked through the concepts and code examples. Talk slides are available online.
There are lots of old (mobile) devices which benefit from Server Side Rendering. Next.js is a minimalistic framework for universal, server-rendered (or statically pre-rendered) React applications which enables faster page loads. Pages are server-rendered by default for the initial load, you can enable prefetching future routes and there’s automatic code splitting. It’s also customisable so you can use your own Babel and Webpack configurations and customise the server API with e.g. Express. And if you don’t want to use a server Next.js can also build static web apps that you can then host on Github pages or AWS S3.

Make linting great again! — Andrey Okonetchnikov

One thing in software development which always gets developers arguing over stupid things is code formatting and linting. Andrey Okonetchnikov talked about how ”with a wrong workflow linting can really be a pain and will slow you and your team down but with a proper setup it can save you hours of manual work reformatting the code and reducing the code-review overhead.”
The talk was a quick introduction how 🚫💩 lint-staged a node.js library can improve developer experience. A small tool coupled with tools that analyse and improve the code like ESLint, Stylelint, Prettier and Jest can make a big difference.

How React changed everything — Ken Wheeler

The second day started with a keynote by Ken Wheeler. He examined how React changed the front end landscape as we know it and started with nice time travel to the 90s with i.a. Flash, JavaScript and AngularJS. Most importantly the talk took a look at the core idea of React, and why it transcends language or rendering target and posit on what that means going forward. And last we heard about what React async: suspense and time slicing.

”Best part of React is the community”

Reactive State Machines and Statecharts — David Khourshid

David Khourshid’s talk about state machines and statecharts was interesting. Functional + reactive approach to state machines can make it much easier to understand, visualize, implement and automatically create tests for complex user interfaces and flows. Model the code and automatically generate exhaustive tests for every possible permutation of the code. Things mentioned: React automata, xstate. Slides are available online.

”Model once, implement anywhere” – David Khourshid

The talk was surprisingly interesting especially for use cases as anything to make testing better is good. This might be something to look into.

ReactVR — Shay Keinan

After theory-heavy presentations we got into more visual stuff: React VR. Shay Keinan presented the core concepts behind VR, showed different demonstrations, and how to get started with React VR and how to add new features from the Three.js library. React VR: Three.js + React Native = 360 and VR content. On the VR device side it was mentioned that Oculus Go, HTC Vive Focus are the big step to Virtual Reality.

”Virtual Reality’s possibilities are endless. Compares to lucid dreaming.” – Shay Keinan

WebVR enables web developers to create frictionless, immersive experiences and we got to see Solar demo and Three VR demo which were lit 🔥.

World Class experience with React Native — Michał Chudziak

I’ve experimented with React Native so Michał Chudziak’s talk about how to set up a friendly React Native development environment with the best DX, spot bugs in early stage and deliver continuous builds to QA. Again Redux was dropped in favour of apollo-link-state.

Work close to your team – Napoleon Hill

What makes a good Developer eXperience?

  • stability
  • function
  • clarity
  • easiness

GraphQL was mentioned to be the holy grail of frontend development and perfect with React Native. Tools for better developer experience: Haul, CircleCI, Fastlane, ESLint, Flow, Jest, Danger, Detox. Other tips were i.a to use native IDEs (XCode, Android Studio) as it helps debugging. XCode Instruments helps debug performance (check iTunes for video) and there’s also Android Profiler.

React Native Ignite — Gant Laborde

80% of mobile app development is the same old song which can be but short Ignite CLI. Using Ignite, you can jump in to React Native development with a popular combination of technologies OR brew your own. Gant Laborde talked about the new Bowser version which makes things even better with Storybook, Typescript, Solidarity, mobx-state-tree and lint-staged. Slides can be found online.

After party

Summary

Two days full of talks about React, React Native, React VR and all the things that go with developing web applications with them was a great experience. The days were packed with great talks and new information and everything went smoothly. The conference was well organised, food was good and the participants got soft hoodies to go with the Allas Sea Pool ticket. The talks were all great but especially ”World Class experience with React Native” and ”React Native Ignite” gave me new inspiration to write some apps. Also ”ReactVR” seemed interesting although I think Augmented Reality will be bigger thing than Virtual Reality. It was nice to hear from ”The New Best Practices” talk that there really are no new best practices as the old ones still work. Just use them!
Something to try and even to take into production will be Immer, styled components and Next.js. One thing which is easy to implement is to start using lint-staged although we are linting all the things already.
One of the conference organizers and speaker, Juho Vepsäläinen, wrote Lessons Learned from the conference and many of the points he mentioned are to the point. The food was nice but ”there wasn’t anything substantial for the afternoon break”. There wasn’t anything to eat after lunch but luckily I had my own snacks. Vepsäläinen also mentions that ”there was sometimes too much time between the presentations” but I think the longer breaks between some presentations were nice for having a quick stroll outside and have some fresh air. The venue was quite warm but the air wasn’t so good in the afternoon. The Afterparty at Sea Life Helsinki was an interesting choice and it worked nicely although there weren’t so many people there. The aquarium was a fishy experience and also provided some other content other than refreshments. Too bad I didn’t have time to go and check the Allas Sea Pool for which we got a free ticket. Maybe next time.
Thanks to the conference crew for such a great event and of course to my fellow Goforeans who also attended and had a great time!

This article was compiled from the published on Rule of Tech of the event on day 1 and day 2 articles. Rule of Tech is author’s personal blog about technology and software development.

Avatar

Marko Wallin

Marko Wallin työskentelee ohjelmistosuunnittelijana Goforella ja muuttaa maailmaa paremmaksi digitalisaation keinoin. Hänellä on vuosien kokemus ohjelmistokehityksestä, ketteristä menetelmistä ja ohjelmoinnista sekä käyttöliittymän, taustapalveluiden että tietokantojen osalta. Vapaa-ajallaan Marko jakaa teknistä osaamistaan blogiensa kautta ja kehittämällä muun muassa avoimen lähdekoodin mobiilisovelluksia. Sovelluskehityksen lisäksi hän harrastaa maastopyöräilyä.

Piditkö lukemastasi? Jaa se myös muille.

take this its dangerous
For some reason, I often find myself writing MVPs and small POCs in attempt to justify a larger development project, verify a design, or otherwise have to deliver something working from end-to-end in a crunch. And I’m pretty sure this is familiar to most programmers.
To be brutally honest, in such tasks many corners get cut. Ugly code gets created, and bad design gets its chance to survive. Depending on the scope and speed more non-trivial parts of the system are either dismissed or simply forgotten due the lack of time or attention. And finally, as you approach your final moments before your deadline, you understand you either have to start making more radical choices, or fail to deliver.
And the next part of the story we all know:
”Breaking News: Excellent Software Delivered to Client on Time. Great Results. Great People. Great Company.”
You boast in the spotlight, and let the paparazzis get their money shots. Managers pat your back, and returning the favour, you remind everyone how great the whole team was. Everyone tells how everybody just worked together so tightly to make their best efforts in a such a crunch. Great results come from true dedication. And you feel alive for making such great work.
But what often follows, could hardly be less appealing.
You get back to your station. Away from the blindingly bright spotlights, the harsh reality quickly kicks in.
”Which corners did I cut?”
You start scraping through your tech notes and design sketches. You recall hard-coding a thing or two and make a couple of notes about removing them. You remember forgetting to wire up those unit tests to your CI pipeline and recall eventually commenting out a couple of those tests in a hurry while refactoring for a quick fix.
Once you barely get your stack back up and running and start working on all those points, new feature requests flood in with another deadline.
You need to make this engine better, while it’s running. And no, you cannot stop or break it – even knowing that you made it yourself.
Something that you designed – even given and knowing the scope of its current design and all of its limitations – has been engineered into existence. You probably still remember all those small design decisions you made, and recall making your architecture bleed from all those small paper cuts you got while cutting the corners in the attempt to fit the scope of that virtual time box.
However, what was delivered likely doesn’t fully display the extent of the debt taken. Sure, there may be bugs in the UI. The backend may be slow and sometimes things go bust with customers getting 404 or 500 in favour of their preferred reports and responses. But truly, the whole extent of the known and unknown technical and design debt taken rests on your shoulders alone.
But customers are happy. Or at least they don’t mind the problems that much. And so does the work of your labour persist.
Status Quo
As time passes, memories of the original, hugely successful and productive design sprint, MVP, POC or whatever it was called, fades into history. Slowly, everyone adjusts to the new reality where even the smallest of changes require a process, and things evolve in a slow and yet somehow appealingly predictable fashion. And let it be known there were and there are dragons: time and repetition of bug issue tracking process over and over again, has ironed out the biggest wrinkles of the architecture and lacking design and technical documentation. Someone has probably even opened a wiki or FAQ pages for catering the endless hunger for more knowledge on common issues and troubleshooting requests.
But at some point, someone, and for some reason, summons the courage for that profound, perhaps existential question:
”Does it have to be this way?”
And initially, there will be resistance. Safety, and the need for comprehensive manual testing along with various other quality assurance rituals are cited as reasons for lack of change. Remarks on previous catastrophic issues on earlier large changes will be made and quoted as reasons for trying to keep the current production as stable as possible. Change whatever you want, wherever you want, as long as you make sure the production doesn’t break. And nothing, nowhere is touched.
But seeds of an eventual rebellion have been planted. Questioning leads to design discussions. And design discussion leads to spec. Spec leads to prototyping. And prototyping leads to hate of the status quo.
And so a new vision is born.
A New Hope
At this point, rebels of the status quo have secretly worked on their pieces of new design and eventually gather for a full, frontal assault. Managers, product owners and other stakeholders are involved and exposed to these new, and fresh ideas. Bold statements on the goodness of this new riskier design are given. And, along with it, endless possibilities and effectiveness of this new world is envisioned.
And eventually, permission for pursuing this risky yet potentially highly rewarding project is given.
Finally. Finally, you get the go ahead for the ultimate new design. Finally, you get to repair all the damages caused by the earlier lack of time, resources and knowledge. Finally, you get redemption for all the technical debt you took last time.
You clean your workspace, initialize a new project and prepare for a new, more perfect start.
But just as you begin writing your first lines of code, you hear the familiar voice calling over your head:
”Not that it matters much, but just that you know we will try to avoid taking any large risks this time.
So if you could just start by getting this to work quickly for next months steering group meeting, we could give you more input. And only if it works by then, we will see if we could quickly get new customers onboard with these new features you proposed”
And you pause for a moment.
You close your eyes for a moment and slowly inhale. You hold your breath for a while and slowly exhale letting your shoulders drop and relax yourself a moment.
And knowing where you are, you grab your keyboard. You grab it like the sword you’ve been mastered to use, and start hacking through yet another jungle of invisible obstacles.
Knowing it is dangerous to go fast. And knowing that you sometimes just have to.
Did you find any familiar themes from the story? Feel free to add your thoughts and comments below

Avatar

Jaakko Salonen

Piditkö lukemastasi? Jaa se myös muille.

Scrum is Dead

I’ve recently attended Agile events where world-class gurus state that Scrum is broken, the Product Owner is a waste, or LESs is better than SAFe. Tools are built for a purpose. You can use a tool for a certain purpose only in a certain context. When the context evolves, the tools also need to evolve.
What does not change, are the underlying principles. Misuse of a tool is easy if you don’t understand the principles. There are tons of studies regarding ScrumBut, where the Scrum tool is abused. Where the (Agile) principles are not followed, even if the (Scrum) tool is in use.

Maturity of the Organization Defines the Context

According to Reinventing Organizations by Laloux, in today’s predominant organizational model the leader in the hierarchy turns a cog that directs the workers below. Planning and execution are strictly separated. This leads to silos, rigidity, no innovation, no responsibility, no ability to advance meaningfully in the career. Laloux divides cognitive, psychological and moral maturity into five levels*. Higher levels build on top of the lower ones.

 
Name Description Examples
Tribal – ”Red” A simple hierarchy to steer work and a wolf-pack mentality Mafia and Startups
Agrarian – ”Traditional” Large organizations with numerous roles and steering mechanisms, like long and medium-term planning. Planning and execution are strictly separated. Control what and how. Thinking happens at the top, doing at the bottom. The underlying worldview is that workers are mostly lazy, dishonest, and in need of direction. Church, military and government
Industrial – ”Orange” Profit and growth are the most important measurements. Achieved by the means of innovation, accountability and meritocracy. RnD, Marketing and Product Management departments are invented. Control what. The underlying worldview is based on material success. Multinational companies
Information – ”Green” Focus on culture and empowerment to achieve high employee motivation. Highly sensitive to people’s feelings. All the perspectives deserve equal respect. Where Industrial level seeks to make decisions top-down, based on objective facts, expert input and simulations, Information level strives for bottom-up processes. Information level brings opposing points of view to eventual consensus. Where Industrial level views organizations as machines, the dominant metaphor of organizations in Information level is the family. It seeks fairness, equality, harmony, community, cooperation, and consensus. Culture-driven organizations
Adaptive – ”Teal” ”Post-postmodern consciousness”. No bosses, no competition. In this mindset, ego is viewed from a distance. We can see ego’s fears, ambitions, and desires: In the Tribal level, a good decision is the one that gets me what I want. In the Traditional level, decisions are determined by social norms of what is right and wrong. In the Industrial level, effectiveness and success are the yardsticks. In Information, matters are judged by the criteria of belonging and harmony. We use measures of inner rightness: Does this decision seem right? Am I being of service to the world? Network organizations

Summary of Laloux’s levels of organizational development. The names and colour codes come from Lalouxs’ book, however, they were different in the original work of Beck and Wilber.

Both consciousness and adaptability grows with the maturity of the organization

Self-Organizing

According toLaloux, in the highest level of maturity (”Adaptive”) we don’t pursue recognition, success or wealth. We pursue a life well lived. Still, the consequence might be recognition, success, wealth, or love. Adaptive organizations reveal three major breakthroughs: evolutionary purpose, wholeness, and self-management. These major breakthroughs make organizations prosper given the right context. Companies like Buurtzorg, Patagonia or Zappos show strengths of the Adaptive level:

  • Employees thrive
  • Salaries above market rates
  • Grow year in, year out
  • Achieve remarkable profit margins

Adaptive level brings three organizational breakthroughs:

  1. Principles driven decision making. Rather than trying to predict and control, Adaptive organizations try to sense and respond. Similarly, as the Cynefin framework describes working process in the complex environment, that consist of “unknown” factors. The output cannot be planned predicted, but one must proceed with principles driven decision making in an environment where it is safe to fail. Like Stephen Covey says “There are three constants in life: Change, choice and principles”.
  2. Wholeness creates an environment of safe conversations. Safe conversations invite deep listening, authenticity and vulnerability. It is assumed that everyone seeks for the common benefit, even if their opinions seem different. Conflicts are dealt with understanding. This will create smarter networks, unleash creativity and bring higher employee satisfaction. Like Douglas Stone says “The urge to blame is based.. on the fear of being blamed.”
  3. Minimum Viable Management does not mean a free-for-all. It means form-follows-need: Roles are picked up, discarded, and exchanged fluidly. Power is distributed. Decisions are made at the point of origin. Innovations can spring up from all quarters. Meetings are held when they are needed. Temporary task forces are created spontaneously and quickly disbanded again. The leaders of self-managing organizations feel, that it is less risky to deploy self-managed teams. That self-managed teams make better decisions. Like Bruce Lee stated “It’s not the daily increase but daily decrease. Hack away at the unessential.”

These three principles enable the organization to better handle uncertainty, complexity and magnitude of nowadays Agile business. Adaptive organisation work efficiently and fast, while fewer power games and egoism is in the way of creativity. More effort is used on improving individuals and organizations.

Where to Start

Team of Teams by McChrystal underlines the idea of creating nimble, transparent, and horizontal organizations. Organizations which empower their people to execute based on the concept of ‘shared consciousness’. People are empowered to trust their gut and use their best judgement based on their training and knowledge of organizational goals. The book gives good ideas of

  • Break down organizational silos by sending liaisons to other teams
  • Empower everyone to make decisions, don’t act as a decision bottleneck
  • Hold frequent sync up meetings to disseminate information
  • Set up cross-disciplinary open-plan workspaces
  • Enable people to make decisions at lower in the hierarchy and get to know their counterparts in other teams
  • Be a gardener. Plant and provide water and nutrients. No heroic micromanagement
  • Monitor data and real-time information, but stay away from control-freak and micromanagement.


From hierarchy to networks (Team of Teams way of drawing the idea)

Need for Speed

Holacracy by Robertson also seeks for knowledge economy replacement for the command-and-control organization. Robertson quotes Elliott Jaques who identified three types of organization structures:

  • Formal: the official organizational chart and the job descriptions
  • Extant: how things actually work and who really makes decisions
  • Requisite: a setup that would be most natural and best suited to the work and purpose of the organization.

The Idea of The Holacracy is to achieve the requisite organizational structure. Holacracy’s systems and processes are about helping the organization find its own unique identity and structure. In Holacracy, a pyramidal hierarchy is replaced with ”circles” dedicated to specific functions. Each of the circles has a ”lead” who, like a traditional manager, is responsible for assigning work and seeing that it’s completed. They, however, are not responsible for determining how the work is done. A kind of company-level crowd-sourcing.


From hierarchy to networks (Holacracy way of drawing the idea)

Fit For Purpose

There are no good or bad ways to organize. The question remains whether the structure is a good fit for the task at hand. Mature levels are better suited for the purpose of more sophisticated work, with high complexity and high skill set. And lower levels are better suited for crisis situations. The organizations are far from consistent and are a mix of both. The maturity of an organization is influenced by the context and by the leader of the organization.

Back to Scrum

Scrum is not an absolute value. Just a tool. Originally Scrum was a counterattack to Waterfall. From fixed scope to work decomposition, fast feedback, retrospectives and being close to the customer. The idea of Agile is to create high value to the customer by means of collaboration, demos, improvement and being open to change.
In this context Scrum is a process to take an organization to the next level of maturity. Scrum gives the management a feeling of top-down control by managing the product backlog. Simultaneously Scrum provides the team with a freedom and safety to make bottom-up decisions. At some point, there is no more need for the safety provided by the hierarchical Scrum mechanism. Similarly, you may evolve from component teams to feature teams.
What makes the tools like Scrum, Kanban or SAFe work are the underlying principles like

  • Agile (https://gofore.com/agile-transformation-action-part-1/ )
  • Lean (https://en.wikipedia.org/wiki/Toyota_Production_System )
  • Systems Thinking (https://gofore.com/en/what-is-systems-thinking-and-how-should-i-use-it/)
  • Cynefin (https://en.wikipedia.org/wiki/Cynefin_framework)

Agile is about adapting to an unclear situation by using regular feedback loops and prioritization. Lean is about regular retrospectives and improving the ways of working. Systems Thinking and Cynefin teach about system dynamics and how to operate them.

Summary

Keep the principles in mind and use them as your guiding force. Build on strengths and potential. Understand the context where you operate. Each context presents different dynamics. Keep in mind the ’fit-for-purpose’ of each tool. Any tool can be abused if it is used following the wrong principles. Consequences are governed by principles, not by the tools. Therefore, value principles.
* The evolutionary model presented comes originally from Don Beck, whose work was borrowed by Ken Wilber.

Jari Hietaniemi

Jari Hietaniemi

Jari on yksi Goforen monilahjakkaista palveluarkkitehdeista. Hänen ydinosaamistaan on monimutkaisten sekä laajojen tietojärjestelmähankkeiden suunnittelu ja vetäminen. Jarin filosofian mukaan projektipäällikkö on tarvittaessa myös myyntiedustaja, innovaattori, laatupäällikkö, tekninen suunnittelija ja henkilöstöesimies samassa paketissa. Hänen monipuolinen kokemuksensa ja valmentava tyylinsä vievät projektit laadukkaasti maaliin sekä tuovat myös uudenlaista ajattelua ja draivia kohdeorganisaatioon.

Linkedin profile

Piditkö lukemastasi? Jaa se myös muille.

Miten tulevaisuuden sovelluskehityksessä hyödynnetään nykyisin käytössä olevia työkaluja? 
Maaliskuussa järjestetyssä TechDays 2018 -tapahtumassa tarjottiin vastauksia erityisesti tähän kysymykseen. Tilaisuudessa kuulin vakiintuneista kirjastoista ja niiden seuraavien versioiden herkullisista sisällöistä. Uusimmissa päristimistä löytyy herkullisia mahdollisuuksia ja lastentauteja, alpha-kuumetta.
Tilaisuus tuntui rehelliseltä menolta, asiantuntijalta asiantuntijalle. Kolme  teemaa nousi ylitse muiden: Tekoäly, tietoturva ja pilvipalvelut.

Koneälyn käyttäminen

Tekoäly nostettiin esiin kahdesta suunnasta: machine learning eli tilastotieteellinen data-analytiikka ja AI.
Machine learning on jo nyt todellisuutta, kun valmiilla työkalulla pystyy helposti analysoimaan kerättyä dataa ja sovittamaan sitä erilaisiin laskentamalleihin. Esimerkkiesityksessä arvioitiin paljonko maksaisi Ruotsissa 150 m2 asunto tietyllä alueella, kun tiedetään suurempien ja pienempien asuntojen arvo. Näytti helppokäyttöiseltä tilastotieteilijän työkalulta.
Toiselta suunnalta nousee AI. Se käsittelee tietokoneen mahdollisuutta oppia ja tunnistaa erilaisia malleja, kuten kuvien sisältöä, puhetta, vastata yksinkertaisiin kysymyksiin tai ryhmitellä tietoa. Jep, nämä kulkevat nimellä Cognitive services. AI-demot näyttivät samalta mitä mikkisofta mainostaa aina. Kuvien tunnistaminen on jo tehty, siis kuvan hymyilyn aste, muut tunteet, sukupuoli, ikä, silmien väri ym. tulevat suoraan analytiikan jsonista, jos sellaista kaipaa.
Se on selvää, että kerättävän datan määrä kasvaa jatkuvasti. Tiedemiehet toivat meille tera- ja petabyten lisäksi exabyten, zettabyten ja yottabyten. Ihmiset eivät pysty käsittelemään näin valtavia datamääriä. Tekoälyn laskentavoima tarjoaa ratkaisua vastausten louhintaan.
Yksi keynote-puhuja kertoi visionsa tulevaisuudesta, jolloin suurin osa sovelluskehittäjistä tulee kirjoittamaan tekoälyyn liittyvää koodia, kymmenen vuoden kuluttua. Muut kuulemma putoavat markkinoilta. Turhauttavaa kuulla pelolla markkinoivia puheita, koska innovaatiot syntyvät kuitenkin innostuksesta ja parhaat kokemukset ovat seurausta positiivisesta tunnelmasta.
Periaatteessa ymmärrän trendin, erikoistutaan syvemmän osaamisen puolelle ja käytetään mahdollisimman paljon valmiita työkalupaketteja. Toisaalta löytyy paljon työpaikkoja, jotka painottuvat alakohtaiseen osaamiseen, mutta eivät vaadi syvällistä teknistä taitoa.

Tietoturvakatsaus

Asiantuntijat Paula Januszkiewicz ja Sami Laiho pitivät jäätävän hyvät esitykset tietoturvasta. Januszkiewiczin kertoi, että heidän yrityksensä käyttämät kräkkäystyökalut ovat kaikkien saatavilla. Laiho puolestaan listasi yksinkertaisia keinoja, joilla pystytään nostamaan oman tietokoneen tietoturvan tasoa.
Molempien esityksistä kävi ilmi, että hakkerit ovat ryhdistäytyneet. Yritysten palvelinten hakkerointi tapahtuu paljon ammattimaisemmin kuin aiemmin. Heikoin lenkki voi löytyä useasta paikasta, joko inhimillisestä piirteestä tai laiskuudesta luoda yrityksen verkosta ja jokaisesta koneesta tietoturvallinen.
Tietoturvaan liittyvä liiketoiminta tulee selkeästi lisääntymään. Tämä on  ymmärrettävää, koska järjestelmät käyttävät vain muutamaa alustaa ja alustoihin liittyvää tietoa saa helposti netistä. Ymmärryksen kasvaessa tietoa voi käyttää monella tavoin.

Palveluita pilven kautta

Microsoft mainostaa vahvasti palveluitaan sellaisilta tulokulmilta, joita ei löydy kilpailijoilta. Sain kuulla hehkutusta aika paljon parin päivän aikana. Valitettavasti en istunut kuuntelemassa niitä puheita, joissa kritisoitiin Azurea.
Microsoftin palvelut hyppäävät pilveen. Office-perhe pyörii siellä jo. Suurin osa uusista tekniikoista tuntuu tulevan pilvipalveluina. Tekoälypalvelut löytyvät pilvestä. Perinteiset web-softat voi heittää pilveen. Microsoft tarjoaa migraatiotyökalun ja migraation onnistumisen arvioimistyökalun, kun mennään perinteisestä arkkitehtuurista pilveen. Uusia lähtöjäkin esiteltiin, ihan alpha-kamaa ja toivottiin kontribuutiota julkisiin repoihin.
Meille kerrottiin useamman kerran kuinka kannattaa määritellä palvelut pilveen, siten etteivät ne kerrytä turhaan laskutusta. Ruuhkahuippujen aikaan palvelut voidaan skaalata ylöspäin useammalle koneelle, jolla saadaan lisää suorituskykyä palvelemaan pyyntöjä, mutta myös lisää kustannuksia. Kuormitushuipun jälkeen palvelut voidaan skaalata alaspäin, jolloin säästetään kustannuksista.Toki kannattaa myös miettiä miten toteuttaa sovelluksensa pilvessä: virtuaalikoneissa, suoraan palveluina tms. Siis sivuttiin tavanomaista PaaSiin ja SaaSiin liittyvää pohdintaa.

Pilveen devaaminen

Pilveen menemisen helppous tuli myös vastaan useampaan kertaan. Tosin pilveen mentäessä ylläpitäjä jää vähän hämäräksi. Periaatteessa devaaja voi tehdä kaiken. Hän päräyttää monitoroinnit pystyyn softan kehityksen oheessa, saa vikatilanteissa viestejä ja normaalitilanteessa analysoi palvelun laadun. Erinomaista tietoa sovelluskehitystä ajatellen, mutta miten ajankäyttö?
Perinteisesti kehittäjät tekevät softan ja ylläpitotiimi jää monitoroimaan sovelluksen vasteaikoja sekä lokeja. DevOps-osaajat tietenkin tunkkaavat monitoroinnit kuntoon ja pistävät CI-putken paikoilleen. Kannattaako pitää erilliset DevOps-kaverit vai tekeekö kehittäjä kaiken? Microsoft tarjosi selkeästi DevOps-tekijöille luentosarjansa, joten toistaiseksi koodaaja pidetään Visual Studion äärellä.
Pilveen siirtymistä helpotetaan. Maakohtaisia rajoitteisiin yritetään vastata luomalla paljon uusia palvelinten sijainteja kartalle. Palvelut tuodaan helposti pilvestä käytettäviksi. Tekemistä yritetään selkeästi siirtää pilveä kohti.
Vanhana koodaajana seison kahden maailman välissä. Ymmärrän täysin vanhat toimijat, jotka haluavat pitää kaikki langat käsissään. He pystyttävät palvelinsaleja, ja on paljon tapauksia, joissa oma palvelinsali on ainoa vaihtoehto. Sen sijaan moni startup, kotiprojekti ja verkkosivuprojekti siirtyy sulavasti pilveen.

Tunnelmat tapahtuman jälkeen


Tapahtuman aikana tunsin hermoratani sähköistetyksi. Uusia ihania asioita tulee, vanhat ja toimivat tekniikat pyörivät iloisesti pilven nurkalla. Tehokasta, edullista ja kätevää.
Uskon useiden projektien muuttuvan sisällöltään herkullisemmiksi. Pelkkien verkkosivujen tai yksinkertaisten palvelujen tekijät tulevat vähenemään digitalisaation ensimmäisen aallon jälkeen. Työpaikallammekin selvitetään asiakkaan mahdollisuutta viedä palvelunsa pilveen tai tehdä hybridiratkaisu. Mielestäni lisäarvon tuottaminen on tärkeämpää. Miten kerättyä dataa pystytään hyödyntämään ja jatkojalostamaan tekoälyn avulla?
Omalta osaltani luon paremman huomisen koodaamalla.
Olen koodaaja.

Joni Kettunen

Joni Kettunen

Joni auttaa asiakasta koodin rakentamisessa ja nauttii selventävien kysymysten esittämisestä. Hän pyöräilee töihin ympäri vuoden ja uppoutuu kirjoihin vapaa-ajalla.

Linkedin profile

Piditkö lukemastasi? Jaa se myös muille.

I am so proud that I participated in helping to organise such an amazing event. Most of the things went quite well, people were happy, and it was fun. Kudos to Samuli Hakonemi, Aleksi Pousar, Harri Määttä, Juho Vepsäläinen and Joni Nevalainen and everyone else who stepped in to make this amazing event happen. All the sponsors, volunteers, the venue, Sea Life. This was a success because we have so many companies and individuals who are active in the community. I encourage you to step up and join the active developers who organise events and meetups and keep talks and discussions going in all community forums.
Gofore has been an active contributor in the meetups because for us, the community matters. We want people to learn and hear about new things because that’s what we do internally at Gofore. In our field, we need to learn new things and keep improving ourselves professionally (and personally) and it is easier to do that together. It is also fun to have some beer and snacks with other developers and talk about developing software.

Use Judgement, no need for Permission

It took some daring to go to the marketing people to say ”Can we get the GOLD sponsorship please”, and some daring to join the meeting when React Finland was created. Also, it took a lot of daring to step onto the stage with over 200 people – but daring is part of our company culture. I dare you to step onto the stage in meetups, and conferences – it was a blast!
I was lucky to meet a lot of the speakers and hang out a little with them, and all of them were really nice down to earth people. Such a privilege to be able to attend the speakers’ dinner, talk to them backstage and hang out with them.
React Finland App, lessons learned
I was not sure if I should do a lightning talk to such a big audience since I have only done few meetup talks. I got encouragement from Ken Wheeler just before my talk, and my colleagues were cheering me from the Lounge when I was about to start. I am so happy I did the talk because I dared to do it. People said it went well – and I think it did. There was only one hiccup with my slides since I was reordering things just before getting onto the stage.
I was happy to see that so many people had installed the React Finland Conference App. We got some good feedback and we will be repeating ’the mistake’ next year, hopefully with some additional features that we can use during the conference. This year we simply ran out of time adding all the features we wanted. You can still give us feedback on the react-Finland slack channel, tell us what you want to have in next years app.
The Gofore Crew
Last week was so amazing and now I am a bit exhausted but happy that I participated. A lot of goforeans dared to buy a ticket and dared to come onto the stage when we introduced ourselves. The support and cheers from colleagues have given me a warm and fuzzy feeling!
I hope to see You at meetups and conferences in the future!
Gofore stand chilling at React FInland

Avatar

Andy Sarfas

Andy is experienced in innovating and disrupting how companies communicate with their customers. Andy has initiated and led digital marketing initiatives for multinational companies as well as start-ups, building partnerships that continue to deliver results.

Piditkö lukemastasi? Jaa se myös muille.