Työpaikkablogi

Code and computer graphics join forces

Another look at the work of Vertex software development comes from Antti Heinonen. Heinonen coded his first computer game when he was still in elementary school, and later worked for Rovio while he studied.

Alongside his interest in coding, Antti is passionate about computer graphics. At Vertex, Antti is free to put his expertise to use in developing our CAD software.

Let’s let Antti tell us about his project.

Taking Vertex CAD real-time 3D rendering to the next level

During the lifetime of Vertex CAD applications, the world of computer graphics and rendering has changed a lot. First, 3D shapes were software rendered — then came graphics libraries like OpenGL and dedicated hardware to handle rasterization and shading. Now, real-time 3D rendering technology has stabilized around a programmable graphics pipeline. Currently, Vertex CAD is settled on using OpenGL. OpenGL is great for its purpose, but due to being an almost 30 years old API, it’s dragging lots of history with itself — and this affects our code.

At Vertex, we have been prototyping and working on a completely new 3D rendering backend. The goal is to reduce technical debt, remove old code and future proof by rewriting the 3D rendering backend with modern technology and methods. By taking a fresh start, we can design the new 3D renderer to fully utilize modern graphics processing units.

Currently, the OpenGL backend is CPU limited and, at worst, only 10-20% of available graphics performance is used. The prototype significantly improves 3D performance and the user experience of handling large and medium sized CAD models in 3D viewports.
This is because the new rendering backend takes advantage of static batching of geometry and draw calls. This means we create a separate 3D graphics mesh from the CAD data model. A similar separation of geometry and CAD data is done in 3D model export to showroom service in glTF format.

By separating the 3D graphics mesh from the CAD data model, we eliminate the need to iterate the CAD model structure during rendering. The renderer just needs to know which sets of 3D mesh have  to be rendered, and with what material. Modern GPUs like big data sets, and rendering will be quickly CPU limited if draw call or material state change count rises. With the new backend, we’ve tried to arrange the mesh data and create big continuous graphics buffers and sort draw calls in order to render as much as possible with the fewest number of GPU draw calls or material state changes.

At the moment we leverage the open-source bgfx graphics library, which provides platform agnostic abstraction for graphics APIs. Although Vertex CAD is a Windows-only application, bgfx allows us to focus on designing the rendering backend architecture while future proofing for coming graphics APIs at the same time.

I strongly believe that this new 3D renderer is a turning point for handling and working efficiently with large 3D models in Vertex CAD applications.

Come join our team!

If you want to put your area of expertise to use in product and software development, we have excellent news: Vertex has work available for a knowledgeable C++ professional!

So come and join a knowledgeable and supportive group in a growing and financially stable company!

Read more here.

Kesäretki Lukkolahteen

Kesätyöntekijät ja muut uudet vertexläiset sekä perehdyttäjät suuntasivat Lukkolahteen torstaina 13. kesäkuuta. Kesäretkelle sattui vähän pilvinen ja tuulinen päivä, mutta eipä ollut hyttysiä. Päivä oli ainakin omalla kohdallani elämyksiä täynnä menomatkasta lähtien, kun pääsin saareen isohkon veneen kyydissä ja vieläpä suoraan kotiani lähimmästä satamasta. Veneily on minulle harvinaista herkkua, eikä Näsijärvellä seilailusta ole muutenkaan ennen tätä reissua kertynyt kokemusta.

Perillä vehreässä saaressa odotti tunnelmallinen huvila, saunarakennus, grillauspaikka ja muun muassa lentopallokenttä. Ennen kuin pääsimme tutkimaan paikkoja, piti vielä kurotella muutamat kuormasta järveen pudonneet tölkit talteen.

Ruokaa ja juomaa oli 19 ihmiselle varattuna melkoinen määrä ja ruuanlaitossa vierähtikin toista tuntia. Kaikki oli sen arvoista, sillä tulokset olivat herkullisia. Spagetin kaataminen siivilään tiskialtaan sijaan olisi tosin voinut onnistua paremminkin. Päivän aktiviteetteja syömisen lisäksi olivat muun muassa Mölkky, lentopallo, sulkapallo, lautapelit, saunominen ja uiminen. Oli mukava tavata työkavereita toimistosta poikkeavassa ympäristössä. Päivästä jäi hyvä fiilis ja luonnossa oleskelu rentoutti.

Aika saaressa kului nopeammin kuin maissa, ja kotiinlähdön aika koitti vääjäämättä. Paluumatkalla juttelimme muiden kesätyöntekijöiden kanssa siitä, että takana on varmasti yksi mieleenpainuvimmista päivistä kesätyön aikana.

Tekniikkaa, teekkareita ja humanisti

Aloitin tällä viikolla kesätyöt Vertexillä yhdentoista muun kohtalotoverin kanssa. Osa on ollut täällä aiemminkin töissä, mutta monille tämä on ensimmäinen Vertex-kesä. Kesätyöntekijöissä on ainakin tietotekniikan, tuotantotalouden ja teknis-luonnontieteellisen opiskelijoita. Opiskelen itse suomen kieltä ja muun muassa viestintää, joten erotun hiukan joukosta. Töihini kuuluu sisällöntuotantoon liittyviä tehtäviä ja tutustun Vertexin tuotteista erityisesti G4-mekaniikkasuunnitteluohjelmistoon, jonka käyttämiseen tuotan ohjevideoita.
 

Valtaosalla vertexläisistä on insinööritausta ja yhteyksiä Hervannan kampukselle. Humanisti on kuulemma pieni harvinaisuus, mutten silti ole ensimmäinen lajini edustaja täällä. Vaikuttaa siltä, että Vertexillä kaikenlaiset näkemykset otetaan huomioon ja niitä pidetään arvokkaina. Erilaisia vahvuuksia on erilaisissa tehtävissä ja kaikki ovat innostuneita työstään. Työkavereiden kanssa jutellessa kävi ilmi, että humanistinäkökulma on täällä jopa toivottu asia, sillä insinööriyhteisössä voi toisinaan olla vaikea katsoa asioita ”ulkopuolisen” näkökulmasta.


Työmatkoilla on saanut nauttia kevätauringosta

Ensimmäiseen työpäivään kuului työpaikkaan, tiloihin ja työkavereihin tutustumista. Aloitimme päivän esittäytymiskierroksella ja lähdimme sen jälkeen tutkimaan taloa. Kävimme toimiston jokaisella työpisteellä ja kymmenien kädenpuristusten jälkeen nimet ja kasvot eivät välttämättä yhdistyneet muistissani vielä toisiinsa, mutta olo oli oikein tervetullut. Uutta asiaa riittää opittavaksi ja se onkin osa tämän työpaikan kiehtovuutta. Tuntemattomuuksia liittyy tosin muutaman kesätyöntekijän mukaan työnkuvaankin: ei ole vielä selvää, mitä kaikkea he täällä tulevat tekemään. Ensimmäiset työpäivät kuluivat heillä ohjelmiin tutustuessa ja uuden tiedon sulattelemisessa, joten hyvään alkuun on päästy.

Jossain vaiheessa työpaikkakierrosta pysähdyimme kahville ja työkaverit kertoivat yrityksen perustajilta kuulemiaan tarinoita Vertexin värikkäästä historiasta. Silloisen Lujuustekniikka Oy:n työntekijät ovat esimerkiksi viettäneet viikon jäätiköllä suksia testaamassa. Sivusimme myös Vertex-nimen taustaa. Vertex merkitsee kärkeä tai huippua. Sitä käytettiin aluksi Lujuustekniikka Oy:n tuotteiden nimissä, mutta lopulta Vertexistä tuli myös yrityksen nimi, sillä se oli saanut hyvän maineen ja sen lausuminen on helppoa myös suomen kieltä taitamattomalle.

Toisena työpäivänä töihin ei enää jännittänyt tulla. Aamuni alkoi työtuolin säätämisellä ja siinä hässäkässä housuni repesivät. Siitä en nauttinut. Päivässä oli onneksi paljon positiivistakin: työkavereiden kasvot näyttivät jo tutummilta, järjestelin työpisteeni omaan käyttööni sopivaksi ja toimiston tavat ja rutiinit alkoivat vähän hahmottua. Tutustuin kahvihuoneen palapeliharrastukseen ja opin paljon Vertexin käytännöistä intran ja työkavereiden avulla.

Lämmin työyhteisö on tullut puheeksi niin työhaastattelussa kuin kahvitauollakin ja avoin tunnelma on aistittavissa jokaisessa huoneessa. Ilmapiiri on perhemäinen: apua saa aina pyytää keneltä tahansa ja jos joku ei osaa auttaa, tietää hän jonkun, joka voisi osata. Tällaiseen työyhteisöön on tekniikkataustattoman humanistinkin mukava sujahtaa mukaan.

UUSI MAAILMA

Aloittaessa työt 40-vuotiaassa ohjelmistotalossa vain kahden ohjelmointikurssin pohjalta, on koodaamisen parissa aukeava maailma uusi ja jännittävä.

Ennen Vertexillä aloittamista olin tottunut siihen, että ohjelmat olivat suhteellisen pieniä ja yleensä lähes kokonaan itse toteutettuja. Ohjelmat kääntyivät hetkessä ja koodia lukemalla oli helppo löytää mikä oli pielessä, jos ohjelma ei toiminutkaan halutulla tavalla. Kuitenkin heti ensimmäisenä kesätyöpäivänä oli selvää, että isommat ohjelmat toimisivat hieman eri tavalla. Useat syvälle menevät sisäkkäiset rakenteet tuntuivat aluksi pelottavilta ja niihin tutustuminen vei oman aikansa. Tämän lisäksi vikatilanteissa ongelmakohta ei välttämättä löytynytkään aivan yhtä helposti. Ja kun koodin laittoi aamulla kääntymään, ehti sitä odotellessa helposti käydä hakemassa (ja juomassa) kupin teetä tai kahvia.

Jostain syystä ennakkokäsitykseni työn aloituksesta ohjelmistofirmassa oli se, että kesän aikana ei välttämättä pääsisi ollenkaan koodaamaan. Tämä ei kuitenkaan pitänyt paikkaansa, koska heti ensimmäisten päivien koulutuksien jälkeen pääsin tutustumaan koodipohjaan ja sain ensimmäiset issuet tehtäväksi. Meitä aloitti mekaniikkatiimissä kaksi kesätyöläistä ja työnjako oli toteutettu siten, että molemmille tuli spesifiin aihealueeseen keskittyneitä tehtäviä, mikä auttoi siinä, että luettavan koodin alue pysyi hallittavan kokoisena.

Oma aihealueeni keskittyi erityisesti luonnospuolen kehittämiseen ja asiakkaiden toivomien uusien ominaisuuksien toteuttamiseen. Mieleenpainuvimpana ominaisuutena pidän uudistettua monikulmion piirtotyökalua. Vanhan toteutuksen hyödyntämisen sijaan toteutin koko toiminnon uudestaan, jolloin sain vapaasti suunnitella, miten halusin toteuttaa tarvittavan ominaisuuden.

Oli yllättävää, miten erilaiset koulussa opitut aihealueet kulkivat käsi kädessä uusia ominaisuuksia tehdessäni. En esimerkiksi olettanut kaipaavani matriisilaskentaa, mutta yllätyksekseni erilaisten transformaatiomatriisien pyörittely liittyi jollain tavalla lähes jokaiseen työstämääni aiheeseen aina viivan piirrosta tekstin paikoitukseen.

Kesän jälkeen voin todeta, että erityisesti taito lukea muiden kirjoittamaa koodia on parantunut huomattavasti. Isojen ohjelmien ja syvien tietorakenteiden käsittely on nyt paljon varmempaa kuin aiemmin – eikä ollenkaan pelottavaa. Yleisestikin kesällä opituista asioista on ollut paljon hyötyä, kun samoja asioita on käsitelty lisää nyt viimeisimmillä ohjelmistotekniikan kursseillani.

 

Voiko saaressa koodata?

#lukkolahtihackathon kesäkuu 2018

Meillä tuotekehitys pohjautuu paljolti olemassa olevien tuotteiden inkrementaaliseen kehittämiseen. Vuoden mittaan 3–4 viikon mittaisia kehityssprinttejä työstetään läpi kaikkiaan noin 15 ja niissä kooditehtaan voimin syntyy tuotteisiin satoja uusia ominaisuuksia ja parannuksia. Tehdyt teknologiavalinnat luovat tiukan viitekehyksen kehitykselle ja ohjelmistokehittäjien satunnaiset irtiotot saavat tuotepäälliköiden verenpaineen nousemaan.

Product backlogissa majailevien tuoteideoiden määrä on loputon ja mistään ei tunnu löytyvän aikaa kokonaan uusien näkökulmien, teknologioiden, menetelmien tai palvelujen tuottamiseksi. Juuri näissä uusissa hajatelmissa voisi kuitenkin piillä tulevaisuuden sankariominaisuudet, jotka helpottaisivat kaikkien arkea.
Näistä lähtökohdista ja omassa Angular-workshopissa Markon puolihuolimattomasti heittämästä läpästä syntyi ajatus hackathonista, jonka tarkoituksena olisi unohtaa kaikki entinen ja astua kokonaisvaltaisesti pois mukavuusalueelta kenties vielä mukavammalle alueelle. Ajatusta puolsi myös kiky-sopimuksen velvoittama 24 tunnin työajan pidennys, joka meillä Vertexillä toteutetaan lähes minä tahansa työyhteisöä palvelevana "projektina", jonka voi tehdä yksikseen tai yhdessä toisten kanssa.


Antti:
Lukkolahteen päästyämme ja tavaroiden purkamisen jälkeen, kaivoimme läppärit repusta pöydän ääreen ja rupesimme hommiin. Ennen hackathonin varsinaista alkua kaikki meistä oli jo ottanut selvää ja testaillut käytettäviä teknologioita, myös varsinainen projekti oli sovittu ja aloillaan. Paikan päällä projekti jaettiin yhdessä edelleen osiin, jotka jaettiin eri henkilöille. Valmistautumisen myötä alkukankeus oli vähäistä ja jo nopeasti aloittamisen jälkeen saimme aikaan tuloksia. Varsinaisena tavoitteenahan ei ollut itse projektin loppuun asti vienti, vaan uusien ennestään tuntemattomien teknologioiden kanssa toiminen ja uuden oppiminen.
Varsinkin oppimismielessä ryhmässä tekeminen oli erinomaista. Kysymyksiä voitiin heittää ilmaan ja pohdittiin ja tutkittiin yhdessä, tai jollain oli jo vastaus ongelmaan. Kaiken kaikkeaan ilmassa oli siis vahvaa tekemisen ja oppimisen meininkiä. Eikä varmasti miljöö, saunominen, järvessä pulahdus ja grillaus haitanut koodailua, joka jatkui vielä myöhään yöhön puhdistumisen ja maukkaan grilliruuan jälkeen.

Jari:
Kokemamme jälkeen voimme todeta, että ainakin tämän kaltainen web-sovelluksen kehitys onnistuu nykypäivänä helposti kaikkialla, missä on vähintään 4G-mobiililaajakaista käytettävissä. Työn suoritus ei ole aikaan eikä paikkaan sidoksissa. Myös tiiviissä vuorovaikutuksessa työskentely oli ehdottomasti kokemisen arvoista ja sai positiivisen vastaanoton. Oli helppo vaihtaa ajatuksia ja saada apua, kun kaveri oli vieressä. Tunnelma antoi myös uudenlaista potkua, eikä hommaa olisi millään malttanut keskeyttää. Tällaista työskentelytapaa voisi jatkossa ehdottomasti soveltaa myös varsinaiseen työhön.

Marko L:
Itseorganisoitunut poikkitieteellinen ryhmämme oli valmistautunut hyvin ja "töihin" päästiin heti saareen saavuttuamme. Vuorovaikutus ja ideoiden lentely oli aivan toisenlaista kuin tylsässä neukkarissa, jossa ajatukset helposti kiertävät samaa vanhaa kehää. Tavoitteet saavutettiin hyvin, eli opimme uusia tekniikoita ja työkaluja sekä saimme valmiudet tehdä niillä jotain ihan oikeaakin. Harjoitustyönä tehty monen käyttäjän ja alustan reaktiivinen sovellus saatiin lähes tuotantokelpoiseen kuntoon, vaikka se ei ollutkaan tärkeintä. Ehkäpä epätodennäköisen kesäsadepäivän sattuessa kohdalle tähän tulee vielä palattua...
Innostuksen määrästä voi päätellä jotakin siitä, että perjantai venyi lopulta ~18 tuntiseksi (kahdelta yöllä jouduttiin lopettamaan, kun silmät eivät enää pysyneet kunnolla auki). Lauantaina tehtiin hieman lyhyempi päivä, mutta ei se siihen jäänyt: illalla kotona oli vielä pakko vähän jatkaa! Saaressa ei vain voi, vaan myös pitää koodata. Viimeistään keväällä uudelleen, seuraava puolihuolimaton läppä mietinnässä =D.

Marko M:
Kuten niin usein näinä aikoina voi todeta, että ”ei se ole enää tekniikasta kiinni”. Teknisesti toteutus onnistuu kyllä, mutta uuden asian oppimisessa on tietty oppimiskaari, mikä ottaa aikansa. Asynkronisen toiminnan ymmärtäminen käytetyssä alustassa vaati vanhojen ajatusten kääntämistä uuteen asentoon. Tässä auttoi rento ympäristö ja ilmapiiri sekä selvä irtaantuminen vanhasta kaavasta. Ryhmädynamiikka ainakin tällä ryhmällä toimi erinomaisesti ja kaikille löytyi mielekästä tekemistä itseohjautuvasti. Koin oppineeni jotain aivan uutta lyhyessä ajassa tehokkaasti, ja viikonlopusta jäi vielä versionhallintaan hyvä demopohja itseopiskelun jatkoksi.

Anssi:
Saaressa voi todellakin koodata, ja eikä vain koodata vaan samalla kertaa tutustua, kokeilla ja ottaa lähes tuotannolliseen käyttöön uusia teknologioita ja pilvipalveluina tarjottavia kehitystyökaluja tai -alustoja. Ja tässä vaiheessa koodaaminen muuttuukin kokonaisvaltaisemmaksi case-sovelluksemme asiakastarpeiden hahmottamiseksi tai jopa palvelujen muotoiluksi. Normaalissa tuotekehityssyklissä ja konttorirutiineilla vastaavan annostukseen uutta menisi useita päiviä, ellei viikkoja. Kun Markon seuraava läppä lentää, olen mukana!

34-tunnin aikana koettua


Softat, palvelut jne...
•    Git & Github  -versionhallintajärjestelmä
•    Visual Studio Code -editori (Microsoft)
•    Angular/typescript - web-sovellusten kehitysalusta/-kieli (Google)
•    Firebase - web-sovellusten kehitysalusta (Google)
•    AWS S3 - laskenta- ja pilvitallennuspalvelut (Amazon)
•    Kettukeksit (Jaffa Pihlaja)

Käytetty laitteisto
•    Windows ja Linux läppäreitä
•    Android-puhelimia ja iPhone
•    4G-yhteydet puhelinten kautta
•    Yhteysvene Linder ja perämoottori Yamaha 4.0 hv
•    Vararengas, tunkki ja rengasavain
•    Pekonia ja munia
•    Firman mökki ja sauna saaressa
 

— 5 Items per Page
Showing 1 - 5 of 6 results.