30. juni 2008

Personlig Word-cloud

Lagret under:Programvare — Ole Petter @ 17:41

Tagging, word clouds og folksonomy er web 2.0-begreper som virkelig har tatt var de siste årene. Det handler om å gi merkelapper til sider, filmer og elementer av sider. Tagging kjenner vi f. eks. fra flickr, hvor du bruker enkle stikkord for å beskrive bildene, og fra del.icio.us for å beskrive lenker og gi bokmerkene dine større slagkraft enn ved bruk av kategorier. Folksonomy er å kobinere tags fra mange folk som tilsammen gir en god beskrivelse av en ressurs.

For å lage en personlig ord-sky eller word cloud, kan du bruke Wordle, hvor du mater inn en URL eller ditt del.icio.us-brukernavn, og får se hva din personlige word cloud er. Du kan lage din egen på Wordle sin side. Min bokmerkeprofil finner du nedenfor:

end

15. januar 2008

Master: Web 3.0?

Lagret under:Generelt, Programvare — Ole Petter @ 17:12

Da var mastergradskontrakt levert, utdanningsplanen komplett og jeg føler for første gang på noen måneder i rute igjen. Jeg har virkelig hatt avgjørelsesvegring denne gangen, og hoppet mellom mange forskjellige områder og avdelinger på en oppgave som jeg i ettertid kan si meg fornøyd med. Forhåpentligvis har jeg funnet dette i den semantiske weben.

Hunds semantikkFor å forklare hva dette er, må jeg først forklare litt mer om hvorden nettet er i dag. Websider er skrevet i HTML, som blir tolket og presentert av nettleseren. Nettsidene er bygd opp av paragrafer, titler, overskrifter, bilder, tabeller og så videre. Alt dette er syntaxrelatert og beskriver hvordan nettsiden skal se ut, ikke hva innholdet på siden er. Nettleseren som viser denne siden aner ikke om dette er en webbutikk og blogg, altså den aner ikke noe om innholdet på siden, den forstår ikke semantikken.

Når du søker på google, er det egentlig ikke informasjonssøk du gjør, men datasøk. Om du skal ut og reise og søker på google, kan du ikke spørre google om å finne den billigste reisemåten fra Trondheim til New York. Du må selv søke på reiseoperatører, sjekke tider og priser og sammenligne. Den semantiske weben (jeg sier ikke semantiske nettet, da dette er noe annet i kunstig intelligens) vil derimot uttrykke informasjonen på reiseoperatørenes sider på en måte som datamaskiner kan forstå, da trolig i et XML-basert system, som OWL er et eksempel på. Dette gir deg mulighet til å gi en agent beskjed om å finne reisemuligheter basert på attributter som pris, tidspunkter, sikkerhet og lengde uten at du selv må oppsøke sidene. Vi gir datamaskinene mulighet til å forstå informasjonen som blir lagt ut.

En annen viktig del av den semantiske weben, og antageligvis hva jeg skal konsentrere meg om er ontologier. Ontologier er beskrivelser av et domene, altså entitetene i domenet, og for å få den semantiske weben til å fungere er man avhengig av et godt ontologisystem. For et enkelt eksempel, tenk på en hund. Vi vet at en hund må være enten hankjønn eller hunkjønn, og at den normalt har fire føtter. Alt dette er en del av ontologien, og er nødvendig for at datamaskiner skal kunne ha semantikken i orden. Semantisk Web er i grenseområdet mellom informasjonsforvaltning og kunstig intelligens, og dette ser vi om vi utvider beskrivelsen over til å også ha med mennesker. Vi vet at også mennesker er enten hankjønn eller hunkjønn, og har normalt to føtter. Direkte kan maskinen da se at mennesker og hunder er nærmere relatert til hverandre enn f.eks. hunder og en torsk, da en torsk ikke har noen føtter.

Jeg kommer antagelig til å opprette en egen semantisk web-blogg etter hvert som jeg kommer mer i gang. Selv om jeg ikke har en presis oppgavetittel så langt, vil det trolig omhandle det å gjøre resonnering og inferens i systemer som består av flere forskjellige ontologier som ikke gir noen direkte mapping, la oss si at f.eks. en bruker hund som en klasse i ontologien, mens en annen bruker hundedyr som også inkluderer ulv. En semantisk web vil trolig innholde mange ontologier som kan være i konflikt med hverandre og konflikter mellom disse må ses på. Så da er det bare å begynne å dykke ned i materien i form av artikler og bøker.

end

10. november 2007

1. Make a Facebook - 2. ??? - 3. Profit

Lagret under:Programvare — Ole Petter @ 01:43

Facebook har eksplodert det siste året, og blitt umåtelig populært i blant annet Norge. Det har også åpnet blogging, nettet og social networking til grupper som før ikke har brukt nettet i stor grad. Når du signer opp på facebook må du godkjenne en “Terms of Use”-avtale, som de fleste bare trykker villig “accept” til for å få komme inn. Dette gjør at du i praksis lar facebook bruke alt du poster slik de selv vil, f.eks. finnes dette avsnittet:

Facebook“By posting User Content to any part of the Site, you automatically grant, and you represent and warrant that you have the right to grant, to the Company an irrevocable, perpetual, non-exclusive, transferable, fully paid, worldwide license (with the right to sublicense) to use, copy, publicly perform, publicly display, reformat, translate, excerpt (in whole or in part) and distribute such User Content for any purpose on or in connection with the Site or the promotion thereof, to prepare derivative works of, or incorporate into other works, such User Content, and to grant and authorize sublicenses of the foregoing.”

De kan i praksis gjøre hva de vil med bilder, informasjon, anmeldelser, lenker og ligende som du legger ut. De fleste gründere på nettet har lyst til å tjene penger på tjenesten sin, og facebook er helt klar ikke noe unntak. Vi har allerede sett såkalte Facebook Flyers på venstre side når vi logger inn, men nettbrukere i dag begynner å bli flinke til å filtrere ut annonser. I tillegg har vi fått en overflod av Facebook Apps, og i det siste har også disse begynt å bli mer businessfokuserte ved å integrere annonser.

Nå ser det ut til at det går videre, ved at Facebook har lansert sine Business Solutions. Det er mulighet til å bruke personlig informasjon om deg eller dine venner til å generere spesifikke annonser for deg, som kommer i nyhets-feeden din, det er mulighet for å lage profiler som fungerer som reklamesider og fremstår på samme måte som en personlig profil og det er mulighet for spesialisert statistikk over brukerne av en profil eller lignende.

Det at facebook har så detaljert kunnskap om medlemmene, alt fra festbilder, navn, fødelsdato, bosted, jobbinformasjon, studieinformasjon, hvem man kjenner, politisk og religiøst standpunkt og interesser gjør det til en utrolig plattform for reklame, og spesialisert reklame. I tillegg har facebook store rettigheter til å bruke all denne informasjonen til stort sett hva de vil. Jeg sier ikke at du bør fly og slette alt på facebook, men ikke legg ut informasjon på facebook som du ikke kunne lagt ut på en åpen nettside med ditt navn på, og ikke føl deg trygg om du har privacy-settings som gjør at kun dine venner kan se informasjonen. Kommersialiseringen er i full gang. Facebook er Big Brother i denne sammenhengen, og kan se alt du gjør… på facebook vel å merke.

end

1. november 2007

Microsoft-teknologi og NTNU

Lagret under:Programvare — Ole Petter @ 01:32

Å gå rundt med en MSDN-bag og sitte å programmere i C# eller Asp.NET på Gløshaugen blir noen ganger som å kle seg naken i kirka og springe rundt og knuse ruter, samtidig som man banner. Her er det C++, Java, C, Lisp, Scheme, Prolog, JSP, Python, Oz og så videre som gjelder. Dette har jeg jo dratt litt nytte av, med tanke på at jeg hovedsaklig starta uten å kunne så mange andre språk enn noe C++ og PHP. Alikevel er det spennende teknologier man ikke lærer noe av uten å utforske det selv. Dette inkluderer Microsoft sin plattform .NET, og alle språk som hører under denne (av andre kan jeg nevne f.eks. Ruby og JavaScript (Ajax anyone?)).

Selvsagt er det bakdeler med .NET, som dårlig støtte under Apples systemer og Linux-dristribusjoner, og Sun’s Solaris. Ja, generelt alt som ikke Microsoft selv selger og tjener gode penger på. Alikevel er det et apropos at en teknologi som er såpass utbredt i industrien blir totalt ignorert. En av mine favorittpodcaster, Boagworld, snakker litt om et lignende tema i sin jubileumssending (100), og legger vekt på at universitetene ikke klarer å henge med i den teknologiske utviklingen. Derfor bør man som student fokusere på å lære tankegang, algoritmer, arkitektur, arbeidsmåter, planlegging, struktur og lignende. Vel og bra, men når skal man lære teknologien? Det må du gjøre selv, og derfor vil jeg gi litt tips om hvordan man kommer igang med programmering på .Net-plattformen.

De fleste utviklingsverktøyene man trenger for å komme igang er gratis, og kalles Express-versjoner, f.eks. Visual C# Express. Den har begrensinger, men for å komme igang holder det i massevis. Senere er selvsagt Visual Studio nyttig å ha.

C# er mitt favoritt-språk på .Net-plattformen, og jeg bruker det både for små kodesnutter (algoritmer) og mitt favorittområde, spillprogrammering. For å komme igang anbefaler jeg å se på Coding4Fun-webcastene, som er videotutorialer som går grundig gjennom utvikling av 2D og 3D-spill. Et enda mer aktuelt område er nok XNA (XNA’s Not Acronymed) som er spesialisert for å la deg utvikle språk både for Windows og Xbox 360. Selv liker jeg å ha mer frihet enn XNA gir (så langt som jeg kom på å utforske det), så C# kan også absolutt anbefales.

Web-utvikling i Asp.NET var jeg på MSDN Live-konferanse for å lære, og det var både lærerikt og spennende å se. Alikevel har jeg ikke brukt det i noe særlig grad etter det. Grunnen er nok den samme som for XNA, nemlig at jeg får litt WYSIWYG-feeling av å bruke det, og jeg ønsker mer kontroll. Dessuten er koden fæl å se på. :)

Silverlight er en spennende teknologi å følge, og er Microsoft sin Flash-utfordrer. Flash er blitt allemannseie etter Youtubes inntreden, og vi ser mer og mer sider på nettet som også er bygd i Flash. Jeg har aldri vært fascinert av Flash, selv om jeg må innse at Web 2.0-utvikling krever mer og mer utvikling som kan gjøres langt enklere i Flash enn med PHP og Ajax. Dette har vel noe med at jeg er codemonkey, og ikke designer.

Mitt tips er altså å sette seg ned noen kvelder, gå gjennom noen C#-webcasts, og lage noen spennende spill eller en widget gadget for Vista. Teknologi er ditt ansvar å lære seg, universitetet tar seg av algoritmene og arkitekturen.

end

7. juli 2007

Effektiv utvikling med cakePHP

Lagret under:Programvare — Ole Petter @ 19:38

De siste ukene har jeg sittet og programmert PHP når jeg har hatt tid, og har tatt i bruk rammeverket CakePHP. CakePHP er bygd opp rundt model-view-controller arkitekturpattern, og lar meg meget effektivt utvikle sider som har en oppbygning som jeg lett kan uttrykke i den objektorienterte verden.

Snooze betaFor å prøve å forklare det enkelt, så tar modellen for seg lagring av informasjonen i SQL, view er nettsidene som vises og bruker HTML, JS og PHP og controlleren er en PHP-klasse som tar for seg brukerresponser, lagrer og henter informasjon som trengs.

Siden jeg bygger er snooze.no, som skal inneholder spill, filmer og annen tidtrøyte. Jeg er ferdig med grunnlaget nå, og optimaliserer nå for administrasjon, brukere, caching av informasjon og brukergrensesnitt. Forhåpentlig blir en betaversjon klar snart, og da blir det lagt ut. Merk at det jeg har gjort så langt ikke er lagt ut enda. En release candidate følger noen uker etterpå, og lanseringen håper jeg å få gjort i løpet av august eller starten av september, da med nok innhold til at det skal være verdt i være der.

Men tilbake til cakePHP. For å forklare litt hvordan det fungerer, så kopierer man filene til serveren sin (selv bruker jeg xampp for utvikling, anbefales), konfigurerer en SQL-database og legger inn tabeller for alle modeller man ønsker. Deretter lager man en kontroller for hver modell, og legger inn funksjoner for hver egenskap brukerne har til å se på modellen. Til slutt trenger man en view for hver av disse funksjonene.

En veldig fin introduksjon til cakePHP finner man i manualen, der man lærer det grunnleggende systemet ved å lage en blogg. Deretter kan man utvide denne siden til å tillate kommentering og brukerautorisering. En annen fin egenskap er at du finner mye ferdige tillegg til cakePHP. Blant de jeg har brukt så langt er WYSIWYG-editor og bildeuploading. I tillegg skal jeg se på AJAX-hjelperen som også følger med før jeg blir ferdig. CakePHP kan absolutt anbefales på det varmeste for å utvikle og prototype nettsider.

end

30. mai 2007

I HAS 1337 CODE. LOL!!1

Lagret under:Programvare — Ole Petter @ 02:14

Så, da var det bare å legge Javaen på hylla, LOLCODE er her. De som her kjente med det, har nok sett en masse Interestsmorsomme katter på forum før, spesielt innen MMOG-samfunn. LOLCODE er implementeringen som gjør python til noe mer, 1337 programmeringskode.

For å vise et lite eksempel med if-then-else (CAN HAS importerer stdio, HAI er start og KTHXBAI er slutten):

HAI
CAN HAS STDIO?
I HAS A VAR
GIMMEH VAR
IZ VAR BIGGER THAN 10 O RLY?
YA RLY
VISIBLE "BIG NUMBER!"
NO WAI
VISIBLE "LITTLE NUMBER!"
KTHX
KTHXBYE

Spy among usDet er vel tvilsomt at det er noe vits å å diskutere dette videre? Java, C++, python som vi kjenner det, er dødt!

end