iProgrammering

Det har vært interessant å følge Apples utvikling de siste 11 årene siden de slapp første versjon av Mac OS X. I 2001 ble versjon 10 (derav X) sluppet, og denne hadde en rekke forandringer fra tidligere versjoner. Apple opplevde en nedtur på 90-tallet og ønsket på et tidspunkt å kjøpe inn eksternt operativsystem framfor å videreutvikle sitte eget selv. Mange alternativer ble vurdert, men istedet for å velge for eksempel Suns unix-baserte Solaris, eller Windows NT (som faktisk ble vurdert ifølge Walter Isaacsons nye biografi om Steve Jobs) valgte Apple å kjøpe opp NeXT og deres NEXTSTEP operativsystem i 1996. De forskjellige Mac OSX versjonene, og senere mobil-varianten iOS, har en arkitektur bygget på BSD-Unix med et overbygg av proprietære teknologier. De siste årene har Apple åpnet og lagt til rette for masseutvikling fra almuen. Spesielt har en ny forretningsmodell hvor utviklere selv kan distribuere programvare for et verdensomspennende publikum gjennom App stores til en minimal investeringskostnad gjort plattformen interessant for nye grupper. Jeg ønsker her å nevne noen av aspektene jeg syntes er relevante, og som jeg har funnet interessante i min lille flørt med Apple denne høsten.

Plattform

Apple har to forskjellige programmer (som i opplegg, ikke software) for utvikling avhengig av hvilken plattform du ønsker å utvikle for. Prisen for å utvikle for for Mac OS X (desktop) eller iOS (mobile flater) er per i dag $99 per plattform. Dette inkluderer distribusjonsavtale igjennom respektive programvare-marked, ressurser på developer.apple.com som for eksempel tilgang til mange av foredragene fra utviklerkonferansen WWDC som video. Jeg har ennå ikke investert i en slik avtale, men har likevel hatt mulighet til å lage små programmer for både Mac OSX og iOS, og fått tilgang til masse ressurser, jeg har dog ikke lansert noen programmer. Utviklingsverktøyet XCode er tilgjengelig gratis til Lion, igjennom AppStore, og versjon 4.1 kommer med SDK for Lion og versjon 4.2 kommer med iOS5 SDKet. Med mindre du ønsker å benytte deg av fordelene med en utviklingslisens kan du programmere uten, og i startfasen kan dette være lurt da det kan ta litt tid å bli kjent med Objective-C og de respektive rammeverkene. Det er viktig å få med seg at for å benytte en fysisk iPad, iPhone eller iPod touch for å teste ut egen programvare trenger du en lisens. I iOS SDK-pakken følger det med simulator for disse enhetene (merk: ikke en emulator) og den har ikke mulighet for å benytte seg av de fysiske sensor-dataene som det kan være moro å inkludere i programmer på iOS.

Verktøy

Apple har laget gode verktøy for sine utviklere og disse er fritt tilgjengelig igjennom App Store. I Snow Leopard kom verktøyet som et ekstravalg på installasjons

platen, men nå som OS distribusjonen skjer gjennom skyen har også ekstra programvare blitt tilgjengelig for nedlastning. Fram til Xcode 4 var det i hovedsak to programmer du ville ha brukt i utviklingsprosessen: Xcode og Interface Builder. I dag er begge disse programmene bygget inn i Xcode 4 og det å skifte mellom kode-editoren og GUI-editoren skjer sømløst basert på hvilke fil du bearbeider. For Objective-C filer får du opp en god tekstbehandler som er godt integrert med dokumentasjonen, feilsøkingsverktøy og andre hjelpefunksjoner. Dersom du velger en xib-fil vil du få mulighet til å grafisk plassere brukergrensesnitt-enheter som NSTextField, NSLabel og NSSlider. Xcode tar seg også av kompilering, versjonskontroll og fra og med XCode 4.2 kan du også legge ut forskjellige view i iOS applikasjoner ved hjelp av Storyboard. I tillegg kommer utviklingspakken med et godt analyseverktøy kalt Instruments og et morsomt og kreativt verktøy kalt Quartz Composer.  Sistnevnte benytter et visuelt grensesnitt tilsvarende de som finnes i Max MSP og Pure Data.

Språk

Selv om du kan programmere i mange språk på Apple plattformen er det foretrukkede språket Objective-C. Dette språket startet i utgangspunktet som et objekt orientert klasse bygget på C, men har i dag en lang tradisjon og er i versjon 2. Språket har mange likheter med andre C baserte språk, men har en ganske annerledes syntaks når det gjelder å kalle metoder hvor de bruker noe så utradisjonelt som square brackets. Noe jeg hadde problemer med å forstå når studiene krevde at jeg arbeidet med C var viktigheten av kompilatoren til å kunne utføre oppgaver ifra funky syntaks. Etter et par måneder med objective-C kan jeg lært å se viktigheten av dette. For eksempel lar Objective-C deg autogenerere get og set metoder basert på synthesize i implementeringen og property i interfacet.

[code lang=”objc”]

#import "SessionController.h"

@implementation SessionController

@synthesize user, sessions;

– (void)viewDidLoad

{

user = [[User alloc] init];

sessions = [[NSMutableArray alloc] init];

Session *s = [[Session alloc] init];

[sessions addObject:s];

}

[/code]

Jeg har ingen intensjon om å fortelle så veldig mye om Objective-c, men det virker som å være et morsomt språk å kunne. Det finnes i dag mange halv-gode og noen gode løsninger som lar deg programmere for flere plattformer uten å måtte kunne hver plattforms egne språk og skikker, men jeg syntes det har vært en lærerik opplevelse å forsøke å få hodet rundt Objective-C. For meg, som hovedsakelig har arbeidet med Java, er det vanskelig å fatte den dynamiske naturen til Objective-C: ikke bare kan du sende hvilken som helst datatype igjennom id-signaturen, du kan også kalle ting igjennom stier og laste inn ny kildekode mens programmet kjører.

Rammeverk

Rammeverkene er det som skaper mye av det som kan gjøres på en plattform. Det er her Python får sine “batteries included” og funksjonaliteten plattformene blir realisert. Skal du tegne grafikk eller initialisere en datastruktur basert på et XML HTTP-svar eller mange av de andre hverdagslige eller spesielle oppgavene som kreves av et program er det kjekt å kunne stå på skuldrene til noen som allerede har gjort tilsvarende oppgaver. Xcode kan linkes mot et stort antall rammeverk, men noen brukes mer enn andre. I første rekke kan det være greit å lære seg Foundation og et eller begge Cocoa-rammeverkene (Cocoa for Mac OS X og Cocoa Touch for iOS). Dokumentasjonen til disse, og andre rammeverk, er bygget inn i XCode så ved å holde inne alt og klikke på et metodenavn dukker denne opp. I tillegg vil rammeverk som er linket til fra headerfilen automatisk bli inkludert i auto-completion, og siden kodehintingen er god vil du med kun begrensede  kunnskaper om metodenes navn kunne gjøre ganske mye i XCode.

Hvordan begynne?

Hvis du har en mac er første steg å få tak i siste versjon av XCode. Gå inn på i App Store for å laste denne ned. Installasjonsfilen er stor og dette tar derfor litt tid, men benytt tiden til å gjøre deg kjent på developer.apple.com. Her kan du finne mange artikler, APIer og introduksjoner til forskjellige Apple teknologier, og dette kan være et greit utgangspunkt. Her finner du også artikler for nybegynnere som skal starte å lage sin første app samt best practices, rettningslinjer og demonstrasjonsapplikasjoner.

Lykke til, og si gjerne ifra om hvordan det gikk!

Bildet Big XCode er laget av Lee Gillen og gjort tilgjengelig på Flickr under en Creative Commons lisens.

Trenger du hjelp med digitale medier?

Mye tyder på at digitale medier har kommet for å bli. Samtidig peker mye i retning av at disse kommer til å være like, om ikke mer, aktuelle i årene som kommer. Internet, Android, iPhone, iPad, HTML 5.0, Semantic web, nye lisensierings ordninger, cloud computing, QR koder, WiMax, Zigbee, Near Field Communication og Open Soruce. Dette er bare noen begreper og teknologier gjeldene i dag eller i nær framtid. Mulighetene er mange, og det kan være vanskelig å følge med.

Du lurer kanskje på hvordan du kan komme inn i et slik marked? Burde du satse på det nyeste og freshe, eller burde du velge allerede standardiserte og utbredte løsninger? Hvilke løsninger er best for deg, og hvor du burde begynne er forhåpentligvis noe jeg kan hjelpe deg besvare. Under har jeg samlet noen områder jeg kan hjelpe deg med.

Hjemmesider for flere skjermplattformer

Internett var lenge forbeholdt datamaskiner i forskningssektoren og forsvaret, men med allmenngjøringen av Internett og introduksjonen av verdensveven på 90 tallet ble stadig flere tilkoblet, og i dag føres statistikk i større grad på antall enheter tilknyttet Internettet enn mennesker. De fleste i vesten har i dag flere enheter med mulighet for å kommunisere over Internettet, og særlig i Norge er gadgetlysten høy.  I dag benyttes det også mange forskjellige apparater for å innhente informasjon over internettet. PC, mobiler, nettbrett, e-bøker er noen av de løsningene som finnes i dag, men om kort tid kommer også andre apparater til å bli digitalisert og muliggjort for kommunikasjon. Web over TV har lenge vært utprøvd, men uten større hell. Med Google TV ser det ut til at dette kan bli mer enn en kuriositetfor “bleeding edge” konsumenter. Det kreves i dag websider ikke bare i standard oppløsning og standard brukergrensesnitt. Nye plattformer fordrer ny bruk.

Det burde være unødvendig å forklare hvor viktig tilstedeværelse på nettet er, og det koster heller ikke mye å komme igang. For rundt tusen kroner kan du få registrert et domene, få tilgang til lagringsplass online og et innholdsystem. Jeg kan hjelpe deg sette opp et slikt system, og sørge for at du eller ditt foretak er på online iløpet av et par dager (registrering tar noe tid). Dersom du ønsker spesialtilpassede utseende på nettsiden kan vi også ordne dette. Ta kontakt for mer informasjon eller et uforpliktende tilbud.

Applikasjoner for Android eller iPhone:

Skreddersydde applikasjoner – aller apps som de populært blir kalt – for mobiler har blitt veldig populært nå som alle kan utvikle programmer . Både Google og Apple tilbyr løsninger der applikasjoner kan lastes ned gjennom nettbutikker, enten gratis eller for et rimelig beløp. Siden både Googles Android og Apples iPhone kommer med mye innebygd teknologi  kan mye moro skapes. Siden mange mobiler også er konstant tilkoblet Internet over WiFi eller 3G har også sanntids data-drevne applikasjoner blitt populære. Har du en god idè og ønsker å samarbeide med noen med teknisk kompetanse er jeg være interessert i å utvikle applikasjoner, ta kontakt også kan vi se nærmere på ulike løsninger. Jeg har riktignok ikke arbeidet mye innen dette feltet frem til nå men har kjennskap til Apples og Googles plattformer.

Visualisering av informasjon:

IT – Informasjons Teknologi – er et samlebegrep for datamaskiner, Internet og tilsvarende teknologier. Med raske prosessorer og klare instruksjoner kan mye informasjon håndteres, sorteres, samles, grupperes og representeres. Når det er sagt er det mye datamaskiner ikke er særlig gode på. Å gjennomføre en mer skjønnsmessig vurdering, å gjøre etisk riktige vurderinger (når vi ser bort i fra utilitarismen, og veldige rasjonalistiske tankesett) samt å trekke konklusjoner utenfor grenser eksplisitt satt er noe mennesker gjør langt bedre enn selv de kraftigste datamaskiner.

Datamaskiner er (per definisjon) veldige gode på databehandling, de er også veldige gode på å presentere data ifra flere kilder og på forskjellige måter. Denne videoen er et eksempel på hvordan datamaskiner kan benyttes til å behandle og presentere data på nye og gode måter

[youtube]http://www.youtube.com/watch?v=jbkSRLYSojo[/youtube]

Ønsker du å gjøre noe lignende? Det kan vi ordne!

Prototyping

Ønsker du hjelp til å prototype et program eller et informasjonsteknologisk konsept? Har du et kjøleskap du ønsker å muliggjøre for Twitter? Ønsker du å styre volumet på stereoanlegget fra mobiltelefonens posisjon? Trenger du en ny Wii håndkontroll, og vil bruke mobiltelefonen din? Ta kontakt. Det er få grenser for hva en god idé, noen tegninger og litt programmering kan gjøre.

 

Kontakt meg.

 

“Information” er tatt av Heath Brandon, og er delt under en Creative Commons lisens. Se her for mer informasjon

 


iPhone goes large: iPad

During the last three weeks since the iPad was released, the Technology Press has been flooded by articles about the iPad, Apples newest gadget. The media has been asking questions like, What is iPad going to change? Will it replace the need for a printing press? Which former technology does it compete against? Which applications will be developed? and What will we be able to do with the iPad? It is clear that there are a lot of speculations about the iPad and what it will achieve. So now I will try to explain some of my ideas about the iPad.

The physical pad

My first impression when Steve Jobs showed off the iPad to the public was that this gadget seemed an awful lot like a big iPhone. The screen covering most of the device and the characteristic home-button, together with the soft-edge profile similar to the newer iPhones, made it clear that the iPhone design trend was still standing strong within Apple. This could be a result of the enormous popularity of the iPhone and the saying, ‘Don’t fix it if it ain’t broke’. At least that’s what I believe. Apple have found their design that expresses their ideology of making technology that is easy to use and which gets the job done.

The pad comes in several varieties linked to hard drive space and wireless network support. The differences in hard drive space is quite simple, more space for more money, but when it comes to the wireless network support it is more to look into. There will be a version which just supports the standard of 801.x, meaning that it will support wireless networking in the same standard as home routers work. The other version will in addition to the wifi-support come with a buildt-in 3G support which makes it possible to be online also through the cellular-phone network.  The iPad is an enlarged iPhone, but without the oportunity to make regular phone calls, but with different specifications follows different usage.

What can you do with the iPad?

“Its true, when something exedes your ability to understand how it works. Its sort of becomes magical. And thats ecactly how the ipad is” – John Ive, Vice President Industrial Design Apple corp.

I do, as Ive, see potensial in the iPad, but with that said: I do not see it as a magical invention. I persive it as an iPhone gone large. I do not think that it will challenge the book or renew the printing press in a major direction as many has suggested. Though it is true that the pad provide a posibility to show electronic articles, but there is nothing new about that. I read articles on my desktop and laptop everyday. So when Philip Schiller, Senior Vice President of Worldwide Product Marketing, in the presentational video says that: “its going to change the way we do the things we do- every day”, I think that could be an overstatement. With that said: I’m looking forward to see how the new touch screen is working, because it is in this the biggest difference between the Phone and the Pad lies. Apple promotes a web-browser, games, news and user made applications on their iPad website. The games can be used through a touch user interface or with the motion sensor. The most discussed usage is the news applications. New York Times have already published an App where the user can read the newspaper, and together with Apples own bookstore this could mean that there will be a focus on text application on the iPad. The bigger screen gived the Pad an advantage in comparison with the cell phones or PDAs with simmilar functionality, but with a use time on aproximatly 10 hours between each time it has to be charged it loose this competition against more direct electronic book marked products as Amazon’s Kindle.

I think that iPad is going to gratify an already existing market for gadgets which are changing they usability with their installed application. It’s not going to be a PC, but some of the tasks we normaly do on a PC can now be done on an iPad. The screen wich is bigger than on an iPhone or simmilar phones will make it more comfortable to use this with social media services such as Twitter, Facebook and Youtube.

With the popularity of Apples other products they have a big advantage when it comes to user reputiton. I guess there will be sold many iPads, but I doubt it will replace any existing technology rather I think it will mix in between the mini-devices as PDAs and cell phones and portable computers.

Video source: http://www.apple.com/ipad/ipad-video/

Bilde: Glenn Fleishman