Najciekawsze momenty społeczności GDE: Lars Knudsen

Lars Knudsen jest ekspertem Google ds. programowania. Rozmawialiśmy z nim o tym, jak urządzenie za 10 USD może ułatwić korzystanie z komputerów osobom z niepełnosprawnościami.

Monika Janota
Monika Janota

Lars na scenie z dwoma innymi osobami.

Monika: co zainspirowało Cię do zostania programistką? Na czym obecnie się skupiasz zawodowo?

Lars: Mam tytuł magistra inżynierii, ale zainteresowanie technologią pojawiło się dużo wcześniej. Gdy w latach 80. byłem dzieckiem, mój ojciec prowadził firmę zajmującą się komputerami i projektowaniem graficznym. Czasami, zwłaszcza podczas wakacji letnich, zabierał mnie ze sobą do pracy. Czasami niektórzy jego pracownicy przyglądali mi się. Pewien bardzo inteligentny człowiek powiedział mi kiedyś: „Lars, muszę coś zrobić, ale oto podręcznik C, a tutaj komputer. Oto jak uruchomić kompilator C. Jeśli masz jakieś pytania, przyjdź i zapytaj mnie”. Zacząłem pisać krótkie teksty, które zostały przetłumaczone na coś, co komputer może zrozumieć. To było magiczne. Zacząłem w 11 roku życia, w klasie siódmej. Wtedy tworzyłem małe aplikacje dla kolegów z klasy lub na potrzeby szkoły. Tak to się zaczęło.

Przez lata pracowałem w różnych firmach, m.in. Nokia, Maersk i Openwave. Na początku, podobnie jak w przypadku wielu innych zawodów, wydaje się, że można zrobić wszystko, ale z czasem okazuje się, że każda firma ma swój sposób działania.

Po kilku latach pracy w firmie medycznej w 1999 r. założyłam własną firmę. Pracowałem jako niezależny wykonawca i dzięki temu miałem okazję szybko poznać wiele organizacji. Po zrealizowaniu pierwszych 5 umów dowiedziałem się, że każda firma uważa, że znalazła idealną konfigurację, ale wszystkie są zupełnie inne. Wtedy miałam też styczność z wieloma różnymi technologiami, systemami operacyjnymi itp. W początkach dwudziestki moje podejście się zmieniło. Na początku skupiałem się wyłącznie na jednej technologii i chciałem poznać ją od podszewki. Z czasem zaczęłam myśleć o połączaniu technologii jako sposobie na polepszanie naszego życia. Szczególnie zależy mi na zmniejszeniu różnicy między tym, co nazywamy zespołem A i zespołem B. Staram się przekazać jak najwięcej wiedzy regionom, w których ludzie nie mogą sobie pozwolić na posiadanie komputera ani na bezpłatne studiowanie na uniwersytecie.

Wciąż pracuję jako wykonawca dla zewnętrznych partnerów, ale zawsze, gdy to możliwe, staram się wybierać projekty, które mają pozytywny wpływ na środowisko lub społeczeństwo. Obecnie pracuję nad oprogramowaniem wbudowanym dla firmy Oticon, która zajmuje się aparatami słuchowymi. W zakresie oprogramowania pracowałem nad wszystkim, od najmniejszych mikrokontrolerów po chmurę. Wiele z tego, co robię, dotyczy internetu. Staram się łączyć technologie, gdy tylko ma to sens.

Monika czy przed dołączeniem do programu Google dla ekspertów produktowych brałeś(-aś) udział w działalności społeczności deweloperów?

Lars: Tak, uczestniczyłem w spotkaniach i konferencjach. Po raz pierwszy nawiązałem kontakt z tą społecznością, gdy pracowałem w Nokii. Około 2010 r. poznałem Kennetha Rohde Christiansena, który został GDE wcześniej niż ja. Dzięki niemu zobaczyłem, jak technologie internetowe mogą być przydatne dla początkujących specjalistów IT w krajach rozwijających się. Tworzenie i wdrażanie rozwiązań w języku C++, C# lub Java wymaga kilkuletniego doświadczenia, ale każdy, kto ma dostęp do komputera, przeglądarki i notatnika, może zacząć tworzyć aplikacje internetowe i bardzo szybko się uczyć. Można tworzyć w pełni funkcjonalne aplikacje z ograniczonymi zasobami i uruchamiać je od zera. Dlatego uważam, że internet to bardzo demokratyczny zestaw technologii.

Wracając do społeczności – po pewnym czasie zainteresowałem się standaryzacją w internecie i tym, jakie problemy mogą rozwiązać najnowsze technologie internetowe. Przed udostępnieniem eksperymentowałem z nowymi funkcjami w przeglądarce. W tym czasie pracowałem w Nokii nad flagowym urządzeniem z systemem Linux – N9. Przeglądarka, którą stworzyliśmy, była oparta na WebKit. Dzięki temu zdobyłem duże doświadczenie w rozwijaniu funkcji do dużego projektu typu open source. Po odejściu z Nokii brałam udział w konferencjach i spotkaniach internetowych, więc w 2017 roku dołączyłam do społeczności GDE.

Bardzo lubię pracę z lokalną społecznością i wszystko, co robimy razem, zwłaszcza przed pandemią w ramach szczytu Chrome Developer Summits, gdzie pomagałem przy stoisku razem z grupą wspaniałych inżynierów Google i innych GDE.

Monika: jaką radę dałabyś młodemu programiście, który dopiero zaczyna swoją karierę i nie jest pewien, którą ścieżką podążać?

Lars z własnego doświadczenia mogę powiedzieć, że jeśli możesz sobie na to pozwolić, rozważ podjęcie pracy jako freelancer w kilku różnych firmach. Dzięki temu będziesz mieć styczność z kodem w wielu różnych formach i na różnych etapach rozwoju. Poznasz wiele systemów operacyjnych i języków oraz dowiesz się, jak rozwiązywać problemy na wiele sposobów. To mi bardzo pomogło. W młodości zdobyłem doświadczenie jako senior developer. Dzięki temu szybciej osiągniesz swoje cele zawodowe.

Poza tym możesz się bawić, odkrywać i testować sprzęt oraz oprogramowanie. Zastanów się, czy nie warto stworzyć czegoś, co rozwiąże prawdziwy problem – może dla znajomych, rodziny lub lokalnej firmy. Nie bój się spróbować czegoś nowego.

Monika: jakie są perspektywy rozwoju technologii internetowych?

Lars: uważam, że od kilku lat internet jest w pełni zdolny do zapewnienia platformy dla dużych aplikacji terenowych, zarówno dla konsumentów, jak i firm. Technologia internetowa zapewnia płynne działanie na serwerze, zwłaszcza dla programistów front-endu, którzy chcą tworzyć komponenty back-endu. Teraz łatwiej jest im zacząć. Znam osoby, które do wykonania tego zadania używały zarówno Firebase, jak i Heroku. Ta tendencja będzie się nasilać – technologie internetowe wystarczą do tworzenia skomplikowanych rozwiązań wszelkiego rodzaju. Uważam, że Web Capabilities – Project Fugu 🐡 naprawdę odblokowuje ten potencjał.

Patrząc na to z trochę innego punktu widzenia, uważam też, że jeśli udostępnimy pełną dokumentację i szczegółowe artykuły nie tylko w języku angielskim, ale też w innych językach (np. hiszpańskim i portugalskim), zyskamy wiele możliwości w Ameryce Łacińskiej, a także w innych regionach. Deweloperzy często nie znają angielskiego na tyle dobrze, aby w pełni zrozumieć wszystkie istotne artykuły. Powinniśmy też dawać im możliwość nauki jak najwcześniej, jeszcze przed rozpoczęciem studiów, w ich rodzinnych miastach. Mogą one wykorzystać te umiejętności, aby pomagać lokalnym społecznościom i firmom, zanim wyruszą w drogę i być może już nigdy nie wrócą.

Thomas: od programowania w języku C na dowolnym komputerze do hakowania sprzętu. Jak to zrobiłaś?

Lars: zacząłem rozbierać wiele urządzeń, które miałem w domu. Mój tata nie zawsze był zadowolony, gdy nie udawało mi się złożyć zabawki. Z czasem nauczyłem się tworzyć małe urządzenia, ale na dobre zaczęło się to dopiero później, gdy dołączyłem do firmy Nokia, gdzie zdobyłem doświadczenie w zakresie układów scalonych. Miałem okazję tworzyć małe wygaszacze ekranu i komponenty dla telefonów z serii 30. Byłam bardzo zaangażowana i mogłam myśleć nieszablonowo. Powierzono mi zadanie stworzenia gry Wąż na te urządzenia. To było bardzo interesujące doświadczenie. Główna różnica między tworzeniem systemów wbudowanych a większości innych rzeczy (w tym internetu) polega na tym, że pozostawiasz niewielki ślad węglowy – nie potrzebujesz dużo miejsca ani pamięci. Podczas tworzenia gry Snake dostępna pamięć RAM była mniejsza niż 1/3 bufora ramki (około 120 x 120 pikseli). Musiałem znaleźć sposób na automatyczne ponowne złączenie komponentów na ekranie, aby wyglądały na statyczne, jakby były to kafelki. Dużo się nauczyłem. To był czas przejścia z większych systemów na małe, wbudowane rozwiązania.

Thomas: zestaw umiejętności typowego programisty front-endu różni się znacznie od zestawu umiejętności osoby, która tworzy sprzęt wbudowany. Jak zachęcić dewelopera interfejsu do zapoznania się ze sprzętem i rozpoczęcia myślenia w systemie binarnym?

Lars: moim zdaniem pierwszym krokiem powinno być zapoznanie się z niektórymi interfejsami Fugu API, które działają w Chrome i Edge oraz są wbudowane we wszystkie główne systemy. To wszystko, czego potrzebujesz na początek.

Kolejną kwestią jest to, że toolchainy do tworzenia wbudowanych rozwiązań mają stromą krzywą uczenia. Jeśli chcesz zbudować własny sprzęt, zacznij od Arduino lub ESP32 – urządzeń, które są łatwe w kupieniu i dosyć tanie. Dzięki odpowiedniemu środowisku programistycznemu możesz szybko uruchomić projekt.

Możesz też kupić monitor pracy serca lub urządzenie wieloczujnikowe, które korzystają już z usług Bluetooth GATT, dzięki czemu nie musisz tworzyć własnego sprzętu ani oprogramowania układowego. Możesz użyć tego, co już istnieje, i zacząć eksperymentować z interfejsem Web Bluetooth API, aby rozpocząć komunikację z urządzeniem.

Istnieją też urządzenia, które korzystają z protokołu szeregowego. W ich przypadku możesz użyć Web Serial API (także Fugu). Ostatnio interesowałem się interfejsem WebHID API, który umożliwia komunikację z urządzeniami z interfejsem użytkownika, do których ma dostęp każdy użytkownik. W piwnicy znalazłem stare karty, które przez lata nie były obsługiwane przez żaden system operacyjny. Dzięki inżynierii wstecznej udało mi się je ponownie włączyć. Zajęło mi to kilka godzin.

W zależności od tego, co chcesz zbudować, możesz stosować różne podejścia. Jednak jako deweloper witryn internetowych polecam Ci solidny czujnik, np. Thingy 52 firmy Nordic Semiconductor. Ma on wiele czujników i można go bez problemu podłączyć do aplikacji internetowej.

Thomas: Połączenie z urządzeniem to pierwszy krok, ale skuteczne zwracanie się do niego to już zupełnie inna sprawa. Dlaczego nie zrezygnowałeś/zrezygnowałaś, gdy pojawiły się przeszkody? Co motywowało Cię do dalszej pracy?

Lars: dla mnie najważniejszy był aspekt społeczny rozwiązywania problemów. Gdy zaczęłam pracować nad własnymi projektami z użyciem procesorów wbudowanych, miałam wizję i chęć stworzenia mobilnego laboratorium naukowego dla regionów rozwijających się. Moja żona pochodzi z Meksyku i widziałem tam szkoły. Niektóre z nich, które znajdują się poza dużymi miastami, są w bardzo złym stanie i nie mają dostępu do materiałów ani sprzętu, które mamy w naszej części świata.

Pasja do tworzenia czegoś, co może pomóc innym, była dla mnie motywacją. Bardzo podobało mi się też wsparcie społeczności. Skontaktowałem się z kilkoma osobami z Google. Wszyscy byli bardzo pomocni i cierpliwie odpowiadali na moje pytania.

Thomas: wiele osób ma w domu jakieś urządzenia, ale nie wie, co z nimi zrobić. Skąd czerpiesz inspirację do tworzenia swoich niesamowitych projektów, w tym projektu o roboczej nazwie SimpleMouse?

Lars: Ostatnio zajmowałem się odświeżaniem starego sprzętu, ale w przypadku tego projektu (nie mamy jeszcze nazwy, ale nazwijmy go SimpleMouse) wykorzystałem swoje doświadczenie. Wcześniej pracowałem z kilkoma rozwiązaniami ułatwiającymi dostępność i zauważyłem, że niektóre z nich po prostu nie działają. Aby je uruchomić, trzeba mieć zainstalowany stary system Windows XP z określonym oprogramowaniem. Nie można ich zaktualizować, można ich używać tylko w domu, ponieważ nie można przenieść konfiguracji.

Zastanawiałem się, jak połączyć moje umiejętności z projektu Fugu z możliwościami, jakie obecnie oferuje internet, aby tworzyć tanie, przystępne cenowo urządzenia połączone z łatwym w użyciu oprogramowaniem, które pozwoli ludziom na tworzenie własnych projektów.

W tym konkretnym projekcie użyłem małego klucza USB z odblaskowym układem scalonym nRF52840. Po jednej stronie komunikuje się z Bluetooth, a po drugiej z USB. Możesz je zaprogramować tak, aby robiło cokolwiek po obu stronach. Pomyślałem wtedy o urządzeniach służących do sterowania komputerem, czyli o myszach i klawiaturach. Niektórzy użytkownicy z niepełnosprawnością mogą mieć problemy z obsługą tych urządzeń, dlatego chciałem im pomóc.

Najpierw upewniłam się, że każdy system operacyjny będzie widzieć klucz USB jako mysz. Możesz nim sterować za pomocą natywnej aplikacji lub aplikacji internetowej – bezpośrednio przez Bluetooth. Następnie utworzyłem aplikację internetową – prosty szablon, który użytkownicy mogą rozszerzać według własnego uznania, korzystając z komponentów internetowych. Dzięki temu każdy może sterować komputerem za pomocą aplikacji internetowej, którą stworzyłem w ciągu kilku godzin na telefonie z Androidem.

Dzięki temu każdy na świecie, kto ma pewne doświadczenie w korzystaniu z Internetu, będzie mógł w ciągu kilku dni stworzyć bardzo dostosowane rozwiązanie dla osób niepełnosprawnych, które chcą sterować komputerem. Najfajniejsze jest to, że możesz zabrać go ze sobą wszędzie i używać go na innych urządzeniach. Będzie to dokładnie to samo. Dla mnie przenośność i przystępność urządzenia są bardzo ważne, ponieważ ludzie nie muszą już korzystać z własnych urządzeń ani nie są ograniczeni do jednej lokalizacji.

Thomas: Czy udało Ci się przetestować urządzenie w rzeczywistych warunkach?

Lars: podczas ostatniej podróży do Meksyku rozmawiałem z jednym z lokalnych specjalistów od internetu. Obecnie sprawdza on możliwości wykorzystania urządzenia w tej lokalizacji. Tam sprzęt jest naprawdę drogi, ale klucz USB zwykle kosztuje około 10 USD. Sprawdza teraz, czy możemy skonfigurować lokalne konfiguracje, aby je wypróbować. Nie przeprowadziliśmy jeszcze oficjalnych testów w Danii.

Thomas: wiele urządzeń przeznaczonych dla osób z niepełnosprawnościami jest bardzo drogich. Czy planujesz współpracę z jakąś konkretną firmą i produkcję za ułamek ceny tego drogiego sprzętu?

Lars: Tak, zdecydowanie. Rozmawiałem(-am) już na ten temat z lokalnym producentem sprzętu. Oczywiście urządzenie nie zastąpi wszystkich wysoce wyspecjalizowanych rozwiązań, ale może być pierwszym krokiem do stworzenia czegoś większego, na przykład za pomocą rozpoznawania głosu, które jest już dostępne w przypadku technologii internetowych. To łatwy sposób sterowania urządzeniami za pomocą telefonu z Androidem. Może działać z dowolnym urządzeniem.

Możliwość tworzenia w internecie dowolnych treści i sterowania nimi na dowolnym komputerze hosta otwiera wiele możliwości.

Thomas: Czy udostępniasz projekt Zephyr jako oprogramowanie open source? Jakiego rodzaju licencji używasz? Czy planujesz zarabiać na tym projekcie?

Lars: tak, rozwiązanie jest typu open source. Nie dodałem konkretnej licencji, ale myślę, że Apache 2.0 byłaby odpowiednia. Wiele dużych firm korzysta z tej licencji, w tym Google. Gdy pracowałem nad SimpleMouse, nie myślałem o zarabianiu na tym projekcie – nie było to moim celem. Uważam też, że warto w jakimś stopniu wdrożyć tę funkcję w produkcji, a to wiąże się z kosztami. Ostatecznym celem jest udostępnienie go. Chcielibyśmy, aby ta funkcja była wdrażana na dużą skalę i za rozsądną cenę.