Geekstammtisch

Mehr oder weniger regelmäßiger Stammtisch rund um Geektum, (Web)development und was immer unsere Gäste an interessanten Dingen zu erzählen haben

https://geekstammtisch.de/

subscribe
share






GST003 - Mein Callstack ist kleiner


Heute wieder mit Gast: Florian Gilcher (@Argorak, http://asquera.de/blog)

Errata
  • Auf Grund der kurzen Zeit zwischen den Aufnahmen qausi ausgefallen. Oder einfach keine Fehler gemacht ;-)
Unser Gast
  • Florian aus Berlin
    • Hat dort seine eigene Firma
    • Ist vor allem Backend-Entwickler \o/
    • Padrino.rb Core-Entwickler (Sinatra-basiertes Webframework: http://www.padrinorb.com)
    • Sehr aktiv im deutschen Ruby-Forum aktiv: http://forum.ruby-portal.de/
    • Hat letztes Jahr das eurucamp mitorganisiert: http://2012.eurucamp.org/
    • Und ist auch sonst sehr stark in der Community aktiv: "Community macht Spaß"
Padrino
  • Entstanden aus Sinatra-Plugins
  • Auch heute ist eine Padrino-App "nur" eine Ansammlung von Sinatra-Apps
  • Padrino ist viel expliziter als Rails
  • Padrino "zwingt" den Entwickler sich mit vielen (allen) Entscheidungen selbst zu beschäftigen
  • Rails Pain #1: Initializer-Reihenfolge (auch von Engines), Paadrino kümmert sich nicht
    • Ladereihenfolge, Config etc muss man selbst machen
  • Rails Pain #2: Logger austauschen
    • Dirk empfiehlt das logging Gem https://github.com/TwP/logging
    • Basti und Dirk haben sonst wenig Probleme mit Logging
  • Eignet sich Padrino gut für Einsteiger?
    • Der Grund Aufwand ist nach Flo schon höher
    • Aber der Zusammenhang zwischen den Komponenten wird klarer
    • Padrino behandelt Padrino Erweiterungen (Engines) expliziter
    • Philosophie bei Padrino: Setzt euch mit den Dingen auseinander!
  • Rails und Einsteiger? Auch nicht mehr ganz so einfach…
    • Yehuda Katz baut deswegen Tokaido (https://github.com/tokaido/tokaidoapp)
    • Steve Klabnik: Rails has Two Default Stacks (http://words.steveklabnik.com/rails-has-two-default-stacks)
  • Padrino Getting Started
    • Es gibt auch Generatoren
    • Schritt Eins: HTTP-Stack
    • Komponenten müssen ausgewählt werden
      • Von Test-Framework bis ORM alles auszuwählen
      • In Ruby passt eigentlich alles gut zusammen ohne viel Aufwand
    • Mit Rack (http://rack.github.com/) ist alles besser geworden
  • Es gibt auch noch Ramaze: The Web Framework for Rubyists (http://ramaze.net/)
  • Flo träumt von Jeremy Evans’ sequel (https://github.com/jeremyevans/sequel)
  • PostgreSQL hstore (http://www.postgresql.org/docs/9.0/static/hstore.html)
    • ActiveRecord hat mittlerweile auch eine Unterstützung
  • ORM tauschen ist mit Padrino genauso schwer wie bei Rails
    • Bei echten Projekten tauscht man nicht einfach mal so das DB-Backend, ORM hin oder her
    • Padrino macht es auch nicht einfacher, gibt einem aber von Anfang die Info, dass es mehr als ein gibt
  • Doku bei Rails sehr monolitisch, bei Padrino für jede Komponente eine eigene, unabhängige Doku
  • Der Austausch von ActiveRecord ist wegen ActiveModel sehr leicht geworden
    • Sehr viele ORMs und Form-Helper nutzen sehr viel ActiveModel
  • Padrino benutzt ActiveSupport
    • Allerdings sehr wenig by default
  • Zwischenfazit: Der Entwickler wird bei Padrino eher gezwungen sich mit Komponenten und Entscheidungen kritisch zu beschäftigen
  • Padrino bietet besser dokumentierte APIs um Komponenten einzuschieben
    • Rails 2 Zeiten - reden wir nicht drüber
    • Immer noch Altlasten, z.B.: viele Möglichkeiten aus dem Controller zu rendern
    • Rails ist einfach gute Konkurrenz ;-)
    • Rails ist schon ein sehr mächtiges Werkzeug
  • Als Rails-Entwickler kann man sich gut von Padrino inspirieren lassen
  • Basti ist beeindruckt vom Merb-Rails Merge (http://rubyonrails.org/merb)
Software Engineering
  • Bezug "How do we stop our Rails apps from being so horrible when they grow up?" (http://bit.ly/VFtzUI)
    • Alles unter dem Controller ist für Dirk immer noch ein sehr schwieriges Thema
  • Kann Padrino da unterstützen? Durch Aufklärung?
    • Bei Padrino ist der Tipp: Schnell raus aus dem Controller
    • Ein Webframework sollte vor allem den Web-Teil richtig machen
    • Bei allem danach hört die Unterstützung schnell auf
  • DCI (Data, context and interaction)
  • Flo arbeitet gerade einem Projekt mit Delegates ähnlich wie in Objective-C: Funktioniert super.
  • Dependency Injection ist eigentlich nur die richtigen Objekte an die richtige Stelle schieben
    • DI muss nicht Spring mit XML sein
    • Geht in Ruby viel einfacher
    • Geht auch in Java viel einfacher: Google Guice (https://code.google.com/p/google-guice/)
  • "Am Ende trennt sich bei diesen Themen einfach die Spreu vom Weizen"
    • ActiveRecord führt einen aber vielleicht zu weit in einen falsche Richtung
    • Allerdings: Nie wieder ohne ORM
  • Anemic Domain Model von Martin Fowler (http://martinfowler.com/bliki/AnemicDomainModel.html)
    • Ist ein Anti-Pattern
    • Sieht aus wie ein Domain-Model, aber:
      • Models halten nur Daten
      • Verhalten lebt in einem prozeduralen Service-Layer
    • Lösung sind dann "richtige" Domain-Models (http://martinfowler.com/eaaCatalog/domainModel.html) und "richtige" Service-Layer (http://martinfowler.com/eaaCatalog/serviceLayer.html)
    • Basti hat bisher noch nie davon gehört
    • Flo hat P of EAA nur überflogen aber Refactoring gefressen
      • Wichtigste Erkenntnis: Feature Hut ODER Refactoring Hut NIEMALS beides!
  • Die Zwei Stacks von Rails (http://words.steveklabnik.com/rails-has-two-default-stacks)
    • Omakase (http://en.wikipedia.org/wiki/Omakase) vs. Prime (http://en.wikipedia.org/wiki/Prime_(symbol)#Use_in_mathematics.2C_statistics.2C_and_science)
      • Omakase: ERB, MySQL, minitest, Fat Models, Skinny Controllers
      • Prima: HAML, PostgreSQL, RSpec & Cucumber, Fat Models, Skinny Controllers, Service Layer
    • Für Rails ist DHH der Sushi-Chef: http://david.heinemeierhansson.com/2012/rails-is-omakase.html
    • Es geht nicht um besser oder schlechter
    • Wie kommen Anfänger klar?
    • Eigentlich muss man sich gar nicht aktiv entscheiden, wie kommt man überhaupt auf den anderen Stack
      • PostgreSQL ist die Profi-Alernative zu MySQL
      • Mehr Aufwand in der Wartung verhält sich aber viel wartbarer
      • MySQL lässt sich trotzdem sehr gut betreiben
      • Flo steht auf rustikale Software
      • Man entdeckt Tablespaces (http://www.postgresql.org/docs/8.3/static/manage-ag-tablespaces.html)
    • Basti mag eher RSpec aber nimmt sonst eher den Omakase Stack
    • Flo mag mehr ERb nimmt aber Postgres
    • Eigentlich passt der Name eh nicht, weil ein guter Chef setzt einem nicht zweimal das gleiche Essen vor
      • Idee: Stack-Randomizer im Projektgenerator
  • Flo kennt das Rubyworks-Ökosystem
    • Wir haben das maßlos unterschätzt
    • Ist Thomas Sawyer (http://rubyworks.github.com/)
    • Ruby Q.E.D.: Cucumber auf Steroiden (https://github.com/rubyworks/qed)
    • Verwendet AE als Test-Lib (http://rubyworks.github.com/ae/) auch von ihm
    • Es lassen sich damit Blog-Posts testen
  • Semantic-Versioning at its best: https://github.com/sunaku/tork
  • Mit viel Liebe und Mühe sehr gute Libraries und die Masse verwendet es noch nichtmal
    • https://github.com/sunaku/inochi
  • RSpec's Doku ist in Cucumber (https://www.relishapp.com/)
  • Dokumentation ist nicht trivial
  • Zed Shaw hat einmal gesagt, dass das Problem darin besteht, dass wir den Leuten beibringen müssen wie sie es entwicklen
    • Die Technik ist da, das Lernen ist das Problem
    • Code-Review ist dafür gut
    • In guten Teams geht nichts einfach durch
    • Es geht dabei um Code, nicht um Kritik an der Person
Tools
  • JSON
    • JSON Pretty Print: https://github.com/jmhodges/jsonpp
    • jq: http://stedolan.github.com/jq/
      • JSON Path ist Kindergarten
  • httpie statt curl: https://github.com/jkbr/httpie
  • CodeRay hat einen Terminal Highlighter (http://coderay.rubychan.de/)
    • Sehr genau, weniger Sprachen als Pygments (http://pygments.org/)
  • Hosting Static Pages:
    • GitHub Pages (http://pages.github.com/)
    • Muss nicht nur Jekyll sein…
    • http://neilmiddleton.com/the-composability-of-buildpacks/
    • http://middlemanapp.com/ -> Heroku
    • Auch gut für Bloggen im Zug
  • Empfehlung: Syntax-Sonntag bei Ruby-Mine (http://www.ruby-mine.de/)
    • Sehr gute Einführung in Oniguruma (http://www.ruby-mine.de/wonado)
  • Gutes deutsches Ruby-Wiki: http://wiki.ruby-portal.de/Hauptseite
  • Open-Source Nachbau des RPG-Makers (http://www.rpgmakerweb.com/) in Ruby (http://devel.pegasus-alpha.eu/projects/openrubyrmk/boards)
  • Ruby-Forum ist immer noch in PHP :-)
  • Foren sind irgendwie nicht mehr aktuell, wird aber noch nachgefragt
Events
  • Insider-Infos zur SIGINT (Nachtrag):
    • Mehr Technik-Bezug incoming!
    • CFP soll ganz bald starten
  • eurucamp findet auch wieder 2013 statt: http://eurucamp.org/ (16. - 18. August 2013)


fyyd: Podcast Search Engine
share








 January 28, 2013  1h4m