Closed mosbth closed 6 years ago
Tycker det kan vara viktigt att vi tar in backend/nodejs server med express, så de inte bara får se fördelarna med JavaScript frontend utveckling, men även några av nackdelarna såsom dubbla datarepresentationer, stora mängder duplicerad kod, stora datamängder javascript kod i klienten, istället för en HTML sida som genereras på servern osv.
Jag tycker samtidig att det är viktigt att studenterna lär sig ett frontend ramverk när det nu är så bra att ha på CV't och att de blir klart mer anställningsbara.
Sen känns det som vi behöver ta ett beslut ungefär 2:a januari om vi ska hinna lära [INSERT NAME OF FRAMEWORK] tillräckligt bra för att kunna utveckla och undervisa i det 13 veckor senare.
Kanske att man gör kursen mer lik oophp där man jobbar i samma "miljö" hela tiden och lägger till nya istället för som det var förra året en del hattande i små olika projekt där mycket av tiden gick åt repetition.
Någon liten backend känns inte orimligt. Express eller eventuellt någon produkt som har fokus i att snabbt sätta upp JSON-baserade server tjänster.
Men, jag är rädd för att (för mycket) fokus på backend minskar möjlighet att fokusera på frontend.
Jag strävar efter lite mer fokus på frontend, GUI, GUI-moduler, användargränssnitt och ser webapp som den naturliga kursen för detta.
Backend-kurser (som vi kan jobba vidare med) finns i linux (inget ramverk), ramverk2 (express + andra ramverk) och dbjs/dataweb (express). dbjs/dataweb (fokus databas/backend) ingår ännu inte i programmet, men ambitionen är att göra dem en del av programmet. De kan då eventuellt bli en naturlig fortsättning på linux, eller ersätta js-delen i linux och kanske en naturlig förkunskap till webapp.
Sammantaget har vi gott om kurser som fokuserar på serversidan, men möjligen inte så mycket fokus på klientsidan/användargränssnitt (som jag kan önska). Vi behöver också någon kurs som kan "lablas" mobil med tydliga kopplingar till mobilapp och native kopplingar.
Några nyckelord jag vill fokusera på:
ajax, fetch, json, rest
spa, (mithril), jsx
gui/app mobil (hybrid, men med native kopplingar mot mobilens resurser)
gui lib/komponenter, web components
react native låter intressant, men jag kan det för lite och vad det kan innebära på serversidan
osäker på hur vi bör göra med cordova, vara kvar eller släppa det, eventuellt till förmån för react native eller liknande.
Jag antar det är en avvägning om vi vinner något på att ta in serversidan och isåfall hur mycket och på vilket sätt. Jag har inga problem att se kursen renodlad klient och ingen server-del.
Att bygga vidare på samma projekt/applikationsidé genom hela kursen låter vettigt. Det kan ge ett bra flöde genom kursen och man kan jobba och finslipa på sin applikation i kmom efter kmom. En tanke kan vara att köra på det spåret och se hur det skulle kunna se ut.
Det känns bra om vi kan hitta ett rent fokus i kursen, något som kan ge ett extra djup (man jobbar med samma tekniker men mer). Finns det tekniker vi kan undvika så låter det bra. Renodla, rensa, i den mån det behövs.
En annan sak, närrelaterad, är att jag funderar över kursen linux och dess position i flödet som kurs innan webapp. Jag leker med tanken att byta den mot dataweb/dbjs (node, express + databas). Det hade givit en helt annan bas för serverprogrammering med node.js, inför kursen webapp. Det är något som behöver funderas på. Jag har nyligen börjat tänka i sådana banor. En konsekvens av ett sådant val hade blivit att en ny renodlad linux-kurs hade behövts, någon som bygger vidare på kmom01-03 i samma anda, och inte tar spåret till nuvarande kmom04-06. Det kans ses som en indikation att försöka hålla webapp ren mot klientsidan.
Låter som en vettig utveckling av våra kurser, då linux just nu till stor del inte är en kurs om linux och vi fick många kommentarer om detta förra året. Kanske dra linux mer åt devops, då det verkade som att många var förvånade över att det försvann bort.
Om vi på sikt skapar en JavaSccript backend kurs likt dbjs tycker jag det är helt rätt att fokusera enbart på frontend i webapp. Frågan är ju främst hur vi få plats med en kurs till...
Valbar linx + devops sista vårterminen för 120p och motsvarande för 180p?
En stor fördel med linux kursen är bash-labbarna där studenterna faktisk lär sig att använda terminalen på riktigt, detta ger en stor fördel till senare, men annars borde den helt klart ligga som en av slut kurserna. Kanske går att få in grundläggande terminal användning på ett annat sätt i kurserna under första hösten.
Vilket javascript framwork är en intressant fråga. Egentligen känns det inte som om det spelar någon större roll vilket men det är potentiellt svårt att kommunicera varför det är så. En nackdel jag personligen upplevde med mithril var bristen "utbildningsmaterial" och exempelkod utanför kursen och https://mithril.js.org/. Å andra sidan tvingades jag därigenom till mer lek och experiment med ramverket för att lära mig det.
React är ju annars bra att ha på CV:t förmodligen några år framöver och problemet med material är snarast det omvända mot mithril. Fetch och jsx skulle komma in naturligt. Om man börjar på en nivå som Kent Dodds gör i sin egghead serie är studenterna snabbt igång och tekniker kan kopplas tillbaka mot javascript1.
Att lära sig grunderna i bash borde absolut ligga tidigt. Går det att trycka in i python?
Går hemma och fyller diskmaskinen och så börjar hjärnan jobba på högvarv.
Ideer til webapp fokus baserade lite på vad jag jobbade mest med och det jag tror många studenter kommer jobba med. Order/affärssystem med olika klienter beroende på vem som är slutanvändare. Lagerarbetaren får upp packlistor i en app, ekonomiansvarig får upp fakturor att skicka ut (eventuellt i desktop och mobil miljö), beställaren får uppdateringar på status i en annan app och så vidare.
Kopplas också mot det som görs simultant i oophp där det är webbshop. Under min karriär utanför högskolan var webbshop och affärssystem ungefär 90%, så kan vara bra att ge studenterna en titt in bak om skalet.
Gillade denna artikel av tidigare utvecklare på Github: https://zachholman.com/posts/javacript-haters
Kanske mer att vi kopplar bash-grunden till labbmiljön och att https://dbwebb.se/kunskap/20-steg-for-att-komma-i-gang-med-unix-och-terminalen blir obligatorisk på ett helt annat sätt än vad den är i dag.
Jaha då tror jag det blir egghead och react när Melker är på förskolan imorgon ;)
Fler tanker såhär på dag 1 efter pappaledigheten.
Tror det kan bli bra om vi ser till att ha ett GUI spår där vi även har inslag av design för små enheter. Inputfältens typ, storlek på typsnitt för läsbarhet, storlek på bilder för snabbare laddning, lazyload osv.
Vad jag minns finns det inte mycket accessibility i någon annan kurs vi har? Rätta mig om jag har fel. Hade nog varit bra som de medvetna och ansvariga utbildare vi är, att vi utbildar för färgblindhet, nedsatt syn, nedsatta motoriska förmågor och så vidare?
Accessability nämns (knappt) i design-kursen. Både Usability och Accessability är relevant webapp-kursen och eftersom det är en av få kurser med fokus på GUI så lämpar det sig där. Det hade skapat en tydligare röd tråd mellan design-webapp ur den aspekten.
Så här i slutet på ramverk2-kursen, hackandes på projektet, och egentligen för första gången uppleva det som Emil skrev om:
så de inte bara får se fördelarna med JavaScript frontend utveckling, men även några av nackdelarna såsom dubbla datarepresentationer, stora mängder duplicerad kod, stora datamängder javascript kod i klienten, istället för en HTML sida som genereras på servern osv.
så går mina tankar lite såhär:
Att lyfta bort docker från ramverk2 är inget jag direkt nappar på, däremot kan vi förenkla docker-resan genom kursen, nu när allt finns på plats så går det enklare att dra en tydlig röd tråd genom kursen.
Om valfriheten i ramverk2 skall styras upp, rörande klienten, låter jag vara osagt. Jag passar tills vidare. Nu innehåller ju kursen stora delar valfrihet rörande teknikval av klient.
Hela grunden för SPA-tänk (och JSON, REST) bör finnas i webapp. Det finns flera delar vi kan täcka bättre. Det som JWT hanterar är en del jag gärna hade täckt.
Att erbjuda en JSON-server för CRUD prototyping, REM-ish, känns relevant. Gärna en som de kan köra lokalt (Node.js), men jag kan också tänka mig en egen rem.dbwebb.se som stöd/test/labbmiljö under kursen. En egen rem-server kan vi fylla med diverse JSON-content som kan användas i kursen. Där hade vi även kunnat implementera JWT för dem att labba på.
Om vi inte får in JWT-ish i webapp så känns det som det borde täckas i ramverk[1,2].
I webapp ser jag gärna att SPA-kunnandet byggs på steg för steg, eventuellt först AJAX/fetch, sen mithril-ish, JSX, sen eventuellt större ramverk (REACT native, eller inte). Men, det får slutligen bero av hur kursens flöde/fokus blir.
"Härligt" att server/klient problematiken kommer fram i ramverk2. Borde kunna ge några bra reflektioner i redovisningstexten för projektet nu när studenterna har 1,5 års erfarenhet från simpel html hela vägen till avancerade grejer.
Jag har mest för egen skull (lära mig express och uppdatera mig på node) gjort embryot till en liten POC för ett order_api där man med hjälp av en api-nyckel styr vilken data man kan komma åt. https://github.com/emilfolino/order_api ev något vi kan använda om vi vill gå åt det hållet.
Har precis skrivit ner JWT på min skiss över webapp version ny. Tycker att JWT har en nästan given plats i webapp kursen.
Tycker att vi försöker ta vid ungefär där js1 släptes, borde ge studenterna en bättre utgångspunkt för att förstå varför vi går från vanillaJS till ett ramverk. Känns som vi aldrig svarade på frågorna "Varför behövs ett ramverk?" och "Vilka fördelar och nackdelar ger ett ramverk?" i förra versionen. Var mer bara här är ett ramverk kör på nu och sen kan du ju skapa en android app nu när du ändå håller på.
@litemerafrukt gick du kursen våren 2017? Är det samma känsla du har?
@emilfolino Jag gick webbapp 2016. Övergången från jquery mobile till mithril var för mig en ögonöppnare.
Tänker ni att studenterna börjar med att göra spa i vanilla js och sedan introducera ett ramverk? Eller mer gradvis med script-inkluderande och sedan fortsätta mot saker som vue-cli eller create-react-app?
Det börjar låta som en kurs jag skulle vilja gå om. Behövs det betatestare och rättare så anmäler jag mig frivillig :)
just nu är tanken att börja där js1 slutade och visa i en "mos-monster-övning"TM hur man bygger ett SPA och sakta men säkert få in [INSERT_NAME_OF_FRAMEWORK].
Sen med en rejäl dos GUI och a11y, känns som en naturlig kurs för detta.
Det behövs nog definitivt betatestare :)
Apropå native/Cordova.
Det jag vill uppnå (ursprungsvis) är att man bekantar sig med mobilen som "target-plattform" delvis genom att lära sig använda några mobilspecifika resurser (kamera, gps, annat). Och UX saker.
Tekniken får baseras på HTML, CSS, JavaScript och diverse befintliga API:er.
Jag vill ha en plattformsoberoende teknik, en och samma app till många olika devices med olika os.
Jag vill gå steget längre än en webapp, jag vill att man skall kunna "installera" på mobilen så appen ser ut att vara en native app.
Cordova känns rätt. React native är eventuellt ett alternativ. Jag har inte följt med vad som händer mer än det.
Allt eftersom gränsen suddas ut mellan mobil/desktop etc kan arbetet i W3C Mobile Web Applications vara värt att beakta. Relevant i kursen kan tex vara Mobile Web Application Best Practices
Man kan argumentera att det vi gör går att göra utan mobilen. Att nå externa resurser (kamera, gps) via API:er gäller även en vanlig dator. Ett sådant fokus kategoriserar jag under desktop-spa och är inte mitt primära fokus med kursen webapp, så jag håller krav i mobilen och mobil-spa.
Mobil-SPA webapplikation, installerad som en native app på mobilen, byggd med HTML, CSS (-ish) och JavaScript (-ish) jobbandes mot REST tjänster och JSON data. Ramverk är ej prio, de får komma i senare kurser.
Osäker på om vi nämner Progressive Web App i kursmaterialet, ytterligare ett relevant koncept att bevaka.
Jag tyckte det var lärorikt att jobba mot andras API, så som vi gjorde med Nobel-priset och valfria API:er i kmom02. Att ta reda på och veta hur man ska ställa frågor och hantera det svar som kommer tillbaka tyckte jag överlag var en riktigt bra övning.
Stänger ner detta issue så det inte krockar med kursutveckling lp4.
Allmänt
Mithril versus React (https://reactjs.org/), JSX
Jobba GUI moduler, egna moduler
Vue.js https://vuejs.org/
Polymer https://www.polymer-project.org/
JSON
GraphQL http://facebook.github.io/graphql/October2016/
redux https://redux.js.org/
Shadow DOM
Virtual DOM
Grafisk GUI (desktop men fokus mobil), mer GUI, layout GUI, usability
Hur hantera emulatorer?
Integrera REMserver med övningar, uppgifter
Fetch client/server, begreppet isomorphoc
AJAX
jq till lab
Fler labbar?
XPath (JSON som frågespråk i klient/server)
remserver.dbwebb.se?
Egen server? express backend?
lodash,
yarn (replace npm)
phonegap/cordova versus native versus react native
less versus sass/scss versus bootstrap
Typescript verus JS versus ELM
@litemerafrukt exempel på json & ramda
Se kursen som en mer tydlig fortsättning på js1 och linux (beroende av hur mycker server-saker vi skall göra).
Noterar att flera jobbar vidare på Gomoku i ramverk2. (finns även i linux)
Bättre RESTklilent, likt https://insomnia.rest/