uppdateras med ojämna mellanrum

1 juni 2006

Inspiration!?

Jag behöver ny inspiration! Jag mår dåligt när jag inte har något projekt på gång hemma. Jag måste hela tiden koda på något, annars känns det som att tiden är bortkastad, dvs de två-tre timmarna på kvällen då jag spenderar tid framför datorn.
L-system editorn är nästan klar, men jag har tappat intresset. Just nu har jag fått en liten fascination för talserier, factorials, prime factorials, fibonacci, primtal. Men vad kan man göra med dom? 'Folk' har redan nedlagt åtskilliga tusentals timmar på att skapa algoritmer som räknar ut ovanstående serier i astronomiska storlekar med en blixtrande fart.

En annan grej jag har funderat på är ett automatiserat byggsystem. Dvs ett system där du plockar ihop komponenter som kommunicerar med varandra och gör en tung uppgift åt dig utan att du behöver lägga någon energi på det.

Jag skulle ha nytta av ett dylikt system i mina vardagliga arbetsuppgifter. T ex såhär går det till när vi skall bygga (kompilera, distribuera) en ny version av applikationen som testarna ska sätta tänderna i:

  1. Uppdatera koden från versionshanteringssystemet (SVN)

  2. Checka in all kod i versionshanteringssystemet (SVN)

  3. Lösa ev. konflikter som uppstår vid incheckning av kod

  4. Öka versionsnumret/buildnumret

  5. Dra igång kompilatorn

  6. Vänta 10-30 minuter på kompilatorn beroende på hur många ändringar det är

    1. Meanwhile:
    2. Förbereda plats på nätverket dit versionen ska distribueras

    3. Hämta ut senaste ändringarna till de databaser och datafiler som används av applikationen


  7. Sätta en label på aktuellt revisionsnummer i versionshanteringssystemet så att man kan gå tillbaka till denna version om det mot förmodan skulle behövas.

  8. Lägga ut den rykande färska releasebyggningen på nätverket


Denna process gör vi nästan dagligen, och varje gång jag gör det så tänker jag att det här måste automatiseras. Dels spar jag tid jag kan lägga på andra viktigare saker, och dels eliminerar jag den mänskliga faktorn. T ex är det ofta som det glöms sätta en label i versionshanteringssystemet, och det är inte kul att upptäcka det 3 månader efter byggningen då kunden har upptäckt en bugg vi måste rätta. Om det inte står någon notis vid revisionsnumret så måste vi leka detektiver i en halv dag tills vi lyckas luska ut vilken revision som gick till kunden.

Det finns redan färdiga byggsystem som är open-source och helt gratis att använda, men det vore kul att göra ett dylikt system själv, bara för skoj skull.
Det jag hade tänkt var att allt ska vara plugin-baserat, så att du kan använda detta system för att utföra i princip vilka uppgifter som helst. I och för sig finns det ju t o m inbyggt i både Windows (schemaläggaren) och Unix/Linux (crontab), men att använda dessa lösningar skulle leda till en jäkla massa .bat-filer och shellscript som skulle ge en dålig överblick över processen.

Jag hade tänkt att varje plugin har X antal ingångar och låt säga 3 st utgångar. Utgångarna skulle kunna vara "Sucess", "Error" eller "Warning". Vid fel så måste användaren rycka in och hjälpa till på traven, t ex om SVN-modulen rapporterar att det blev konflikt när den skulle commit:a koden, då måste man diffa in sina ändringar. Det är dock ganska ovanligt, oftast merge:as koden utan konflikter, men har två programmerare varit inne i samma funktion så uppstår dessa konflikter.
Givetvis kommer det finnas ett API och ett litet SDK så att folk kan göra egna moduler.

Sedan har man en grafisk editor som populerar alla plugins i en lista där du sedan plockar ut plugins och matar dom med de data de nu behöver, t ex sökvägar, parametrar till kompilatorn, hostname till SVN-servern, etc. Varför grafiskt? Jo, vi lever i år 2006 och det ger en bra överblick!
Sedan drar du bara linjer mellan komponenterna, och sparar ditt arbete till fil. Sedan skulle man kunna tänka sig att använda crontab eller Schemaläggaren för att schemalägga körning av dessa processer. Varje natt klockan 02.00 skall ny version byggas, varje morgon finns det en ny version som testarna kan börja testa utan att vi utvecklare behöver bry oss. Allt är serverat.

Det kanske t o m skulle kunna gå att sälja till andra företag?

Oj, vad mycket text det blev. Med reservation för stavfel och andra fel. Detta är skrivet medan jag väntade på en byggning.

3 kommentarer:

halfbreed sa...

Ja, om jag hade fattat något allas av vad du skrivit om...men det låter som en genialisk idé som du säkerligen kan bli miljonär på?! Go for it

halfbreed sa...

Också hatar jag stavfel. "ALLS" skulle det vara!
När pengarna börjar droppa in så kan du anställa mig att koka kaffe...eller något!

Uffe Ess sa...

När jag läst detta så kom jag och tänka på filmen Äppelkriget.

En av de tre bröderna var ju rationaliseringsexpert.

Han var så bra att han rationaliserade bort sig själv.

Men å andra sidan, Ju enklare destå bättre. Bara man är på rätt sida, så att säga...

Om mig

Sundsvall, Sweden