Arkiv för kategori ‘Konferens’

Nordic Ruby

Förra fredagen åkte jag, Robert och Mats ner till Göteborg för att gå på konferensen Nordic Ruby.

Lördag

Standing On the Shoulders of Giants

Corey Haines inledde konferensen med en uppmaning om att reflektera över hur och varför man arbetar som man gör.

“Message passing, not objects”
“Lotus notes is a good document database”

Cucumber Inside

Aslak Hellesøy höll konferensens andra föreläsning och ämnet var inte helt oväntat testramverket Cucumber samt dess språk Gherkin vilket nu har extraherats till en gem.

Den imponerande prestandaökningen i Cucumber den senaste tiden beror på att man har bytt ut TreeTop mot Ragel.

Aslak nämnde även hur hooks i Cucumber fungerar.

Neo4j.rb – The Benefits of Graph Database

Andreas Ronge berättade om sitt projekt Neo4j.rb vilket är en grafdatabas för JRuby.

  • Inbäddad
  • ACID
  • Inga scheman
  • Inga externa beroenden
  • Enbart skrivlås

De två javabibliotek som är inblandade är Neo4j samt Lucene. Neo4j inkluderar ett flertal algoritmer, t.ex. Dijkstra.

Möjligheten att traversera djupa relationsgrafer verkar ha ett ganska begränsat användningsområde, men när man väl behöver göra det så är det säkerligen mycket kraftfullt.

Rubyists, you can write JavaScript again

Priset för konferensens effektfullaste introduktion måste gått till Dr Nic a.k.a. Iron Man.

Han började med att nämna att man kan köra JavaScript i Ruby med hjälp av Johnson (Mozilla SpiderMonkey) och att man kan använda capybara-envjs för att testa sina javascript på serversidan. Men efter det var det CoffeeScript som gällde.

“Capybara because it’s AWESOME”

CoffeeScript är i korta drag:

  • De bra delarna i JavaScript
  • Det Haml är för HTML och Sass är för CSS
  • Går att kombinera med alla JavaScript-bibliotek (jQuery!)
  • Kompilatorn är skriven i CoffeeScript! (Går alltså att köra i en webbläsare)
  • Implicita returvärden
  • Inga onödiga tecken
  • Går att köra i Node.js

Enough Design

Ian McFarland från Pivotal Labs pratade om agila designprocesser och hur viktigt det är med en kort “feedback loop”.

Han påpekade att det är viktigt att iterera över problem, oavsett storlek.

En bra design är:

  • Modulär
  • Principfast
  • Regelbaserad
  • UX > Pixlar!

The Ruby advantage – metaprogramming and DSLs (.pdf, 22MB)

Man kan inte bli annat än imponerad av Niclas Nilsson när han så “vårdslöst” tvingar Ruby att bete sig som han vill.

Han berättade om hur man med lite fantasi kan bygga ett internt DSL utan att för den skull ha tillgång till Rubys AST.

Han visade även sin gem properties.

Middag på SoHo

Lördagskvällen spenderade jag med att diskutera hackerspaces, användning av Ruby för utveckling mot Arduino, mikrobryggerier i USA och mycket annat.

Söndag

From artist to programmer

Dagens första föreläsning stod Keavy McMinn för, och hon pratade om likheter (och skillnader) mellan konstnärskap och programmering.

“Just make”

Några av hennes punkter

  • Var öppen för förändringar
  • Det går att bygga något utan initial finansiering
  • Vi utvecklas genom reflektion

The MongoDB Effect

Jag hade gärna sett att Durran Jordan och Les Hill hade fokuserat lite mer på Mongoid än vad de gjorde. Vi vet redan att MongoDB är häftigt.

Enligt Durran borde man ALLTID använda MongoDB.

Mongoid

  • Rails 2 och Rails 3
  • Atomiska operationer
  • Stora dataset
  • Grymt kriterie API
  • Scopes som tar block
  • Master/Slave

SOLID Ruby

Jag hade verkligen sett fram emot Jim Weirich föreläsning om SOLID och jag blev inte besviken.

Några av hans punkter

  • Fördela ansvaret
  • Monkey patchning i bibliotek är dåligt (Arv framför öppna klasser)
  • Protokoll är viktiga

Artificial stupidity, adding smarts to yer kode with a little machine learning

Konferensens tyngsta föreläsning (med råge) stod Randall Thomas från Engine Yard för.

Ämnet var datautvinning genom att använda statistikspråket R och RSRuby. Den enligt mig intressantaste delen av föreläsningen bestod i användningen av en support vector machine (KSVM i R) för att gruppera data och sedan använda detta för rekomendationer.

Böcker: Super Crunchers, Introductory Statistics with R

Software for the Human Animal

Hampton Catlin pratade om skillnaderna mellan manlig och kvinnlig design. Att vi inte är mycket mer än djur och att Internet är den nya vildmarken.

Han hävdade att vi människor generellt sett är självorganiserande och framförallt trevliga. Vi borde alltså sluta motverka på de fåtal användare som förstör och istället uppmuntra och belöna de användare som uppför sig.

Det finns inga dumma användare, bara dåliga gränssnitt som gör dem dumma.

Frozen Rails

I fredags gick konferensen Frozen Rails av stapeln i Helsingfors och Athega var självklart representerade.

Rails at GitHub (Chris Wanstrath, @defunkt)

Konferensen inleddes av Chris Wanstrath som gick igenom hur Ruby on Rails används på GitHub. Vi fick även reda på hur de använder Git (grit, smoke, chimney) och hur de hanterar meddelandeköer (resque).

Några av projekten som nämndes:

  • albino för syntax highlighting genom (front för pygmentize)
  • faker för att generera påhittad data: namn, adresser, telefonnummer
  • Rack HTTP servern Unicorn

The Plataforma Way (José Valim, @josevalim)

Dagens andra föreläsning hölls av José Valim från Plataforma tecnologia. José pratade om autentiseringslösningen Devise (bygger på Warden), domänspråket simple_form (inspirerat av Formtastic) samt Responders vilket är en utbyggnad av respond_with i Rails 3. Lite rörig föreläsning men med många intressanta projekt, kommer speciellt hålla koll på Devise.

Jag har sedan jag bloggade om MongoDB första gången varit intresserad av projektet och nu fick vi verkligen en bra genomgång av 10gen’s Michael Dirolf.

Översikt av MongoDB:

  • Atomiska operationer per dokument (:$push)
  • Dynamiska frågor
  • Hög prestanda (10% långsammare än memcached, snabbare än CouchDB)
  • Master/Slave failover
  • Auto-sharding (snart)
  • Servern har en JavaScript parser

Mobile Web Apps with Rails 3 (Yehuda Katz, @wycats)

Yehuda Katz på Frozen Rails

Även om jag sett föreläsningen tidigare (Efter Philly ETE, Emerging Technologies for the Enterprise) så var det bra att få se den live så att säga.

Några av punkterna som Yehuda berörde:

  • HTML 5 LocalStorage (samt Offline API)
  • Föredra gammal data
  • HTML == static asset
  • Betrakta webbläsaren som en API-klient
  • “Sip, don’t gulp”

Projekt:

Cucumbered (Joseph Wilk, @josephwilk)

Frozen Rails Cucumbered
(Foto: Chris Comella)

Den bästa föreläsningen på hela konferensen stod Joseph Wilk för, ämnet var Cucumber och mer specifikt hur man ser till att testerna går så fort som möjligt. (Cucumber 0.7 är för övrigt så galet snabb att det inte ens är roligt nu när de bytt från TreeTop till Ragel)

Några av Josephs punkter:

  • Cukover vs. Autotest
  • Harmony (Frontar Trace/SpiderMonkey i Ruby)
  • cucumber –format

CouchDB on Rails (Jonathan Weiss, @jweiss)

Jonathan hade ett digert uppdrag framför sig då konferensdeltagarna direkt jämförde allt med hur det fungerar i MongoDB. Tyvärr var exemplen lite för enkla och visade inte riktigt på styrkan i CouchDB, snarare att det är “svårare” att ställa enkla frågor än med SQL då man måste implementera map/reduce i JavaScript själv. (Vilket är en BRA grej när man gör lite mer avancerade saker)

Några av punkterna:

  • “Built for the web”
  • Skalar bra
  • Inga konstigheter: HTTP, JavaScript, JSON
  • Revisioner (id + rev)
  • Inga collections (på gott och ont)
  • “JavaScript, easier than SQL”
  • Värdet kan vara komplex JSON
  • Nycklarna kan vara arrayer
  • Statiska frågor (map/reduce)
  • Compaction of B-tree via HTTP request (tänker inte ens försöka översätta :)
  • HTTP cache (Varnish) och lastbalansering (HAProxy, nginx)
  • Inbäddad Lucene (Killer feature?)

Rails 3: Tasty Burgers (Carl Lerche, @carllerche)

  • Bundler (Isolation av gems)
  • Möjligt att använda jQuery i Rails!
  • Routern kan nu ha valfria segment, scopes och HTTP verb
  • Rack överallt!
  • rails_upgrade

Perfectionism (Jarkko Laine, @jarkko)

Priset för den nervösaste killen på hela konferensen måste ha gått till Jarkko. Förutom detta var det en grym sista föreläsning om hur vi perfektionister ofta har problem med att skeppa något innan det är helt perfekt. (vilket det kanske aldrig blir) Han rekomenderade även boken The Cluetrain Manifesto (hela bokens text)

Perfection, Minimally Viable Product, Markets are conversations, Ship!

Oh, hela konferensen filmades så när filmerna dyker upp på nätet så länkar jag dem här.

Athega sponsrar Nordic Ruby

Nordic Ruby

I slutet av maj kommer några av oss att befinna sig i Göteborg för att delta i konferensen Nordic Ruby. Under två dagar hålls föreläsningar om så vitt skilda ämnen som den dokumentorienterade databasen MongoDB, spelmekanik, en introduktion till maskininlärning samt metaprogrammering i Ruby.

Hoppas att vi syns där!

Den produktive programmeraren

En av de bättre dragningarna på årets Øredev var Neal Ford’s ”The Productive Programmer: Mechanics”. Neal har skrivit en bok med samma namn, som jag hört litet blandad kritik om. Därför hade jag inga större förväntningar när jag klev in i rummet. Efter orden ”Graphical tools are med for novices” visste jag att detta var något för mig!

Nedan följer en rad tips, som alla syftar till att hjälpa dig bli en mer produktiv programmerare, oavsett om du använder emacs, notepad eller Eclipse.

Urklippshanteraren (eller clipboard)

Varför, varför finns det bara plats för ett urklipp i taget i dagens moderna operativsystem (*nix-dialekter undantagna)?

Det är ju helt tokigt att inte kunna gå tillbaka och ta fram något man kopierade eller klippte ut för bara några minuter sedan, bara för att man råkat svara på ett mail, mitt i ett enhetstest eller liknande. Lösningen finns i form av några hjälpprogram:

Lär dig kortkommandon

Tiden det tar att lära sig även det mest obskyra kortkommando är väl investerad tid. Varje gång dina fingrar måste lämna tangentbord slösar du med tid. Hitta en bra partner att parprogrammera med och be honom/henne raljera över hur långsam du är varje gång du använder musen.

Scripta dina vanligast kommandon/texter

Om du märker att du ofta skriver samma sak, skriver samma fel eller skriver samma sekvens av kommandon i en terminal, finns det hjälp. Textexpander är ett litet makroverktyg som verkligen sparar tid. Du kan använda det till allt från epostsignaturer till kod-”snippets”.

Tyvärr kostar det pengar och finns det bara för Mac, men jag är övertygad om att det finns ett Windowsalternativ.

”Locus of Attention”

Att kunna fokusera och komma in i flytet (”the Flow” eller ”the Zone”) är lika viktigt som verktygen du använder. Om du programmerar vill du att platsen för din uppmärksamhet (fritt översatt) ska vara din IDE. Inte din klienter för IM, Twitter eller email, etc. Med den mängd information vi utsätts för varje minut är detta svårare och svårare.

  • Stäng av dina klienter för epost, twitter och IM och uppdatera dig då och då när du tar en paus från programmerandet
  • Använd hörlurar för att visa att du inte vill bli störd
  • Inför tysta timmar på kontoret, exempelvis mellan 14 och 16 varje dag då du verkligen kan fokusera

Neal menar exempelvis att Windows är som en treåring som konstant stör dig med påpekanden som ”Du har oanvända ikoner på ditt skrivbord”, ”Ditt virtuella minne håller på att ta slut” eller ”Det finns säkerhetsuppdateringar till din dator”. För att ytterligare hjälpa dig att minska störande moment finns det verktyg, skärm-dimmers, som sakta släcker ner allt förutom ditt akiva fönster:

Sök

En sökning slår alltid navigation med mus eller till och med tangentbord. Se till att du har en bra lokal sökmotor för din dator, som Google Desktop (Mac/Windows) eller QuickSilver (Mac). Neal menar att navigera i en trädstruktur i utforskaren eller i din IDE är som att berätta för datorn att du vet hur du använder musen. Om du vet vad filen heter – sök!

Automatisera

Ett spiffigt användningsområde för Selenium är faktiskt att automatisera ditt iterativa testande. Du kanske felsöker en funktion som kräver att du klickar dig igenom en sekvens, fyller i litet testdata och till slut når fram till funktionen du felsöker. Denna process kan bli ganska trist att upprepa om och om igen. Med Seleniums IDE, som du installerar som ett plugin till Firefox, kan du enkelt spela in sekvensen en gång och sedan spela upp den varje gång du vill testa. Eller som Neal uttrycker det; ”You should never manually interact with the thing you are building unless you want to”.

Han avslutar med tänkvärda ”Solving problems by hand, makes you dumber”. Word!

RailsConf: Torsdag

Build an App, Start a Movement

Wynn Netherland, Jim Mulholland och Bradley Joyce (Squeejee) visade hur de byggde Tweet Congress och hur de använder Twitters API och Twitters API för sökningar.

Deras första tips var att inte vara rädd för att göra refaktureringar, det andra tipset var att se till att komma på Twitters whitelist.

Ett annat tips var att använda Domainr för att hitta bra domännamn.

Marknadsföringsstrategin

  • Twitter!
  • Gick med i olika Webb-tävlingar (och vann sin kategori på SXSW)
  • Skapade relationer med folk utanför IT-industrin

Floxee

En av bieffekterna av att göra Tweet Congress var att de kunde bryta ut Floxee både som en hostad tjänst och som öppen källkod.

Building a Video Portal in Rails

Ed Laczynski (Zype) och Nathaniel Bibler (Rocket Jump Industries) berättade om hur de arbetar med CDN’s och videoprocessing-tjänster. Hur de strukturerat sin databas och applikationslogik.

De har byggt ett Ruby-gränssnitt mot thePlatform som hanterar hämtningen av metadata samt implementerar Factory-mönstret för att bygga olika produkt-objekt.

De använder memcached för att hantera cachningen.

Integrating SMS Messaging with your Rails Application

Blythe Dunham (Spongecell) visade olika sätt att skicka och ta emot SMS genom Ruby.

Med RubyGSM kan man skicka AT-kommandon till mobiltelefoner.

R-House – Rails for Home Automation

Fernand Galiana (LiquidRail LLC) har skapat projektet R-House vilket är ett Ruby-lager ovanpå LinuxMCE.

Med R-House kan man kontrollera hårdvara, tex. dimma lampor, låsa upp dörrar, klimatkontroll eller styra mediacenter.

Han visade också hur han använder en iPhone som fjärrkontroll till sitt hus.