Poster taggade med ‘cygni’

Sida 1/3:123

Förra fredagen började Magnus Jonnerby på Cygni och inledde i sann Cygni-anda med en vårkonferens. Cygnis vårkonferens 2012 gick av stapeln i Champoluc, Italien. Konferensens fokus var att ta fram en handbok för konsultchefer och det resultatet av övningarna kommer att ligga till grund för hur konsultchefer – befintliga och framtida – ska jobba på Cygni.
Läs mer >>

På Cygni använder vi Google Apps för en stor del av all kommunikation: e-post, kalendrar, wiki, kontakter o.s.v. vilket fungerar grymt. Kalenderbiten är en viktig del och personligen har jag ett tiotal olika kalendrar – egna som andras, privata som arbetsrelaterade – kopplade till mitt konto. I kombination med detta kör jag iPhone, både privat och på jobbet, och ser det som en nödvändighet att kunna nå och editera mina kalendrar från den enheten.

Det finns redan mängder med tutorials över hur man sätter upp Google-konton på sin iPhone men jag har upplevt det aningen problematiskt att synka multipla Google-kalendrar och tänker mig att detta inlägg får fungera som en steg för steg-guide över hur jag fick till synkningen. Jag har en iPhone 3GS med iOS 5 och använder mig av Google Sync för synkronisering.

Har du inte redan satt upp ett Google-konto på din iPhone följer du dessa steg:

  1. Under inställningsmenyn på din iPhone väljer du E-post, kontakter, kalendrar
  2. Lägg till konto
  3. Välj att skapa ett Microsoft Exchange-konto (vilket är det protokoll Google Sync använder vid synkronisering till iPhone)

Add Microsoft Exchange account

  1. Under E-post fyller du i din fullständiga e-postadress
  2. Lämna domänfältet tomt
  3. Fyll i din fullständiga e-postadress under Användarnamn
  4. Skriv in lösenordet för ditt Google-konto
  5. Klicka på Nästa
  6. När fältet Server poppar upp fyller du i m.google.com
  7. Klicka på Nästa
  8. Välj vad du vill synka (denna guide kräver att du åtminstone väljer att synka kalendrar)

Account information

Setup av synkroniseringen är nu klar och beroende på vad du i steg 11 valde att synka kommer det nu att pushas ut information till din iPhone.

Med Google Sync kan du synka upp till 25 kalendrar på din iPhone vilket man enkelt ska kunna sätta upp genom att surfa in på http://m.google.com/sync och logga in på sitt konto. Här stötte jag dock på problem. Sidan talade om för mig att Google Sync tyvärr inte kunde stödja min enhet eftersom jag var tvungen att ha iOS 3 eller senare – något som jag uppenbarligen hade då jag precis uppdaterat till iOS 5.

Efter en tids undersökning kunde jag konstatera att detta var en bugg fler användare upplevt och en konsekvens av att Google Sync befinner sig i ett beta-stadie. Sajten kräver att sidan presenteras på engelska och det du behöver göra för att komma runt problemet är att byta språk från svenska till just engelska enligt nedan steg:

  1. Med din iPhone, surfa in på http://m.google.com/sync
  2. För att ändra språk klickar du på länken Byt språk (jag valde English (UK))
  3. Sidan laddas om och du har nu möjlighet att logga in. Gör detta genom att klicka på Sign in with your Google Account
  4. Du möts nu av de enheter du har satt upp ditt Google-konto på och genom att klicka dig in på de olika enheterna kan du välja exakt vilka kalendrar du vill synka

Sync devices

  1. Efter att ha valt vilka kalendrar du vill synka och klickat på Save är du klar

När du nu lägger till, editerar eller tar bort händelser i dina kalendrar kommer dessa speglas på alla enheter du synkat enligt ovan steg – detta gäller självfallet oberoende av om du gör förändringarna i kalendern på din iPhone eller i webbgränssnittet på din dator.

Devices synced

IT-konsultbolaget Cygni har tecknat ett ramavtal med Sveriges Television. Även Sveriges Utbildningsradio och det samägda Sveriges Radios Förvaltning äger rätt att avropa på detta avtal. Cygni deltog i upphandlingen i kategorierna Systemarkitektur, Systemutveckling och Webbutveckling och blev enda leverantör att erhålla ramavtal i samtliga tre kategorier.

Det är främst ett par enheter på Sveriges Television som har det största konsultbehovet framöver – ’SVT Teknik och Utveckling’ och ’SVT Interaktiv’. Inom ’SVT Teknik och Utveckling’ är det i huvudsak webbapplikationer och integrationer mellan system för broadcast och administrativa system som skall utvecklas. ’SVT Interaktiv’ utvecklar och samordnar utbudet av interaktiva tjänster mot publiken.

”Sättet som vi konsumerar TV på är i snabb förändring med mobila plattformar, interaktivitet och ett icke-linjärt utbud. Sveriges Television leder denna utveckling på många fronter. Att Cygni nu får möjlighet att delta i det arbetet är väldigt stimulerande, både för oss som företag och för våra konsulter” säger Jon Persson, VD på Cygni.

Cygni är ett IT-konsultbolag som erbjuder expertis inom agil systemutveckling på moderna plattformar. Under de senaste 5 åren har Cygni framgångsrikt levererat systemarkitekter, Scrum Masters, backendutvecklare och frontendutvecklare till flera av Sveriges ledande mediabolag.

”Detta ramavtal ger Cygni möjlighet att leverera avancerade konsulttjänster till några av Sveriges mest spännande utvecklingsorganisationer. Vi är mycket stolta och glada över det förtroende som Sveriges Television gett oss.” avslutar Jon Persson.

Cygni stödjer BRIS

BRISIstället för att köpa julklappar till alla som arbetar på Cygni brukar vi skänka pengar till något välgörande ändamål. I år har vi beslutat att stödja BRIS, Barnens rätt i samhället, i deras arbete att hjälpa utsatta barn. Cygni kommer därför under 2012 att vara ett så kallat BRIS Guldföretag.

Efter att du har läst Martins artikel om Scala och SBT så kanske du känner dig lite sugen att börja koda i Scala, men inte riktigt vet var du skall börja. Jonas Bonér var hos Cygni och talade för ett tag sedan och nämnde då att det kan vara en bra början att skriva sina testfall i Scala för att komma igång och lära sig språket. Scala erbjuder dessutom väldigt trevliga testramverk, som kan underlätta din vardag. Jag kommer förutsätta att du idag har ett mavenprojekt med javakod och eventuella befintliga tester i java.

Första steget är att lyfta in Scalas API, JUnit 4 (om du inte redan kör det) och ett testramverk. Jag tänkte använda ScalaTest. För att göra det så lägger vi till följande beroende i pom.xml

<dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-library</artifactId>
    <version>2.9.1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.8.1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.scalatest</groupId>
    <artifactId>scalatest_2.9.1</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>

Sedan behöver vi säga till Maven att också kompilera och köra testfall som ligger i biblioteket src/test/scala, så då lägger vi till tre plugins.

maven-scala-plugin ansvarar för att kompilera scalakoden till bytekod.

<plugin>
    <groupId>org.scala-tools</groupId>
    <artifactId>maven-scala-plugin</artifactId>
    <version>2.15.0</version>
    <executions>
        <execution>
            <goals>
                <goal>testCompile</goal>
            </goals>
            <configuration>
                <args>
                    <arg>-make:transitivenocp</arg>
                    <arg>-dependencyfile</arg>
                    <arg>${project.build.directory}/.scala_dependencies</arg>
                </args>
            </configuration>
        </execution>
    </executions>
</plugin>

maven-surefire-plugin är den som kör testerna – om du redan har tester i projektet så har du redan lagt till den här pluginen och behöver då bara utöka den att också inkludera filer som heter **/*Spec.*.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <useFile>false</useFile>
        <disableXmlReport>true</disableXmlReport>
        <includes>
            <include>**/*Spec.*</include>
            <!-- För att hantera existerande tester -->
            <include>**/*Test.*</include>
        </includes>
    </configuration>
</plugin>

build-helper-maven-plugin lägger till källkodsmappar till kompilering, eftersom Maven från början bara hanterar en källkodsmapp för implementationskod (src/main/java som standard) och en för test (src/test/java som standard).

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>generate-test-sources</id>
            <phase>generate-test-sources</phase>
            <goals>
                <goal>add-test-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>src/test/scala</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>

Ok, nu behöver vi bara skapa mappen src/test/scala och sedan kan du börja koda!

Om du vill kan du stanna här. Nu kan du skriva testklasser i Scala, annotera metoderna med JUnits @Test och köra på som vanligt. Det du vinner är att du får tillgång till Scalas syntax och konstruktioner och att du kan lära dig i en bekant miljö.

Det andra alternativet är att du också börjar titta på vad Scalas testramverk kan erbjuda. I grunden är det inte så stor skillnad, men rent syntatiskt och kanske också tankemässigt så är det lite annorlunda. ScalaTest har stöd för BDD – Behaviour Driven Development. Tanken är att varje test är en beskrivning av en funktion/ett beteende som en roll skall uppfylla. Rollen tar sedan formen av en eller möjligtvis flera klasser. Tack vare att Scalas syntax går att det skriva ganska koncisa specifikationer, nästan som rena texttester för att beskriva beteendet som förväntas.

Vi börjar med att skriva en första specifikation, som vår applikation skall uppfylla.

@RunWith(classOf[JUnitRunner])
class MyApplicationSpec extends FlatSpec with MustMatchers {

  "My application" must "convert a string to hex values" in {
  }

}

Det här är ett komplett test, även om det inte gör något just nu – kroppen på specifikationen är tom. Om jag vill kan jag lämna det tomt och fylla på senare, eller så gör jag det lite tydligare att jag inte är klar med testet. Då skriver vi om det såhär

@RunWith(classOf[JUnitRunner])
class MyApplicationSpec extends FlatSpec with MustMatchers {

  "My application" must "convert a string to hex values" in (pending)

}

Väldigt tydligt och förklarande, eller hur? Ponera att jag skapar en klass som kan konvertera en sträng till hexadecimala värden (wow!). Då kan testkoden se ut som följande

@RunWith(classOf[JUnitRunner])
class MyApplicationSpec extends FlatSpec with MustMatchers {

  "My application" must "convert a string to hex values" in {
    val app = new MyApplication()
    app.convert("The donkey makes a left turn. I observe.") must equal ("54686520646f6e6b6579206d616b65732061206c656674207475726e2e2049206f6273657276652e")
  }

}

Klassen MyApplication är fortfarande skriven i Java, men jag testar den från Scala. Nyckelordet ”must” kommer från en trait i ScalaTest som heter MustMatchers. Det går också att använda ShouldMatchers, enda skillnaden är terminologin – must eller should, vilket du tycker om bäst.

Genom att fylla på med test av det här slaget så får du en ganska tydligt dokumentation vad du faktiskt förväntar dig av dina roller/klasser. Då slipper du en massa kommentarer i koden och/eller testmetoder som döpts ”testShouldConvertStringToHexValue” eller liknande. Enkelt och snyggt!

Vill du använda mockobjekt i din scalakod så kan du antingen köra på någon av de vanliga javabiblioteken (JMock, EasyMock, Mockito), eller så kan du prova Borachio som är skrivet i Scala.

Cygni har tecknat avtal om att leverera högkvalitativa systemutvecklingstjänster till en av nordens ledande leverantörer av sports betting-produkter för spelindustin.

Under de senaste åren har Cygni levererat en stor mängd IT- och managementkonsulter till ett flertal av Sveriges ledande spelbolag. Detta avtal är ytterligare en bekräftelse på Cygnis starka kompetens inom systemutveckling.

Våren har varit rätt innehållsrik på Cygni och det är svårt att på ett kortfattat sätt sammanfatta allt som hänt. Det första konsultmötet gick av stapeln på Henkes 35-årsdag 13 januari och då kunde vi rapportera om årets första nyförvärv – Jon Edvardsson! Dessutom pratade vi om de stundande utvecklingssamtalen och såklart om New York och vår 5-årsfest.

3 februari var det konsultmöte igen och då körde Nathalie och Robert kodkator med fokus på dynamiska språk. Och för första gången fick vi förmånen att träffa nya Cygnianen Jörgen Nikolaisen!

I februari började samtalen med ett ledande spelbolag som ledde till att Robert fick uppdrag där som CTO. Det är faktiskt rätt häftigt att vi har en konsult i koncernledningen på ett av Europas största spelbolag…

Februari var även den månad då ramavtalsupphandligen på Com Hem pågick som intensivast. Till slut valde Com Hem att teckna ramavtal med Cygni. De var otroligt imponerade av den kvalitet som Veronica, Emil, Rudolf, Johan (och nu Martin) levererat i sina uppdrag.

24 februari kom Jonas Bonér på besök till Cygni och snackade på vårt konsultmöte. Han ska även återvända i höst för att prata Akka. Veckan efter öppnade transferfönstret igen och vi signade Micke Elm a.k.a Micke 3.0. Veckan efter det höll Rhoda och Nathalie den bästa after worken i Cygnis historia.

Den gamla fina Cygni-traditionen att äta och dricka gott tillsammans fördes vidare på konsultmötet i mars. Då gick Castor till nyöppnade trendkrogen AG på Kungsholmen och Pollux till B.A.R. på Blaiseholmen. Veckan efter satte Frida Hoas sin kråka på Cygni-kontraktet och hon kommer börja hos oss 5 september! Och samma vecka kom Rebecka äntligen tillbaka till Sverige och Cygni!

7 april lyfte planet med 37 förväntansfulla Cygnianer från Arlanda. Några timmar senare satt vi på bussen in till Manhattan. Torsdagkvällen bjöd på ”grass fed burgers” och Manhattans bästa milk shake. Fredagens konferenspass ägnade vi åt att recapa Cygnis första 5 år och titta i kristallkulan på de kommande 5 åren. Därefter följde sightseeing på marken och i luften, god mat, shopping, Guggenheim, cava i plastglas mm. För mig var New York-resan den bästa konferens jag upplevt under mina snart 15 år i konsultbranschen. Kombinationen av the greatest city in the world och Stockholms bästa konsultbolag är oslagbar :-)

Det kändes som att vi knappt landat innan det var dags för vår 5-årsfest. Samma dag passade jag på att skaffa en rätt hyfsad fläskläpp för att skapa trovärdighet åt min mundering på festen. Ungefär 170 pers kom för att fira med oss och det var inget svårt beslut att fatta att vi ska köra en ny kundfest nästa vår.

Innan festen hann vi med ett konsultmöte med Scrum-tema också. Under Rebeckas hårda men rättvisa ledning fick Johan, Petter, Jörgen och Per berätta om olika aspekter av Scrum som de upplevt.

På konsultmötet 19 maj kom Mårten Gustavsson från Hitta.se och presenterade hur de byggt sin sajt!

Juni inleddes med en utrullning av nya cygni.se. Mitt förslag var att vi skulle köra den på en Sharepoint-platta men det blev WordPress till slut :-) Den nya sajten känns som ett rejält lyft i flera avseenden. Jag vill rikta ett lite speciellt tack till Lars Hendahl som varit gudfader för hela projektet.

Som vanligt var vårens sista aktivitet sommarmiddagen. Efter lite lerduveskytte och rally i Norrtälje blev det middag på Gondolen följt av mingel på Rival.

Ha en riktigt skön sommar, vi ses i augusti!

Nu är det återigen kortvecka och sommarstämningen börjar märkas av ordentligt. Trots det händer det massvis på kontoret!

Veckans viktigaste nyhet är att hemmabioanläggningen på kontoret är fixad – i princip… Bild och ljud fungerar samtidigt för första gången sedan Elton ”lillankan” Hedström var här och trixade för några månader sedan :-) Obs att subwoofern dock fortfarande är trasig och är inlämnad för lagning.

En annan rolig nyhet är att vi fortfarande ligger högst på Google-sökningen Stockholms bästa konsultbolag och det beror så klart på att vi har Stockholms bästa konsulter. En annan framgångsfaktor är att vi gör roliga saker tillsammans för att ”bygga laget”. Nu är det ju inte så många aktiviteter under sommaren – den enda aktivitet som står på agendan (som jag känner till) är Pollux-frukosten den 7/7. Annars så drar det hela igång igen i augusti med Midnattsloppet den 13/8 och after work på kontoret den 18/8. Höstterminens preliminära schema ser ut så här:

  • 2011-08-13: Midnattsloppet
  • 2011-08-18: After work på kontoret
  • 2011-08-27: Bellmanstafetten
  • 2011-09-09: Höstkickoff med övernattning
  • 2011-09-28: Konsultmöte
  • 2011-10-20: Konsultmöte
  • 2011-11-09: Konsultmöte
  • 2011-12-01: Konsultmöte
  • 2011-12-16: Julmiddag

Utöver detta kommer vi så klart att sockra detta med fler After Works, frukostar och Cygniluncher.

Vår nya sajt cygni.se innehåller ju en mängd olika informationsflöden för att hålla sajten levande. Stacktrace, jobbannonser och pressmeddelanden har vi ju haft tidigare men Cygnibloggen är ett nytt flöde som visar lite vad som händer här på kontoret. Jag har nu även lagt till ytterligare ett flöde som kallas Läst på Cygni som innehåller länkar till olika tekniska artiklar som vi Cygnianer läst. Jag har beskrivit hur detta fungerar tidigare men kort så går det hela ut på att bookmarka/tagga intressanta artiklar via Delicious och sen fixar Twitterfeed, Twitter och WordPress-plugins resten.

Beläggningen inför hösten börjar se riktigt bra ut nu – vi har konkreta säljhugg på i stort sett alla som kommer loss under augusti/september. Mikael Thorsson blev idag klar för Aftonbladet och börjar där 5/9. Under denna och nästa vecka är det intervjuer på ett stort spelbolag samt för en av Sveriges största sajter. Spelbolaget har redan bestämt sig för att ta in Patrik Brännström som exekverade en bländande intervju idag så han börjar där 1/9 efter sin föräldraledighet. Den stora svenska sajten känns också superkul eftersom de verkar driva roliga och utmanande projekt som nog passar oss perfekt.

Jag har lagt ut en rekryteringsannons på LinkedIn för att testa lite nya rekryteringskanaler. Jag kommer dessutom att börja jobba med ett par nya rekryteringsfirmor för att se ifall vi kan hitta potentiella Cygnianer. Det känns som att vi kommer att ha bra sprutt på rekryteringen inför hösten.

Hoppas att ni får en härlig midsommar. Själv drar jag otippat nog till Göteborg och har Googlat upp lite GBG-fakta. I fotbollslaget IFK Göteborg fanns 1982 inte mindre än fyra Glenn: Glenn Hysén, Glenn Strömberg, Glenn Schiller och Glenn Holm.

IFK Göteborg 1982
Den omedelbara frågan som poppar upp då är naturligtvis vad som händer om Glenn Hysén gifter sig med Glenn Close :-)

Vi försöker hålla vår sajt levande genom kontinuerligt fylla på sajtens innehåll via olika informationsflöden. Våra nuvarande flöden inkluderar:

  • Stacktrace: vår gemensamma teknikblogg där vi skriver allt från korta tips till längre artiklar
  • Cygnibloggen: här kan du läsa om vad som hänt på Cygnis konsultmöten, senaste nytt från Cygnis kontor och reflektioner från ledningen
  • Pressmeddelanden: officiella nyheter om nya kunder, ramavtal och liknande
  • Jobbannonser: här postar vi kontinuerligt nya jobb och karriärsmöjligheter på Cygni

Twitterintegration
Idag så fyller vi på med ett nytt informationsflöde som vi kallar Läst på Cygni. Det innehåller länkar till olika artiklar som konsulterna på Cygni läst den senaste tiden.

Några av våra konsulter driver detta flöde genom att skapa bokmärken för intressanta artiklar via Delicious och tagga dem med en speciell tagg. Delicious erbjuder automatiskt ett RSS-flöde för varje sådan tagg och detta flöde läser vi in via online-tjänsten Twitterfeed för att sedan pumpa allt vidare till twitter.com/cygniab och paper.li/cygniab. Eftersom cygni.se är en WordPress-sajt så finns ett otal integrationer färdiga mot Twitter så innehållet från twitter.com/cygniab behövde bara CSS:as för att det skulle passa bra med det övriga innehållet.

Så… kolla gärna in detta informationsflöde som visas på flera av våra sidor här på cygni.se, följ oss på twitter.com/cygniab eller läs vår tidning på paper.li/cygniab! Diagrammet till höger som är genererat via yUML illustrerar flödet grafiskt för den intresserade.

Sida 1/3:123