Pirate Party Ad

Visar inlägg med etikett datorer. Visa alla inlägg
Visar inlägg med etikett datorer. Visa alla inlägg

söndag 7 december 2008

Django...


...men jag glömde i förra inlägget att ge Django cred för sina riktigt snygga sajt - speciellt förstasidan är imponerande väldesignad.

Att få in mycket information på en förstasida utan att den blir plottrig är mycket svårt. Om man föredrar fix bredd eller varierande bredd kan alltid diskuteras och Djangos förstasida är ett utmärkt exempel på en väldesignad sida som hanterar variabel bredd.

fredag 5 december 2008

MVC, Django och webbgränssnitt

Häromdagen skrev Slashdot om Model-View-Controller-modellen, allmänt kallad MVC. Intressant läsning om en design pattern som har tappat sin ursprungliga betydelse. Kul timing, då jag den senaste månaden har provat en hel del olika ramverk för webbutveckling som säger sig ha baserat sig just på MVC.

Slashdot artikeln hänvisar till blogginlägget Removing the Model-View-Controller Straitjacket av Malcolm Tredinnick, ett inlägg som ger en sammanfattad bakgrund till vad MVC är och brukade vara. Inlägget förtsätter och ger inblick i hur hela designmönstret (en: design pattern) har blivit luddigt då man försökt att applicera det på icke-GUI-program.

MVC användes ursprungligen för att enkelt utveckla grafiska användargränssnitt, alltså t.ex. vanliga Windows-program med fönster och knappar mm. I allmän mun brukar MVC beskrivas i tre delar


  • Modellen, som hanterar datastrukturerna som programmet använder sig av. Ibland kan detta vara en databas. Exempel kan t.ex. vara en lista över namn och telefonnummer.

  • Vyn, som är det som användaren ser, i GUI-implementation är detta det fönster du ser framför ögonen.

  • Controllern, som hanterar kommunikation mellan Modell och Vy.

Den ursprungliga idéen med MVC var att Vyn skulle bli påmind om någonting i modellen förändrades (liknande Observer). Ett problem är att detta inte kan implementeras på en webbplattform då sidorna generas vid behov. Av den anledningen modifierades den ursprungliga idéen så att Controller-delen var den del som fick ta emot anrop från klienterna och som tillsammans med mallar genererade den HTML som skickades tillbaka.

Malcolm menar att denna 'modifikation' är större än man tror. Hela idéen med MVC baserade sig på GUI-utveckling och genom att föra in MVC i webbutvecklingen så har man modifierat designmönstret alltför grovt för att kunna säga att man fortfarande håller på med MVC-utveckling. Malcolm tar Django som exempel, även om han påpekar att Django inte är ett undantag. Då jag lagt några dagar på att utveckla en halvklar sajt i Django, blev Malcolms analys ännu mer intressant.

Django är en ramverk för att utveckla hemsidor som slaviskt följer (det modifierade, asynkrona, om man så vill) MVC-mönstret. Ramverket är skrivet i Python och tanken är att man genom att tvinga utvecklaren att dela upp sin kod i löst kopplade delar (Modell, Vyn och Controllern) ska göra hemsidans kod mer strukturerad och lättadministrerad.

Min erfarenhet av Django och många andra ramverk för webbutveckling, som hävdar att de bygger på MVC-modellen, är att de i fel spår. MASSOR av dessa ramverk ställer för stora krav på programmeraren och saknar den flexibilitet som kan behövas. Exempelvis så är Djangos template-system (sv: mall) Kid riktigt förfärligt med en knölig syntax som dessutom inte tillåter att data modifieras i mallarna, något som aldrig krävdes i det ursprungliga MVC-mönstret. Idéen är god med det blir mer knöligt och mer hopp i kod än kontinuitet när man läser den.

Ruby-on-Rails i all ära, men syntaxen är förfärlig. Kanske PHP är det bästa vägvalet ändå, trots att det inte kräver någonting av ens programmerare alls. Än.

fredag 26 september 2008

Vad som gör en dataknutte glad

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1 109G 58G 46G 56% /

*tömmer papperskorgen i Linux*
jens@supraflex:~$ df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 109G 38G 66G 37%


Nån gång fick jag höra att Windows inte hade givit detta resultat i Windows där innehållet i Papperskorgen ignoreras när man kollar hur mycket plats man har... Någon som vill kontrollera?

fredag 29 augusti 2008

Creativity vs. Law

Här kommer en film som fångar en del av mina tankar och idéer om copyright, idéer, demokrati och ansvar.

En väl värd 20-minuter lång presentation av Larry Lessing som kan varmt rekommenderas för att sätta sig in i dagsaktuell problematik kring bland annat intellektuell äganderätt:

tisdag 26 augusti 2008

Digitalt liftande

Förra veckan presenterade en vän en kul affärsidé för mig. Han bjöd in mig i projektet. Men som många idéer var denna redan tagen...och som sådan så kan jag nu berätta vad idén gick ut på.

Genom att åka tillsammans i bilar så sparar man både pengar, trafik och miljön. Detta var grundtanken i projektet. Men det är inte alltid man har passagerare i sin nära omgivning (vänner, familj etc.).

Min väns lösning på problemet var en webbportal där passagerare och förare kunde finna varandra. Passagerare och förare skrev in vart de vill/skulle och sedan matchade hemsidan dessa med varandra.

Enkelt, kul och så gjorde man någonting bättre för världen. Ett sorts digitalt liftande kan man säga. Vi gick igång på idéen och jag har vänt och vridigt på idéen under den senaste veckan och utgått från att ingen annan gjort det eftersom min vän har försökt finna något liknande på nätet under ett halvår.

MEN! Idag damp det ner ett mejl. PickupPal.com är en exakt replika av vad vi hade tänkt oss. Någorlunda snygg, enkel och smidig. De har testat den affärsidé vi tidigare hade med att ta provision utan att lyckas men numera övergått till att bara tjäna pengar på reklam, något som vi också hade diskuterat.

Jag har ett konto nu och ska nu testa tjänsten. Den kommande helgen planerar jag, och Julie som jag har på besök, att fara till Stockholm. Efter att ha lagt in att vi vill lifta till Stockholm så har två förare blivit kontaktade. Ska bli spännande att se vad de har att säga.

Tillbaka till planeringsstadiet,

Jens

måndag 18 augusti 2008

Laptopskärmar


Min bror skickade mig ett mail häromdagen och frågade mig vad han ska tänka på när han köper laptop. Mitt svar fick mig att börja tänka över dagens skärmar...

Sedan ett par år tillbaka övergår i princip hela TV- och datorskärmmarknaden till att använda sig av 16:10-proportionen (istället för 4:3). Slashdot hade för länge sedan en öppen fråga* om hur programmerare skulle ta denna övergång då alla skärmar skulle bli bredare och lägre - något som för programmerare gör att man kan se mindre kod, på en lika stor area. Helt enkelt Ineffektivitet 2.0 i mina ögon!

* Om jag kunde hitta den, så hade jag länkat. Har förgäves letat...

Problemet sträcker sig inte bara till programmerare utan även till alla de människor världen över som använder datorn som ett redskap för att ordbehandla och att surfa. Datorer blev ursprungligen populära just för att de var ett bättre alternativ till skrivmaskinen och majoriteten av datoranvändarna använder datorn för att surfa - då är 16:10 formatet riktigt riktigt uselt eftersom läsbarheten minskar med textens bredd. Det är höjd man vill ha i ett Word-dokument och på en hemsida för att öka läsbarheten och översikten över information framför ens ögon.

Hade jag ur ett designperspektiv konstruerat skärmar så hade jag antingen hållt mig till 4:3-formatet eller kanske till och med lanserat 10:16-skärmar. Rent designmässigt så är 16:10 förfärligt för allt annat än just filmtittande och eventuellt spelande.

Man kan vrida vissa skärmar så att man får 10:16, jag vet...men varför säljs inte sådana skärmar i högre utsträckning? Dessutom så saknas vridningsfunktionaliteten i dagens nya bärbara datorer. Man kan tycka att det är lustigt att de "business notebook" som säljs idag har skärmar som är designade för att titta på film och spela datorspel! Om jag var en affärsman så var det inget som jag hade prioriterat till min nya företagslaptop...

Anledningen till att skärmproducenterna har bestämt sig för att övergå till 16:10-formatet sägs vara för att möta de kommande behoven att använda datorn som en mediaspelare. Men jag frågar mig samtidigt varför den gamla skärmen slopas. Är trycket större att titta på film på datorn än att använda den för surfande, ordbehandling och programmerande...? Lite konspiratoriskt tror jag också skärmtillverkarna behövde ett nytt format för att styra marknaden och upphålla sina försäljningssiffror.

Sist men inte minst så kan man fråga sig var filmmarknaden är till alla dessa nya skärmar som bara ligger och 'väntar' på att visa filmer framför våra ögon. 16:10-formatet finns visserligen redan i de flesta nysläppta DVD-filmer, men hur många tittar på DVD på datorn? Den nya blue ray tekniken har inte gått så bra som man trodde, och kräver dessutom en speciell läsare som få har. Var är tekniken som gör att man kan titta på filmer över nätet? Eller ladda ner? Den marknaden finns inte och det är en av anledningarna till att piratkopiering försigår.


Rättning: Min vän och korrigerare Gustav påpekade att det faktiskt är 16:10 som är det nya formatet och inte 16:9 som jag hävdade i det här inlägget. Tack för korrigeringen!

torsdag 17 juli 2008

Stränghantering i Visual C++

Så sitter man här och programmerar i MS Visual C++.

Sist jag använde Visual C++ var för ungefär sex år sedan under gymnasiet någon gång. Lång tid sedan. Även om det står sig i mångt och mycket så finns det saker man frågar sig. Till exempel, varför har Microsoft definierat över fyra olika egna typer av strängar?

Att man vill separera enkelbytesträngar och multibytesträngar (á-la widestring) är fullt förståeligt. Att man, när C++ kom, utvecklade STL-klassen string förstår jag också - då blir det ju gladare och mer lättanvänt.

Följande alternativ för strängtyper finns:

  • string
  • CString
  • System.String
  • stringbuffer
  • BSTR
  • ...med flera...
Tack och lov finns det funktioner för att konvertera mellan dessa (länken fungerade i morse men inte nu...förhoppningsvis senare igen).

torsdag 19 juni 2008

Produkter av FRA-lagen

Efter att FRA-laget klubbades igenom häromdagen så har Alliansen fått en del hårda smällar:

1) Finlands kommunikationsminister överväger att varna finnar att deras kommunikation kan avlyssnas när de talar över telefon och internettrafik med Sverige. Problematiskt är det i Finland också då en stor del av deras internationella internettrafik går via bottenviken och passerar alltså Sveriges gränser.

Andra internationella aktörer har redan före omröstningen igår kritiserat lagförslaget. I Mars gick Google ut och sa att de inte tänker investera i några datacentraler i Sverige om lagen träder i kraft. Andra stora aktörer har också visat kalla handen mot Sverige efter lagen.

2) Många arga mail har inkommit till regeringen. Enligt DN sa registratorn idag att de "formligen blivit mejlbombade". Lycka till med att svara på de mailen. I samma veva vill jag också nämna att den mailtråd som jag har blivit insvept i (se föregående blogginlägg) fortfarande pågår. Många intressanta och välskrivna inlägg är det där.

3) DN har dessutom publicerat en artikel om hur man enkelt kringår att bli avlyssnad av FRA. Äntligen har en del av det material som jag velat göra allmänheten mer uppmärksam på nått den breda massmedian. E-post kan avlyssnas lätt! Det finns även program för att göra ens surfande anonymt med mera.

Synd är dock att DN inte har fokuserat mer på gratisversionen av GNU Privacy Guard som kan användas för att kryptera mail och är gratis. Jag har funderat länge på att skriva ett litet informationsmaterial om hur det fungerar. Alternativt en bok. Kanske det är dags nu?

Även NyTeknik tycks ha publicerat en artikel om hur man kringår FRA:s avlyssningar.

Dessa två artiklar visar hur oerhört lätt det är att kringå FRA:s spaning och säger på samma gång väldigt mycket om hur mycket mer lagförslaget går emot demokrati och inte gör någon skillnad rent tekniskt i övrigt - vill en terrorist inte bli avlyssnad så finns det en uppsjö med programvaror gratis på nätet för att kryptera sin kommunikation.

torsdag 24 april 2008

Ansiktsigenkänning - preliminärt resultat

Nu sitter jag här med mina löständer (a.k.a. 'caps') och följande poppade precis upp i mitt Matlabfönster:

[n_pos, n_neg, false_pos, false_neg]=test_classifier('./faces', './non_faces', parameters)
n_pos =
1021
n_neg =
2343
false_pos =
81
false_neg =
14
>>
Äntligen(!!!) ser min klassifikator för ansikten ut att fungera!* Efter att ha arbetat med uppträningsprogrammet som lär upp datorn att känna igen ansikten i Matlab i fyra veckor, sedan givit upp Matlab, sedan arbetat i tre veckor till C/C++ istället, sedan skrivit själva klassifikatorn i Matlab och tränat igenkännaren med 3000 bilder (2x~13 timmar) har jag för första gången ett resultat! Och det är på tiden...på måndag ska projektet in (och dagen efter nästa projekt in)!

Nu gäller det bara att speeda på och se till att sökningen över en hel bild fungera, samt modifiera tränningsprogrammet och klassifikatorn så att den kan hantera cascade-klassifikationen som Viola & Jones använde sig av! Är förhoppningsvis inte alltför knivigt.

Over and out.

* Bilderna jag testade klassifikatorn på är de bilder den har blivit tränade så siffrorna är mycket missvisande i form av slutgiltigt resultat, men visar ändå att saker är som det ska.

tisdag 22 april 2008

Vad varje karl bör veta...

När jag ändå har dödtid att vänta på att datorn ska bli klar har jag funnit en ny inspirationskälla - GNU C Library Manual. Varför fick man inte den i handen när man läste C-programmeringskursenLTH?! En gissning må vara att den visserligen finns till Windows men inte följer standarder som inkorporeras i exempelvis MS Visual Studio...

PS. Imorgon får jag förhoppningsvis "caps", dvs. temporära tänder i två veckor. Spännande!

Ansiktsigenkänning av en dator

...nu sitter jag här i tisdagnatten och väntar på att min dator ska cruncha sig igenom 3000 bilder på ansikten och förhoppningsvis kunna lära sig att detektera ansikten i digitala bilder. Algoritmen jag använder mig av är den som som Viola & Jones publicerade först 2001 och sedan igen 2004. C++-programmet var klarskrivet redan i helgen och kördes under hela förra natten. Som vanligt upptäckte jag en bugg efter 12-timmarskörningen och hoppas nu att jag kan finna den.

Det är svårt att finna buggar i ett program/projekt som detta. Viola & Jones tränade sitt program med 5 000 ansikten och 10 000 bilder utan ansikten. I brist på sjyssta databaser och (främst) tid att sitta och klippa ihop 5 000 ansiktsbilder som de gjorde så har jag nöjt mig med 1 000 ansikten (japp - manuellt klippta - det tog tid!) och 2 000 bilder utan ansikten. Programmet kommer att spotta ur sig olika egenskaper hos en bild som statistiskt signifierar ett ansikte. Men om det inte fungerar - har jag då en för liten träningsmängs av bilder eller är det en bugg i mitt program?

Projektet ska vara klart nästa måndag. Måtte jag hinna.

lördag 29 mars 2008

Google "Privacy"?

Sökmotorjätten Google Inc. har länge fått kritik för att de inte respekterar rätten till ett privatliv (eng: privacy). De senaste två inläggen (idag) på Googles officiella blogg visar tydligt vilket dilemma de har i frågan:

Det näst sista inlägget handlar om hur de nu har lagt in så att man kan få grym mycket statistik över vilka som tittar på ens filmer som man har skickar upp på deras webbplats YouTube. Att föra statistik över besökare utan att deras tillåtelse kan i sig sägas vara ett brott mot rätten till ett privatliv.

Det senaste inlägget handlar hur Google informerar om deras rutiner för behandling av personlig data.

Om allt hade passat in på min skärm så hade en skärmdump kommit väl till pass här.

Fildelning

Fildelning är här för att stanna. Vad ska vi göra åt det?

Fildelning är när man flyttar information/filer mellan olika datorer. Fildelning i sig är inget brott. Så fort man laddar ner datorprogram eller till och med laddar ner en webbsida på nätet så fildelar man. Text och bilder laddas ner. Bara det att debattörer och andra lustiga jullar talar om att fildelning är en felsägning då de såklart menar den illegala fildelning som bryter mot upphovsrätten. (Detta visar i sig hur lite många politiker/lagstiftare vet i frågan.)

Mitt förra blogginlägg vad i princip en uppvärmning till detta. Man kan tyvärr inte kontrollera internettrafik idag, och om man till trots försöker så hotar man de demokratiska rättigheter som jag värderar högt och inte vill tappa.

Det finns även andra sätt som fildelning försöker stoppas på som hotar demokratisk fundamenta. Regeringen har nyligen gått ut med ett lagförslag där upphovsrättsmakare skall ha rätt att få ut personuppgifter från internetoperatörer om personer som de misstänker bryter mot deras upphovsrätt. Helt plötsligt så skall alltså privata intressen och företag få agera polis på egen hand.

Synd är det att detta helt går emot deras vallöfte.

Jag har läst på en hel del i många bloggar och även om jag nog hade kunnat knåpa en text själv så har andra formulerat saker och ting bättre. Av denna anledning hänvisar jag er till "När började de kreativt skapande människorna dra i handbromsen?" skrivet av Anna Troberg. Hennes inlägg är en utmärkt beskrivning av mina åsikter i fildelningsfrågan.

Rickard Falkvinge tar även han upp en del i sitt senaste nyhetsbrev.

Piratpartiet har även skickat ut ett pressmeddelande efter regeringens lagförslag.

lördag 8 mars 2008

Drupal och 17 fördelar

Att programmera välstrukturerade, snygga, stora dynamiska webbplatser är inte enkelt och jag börjar komma till slutsatsen att det kanske inte är så smart att återuppfinna hjulet varje gång. Efter att ha djupstuderat ett fritt (CMS) system som heter Drupal har jag kommit till insikt att advancerade sajter kan skapas på ett bättre sätt.

Webbplatser bygger på en uppsjö av olika tekniker för att fungera. När de första webbsidan publicerades 1991 av Tim Berners-Lee så bestod varje webbsida av vanlig text, fylla med en del kodsnuttar som berättade exempelvis var fetstil började och slutade. Detta blev vad som skulle kallas HTML (HyperText Markup Language). Fyra år senare kom JavaScript, den första tekniken som kunde få statiska sidor på Internet att vara lite mer levande, och däremellan hade redan dynamisk generering av webbsidor uppkommit (t.ex. aftonbladet). Men som vi alla vet så har utvecklingen gått snabbare och snabbare och idag finns det en uppsjö av tekniker och metoder för att få den professionella funktionalitet/design som så många webbplatser har: HTML, XML, XHTML, CSS, JavaScript, Apache/PHP/SQL, ASP(.NET), Python, JSP (Java), Ruby on Rails med flera...

Precis som glaset kan vara både halvfyllt och halvtomt så ger alla dessa tekniker både fantastiska möjligheter men saknar samtidigt ett klart och tydligt sätt hur de ska interagera på ett flexibelt sätt. Som en webbutvecklare för större webbplatser så frågar man sig ständigt frågor såsom:

  • Hur kan jag konstruera en webbplats där jag över en dag kan ändra hur den ser ut?
  • Hur konstruerar jag ett smidigt och snabbt system för hur behörigheter på webbplatsen fungerar?
  • Vilket typ av innehåll ska min webbplats innehålla? Hur strukturerar jag det i databasen?
  • Hur implementerar jag en flerspråkig webbplats?
  • Hur implementerar jag sökmotor för hela webbplatsen?
När jag under ett års tid satt jag som förtroendevald webmaster åt Helsingkrona nation i Lund så ställdes frågor som dessa på prov. Arbetet bestod i att underhålla och utveckla helsingkrona.se. i samarbete med andra förmän och utskott.

Helsingkrona.se är en helt hemsnickrad komplex webbsajt som erbjuder användare med en viss behörighet att redigera alla artiklar och publicera både interna och externa nyheter. Utöver detta så har webbplatsen ett community som erbjuder funktioner á la (simplifierad) Facebook/Lunarstorm; bildgalleri, privata meddelanden, forum med mera.

Viktigt att förstå är att jag här inte bara talar om hur man impmenterar funktioner i listan, över utan även hur man strukturar en webbplats på ett så sätt att ny tung funktionalitet såsom lägga till ett nytt språk, en ny design, flytta webbplatsen, skins - arbeten som kan bli oerhört tunga om man inte har haft det i åtanke redan från första början. Kalla det vad ni vill - flexivilitet, modularitet - kärt barn har många namn.

Att skriva ett flexibelt hemsidesystem är oerhört svårt. Hur vet man hur stor en webbplats kommer att bli? Ska man räkna med att sidan skall översättas till spanska, engelska och italienska redan från första dagen? Vi som utvecklade Helsingkronas hemsida insåg att webbplatsens kod behövdes omarbetas och arbetar i själva verket för tillfället med att städa upp och strukturera upp.

Men i samband med att jag har tre andra större webbplatsprojekt inom en nära framtid så har jag under de senaste veckorna gjort en djupdykning i CMS-djungeln. Jag har fokuserat på Drupal då många forum och äldre blogginlägg tycktes visa på att denna CMS visserligen hade en lite högre inlärningströskel än många andra, men var oerhört kraftfullt.

Förkortningen CMS står för Content Management System och är precis vad som har implementerats på Helsingkrona.se. Ett CMS kan sägas vara en webbpubliceringsplattform - ett system som erbjuder enkel redigering av webbsidan via en webbläsare. Vissa kommer även med funktioner för att ha ett community.

Det finns oerhört många att välja bland - vissa är gratis, andra fria och en del behöver man betala töntigt stora summor för. Drupal är öppen källkod, vilket ger många fördelar gentemot slutna; Över hundra utvecklare sitter världen över och ser över all kod som skrivs till plattformen. Detta gör att koden inte kan tappa fokus på vara lättläst eller sakna flexibilitet för att passa många behov. Det ger såklart även en boost i hur säker systemet kan anses. 200 ögon är bättre än sex.

Att projektet är kollaborativt ger även en annan boost - Drupals dokumentation är alldelles fantastisk. Det finns guider för allt, och skriftliga beskrivningar över API:er. Skulle dokumentation av någon anledning saknas så finns hjälp alltid nära till hands via dess stora användarbas på groups.drupal.org.

Vi har tio sidors tunn dokumentation av Helsingkronas hemsida.

För att hålla min stora nya fascination för Drupal kort så presenterar jag här en lista över alla de fantastiska fördelar som jag ser med det:
  1. Öppen källkod.
  2. Stor användarbas med aktiva forum och diskussionsgrupper.
  3. Snygg, väldokumenterad kod.
  4. Ett mycket snillrikt system uppbyggt av moduler som starkt uppmuntrar ny kod att delas upp så att man vet var man hittar den. Möjlighet att stänga av och sätta på moduler finns.
  5. Många färdigskrivna moduler
  6. Stöd för sökmotorvänliga adresser.
  7. Stöd för mallar/skins som gör att man kan dela upp användargränssnitt och bibliotek.
  8. Stöd för webbplatser på flera språk.
    1. Automatisk igenkänning av vilket språk en besökare har på sin dator.
    2. Läckra användargränssnitt för att se vilka sidor som behöver uppdatera sin översättning.
    3. Möjlighet att ladda ner alla (~1600!) vanliga ord och uttryck från drupal.org samt bidra till gemenskapen om man har uppdaterat översättningarna till det bättre.
  9. Tydligt administrationsgränssnitt.
  10. Läckert API för att hantera formulärdata på ett flexibelt och mycket mer säkert sätt.
  11. Möjlighet att kategorisera nyheter och sidor på sin webbplats och filtrera efter detta.
  12. Communityfunktioner så det ryker om det:
    1. Vänlistor
    2. Skicka meddelanden mellan användare
    3. Skriva böcker och artiklar tillsammans
    4. Forum
    5. Delta/Skapa i grupper
    6. Bloggar
  13. Fantastisk behörighetssystem för att dela in användare i grupper såsom författare, webmaster etc. Man kan t.ex. ställa in att vissa användare bara får redigera vissa artiklar/böcker.
  14. Snabbt (har överlevt en slashdottning) - har inbyggt cache i systemet.
  15. Mycket snygg och flexibel lösning på hur man administrerar menyer på en sajt.
  16. Hjälpfunktioner för AJAX-funktionalitet.
  17. Möjlighet att översätta JavaScriptkod till flera språk.
...och sist men inte minst så har Drupal tänkt på så mycket att avancerad funktionalitet är lätt att implementera. Det var det den här bloggposten egentligen handlade om.

Drupal är fantastiskt och jag ser fram emot att jobba i det. Version 6.0 kom ut för ett par veckor sedan och deras moduler håller på att upgraderas till den nya versionen. Jag har hjälpt till lite med översättnignen till Svenska.

torsdag 6 mars 2008

3D i Excel

Vissa människor har tid. Jag har sagt det många gånger förut och jag säger det igen.

Den här gånger är det en östeuropeisk julle som har spenderat sina dagar för att programmera, om man nu kan säga så, en 3D-mjukvara i Microsoft Excel. Crazy kille.

Slashdot-posten finnes här och ett film nedan:

torsdag 20 september 2007

UNC wireless network on Ubuntu Linux

Finally I got the encrypted UNC wireless network (WLAN) working on Ubuntu today (in Ram Village Dining hall)! I have yet to try further to really be sure it works, though.

Since I arrived at UNC I have not managed to get the wireless working in Ubuntu Feisty 7.04. I tried the inofficial instructions given at the ITS website*, but to no extent. Of course the more I tried the less sure I was what encryption that was used at the campus etcetera.

Also, what is a bit sad, is that the GNU/Linux instructions given on the ITS website requires the user to use a terminal - which isn't required in most distributions nowadays!

This is what I did to get the wireless working (these instructions requires that you use GNOME as you desktop environment - and should probably work with any distribution which does so):

  1. Install the "Network Manager Applet". In Ubuntu this can be done by installing the "network-manager-gnome" package in the Synaptic Package Manager.
  2. Restart your computer (maybe restarting GNOME will be enough).
  3. When GNOME is again up and running you should have a new icon in the top right corner of your screen containing something like one computer in front of another. This icon is the GNOME Network Manager Applet.
  4. Double check that your wireless network card is turned on. Some computer's got a button to turn it on, some don't. Usually the wireless LED begins flashing on most computers. By turning on the WLAN the computer automagically begins to search for wireless networks around your computer.
  5. After a few seconds a left click on the network manager applet should give a list of the available WLAN:s together with their signal strenth. For many network it is just to click on any of the to get them working. For the UNC wireless network DON'T...!
  6. ...instead click on "Connect to Other Wireless Network Network..."
  7. Network name should be "UNC-1", wireless security should be set to "WEP 64/128-bit Hex", authentication should be "Open System" and the key is the key given by ITS (I guess they don't want me to post it here...even though the encryption sucks).
  8. Press "Connect", sometimes the GNOME Keyring Manager requires you to enter your password. This is to be able to save the WEP key so that it can connect automatically for you later on.
If all is well you should be given an IP-adress and the network should work straight away. Try fire up your web browser and see if it works.

Good luck and I hope this helps!

* Notice that the program 'dhcpcd' is replaced by 'dhclient' on Ubuntu. The link requires an onyen login - which all students at UNC have.

fredag 14 september 2007

Harry, Free Software Day & amerikansk fotboll

Ah! Äntligen börjar jag vakna upp ur min förkylningsdvala! Jag har varit ordentligt förkyld sedan i måndags och har sedan dess producerat både stora mängder snor och stönat högt över att min hjärna har känts som tuggummi. Min räddare i nöden har varit Harry, Harry Potter alltså, som har kommit till undsättning under de tillfällen när jag varit sängliggande och väck. Oj, oj, oj så spännande den femte boken "Order of the Phoenix" har varit! Denna bok är visserligen sedan klockan fyra i morse slutläst, finito och bakom mig - men jag kan knappt vänta tills att jag får tag på nästa bok! Har jag tur har Fleming denna i sin ägo...

I fredags så firade Open Source Initiative-gruppen här på UNC den officiella "Software Freedom Day". Inbjudna var en del intressanta föreläsare, bland annat:

  • Max Spevack, Fedoras Projektansvarig.
  • Amit Bhutani, Senior Linux programmer ansvarig för Linux på DELL.
  • Mark Finkle, programmerare och ansvarig för plugin-strukturen på Mozilla Firefox.
Utöver dessa så fanns även Creative Commons representerade vilket jag fann mycket glädjande att se! Till råga på det hela så fick jag också en e-postadress till en kille som varje månad åker till den närmaste LUG:en, Triangle LUG - najs! Tänk...snart kanske jag äntligen kan få träffa lite riktiga nördkompisar... ;-P

Utöver denna, för mig, heliga dag, så var det igår, Lördags, dags för ytterliggare en fotbollsmatch in-town. Intressant denna gång var att istället för att stå i publiken så arbetade jag på matchen - handbollslaget som jag spelar i kräver nämligen att man har ett visst antal pengar för att få spela i matcher/kupper så jag och nio andra gossar hoppade i några gråa arbetskläder och stod vid entren i 6 timmar. Jobbet gick ut på att le, vara trevlig, tydlig, skärpt och dra studenternas passérkort vid inträde - ett tungt jobb om man varit ute och tjoat och tjimmat kvällen innan och bara sovit sex timmarunder natten.

Efter att ha dragit kanske 4000 kort så känner jag säkrare på det mycket typiska amerikanska kallpratet; såsom "hey, how'r'u'doin'?" (man skiter i egentligen i vad folk svarar), "Hey, what's up?", "Enjoy the game", "Enjoy"... Den sista timmen var jag säkerhetsansvarig på planen nedanför publimassorna - himla häftigt och jag smygtog några bilder med mobilkameran. Jag lovar att man inte alls kände sig särskilt stor och farlig som vakt där nere :-)


Så vad har hänt mera den här veckan? Hans och danskan Anne-Mette har hookat upp och är nu lika keliga som två nykära syrsor, jag har haft ett fullt direkt samtal med min knepiga rumskompis, jag har lekt med svenskan Viveka och spelat mycket biljard med Hans...

Idag har temperaturen varit underbar ute - precis som svensk högsommar - och jag och Viveka har legat i sol och gräs under eftermiddagen och studerat. Mycket trevligt. Kvällningen var kall (16 grader!) och nu sitter jag i halvt underställ i vår kalla luftkonditionerade lägenhet.

Hade jag inte varit så himla schleten hade jag spöat Hans i biljard ikväll, men nu blir det istället lite lite läxläsning och sänggående.

onsdag 12 september 2007

Optimering av läsbarhet

I somras hade jag en sommaranställning i två och en halv månad med ett forskningsprojekt på Humanistlaboratoriet vid Lunds Universitet som lundabor finner nere i källaren på det nya Språk och Litteraturcentrum (SOL-centrum). Forskningsprojektet gick i korthet ut på att förbereda mätningar och analys av lästester från över 300 ekonomistudenter som skulle läsa en text på datorskärm i en kvart vardera. Experimentet skulle utföras under oktober månad nu i höst (2007).

Under utvecklingens gång stötte jag på många små problem och en av dessa gällde läsbarhet av texter på datorskärm under olika design ([1], [2], [3], [4], [1.5]). Jag gjorde lite bakgrundsundersökningar på Internet och fann mycket information gällande teckensnitt och utformning av dessa. Mer intressant var att avsaknaden av att undersöka hur olika färger fungerade tillsammans. Min chef Kenneth, som hade lite koll på området, trodde inte att det hade gjorts mycket undersökningar inom området.

Vissa sidor menade att det var viktigt att kontrasten mellan förgrund och bakgrund var viktig (duh!), men var fanns undersökningarna om olika färgkombinationer?

A. L. Hill (1997) hade visserligen en undersökning som många uppenbarligen verkar hänvisa till (då den dyker upp högt upp i sökning på Google), men jag tyckte att den vacklar i sin metod att välja ut de färger som analyseras för vidare analys. Att bara välja ut 6 stycken bakgrunds-/förgrundsfärger är en spott i havet. En dator representerar vanligtvis en färg i RGB (rött, grönt, blått) baspar. Rent teoretiskt ligger i de flesta fall varje färgstyrka i intervallet 0-255, vilket ger 256^3=16 777 216 olika färgkombinationer. Rent teoretiskt (kombinatoriskt) så finns det alltså (256^3)^2=256^6=281 474 976 710 656 ~= 2.8*10^14 olika bakgrunds-/förgrundspar. Hur kan man då välja ut 6 kombinationer av detta?

Motargumentetet är att ett mänskligt öga inte kan se någon större skillnad mellan RGB(0,0,0)/RGB(0,0,0) och RGB(0,0,0)/RGB(0,0,1) - visst, men tänk er då att intervallet 0-255 istället delas in i 16 distinkt olika färger. Detta skulle ge 16^6 = 16 777 216 olika kombinationer av förgrunds-/bakgrundsfärger - i jämförelse med 6 stycken!

Idag fick jag en liten idé som jag skulle kunna tänka mig att spinna vidare på. Det är ju rent praktiskt omöjligt att göra en undersökning som undersöker läsbarheten för alla dessa kombinationer av färger, men problemet skulle faktiskt kunna ses som ett optimeringsproblem: Givet färger så vill man optimera läsbarhet.

Om man gör antagandet att läsbarhet är proportionell mot läshastighet (och att försökspersonen inte slutar läsa texten) så skulle man kunna implementera en hemsida som beroende på hur snabbt en läsare läser en artikel kan optimera färgkombinationerna. Idag har många sidor sina artiklar uppdelade på flera sidor, och det är precis den funktionaliteten som man skulle kunna utnyttja.

Att läsare manuellt ger respons på läsbarhet i all ära, men vem orkar göra det?

Vilken optimeringsalgoritm man skulle kunna utnyttja är inte trivialt, men jag kan tänka mig att Simulated Annealing skulle kunna vara en mycket välfungerande algoritm för projektet, eller varför inte en evolutionär algoritm?

Det intressanta är att dessa idéer på ett sätt ligger i linje med två av de kurser jag läser nu. Datorgrafikkursen behandlar nu ytligt perception och hur ögat och hjärnan behandlar synintryck, såsom färger. Min matematikkurs, Matematisk Modellering, behandlar ytligt olika modeller för optimering - såsom just de ovannämnda. Modelleringskursen kommer att innehålla ett större projekt, är det detta jag vill göra?

Så vad krävs för att projektet ska gå i hamn?

  • En välbesökt sida (nej, min blogg är inte så välbesökt :-) - jag har i medel 2 besök per dag)
  • En sida med ordentlig databas.
  • En duktig programmerare som vill leka med parametrarna i den "simulerade stelningen". Givetvis kan färgerna inte slumpas fram helt till en början, utan något krav får nog finnas på exempelvis kontrast mellan färgerna.
  • Som alltid...tid och vilja.

Referenser:
  1. Readability Of Websites With Various Foreground/Background Color Combinations, Font Types And Word Styles, 1997, A. L. Hill (se också här)
  2. The Five-Finger Readability Rule, 12/9-07, K. Stout
  3. Wikipedia - Readability (in writing), 12/9-07
  4. Readability, 12/9-07, www.webdesignfromscratch.com

fredag 7 september 2007

Laptop screen issue

Since this might be valuable information for someone else I am posting this in English.

The 25th of December last year (2006) I bought a Fujitsu-Siemens Amilo Pro V3205. This laptop has been working perfectly, almost out-of-the-box, in GNU/Linux (Ubuntu). A wonderful small thing and I don't know what I'd do without it.

Some time ago I noticed that there were marks appearing on my screen - most easily seen in black- or white-only screen. I've been very careful with if and since they are geometrically shaped I believe they are manufacturer errors.

I've got a 1-year warranty. The laptop was bought in Sweden and unfortunately I'll be in United States until May 2007, so I will soon be looking into a way to solve the issue of not being without a laptop during class. I'll keep this blog updated about what Fujitsu-Siemens says about it.

Here are a few pictures of the screen: [1], [2], [3] and [4].

Is someone experiences the same problem I'd be happy to hear.