The PIT
Röster från ITM-koncernen.

Utveckla direkt i molnet med Bespin.

January 4, 2010 12:59 by Daniel Nilsson

Bespin från Mozilla Labs är en utvecklingsplatform för webbapplikationer helt och hållet byggt i HTML 5. Verktyget är en så kallad molnet-tjänst och för att kunna använda den behöver man endast en modern webbläsare och ett konto(som är gratis). Det finns många intressanta funktioner i Roadmappen för detta verktyg, bland annat kommer man att kunna följa utvecklare i sitt Team och "spela upp" hur utvecklingen framskrider. Detta är bra ifall någon är sjuk och man snabbt behöver komma in i koden. Det finns även versionskontroller och chat direkt i Bespin. Prestandan är mycket bra tack vara att den bygger på HTML 5 och det känns faktiskt som om man arbetar i en "vanlig" installerad mjukvara.

https://bespin.mozilla.com/

Jag rekommenderar intresserade att se denna video där 2 killar från Mozilla Labs berättar mer om projektet.

http://www.youtube.com/watch?v=Ps6GBLlSGLs&feature=player_embedded 

 


Flashapplikationer kan nu köras på iPhone!

October 6, 2009 23:19 by Daniel Nilsson

Under Adobes utvecklarkonferens MAX har Adobe gått ut med information om att man i nästa version av Flash Pro kommer att kunna exportera sina Flashapplikationer direkt till iPhone.

Det hela ser riktigt smidigt ut även om applikationerna i första versionen inte kommer att ha stöd för att som man kan göra i "vanliga" iPhone-applikationer.

 Det finns redan idag 7 iPhone applikationer i appStore som är gjorde på detta sätt.

I nedanstående länk finns en video från Adobe som beskriver hur det går till i detalj.

http://tv.adobe.com/watch/max-2009-develop/building-applications-for-iphone-with-flash-professional-cs5/


jQuery - exempel och guider

August 17, 2009 11:03 by David Woxberg

Jag har tidigare berättat om biblioteket jQuery, som underlättar och snabbar upp användningen av javascript i webbutveckling.

Här kommer några användbara länkar som förhoppningsvis ska inspirera och göra det lättare att komma i gång med jQuery.

* Hos NOUPE finns länkar till fler än 50 jQuery-exempel.

* NOUPE har också länkar till fler än 50 jQuery-guider/exempel.

* InstantShift har länkar till fler än 40 jQuery-guider.


Tags:
Categories: Javascript | Programmering | Teknik
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Komponenter som kan snabba upp Flash Lite-utveckling

August 10, 2009 09:31 by David Woxberg

Sony Ericsson och Nokia har släppt var sitt paket med gränssnittskomponenter till Flash Lite.

Med hjälp av dessa komponenter går det lättare och snabbare att skapa mobila gränssnitt.

Flashkomponenter är färdiga byggklossar som enkelt kan läggas in i Flashprojekt. De levereras i installerbara filer med ändelsen .mxp. När komponenterna är installerade är det bara att öppna komponentpanelen i Flashprogrammet och dra in valfri komponent till scenen medhjälp av musen.

Nokias paket innehåller exempelvis en pop up-ruta, en knapp och en lista. Sony Ericssons paket innehåller bland annat checkbox- och radioknappar och en progressindikator.

Båda komponentpaketen är för närvarande betaversioner. De fungerar i Flash CS3 och Flash CS4.

Länkar
Ladda ner Sony Ericssons Flash Lite-komponenter.
Ladda ner Nokias Flash Lite-komponenter.


Tags:
Categories: Flash | Mobilt | Programmering | Teknik
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Nytt verktyg ska förenkla iPhone-programmering

August 7, 2009 15:02 by David Woxberg

Företaget Ansca erbjuder ett utvecklingskit (en SDK) till Macintosh med namnet Corona,  som ska göra det enklare och snabbare att skapa iPhone-program som kan installeras och köras i telefonen.

I Corona skrivs iPhone-program med skriptspråket Lua.

Den nuvarande versionen av Corona beskrivs som "pre-beta" och erbjuds som en gratis nedladdning under förutsättning att man registrerar sig.

Läs mer:
Frågor och svar om Corona
iPhone-program som har skapats med Corona
Artikel om Ansca och Corona i New York Times


Tags:
Categories: iPhone | Mobilt | Programmering | Teknik
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Snabbare utveckling med bibliotek

August 6, 2009 13:34 by David Woxberg

Jag gillar att utforska verktyg som standardiserar, effektiviserar och snabbar upp utvecklingsprocessen, oavsett om det gäller mobil utveckling eller webbutveckling.

Ett bra kodbibliotek gör det enklare för utvecklaren att genomföra vissa saker. Det innehåller mycket färdigskriven kod som utvecklaren kan använda genom att bara skriva lite kod själv.

Detta är exempelvis en fördel när det gäller rutinmässiga arbetsuppgifter, sådana som ska göras om och om igen i olika projekt. Det är också användbart när det kommer till skapandet av avancerade användargränssnitt.

Här är två exempel på utmärkta bibliotek som är gratis att använda.

Först har vi jQuery - ett bibliotek som snabbar upp arbetet med javascript när det gäller AJAX-funktionalitet och mycket annat. Dokumentationen finns här.

Dessutom finns jQuery UI, som kan användas för att skapa avancerade gränssnitt med hjälp av färdiga widgets. Exempelvis finns:

*Datepicker (en kalender som enkelt kan användas för att välja datum inuti formulär)
* Listor som kan sorteras med drag-och-släpp-metoden.
* Alert-rutor.
* Flikgränssnitt ("tabs" på engelska)
* Reglage

Både jQuery och jQuery UI har bra dokumentation och gott om exempel som visar hur biblioteken kan användas.

När det gäller mobil utveckling så finns det ett utmärkt bibliotek till Java Micro Edition som heter LWUIT.

Språket Java Micro Edition erbjuder mycket funktionalitet. Det är dock väldigt tidskrävande att skapa snygga gränssnitt med hjälp av Java Micro Edition. Detta problem har lösts genom LWUIT, som erbjuder färdiga komponenter och effekter. Exempelvis:

* Textfält
* Knappar
* Pop up-rutor
* Formulärknappar
* 2D-övergångar
* 3D-övergångar

Med hjälp av en liten resurseditor så kan man enkelt stilsätta sina komponenter med hjälp av teman. Med hjälp av denna editor går det exempelvis också att skapa bitmap-typsnitt på ett väldigt enkelt sätt.


Tags:
Categories: Javascript | Programmering | Teknik
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Green commuting får uppmärksamhet

June 16, 2009 14:31 by David Woxberg

Computer Sweden har skrivit en artikel om Green Commuting, en grön it-lösning som Itmaskinen har levererat till Volvo IT. Artikeln kan läsas här.

 Du kan också läsa om Green Commuting på Itmaskinen.se.


Tags:
Categories: Mobilt | nyhet | Press | Programmering | Teknik
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Standarder finns av en anledning.

March 24, 2009 11:44 by Stefan Karlsson

Ett stort problem när man sitter och utvecklar ett gränssnitt är att få ihop en bra känsla hela programmet igenom. Självklart ska alla utvecklare veta hur man bygger ett effektivt användargränssnitt som följer standarder vad gäller knappars placering, namngivning och förväntat beteende.

Det är lika viktigt i winform-programmering som när man utvecklar för webben.

Webben
För webbutveckling så finns t.ex. standarder för CSS, HTML, Web Content Accessibility Guidelines (WCAG) m.m. Vad gäller layout så är det lite lösare än för winform-utveckling, var och en är ansvarig att skapa ett gränssnitt som fungerar för målgruppen, en “Ok”-knapp kan vara en bild, en textlänk, ett inputfält eller till och med en liten flashapplikation som bara visar ok-knappen.

Layoutmässigt så beror det på om man vill efterlikna en vanlig desktop-applikation eller om man vill framhäva innehållet som en vanlig hemsida eller kanske ta ett helt eget grepp och hitta på något okonventionellt. (Själv skyr jag sådana siter som pesten, där någon varit “kreativ” och hittat på ett helt nytt gränssnitt som motverkar hela idén med GUI-standarder och som i många fall kan vara rent idiotiska, t.ex. menyer som består av färgglada cirklar där man måste föra musen över cirkeln innan en text animeras ut och förklarar vad just det menyvalet gör.)

Skräckexempel
Denna site http://www.torchia.com/ har till exempel ett gäng små fyrkanter på skärmen som navigeringsmetod. Först måste användaren fatta detta idiotiska koncept, men det räcker inte med att förstå konceptet, för att kunna navigera siten så måste man hålla musen över fyrkanterna för att få veta vad som döljer sig där.

bad1

Det som är lite ironiskt är att denna site marknadsför ett företag som påstår sig vara bra på funktionell design.

Vill du se en uppsjö med andra siter som borde tänka om lite så kan du hoppa till http://www.webpagesthatsuck.com/architecture.html

Ett sätt att göra saker rätt är att se hur man INTE ska göra det, därför är det lärorikt att studera sådana här siter.

 

Desktopprogram
För winformutveckling så finns det en massa guidlines för hur gränssnitten ska byggas upp och hur knappar får ligga.  Till exempel så är det bestämt att om man har en “Avbryt”- och en “Spara”-knapp så ska “Spara”-knappen ligga till vänster om “Avbryt” om knapparna ligger brevid varandra, men om dom ligger ovanpå varandra ska “Avbryt” ligga under “Spara”.

Det finns regler för hur långt från kanten en kontroll ska ligga, vilket avstånd de bör ha mellan varandra, vilka default-acceleratorer de olika kommandona bör ha och en myriad med andra regler som varje winform-programmerare bör följa om man vill bygga en standardiserad applikation. Det finns förstås en anledning till att “Arkiv”-menyn heter just “Arkiv” i alla program och att “Avsluta” finns i den menyn.

Det är för att användare lätt ska kunna sätta sig in i nya program och komma igång med det viktiga, att använda programmen. På webben verkar detta inte vara lika viktigt då man ständigt hittar på nya sätt att förvirra användaren med nya “innovativa” gränssnitt.

Tyvärr så är inte heller desktop-världen förskonad från dålig design, så här kan det till exempel se ut om man låter en programmerare sköta detta:

wgetgui-screenshot

Titta även in på Bad User Interface Gallery: http://www.buigallery.com/

“Den riktiga världen”
Även i den riktiga världen så skapas det produkter med dåligt genomtänkt design, här kan du se en hel drös av dessa: http://www.goodexperience.com/tib/archives/product_design/

 

Tänk på dina användare
Och med det så lämnar jag över till er, tänk på din design och den stackars användaren som ska använda din produkt i slutändan. Dra lärdom av andras misstag. Prova inte på “nya” gränssnitt om det inte är just det som är meningen, det finns en anledning till de olika standarderna.


Adobe TV och ITM

March 9, 2009 10:04 by Daniel Nilsson

Adobe har nyligen lanserat en en egen webb-tv tjänst där man blanat annat kan se hela seminarier från Adobe´s utvecklarkonferens "MAX".

I nedanstående klipp(12.35 min in) presenteras våra Flash Cast kanaler som utvecklades till Telenors Channel-projekt.

Att talaren dessutom gillar våra kanaler bättre än det som byggts till Verizon Wireless i USA gör inte saken sämre ;)

Great stuff ITmaskinen !


Beräknad väntetid: 5 minuter.

February 3, 2009 13:00 by Stefan Karlsson

 

Implementerade precis “beräknad väntetid” i vårt köhanteringssystem, ni vet ett sådant där kunden trycker fram ett könummer och sedan väntar på att just det numret ska visas upp på en display så man vet vilken kassa man ska gå till. 

Det förvånade mig att det fanns så många sätt att beräkna just denna väntetid på, många uppenbarligen felaktiga också.

För tydlighetsskull så benämner jag det nummer som kunden får fram på sitt kvitto för TicketNumber och det nummer som kassören matar fram för QueNumber. QueNumber är alltså det nummer som just nu ska betjänas, det kan aldrig vara större än NextTicketNumber (Sista utskrivna TicketNumber+1).

Skillnaden i värde mellan QueNumber och NextTicketNumber är alltså detsamma som antalet kunder som står och väntar på att bli betjänade.

Variant 1

Min första approach var att varje gång en kassör matar fram ett QueNumber i kassan så sparas kassaid, quenumber och en timestamp i en tabell och därefter så är det lätt att få fram hur lång tid det tog mellan varje frammatning och på så sätt få fram en “velocity”, antal frammatningar per timme. Om man räknar fram att man har 10 frammatningar per timme och sedan tar NextTicketNumber-QueNumber (för att få fram antal väntande kunder) så kan man med den informationen räkna ut hur lång genomsnittlig väntetid det blir för de väntande kunderna. För att minska eventuella avvikelser när busslaster kommer så kan man öka tiden man beräknar på till två timmar.

En stored procedure tog snabbt fram detta:

CREATE PROCEDURE GetQueWaitTime AS 
declare @NextTicketNumber int
select @NextTicketNumber=countervalue from skibarcounters where countername='nextticketnumber'
declare @NextQueNumber int
select @NextQueNumber=countervalue from skibarcounters where countername='NextQueNumber'
declare @TicksPerTwoHours int
select @TicksPerTwoHours=count(*) from questamps where datediff(n,stamp,getdate())<120
select 120/@TicksPerTwoHours   * (@NextTicketNumber-@NextQueNumber)

 

Uppenbara nackdelar med denna metoden:

  • Om man inte haft kunder på två timmar, eller väldigt få, så blir antal frammatningar per två timmar 0 eller nära 0, vilket gör att man får en falsk väntetid. Dvs, har man bara haft två kunder så kan det bli så att systemet antar att väntetiden är 30 minuter per kund och kommer det sedan in 10 kunder så kommer systemet visa helt felaktiga väntetider mot verkligheten.
  • Början av dagen när man inte haft några kunder så kommer det inte att finnas tillgängliga data och problemet som uppstår i punkt 1 kommer att uppstå här också.
  • Har man haft kunder och man får fram en genomsnittlig tid på 5 minuters väntetid och sedan har en dödperiod så kommer de där 5 minutrarna att öka hela tiden tills man börjar mata fram nya nummer. Det är inte verklighetsbaserat att väntetiden per kund ska öka bara för att man inte råkar ha några kunder att betjäna.

      Variant 2

      Vi insåg att vi var tvugna att spara ner tidpunkten för när kunden trycker fram sitt nummer, vi modellerade om tabellen lite så att när kunden trycker fram ett TicketNumber så lagras numret och tidpunkt för utskrift och när kassan trycker fram ett QueNumber så uppdateras den raden med kassaid och tidpunkt för betjäning samt en uträknad diff i minuter mellan dessa två tidpunkter. (Genom att matcha mot kvitton skapade i kassan kan man därefter också få fram hur lång tid det tog att betjäna kunden, men det är en annan sak)

      Nu räckte det alltså med en enkel fråga för att få fram genomsnittlig tid, vi nöjer oss med att kolla genomsnittlig faktisk väntetid den senaste timmen, fältet WaitedTime är det uträknade antal minuter kunden fick vänta mellan han tryckte ut sitt könummer och tills könumret visades i displayen, vi kollar bara rader som har ett cashierid som skiljer sig från 0 för det är bara de som blivit “frammatade”:

      select avg(waitedtime) as waitminutes from questamps where

      cashierid<>0 and datediff(n,stamp,getdate())<60

       

      Jag kände mig ganska nöjd med den här lösningen först men sen när jag sovit en natt så kom jag på att denna variant inte tar hänsyn till hur många kunder som står och väntar just nu. Den gör bara halva arbetet, den säger att Senaste timmen var den genomsnittliga väntetiden 5 minuter. Men om det kommit in en ny busslass med personer så att det står 40 personer och väntar så applicerar den inte kunskapen på detta.

      Lösningen är så klart att plocka fram antalet väntande kunder och applicera den genomsnittliga väntetiden på dessa och visa ett modifierat tal för detta.

      Med den modifikationen känns det som att vi har en pålitlig uträkning för att få fram en genomsnittlig väntetid som både tar hänsyn till historik och nuvarande kösituation.

      Det jag skulle vilja lägga till för att förbättra rutinen är att man först filtrerar bort stora avvikelser, t.ex. tar bort de som avviker i tid med mer än x% från genomsnittstiden osv. För att det inte påverkar allt för mycket när 4 busslaster med danskar stormar in. Men det kan man finetune efter att man fått in lite mer verkliga data att titta på.

      Utmaning

      Har du något bättre sätt att få fram en pålitlig siffra eller en helt annan approach (jag har minst 3 varianter till att räkna ut siffran på, mer eller mindre felaktiga eller med falska utslag av väntetider osv) så kommentera gärna artikeln.


    Tags:
    Categories: Programmering | .Net | SQL
    Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed