Waarom het 'n hardeware-opstart 'n sagteware-hackathon nodig?

Verlede Desember het ons ons eie begin-hackathon gehou met ses ander Skolkovo-maatskappye. Sonder korporatiewe borge of enige eksterne ondersteuning het ons tweehonderd deelnemers van 20 stede van Rusland versamel deur die pogings van die programmeringsgemeenskap. Hieronder sal ek jou vertel hoe ons daarin geslaag het, watter slaggate ons langs die pad teëgekom het en hoekom ons dadelik met een van die wenspanne begin saamwerk het.

Waarom het 'n hardeware-opstart 'n sagteware-hackathon nodig?Raakvlak van die toepassing wat Watts Battery-modules beheer van die finaliste van die baan, "Wet Hair"

maatskappy

Ons maatskappy Watts Battery skep modulêre draagbare kragstasies. Die produk is 'n draagbare kragstasie 46x36x11 cm, wat in staat is om van 1,5 tot 15 kilowatt per uur te lewer. Vier sulke modules kan die energieverbruik van 'n klein plattelandse huis vir twee dae voorsien.

Alhoewel ons verlede jaar produksiemonsters begin stuur het, is Watts Battery volgens alle rekeninge 'n begin. Die maatskappy is in 2016 gestig en is sedert dieselfde jaar 'n inwoner van die Skolkovo Energy Efficient Technologies Cluster. Vandag het ons 15 werknemers en 'n groot agterstand van dinge wat ons graag in een of ander stadium wil doen, maar tans is daar geen tyd daarvoor.

Dit sluit ook suiwer sagtewaretake in. Hoekom?

Die hooftaak van die module is om ononderbroke, gebalanseerde energievoorsiening teen 'n optimale koste te verskaf. As jy 'n kragonderbreking ervaar weens redes buite jou beheer, moet jy altyd 'n reserwe hê om die vereiste netwerklading vir die duur van die onderbreking ten volle van krag te voorsien. En wanneer die kragtoevoer goed is, kan jy sonenergie gebruik om geld te bespaar.

Die eenvoudigste opsie is dat jy die battery bedags by die son kan laai en dit in die aand kan gebruik, maar presies tot die vlak wat nodig is sodat jy in die geval van 'n verduistering nie sonder elektrisiteit gelaat word nie. So, jy sal jou nooit in 'n situasie bevind waar jy die beligting van 'n battery die hele aand aangedryf het nie (want dit is goedkoper), maar snags het die elektrisiteit afgegaan en jou yskas het ontvries.

Dit is duidelik dat 'n persoon selde in staat is om met groot akkuraatheid te voorspel hoeveel elektrisiteit hy benodig, maar 'n stelsel gewapen met 'n voorspellende model kan. Masjienleer as sodanig is dus een van ons prioriteitsareas. Dit is net dat ons tans gefokus is op hardeware-ontwikkeling en nie genoeg hulpbronne aan hierdie take kan toewys nie, wat ons na die Startup Hackathon gebring het.

Voorbereiding, data, infrastruktuur

Gevolglik het ons twee spore geneem: data-analise en bestuurstelsel. Benewens ons s'n was daar nog sewe snitte van kollegas.

Terwyl die formaat van die hackathon nie bepaal is nie, het ons daaraan gedink om "ons eie atmosfeer" te skep, met 'n puntestelsel: deelnemers doen 'n paar dinge wat vir ons moeilik en interessant lyk, en kry punte daarvoor. Ons het baie take gehad. Maar terwyl ons die struktuur van die hackathon gebou het, het ander organiseerders gevra om alles in 'n algemene vorm te bring, wat ons gedoen het.

Toe kom ons by die volgende skema: die ouens maak 'n model op grond van hul data, dan ontvang hulle ons data, wat die model nie voorheen gesien het nie, dit leer en begin voorspel. Daar is aanvaar dat dit alles in 48 uur gedoen kon word, maar vir ons was dit die eerste hackathon op ons data, en ons het dalk die tydbronne of die mate van gereedheid van die data oorskat. By gespesialiseerde masjienleer-hackatons sou so 'n tydlyn die norm wees, maar ons s'n was nie so nie.

Ons het die sagteware en hardeware van die module soveel as moontlik afgelaai, en 'n weergawe van ons toestel gemaak spesifiek vir die hackathon, met 'n baie eenvoudige en verstaanbare interne koppelvlak wat enige ontwikkelaar kan ondersteun.

Vir die baan gebaseer op die beheerstelsel was daar 'n opsie om 'n mobiele toepassing te maak. Om te verhoed dat die deelnemers hul breine oor hoe dit moet lyk en ekstra tyd mors, het ons vir hulle 'n ontwerpuitleg van die toepassing gegee, super-lig, sodat diegene wat dit wil hê eenvoudig die funksies wat hulle nodig het daarop kan "rek" . Om eerlik te wees, ons het geen morele dilemmas hier verwag nie, maar een van die spanne het dit op so 'n manier geneem dat ons hul lusheid beperk het, ons wou 'n klaargemaakte oplossing gratis kry, en nie toets nie in die praktyk. En hulle het opgestyg.

'n Ander span het gekies om van nuuts af 'n heeltemal ander toepassing te maak, en alles het uitgewerk. Ons het nie daarop aangedring dat die toepassing presies so moet wees nie, ons het dit net nodig gehad om 'n paar elemente te bevat wat die tegniese vlak van die oplossing demonstreer: grafieke, analise, ens. Die voltooide ontwerpuitleg was ook 'n wenk.

Aangesien die ontleding van 'n lewendige Watts Battery-module by 'n hackathon te tydrowend sou wees, het ons deelnemers 'n klaargemaakte stukkie data gegee vir 'n maand geneem uit ons kliënte se regte modules (wat ons vooraf versigtig geanonimiseer het). Aangesien dit Junie was, was daar niks om seisoenale veranderinge in die ontleding in te sluit nie. Maar in die toekoms sal ons eksterne data by hulle voeg, soos seisoenale en klimaatskenmerke (vandag is dit die industriestandaard).

Ons wou nie onrealistiese verwagtinge by die deelnemers skep nie, so in die aankondiging van die hackathon het ons direk gesê: die werk sal so na as moontlik aan die veldwerk wees: raserige, vuil data, wat niemand spesiaal voorberei het nie. Maar dit het ook 'n positiewe kant gehad: in die gees van rats was ons voortdurend in kontak met die deelnemers, en het ons dadelik veranderinge aan die taak en voorwaardes van toelating aangebring (meer hieroor hieronder).

Daarbenewens het ons deelnemers toegang tot Amazon AWS gegee (so aktief dat Amazon een streek vir ons geblokkeer het, ons sal uitvind wat om daaraan te doen). Daar kan jy infrastruktuur vir die Internet van Dinge ontplooi en, gebaseer op selfs eenvoudige Amazon-sjablone, binne 'n dag 'n volwaardige oplossing skep. Maar op die ou end het absoluut almal hul eie pad gegaan en alles op hul eie tot die maksimum gedoen. Terselfdertyd het sommige daarin geslaag om die tydsbeperking te haal, ander nie. Een span, Nubble, het Yandex.cloud gebruik, iemand het dit op hul hosting geopper. Ons was selfs gereed om domeine te gee (ons het geregistreerde), maar dit was nie nuttig nie.

Om die wenners in die analitiese baan te bepaal, het ons beplan om die resultate te vergelyk, waarvoor ons numeriese statistieke voorberei het. Maar op die ou end was dit nie nodig om dit te doen nie, aangesien drie van die vier deelnemers om verskeie redes nie die finaal gehaal het nie.

Wat die huishoudelike infrastruktuur betref, het die Skolkovo Technopark hier gehelp deur ons (gratis) te voorsien van een van sy knus modulêre kamers met 'n videomuur vir aanbiedings en 'n paar kleiner kamers vir 'n ontspanningsarea en vir die organisering van spyseniering.

Analytics

Taak: 'n selfleerstelsel wat anomalieë in verbruik en modulewerking identifiseer gebaseer op beheerdata. Ons het doelbewus die bewoording so algemeen moontlik gehou sodat deelnemers saam met ons kon dink oor wat gedoen kan word op grond van die beskikbare data.

Spesifisiteit: Die meer komplekse van die twee snitte. Industriële data het 'n paar verskille van data in geslote stelsels (byvoorbeeld digitale bemarking). Hier moet jy die fisiese aard van die parameters wat jy probeer ontleed verstaan; kyk na alles as abstrakte getallereekse sal nie werk nie. Byvoorbeeld, die verspreiding van elektrisiteitsverbruik deur die dag. Dit is soos rituele: die elektriese skeermes word op weeksdae soggens aangeskakel, en die menger word oor naweke aangeskakel. Dan die essensie van die anomalieë self. En moenie vergeet dat die Watts-battery bedoel is vir persoonlike gebruik nie, so elke kliënt sal hul eie rituele hê, en een universele model sal nie werk nie. Om bekende anomalieë in data te vind is nie eers 'n taak nie; die skep van 'n stelsel wat outonoom soek na ongemerkte anomalieë is 'n ander saak. Enigiets kan immers 'n anomalie wees, insluitend die verraderlike menslike faktor. Byvoorbeeld, in ons toetsdata was daar 'n geval waar die stelsel deur die gebruiker in batterymodus gedwing is. Sonder enige rede doen gebruikers dit soms (ek sal 'n voorbehoud maak dat hierdie gebruiker die module vir ons toets en dit is om hierdie rede dat hy toegang het tot handmatige beheer van modusse; vir ander gebruikers is die beheer heeltemal outomaties). Soos dit maklik is om te voorspel, word die battery in so 'n situasie redelik aktief ontlaai, en as die vrag groot is, sal die lading eindig voordat die son opkom of 'n ander bron van energie verskyn. In sulke gevalle verwag ons om 'n soort kennisgewing te sien dat die stelselgedrag van die normale een afgewyk het. Of die persoon het weggegaan en vergeet om die oond af te skakel. Die stelsel sien dat die verbruik gewoonlik op hierdie tyd van die dag 500 watt is, maar vandag - 3,5 duisend - 'n anomalie! Soos Denis Matsuev op die vliegtuig: "Ek verstaan ​​niks van vliegtuigenjins nie, maar op pad soontoe het die enjin anders geklink."

Waarom het 'n hardeware-opstart 'n sagteware-hackathon nodig?Grafiek van 'n voorspellende model op die opensource neurale netwerk Yandex CatBoost

Wat het die maatskappy regtig nodig?: selfdiagnostiese stelsel binne die toestel, voorspellende analise, insluitend sonder netwerkinfrastruktuur (soos die praktyk toon, is nie al ons kliënte haastig om batterye aan die internet te koppel nie - vir die meeste is dit genoeg dat alles net betroubaar werk), identifikasie van anomalieë, waarvan ons nog nie weet nie, 'n selfleerstelsel sonder 'n onderwyser, groepering, neurale netwerke en die hele arsenaal van moderne analitiese metodes. Ons moet verstaan ​​dat die stelsel anders begin optree het, al weet ons nie wat presies verander het nie. By die hackathon self was dit vir ons baie belangrik om te sien dat daar ouens is wat gereed is om in industriële analise in te stap of reeds daarin is, en hulle soek nuwe areas om hul vermoëns toe te pas. Ek was eers verbaas dat daar so baie aansoekers was: dit is immers 'n baie spesifieke kombuis, maar geleidelik het almal behalwe een van die vier deelnemers uitgeval, so in 'n mate het alles in plek geval.

Hoekom is dit nie in hierdie stadium haalbaar nie?: Die hoofprobleem met data-ontginningstake is nie genoeg data nie. Daar is 'n paar dosyn Watts-batterytoestelle wat vandag regoor die wêreld werk, maar baie van hulle is nie aan die netwerk gekoppel nie, so ons data is nog nie baie uiteenlopend nie. Ons het skaars twee afwykings bymekaar geskraap - en dié het op prototipes voorgekom; industriële Watts-battery werk redelik stabiel. As ons 'n interne masjienleer-ingenieur gehad het, en ons het geweet - ja, dit kan uit hierdie data gedruk word, maar ons wil 'n beter kwaliteit voorspelling kry - sou dit een storie wees. Maar tot op hierdie stadium het ons niks met hierdie data gedoen nie. Daarbenewens sal dit 'n diep onderdompeling van die deelnemers in die besonderhede van die werking van ons produk vereis; 'n dag en 'n half is nie genoeg hiervoor nie.

Hoe het jy besluit?: Hulle het nie dadelik die presiese finale taak opgestel nie. In plaas daarvan was ons gedurende die hele 48 uur in gesprek met die deelnemers, en het dadelik uitgevind wat hulle kon kry en wat hulle nie kon kry nie. Op grond hiervan, in die gees van kompromie, is die taak afgehandel.

Wat het jy as gevolg daarvan gekry?: die wenners van die baan kon die data skoonmaak (terselfdertyd het hulle die "kenmerke" gevind van die berekening van sommige parameters wat ons self nie voorheen opgemerk het nie, aangesien ons nie van die data gebruik het om ons probleme op te los nie) , lig afwykings van die verwagte gedrag van Watts-batterymodules uit, en stel 'n voorspellende model op wat energieverbruik met 'n hoë mate van akkuraatheid kan voorspel. Ja, dit is slegs 'n haalbaarheidsfase van die ontwikkeling van 'n industriële oplossing; dan sal weke se moeitevolle tegniese werk nodig wees, maar selfs hierdie prototipe, wat direk tydens die hackathon geskep is, kan die basis vorm van 'n ware industriële oplossing, wat skaars is.

hoofgevolgtrekking: Gebaseer op die data wat ons het, is dit moontlik om voorspellende analise op te stel, ons het dit aanvaar, maar het nie die hulpbronne gehad om na te gaan nie. Die hackathon-deelnemers het ons hipotese getoets en bevestig, en ons sal voortgaan om saam met die baanwenners aan hierdie taak te werk.

Waarom het 'n hardeware-opstart 'n sagteware-hackathon nodig?Grafiek van 'n voorspellende model op die opensource neurale netwerk Facebook Prophet

Raad vir die toekoms: wanneer jy 'n taak opstel, moet jy nie net na jou produksiepadkaart kyk nie, maar ook na die belange van die deelnemers. Aangesien ons hackathon geen kontantpryse het nie, speel ons op die natuurlike nuuskierigheid van datawetenskaplikes en die begeerte om nuwe, interessante probleme op te los waarin niemand nog iets gewys het of waar hulle hulself beter as bestaande resultate kan wys nie. As jy dadelik die faktor van belang in ag neem, hoef jy nie jou fokus langs die pad te verskuif nie.

bestuur

Taak: (toepassing) wat 'n netwerk van Watts-batterymodules bestuur, met 'n persoonlike rekening, databerging in die wolk en statusmonitering.

Spesifisiteit: in hierdie snit was ons nie op soek na 'n nuwe tegniese oplossing nie; ons het natuurlik ons ​​eie verbruikerskoppelvlak. Ons het hom vir die hackathon gekies om die vermoëns van ons stelsel te demonstreer, onsself daarin te verdiep en te kyk of die gemeenskap belangstel in die onderwerp van ontwikkeling vir slimstelsels en alternatiewe energie. Ons het die mobiele toepassing as 'n opsie geposisioneer; jy kan dit doen of nie doen na jou goeddunke nie. Maar na ons mening wys dit goed hoe mense dit reggekry het om databerging in die wolk te organiseer, met toegang vanaf verskeie verskillende bronne tegelyk.

Wat het die maatskappy regtig nodig?: 'n gemeenskap van ontwikkelaars wat met sake-idees vorendag sal kom, hipoteses sal toets en werksinstrumente vir die implementering daarvan sal skep.

Hoekom is dit nie in hierdie stadium haalbaar nie?: Die markvolume is nog te klein vir die organiese vorming van so 'n gemeenskap.

Hoe het jy besluit?: As deel van 'n hackathon het ons 'n soort fisiekheidstudie gedoen om te sien of dit moontlik was om nie net kenmerke, maar volwaardige besigheidsmodelle rondom ons baie spesifieke produk vorendag te kom. Verder, sodat mense in staat is om 'n prototipe te implementeer om dit te doen, hier - ek wil niemand aanstoot gee nie - is dit nie die vlak van programmering van 'n flikkerende LED op Arduino nie (alhoewel dit met innovasies gedoen kan word) , eerder spesifieke vaardighede word hier vereis: ontwikkeling van backend- en frontend-stelsels, begrip van die beginsels van die bou van skaalbare Internet of Things-stelsels.

*Toespraak deur die wenners van die tweede snit*

Wat het jy as gevolg daarvan gekry?: twee spanne het volwaardige sake-idees vir hul werk voorgestel: een het meer op die Russiese segment gefokus, die ander op die buitelandse een. Dit wil sê, in die finale het hulle nie net vertel hoe hulle met die aansoek vorendag gekom het nie, maar in wese kom sake doen rondom Watts. Die ouens het uiteengesit hoe hulle die gebruik van Watts in verskeie sakemodelle sien, statistieke verskaf, gewys watter streke het watter probleme, watter wette word waar aangeneem, die globale tendens uiteengesit: dit is onmodies om bitcoins te myn, dit is modieus om kilowatts te myn. Hulle het doelbewus na alternatiewe energie gekom, waarvan ons baie gehou het. Die feit dat die deelnemers, benewens dit, 'n werkende tegniese oplossing kon skep, dui daarop dat hulle 'n aanvang op hul eie kan begin.

hoofgevolgtrekking: Daar is spanne wat gereed is om Watts Battery as die basis van hul sakemodel te neem, dit te ontwikkel en vennote/metgeselle van die maatskappy te word. Sommige van hulle weet selfs hoe om die MVP van 'n besigheidsidee te identifiseer en eers daaraan te werk, iets wat vandag oral in die bedryf ontbreek. Mense verstaan ​​nie wanneer om te stop, wanneer om 'n oplossing vir die mark vry te stel nie, alhoewel vroeg, maar werk. Trouens, die stadium van polering van die oplossing eindig dikwels nie, tegnies gaan die oplossing die lyn van redelike kompleksiteit oor, dit betree die mark oorlaai, dit is nie meer duidelik wat die oorspronklike idee was nie, wat klantteikening is, wat besigheidsmodelle is ingesluit. Soos in die grap oor Akunin, wat nog 'n boek geskryf het terwyl hy die vorige een vir iemand onderteken het. Maar hier is dit in sy suiwerste vorm gedoen: hier is 'n grafiek, hier is 'n teller, hier is aanwysers, hier is 'n voorspelling - dit is al, niks anders is nodig om dit uit te voer nie. Hiermee kan jy na 'n belegger gaan en geld ontvang om 'n besigheid te begin. Diegene wat hierdie balans gevind het, het as wenners uit die baan gekom.

Raad vir die toekoms: by die volgende hackathon (ons beplan dit in Maart vanjaar), miskien maak dit sin om met hardeware te eksperimenteer. Ons het ons eie hardeware-ontwikkeling (een van die voordele van Watts), ons beheer ten volle die produksie en toetsing van alles wat ons doen, maar ons het nie genoeg hulpbronne om sommige "hardeware"-hipoteses te toets nie. Dit kan heel moontlik wees dat daar in die gemeenskap van stelsel- en laevlakprogrammeerders en hardeware-ontwikkelaars diegene is wat ons hiermee sal help en in die toekoms ons vennoot op hierdie gebied sal word.

Mense

By die hackathon het ons van diegene verwag wat hulself in 'n nuwe veld wil probeer (byvoorbeeld gegradueerdes van verskeie programmeringskole) eerder as diegene wat in hierdie soort ontwikkeling spesialiseer. Maar tog het ons verwag dat hulle voor die hackathon 'n bietjie voorbereidende werk sou doen, lees oor hoe energieverbruik oor die algemeen voorspel word en hoe Internet of Things-stelsels werk. Sodat almal kom nie net vir die pret, op soek na interessante data en take, maar ook met 'n voorlopige onderdompeling in die vakgebied. Van ons kant verstaan ​​ons dat dit nodig is om vooraf die beskikbare data, hul beskrywing en meer presiese vereistes vir die resultaat te publiseer, API-modules te publiseer, ens.

Almal het ongeveer dieselfde tegnologiese vlak gehad, plus of minus dieselfde vermoëns. Teen hierdie agtergrond was die vlak van harmonie nie die laaste faktor nie. ’n Aantal spanne het nie geskiet nie omdat hulle hulself nie duidelik in werksareas kon verdeel nie. Daar was ook dié waarin een persoon al die ontwikkeling gedoen het, die res was besig met die voorbereiding van die aanbieding, in ander het iemand take gekry wat hulle doen, seker vir die eerste keer in hul lewe.

Die meeste van die deelnemers was jonk, dit beteken nie dat daar geen sterk masjienleer-ingenieurs en ontwikkelaars onder hulle was nie. Die meeste het in spanne gekom; daar was feitlik geen individue nie. Almal het gedroom om te wen, iemand wou in die toekoms werk kry, sowat 20% het al een gekry, ek dink hierdie syfer sal groei.

Ons het nie genoeg hardeware geeks gehad nie, maar ons hoop om dit by die tweede hackathon op te maak.

Hackathon-vordering

Soos ek hierbo geskryf het, was ons vir die meeste van die 48 uur van die hackathon by die deelnemers en, met die monitering van hul suksesse by kontrolepunte, het ons probeer om die taak en voorwaardes vir die aanvaarding van die eerste, analitiese baan aan te pas sodat, aan die een kant, die deelnemers kon dit in die oorblywende tyd voltooi, en aan die ander kant was dit vir ons van belang.

Die laaste verduideliking van die taak is iewers rondom die laaste kontrolepunt, Saterdagmiddag (die finaal was geskeduleer vir Sondagaand) gemaak. Ons het alles 'n bietjie meer vereenvoudig: ons het die vereiste verwyder om die model op nuwe data te herbereken, en die data gelaat waarmee die spanne reeds gewerk het. Die vergelyking van metrieke het ons niks meer gegee nie, hulle het reeds klaargemaakte resultate gehad op grond van die beskikbare data, en teen die tweede dag was die ouens reeds moeg. Daarom het ons besluit om hulle minder te martel.

Drie uit vier deelnemers het egter nie die eindronde gehaal nie. Die een span het reeds aan die begin besef dat hulle meer belangstel in die spoor van ons kollegas, die ander, net voor die eindstryd, het besef dat hulle tydens die verwerkingsproses die nodige data voor die tyd uitgefiltreer het en geweier het om hul werk aan te bied.

Die "21 (Wet Hair Effect)"-span het tot op die einde aan albei ons bane deelgeneem. Hulle wou alles gelyktydig dek: masjienleer, ontwikkeling, toepassing en webwerf. Totdat ons hulle op die laaste oomblik met onttrekking gedreig het, het hulle geglo dat hulle alles betyds doen, hoewel dit reeds by die tweede kontrolepunt duidelik was dat hulle met die belangrikste ding - masjienleer - nie noemenswaardige vordering kon maak nie: hulle het oor die algemeen die die tweede blok, maar kon nie voorspel elektrisiteitsverbruik was nie gereed nie. As gevolg hiervan, toe ons die minimum taak bepaal het om vir die eerste te kwalifiseer, het hulle steeds die tweede baan gekies.

Fit-predict het 'n gebalanseerde samestelling gehad wat aangepas is vir data-analise, sodat hulle alles kon oorkom. Dit was opvallend dat die ouens daarin belang gestel het om regte industriële data te "raak". Hulle het dadelik gekonsentreer op die belangrikste ding: ontleding, skoonmaak van die data, hantering van elke anomalie. Die feit dat hulle tydens die hackathon 'n werkende model kon bou, is 'n groot prestasie. In die werkpraktyk neem dit gewoonlik weke: terwyl die data skoongemaak word, terwyl hulle daarin delf. Daarom sal ons beslis met hulle saamwerk.

In die tweede baan (bestuur) het ons verwag almal moet alles in 'n halwe dag doen en kom vra om die taak moeiliker te maak. In die praktyk het ons skaars tyd gehad om die basiese taak te voltooi. Ons het aan JS en Python gewerk, wat die huidige stand van die bedryf weerspieël.

Ook hier is die resultate behaal deur goed gekoördineerde spanne waarin die arbeidsverdeling gebou is, dit was duidelik wie wat doen.

Die derde span, FSociety, het blykbaar 'n oplossing gehad, maar op die ou end het hulle besluit om nie hul ontwikkeling te wys nie, hulle het gesê dat hulle dit nie as werk beskou het nie. Ons respekteer dit en het nie gestry nie.

Die wenner was die span “Strippers from Baku”, wat homself kon keer, nie om “snuisterye” aan te jaag nie, maar om ’n MVP te skep wat nie skaam is om te wys nie en wat duidelik is dat dit verder ontwikkel en afgeskaal kan word. Ons het dadelik vir hulle gesê ons stel nie te veel belang in bykomende geleenthede nie. As hulle registrasie via QR-kode, gesigsherkenning wil hê, laat hulle eers grafieke in die toepassing maak, en neem dan die opsioneles aan.

In hierdie snit het "Wet Hair" met selfvertroue die finaal betree, en ons het verdere samewerking met hulle en "Hustlers" bespreek. Laasgenoemde het ons reeds in die nuwe jaar ontmoet.

Ek hoop alles werk uit, en ons sien uit daarna om almal by die tweede hackathon in Maart te sien!

Bron: will.com

Voeg 'n opmerking