MoveCounter - min första iPhone-app

Puh. Har precis lyckats ladda upp mitt första iPhone-program till App Store. Nu är det bara att vänta de cirka två veckor som folk brukar säga att det tar att få den godkänd. Och så får man väl hålla tummarna för att programmet blir godkänt, man har ju läst ganska många historier om konstiga avslag. Det känns hursomhelst väldigt bra att ha fått iväg detta första program. Nu har jag lärt mig hela processen för iPhone-utveckling - från idé till färdig submission till App Store.

MoveCounter är ett program som räknar högt när du tränar. Exempelvis när du gör armhävningar eller situps. Du lägger bara din iPhone i fickan och via accelerometern känner programmet av varje “rep”. Det ska väl erkännas att programmet inte är polerat, och algoritmen som räknar reps är kanske inte heller helt perfekt - men den funkar hyfsat. Min tanke med detta projekt var mest att lära mig processen för iPhone-utveckling inför framtida mer seriösa projekt.

Om man kollar i min pomodoro-logg så har detta projekt, från idé till ivägskickning till App Store, tagit exakt 47 pomodoros. En pomodoro är 25 minuters effektivt arbete, så det blir alltså ungefär 20 timmar. Då ska man ha i åtanke att ganska stor del av tiden gått åt till att lära sig förstå hur accelerometern funkar och hur man utvecklar en smart algoritm för den (ca 5 timmar), massor av krångel med certifikat (ca 5 timmar), och rent allmänt att jag inte kunde något om XCode sen innan. Så jag är ganska säker på att jag skulle kunna utveckla ett ungefär lika komplext program på en dag nästa gång jag försöker mig på det, vilket är skoj! En dag för att gå från idé till färdig produkt!

Själva utvecklarupplevelsen i XCode är fantastiskt trevlig måste jag säga. IDE:n är kompakt, snygg och är inte “ivägen” som jag ofta känner i andra IDE-er. Det är otroligt enkelt att rita upp sitt GUI och koppla alla widgets till koden. Även debugging fungerar riktigt smidigt (man glömmer nästan att det är C man kodar :). Man kan enkelt provköra sitt program på iPhonen med en USB-kabel inkopplad, och om det skulle hänga sig kan man genast se vad debuggern spottat ut sig.

Det mest negativa i hela utvecklingsprocessen är utan tvekan certifikathanteringen. Det är otroligt många jobbiga och tråkiga steg vad gäller hanteringen av nycklar och certifikat. Allt detta känns inte alls genomtänkt, utan man blir mest förbannad. Det hela kulminerar när man ska skicka in själva binärfilen till App Store, och den säger “denna accepterar vi inte, det är något fel på den”. Tack för det otroligt specifika meddelandet! När man googlar runt hittar man massor av folk som har haft samma frustrerande problem. Dock är det bara att gå igenom Apples detaljerade instruktioner (typ 100 action points känns det som) för hur man bygger sin applikation för app store, och antagligen har man gjort en liten liten miss som gör att den inte godkänns vid uppladdning. En sådan liten miss hade i alla fall jag gjort.

Så nu väntar jag med spänning på om min applikation ska bli godkänd. En del i detta experiment är att ta reda på hur bra en medelmåttig applikation som jag sätter ut för $1 säljer. Jag har alltså inte släppt applikationen gratis, utan vill se hur bra man kan förvänta sig att en medelmåttig applikation med ett lågt pris säljer. När jag sett det några veckor kommer jag antagligen att sänka priset till gratis och lägga ut källkoden här. Dags att spendera lite tid AFK nu känner jag, over and out!

Pomodoro-tekniken

Med internet, och allt vad det innebär i distraheringsväg, så är det lätt att börja prokrastinera när man har viktiga arbetsuppgifter :) När man kör fast är det lätt hänt att man bara ska “kolla mailen lite snabbt”. Eller Twitter, Facebook, Youtube, RSS-strömmar, aktieportföljen, nyheterna, Wikipedia osv. Om man som jag har dålig självdisciplin så händer det att det blir för mycket meningslöst slösurfande om dagarna och för lite produktivt arbete. Jag tror dock jag har hittat en bra lösning på problemet.

En tidigare idé jag hade för att döda proskrastineringsbeteenden var att inte ha internetuppkoppling på min primära arbetsdator. Att istället ha en “internet-dator” som står i ett annat rum, där jag använder internet när jag har behov av det. Detta tror jag är en kanonbra lösning för folk som inte ständigt behöver googla eller kolla upp saker för att komma vidare i sitt arbete. Att googla och kolla upp saker behöver man dock göra non-stop som programmerare. Så denna lösning funkade inte riktigt för mig.

För ett par månader sedan hörde jag för första gången talas om en metod som kallas The Pomodoro Technique. Det är en mycket simpel idé som jag under några dagar har testat. Och det har fungerat kanonbra! Wow vilken produktivitet jag har kommit upp i! Dessutom leder den till att man har sjukt bra dokumentation vad man gjort med sin arbetstid, och exakt hur lång tid olika moment har tagit.

Kortfattat så går Pomodoro-tekniken ut på att man jobbar i korta perioder på 25 minuter, och då verkligen fokuserar och jobbar stenhårt på den uppgift man för tillfället har som högsta prioritet. Efter dessa 25 minuter tar man en femminuters paus (då kan man “belöna” sig med att kolla mail, twitter osv), sedan börjar nästa Pomodoro. En pomodoro är alltså 30 minuter lång, och namnet kommer av det italienska ordet för tomat (efter de där kökstidtagarna som ser ut som tomater). Jag föredrar dock denna trevliga lilla menubar-app för Mac OS, alternativt timern på iPhonen.

Så om du känner att din produktivitet framför datorn behöver en boost, kolla in Pomodoro-tekniken! Hemsidan kan varmt rekommenderas, där finns all info man behöver - till och med en gratis nedladdningsbar bok som täcker precis allt.

För er som undrar hur det går med min iPhone-programmering så är svaret att det går skitbra :) Håll ut en eller två dagar till så kommer jag med en uppdatering om det.

Att komma igång med iPhone-programmering

Jag fick leta en bra stund innan jag hittade en bra hands-on-guide för att ta de första stapplande stegen med XCode, objective C och Cocoa Touch. Man behöver liksom bara lära sig de absoluta grunderna. Som hur man kopplar GUI-element till kod, och vilka konventioner som är bra att använda där. När man väl förstått det kan man på egen hand gradvis lära sig resten med hjälp av Google. Till slut hittade jag denna kurs som ges på Stanford, och även gratis via Internet. Föreläsningarna verkar dock  bara kunna ses via iTunes, i något som de kallar iTunes U. Tanken är väl att det ska underlätta för folk som vill se kursen via podcasts, men jag tycker bara det är sjukt jobbigt att behöva gå via iTunes för att se en video. Aja. De går i alla fall i en screencast igenom precis hur man kommer igång med de absoluta grunderna.

Efter att jag hade sett den första föreläsningen i den kursen var jag snabbt igång att bygga saker. Jag hade en idé som jag ville förverkliga som första projekt, och den idén var ett program som heter Net Worth. I programmet matar man in vilka aktier och fonder man har, hur många man har av varje, samt hur mycket pengar man har på olika bankkonton och räntan på dessa. Sedan håller programmet reda på hur mycket pengar man har sammanlagt, och uppdaterar självklart via internet aktiernas värde. Efter att ha letat efter bra börs-APIer ett bra tag så insåg jag att jag nog inte skulle skriva detta program trots allt. De två APIer som finns är Yahoo’s och Googles. Problemet är bara att Yahoo inte har någon som helst officiell dokumentation av API:et eller ens en sida med användarvillkor. Dessutom verkar det inte gå att få ut valuta på de aktier man efterfrågar värdet på, vilket lite sänker hela idén. Via Google går det att få ut börskurser, men då måste man gå en fulhack-väg via Google docs, och någonting säger mig att användande av deras API i externa applikationer inte är OK.

Jag vet att vissa andra iPhone-program använder Yahoo’s API, men det känns minst sagt osäkert att göra med tanke på att det antagligen inte är tillåtet för Yahoo enligt deras avtal med börserna, samt att många rapporterar att URLen till API:et ändrats många gånger. Jag vill helt enkelt inte ta risken att ett iPhone-program slutar funka helt plötsligt. Jag vill bygga något som känns mer stabilt.

Har funderat på vad man då ska bygga som ett första seriöst projekt, men fortfarande inte kommit på något som känns tillräckligt unikt och som många skulle vilja ladda ner. Får fundera lite till :) Kom gärna med tips.

Kreativitet och mätthet

Jag har ofta funderat över varför jag är som mest kreativ och produktiv sent på kvällar och nätter. Då kommer man in i något slags magiskt tillstånd då man känner stark arbetsglädje och motivation att göra saker. Efter fortsatta empiriska studier så har jag en teori om vad detta beror på. Jag har upptäckt att jag är som mest kreativ och produktiv när jag är lite småhungrig. När det var 4-5 timmar sedan jag åt senast, då är jag på topp! Och sent på kvällen är det ju lätt att glömma bort att äta och bara köra på. Vad tror ni om detta?

Hursomhelst så ska jag forska vidare på området mätthetsgrad vs. produktivitet, för det är ju en inte helt oviktig fråga hur man blir som mest produktiv och hur man känner mest arbetsglädje.

iPhone-utveckling

Sedan Apple släppte sitt iPhone SDK för att skapa native-program har jag velat utveckla för iPhonen. Dock har det aldrig blivit av. Nu är det dags! Lagom till att de nya grymma funktionerna i iPhone OS 3.0 släpps så ska jag bli en mästare på iPhone-programmering är det tänkt :) Det som lockar är att jag älskar iPhonen som plattform, jag gillar maskinnära programmering (vilket jag hoppas att objective C ändå är), och jag har hört en del jaw-dropping framgångshistorier om hur mycket pengar man kan tjäna om man får till en schysst App.

Jag har aldrig tidigare programmerat för Mac OS eller iPhone. Jag har programmerat ytterst lite objective C, även om jag kan konceptet väldigt bra tack vare att jag har programmerat en del Cappuccino. Så jag tänker köra ett första, ganska enkelt projekt nu under veckan som kommer. Målet är att göra en enkel applikation och submitta den för approval till App Store. Vad jag tänker skriva för applikation får ni veta om ett par dagar, då jag kanske klistrar lite screenshots och kommentarer mina erfarenheter av applikationsutvecklingen så långt.

Jag har värmt upp genom att installera senaste XCode med hela iPhone-faderullan, och så har jag fixat nyckel/certifikat som jag måste signera min applikation med (detta certifikat får man pröjsa runt 800 spänn för, och det är alltså ett krav för att kunna släppa saker till AppStore). Jag har även gjort en hello world-applikation och provkört den på min iPhone. Nästa steg för mig är att läsa ett par tutorials för att komma igång, och sedan förverkliga min programidé!

2009-04-05, Permalink, Etiketter: , , ,

Wordpress

Sen jag startade min blogg har den legat på Blogger. Blogger är en helt okej tjänst som funkar för de flesta bloggare. Häromdagen kände jag dock att jag ville ge min blogg en mer personlig och unik design, eftersom de teman som finns färdiga för Blogger alla är ganska fula enligt min mening. När jag laddade ner en mall för att börja editera den fick jag dock en smärre chock över hur mycket jobbig kod jag skulle behöva ändra - mallen såg att vara gjord i Frontpage 98!

Så jag bestämde mig för att prova Wordpress istället. Sagt och gjort. Nu sitter jag här med min nya Wordpress-blogg, som jag dessutom hostar på en egen server. Sjukt nöjd! Man har mycket mer makt att ändra allt in i minsta detalj, man kan ju till och med editera källkoden om det är något man inte är nöjd med! Och kontrollpanelen för bloggen är otroligt mycket mer proffsig och kraftfull än Bloggers. Orkar nog inte “rädda” mina gamla Blogger-inlägg, utan det blir en fräsch start här.

2009-04-04, Permalink, Etiketter: ,