Ist zwar ein halbes Jahr her, aber jetzt gibt es endlich die Mitschnitte der EuRuKo 2009 auf Blip.tv zu sehen. Angeboten werden die Videos im Flashstream, als Download, als Streams für iTunes, Miro, Channels.com oder einfach nur als RSS.
Besonders möchte ich auf den Talk von Stephan Kämper hinweisen, den Usern unseres Forums besser bekannt als Zehnbambusgarten. Meinen Rant über die Dokumentationsmoral von Rubyisten ("A Blues in Doc-Minor") findet ihr in der Lightning Talk Session 1, in etwa bei 25:40, Mikroprobleme und PHP-Werbeshirt inklusive ;).
Am 26. Oktober 2009 findet das 5. Dynamic Languages Symposium in Orlando (USA) statt. Die Veranstalter beschreiben ihre Veranstaltung wie folgt:
The Dynamic Languages Symposium (DLS) is a forum for discussion of dynamic languages, their implementation and application. While mature dynamic languages including Smalltalk, Lisp, Scheme, Self, Prolog, and APL continue to grow and inspire new converts, a new generation of dynamic scripting languages such as Python, Ruby, PHP, Tcl, and JavaScript are successful in a wide range of applications. DLS provides a place for researchers and practitioners to come together and share their knowledge, experience, and ideas for future research and development.
Das Vortragsprogramm enthält eine Keynote und 10 Vorträge aus dem universitären Bereich:
Interessant könnte der Vortrag über die Ruby Intermediate Language werden. Dabei handelt es sich um eine vereinfachte Zwischensprache, welche die Eigenenheiten von Ruby auf einen einfacheren Nenner bringen möchte. So werden u.a. die verschiedensten redundanten Syntaxelemente in einheitliche Konstrukte umgeformt, implizites Verhalten wird explizit spezifiziert und verschachtelte Methoden werden linearisiert (@mathegurus: bitte nicht hauen wegen der falschen Verwendung des Begriffes :-). Derzeitig wird dieses Projekt innerhalb von Diamondback Ruby genutzt, einer Rubyimplementierung mit statischer Typisierung. Das dazugehörige Ruby Intermediate Language Paper gibt weitere Einblicke in dieses Thema.
MacRuby hat nach dem Release 0.4 einiges über den Haufen geschmissen und baut nun auf der LLVM statt auf YARV auf. Seither gilt: selbst kompilieren ist Pflicht, nervig und vor allem lang (wer mal die LLVM von Hand kompiliert hat, weiss wovon ich spreche).
Seit neustem dürfen Snow Leopard-Besitzer ihren Prozessor wieder schonen, denn Claudio Poli bietet unter http://macruby.icoretech.org/ seit neustem nightly builds mit Installer an.
Wer in Zukunft auf der Suche nach einem Ruby Entwickler ist, kann sich ja dieser DSL bedienen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
class Applicant < ActiveEngineer require 'ruby' require 'mad_skills' require 'oo_design' require 'mysql' validates :bachelors_degree def qualified? [:smart, :highly_productive, :curious, :driven, :team_player ].all? do |attr| self.send attr end end end class ShopItToMe include TopTalent has_millions :subscribers, :include=>:mostly_women has_many :profits, :revenue has_many :recent_press, :through=>[:today_show, :good_morning_america, :new_york_times, :oprah_magazine] belongs_to :south_park_sf has_many :employees, :limit=>10 def apply(you) unless you.build_successful_startups raise "Not wanted" end unless you.enjoy_working_at_scale raise "Don't bother" end end def work with small_team do our_offerings.extend you subscribers.send :thrill [:scaling, :recommendation_engines].each do |challenge| assert intellectual_challenges.include? challenge end %w(analytics ui collaborative_filtering scraping).each do |task| task.build end end end end def to_apply include CoverLetter include Resume end |
Der in und für .NET implementierte Ruby Interpreter IronRuby ist in der Version 0.9 erschienen. Mit diesem Release wurde die Performance laut der Ruby Benchmark Suite deutlich verbessert. Die Performance ist nach diesem laut Entwickler 2x so schnell wie die von MRI 1.8.6. Weiterhin besteht nun Unterstützung für die Win32OLE Bibliothek, welche für eine beinahe reine Windows Implementierung ja verpflichtend sein sollte. Verbesserungen gab es ausserdem innerhalb der Interaktion zwischen verschiedenen DLR Sprachen wie Python. Nach dem sich IronRuby schon seit einiger Zeit in die Reihe der “zu Rails kompatiblen” Ruby Implementierungen einreihen kann, rückt mit diesen Performance Verbesserungen eine Version 1.0 in greifbare nähe.
Jetzt hat mans fast geschafft: MRI 1.9, MRI 1.8 und JRuby sind parallel installiert und haben alle ihre eigene Executable. Alle benutzen verschiedene Gem-Repositories und die Installationen sind schön isoliert. Alles rosa? Fast! Es bleibt da noch das Problem mit ausführbaren gems...
Es scheint wohl eine große Sache zu sein, wenn sogar Heise davon berichtet. Dabei war die Übernahme der Ruby 1.8.6 Schirmherrschaft schon seit einigen Monaten mehr oder weniger beschlossene Sache. Trotzdem noch mal hier die Erwähnung.
Engine Yard wird ab sofort die weitere Pflege der Version 1.8.6 übernehmen. Der Grund dafür ist wohl klar. Engine Yard haben schon seit einigen Jahren Ihr Geschäft rund um die Version 1.8.6 aufgebaut. Sie nutzen und unterstützen die Entwicklung der Ruby Enterprise Edition, bei der es sich um eine gepatchte Version von 1.8.6 handelt, die deutlich effizienter arbeiten soll. Engine Yard ist auch sonst sehr engagiert in Richtung Rubinius oder Phusion Passenger. Aufgrund dessen äussere ich die wage Vermutung, dass die Verbesserungen von REE nun zumindest teilweise Ihren Weg in den Hauptentwicklungszweig der 1.8.6 Version finden werden. Es wird definitiv spannend, wenn nun neben den normalen Maintainern auch eine Firma Ihren Platz einnimmt.
(Anm.: Wil Shipley ist der Autor von Delicious Library, mit welcher man seine Sammlung aus Bücher, CDs, Filmen, etc. einfach verwalten kann. Im Moment arbeitet er an Delicious Library 2 - die erste Mac-Anwendung die bereits als Beta-Software einen Apple Design Award gewonnen hat. In seinem Blog Call me Fishmeal gibt er ganz gern Ratschläge für Programmierer. Einer davon ist Free Programming Tips are Worth Every Penny, der auch für nicht-Mac-Programmierer sehr interessant ist. Übersetzt mit freundlicher Erlaubnis von Wil.)
Manchmal meint jemand zu mir, “Hey, Wil, du programmierst doch seit die Dinosaurier die Erde beherrschten… hast du nicht ein paar Ratschläge für uns Jungspunde?”
Worauf ich immer antworte, “Hey, ihr Schlingel, RUNTER VON MEINEM RASEN!”
Nein, nein, normalerweise wende ich zögernd “Ach, ich weiss doch auch nicht so recht” ein, während ich schüchtern auf meine Füße starre.
Aber ich hab in letzter Zeit oft darüber nachgedacht, nachdem ich zuerst alleine so viel Code für Delicious Library geschrieben habe (zum ersten mal seit vielen Jahren), und dann einen neuen Programmierer eingestellt und versucht habe ihm mein Wissen zu vermitteln. Und dabei habe ich einen Stil entwickelt:
Tja, jetzt ist Ruby aus den Top 10 geflogen – überholt von JavaScript und Delphi. So ziemlich jede Sprache scheint im Dezember zugelegt zu haben, mit großen Sprüngen. Zwar ist Python Sprache des Jahres geworden, aber auch die TIOBE-Kommentatoren wissen nicht genau, woher der Aufwind kam. Und die Vermutung, dass Python 2008 weiter an Beliebtheit gewinnen wird, ist sicher richtig.
Was passiert auf der Ruby-Seite?
Nine? Doch!
Nur für’s Protokoll: Ruby ist jetzt auf Platz 9 vor JavaScript und direct hinter C#. Und das, obwohl auch JavaScript immer populärer wird. Wenn jetzt noch Lua und D statt Perl und C++ in die Top 10 aufsteigen, ist die Welt doch beinahe in Ordnung ^^
Wollt Ihr gerne mithelfen Ruby auch auf der .NET Plattform verfügbar zu machen? Das erste Dokument was Ihr hierbei von Microsoft (bzw. John Lam) bekommt ist nicht etwa eine Anleitung wie Ihr einen kompatiblen Patch erstellt. Nein! Ihr bekommt zu Erst einen Vertrag. Ich verkneife mir jetzt jeden weiteren Kommentar dazu. Wenn ich mir das Ding so durchlese, scheint der auch nicht wirklich schlimm zu sein. Allerdings ist der durchschnitts Enwickler wohl kaum in der Lage, die Folgen einer dortigen Unterschrift abzusehen. Ich wünsche aufjedenfall jedem Helfer viel Spaß damit.
Oh Junge, Junge, und das ist erst der Anfang…
Also, hier – die Website der “Ruby Association”, deren Vorsitzender niemand anders als Yukihiro Matsumoto ist. Erste Vereinshandlung: Ausrufung eines Ruby Logo Contest. Hier die Übersetzung für’s deutsche Kino:
Um das doch recht große Sommerloch zu füllen möchte, ich euch einige meiner Neuentdeckungen vorstellen. Ich denke mal vieles wird schon bekannt sein. Trotzdem war ich von einigen Sachen recht begeistert.
Fangen wir mit meiner letzten Entdeckung an: RubyOSA. Dabei handelt es sich um einen Parser der von MacOSX Applikationen die Interfaces analysiert und on the fly eine RubyAPI dazu erstellt. Somit lassen sich Anwendungen statt mit AppleScript nun auch mit Ruby steuern. Ein Beispiel wäre da iTunes. Wer wollte nicht schon immer mal seinem iChat den aktuellen Track für die Status Nachricht übergeben? ;-)
require 'rbosa' itunes = OSA.app('iTunes') track = itunes.current_track OSA.app('iChat').status_message = "Playing: #{track.name}"
Weiter Beispiele und Anleitungen finden sich in englischer Sprache auf der Webseite.
In eine ähnliche Richtung geht der Blog RubyOnWindows. Hier gibt es recht gute Artikel zu Ruby auf Windows Maschinen. Eben auch Ruby zur Steuerung von iTunes.
Nachdem ich heute wieder mal einige Excel Diagramme angeschaut habe und der Meinung war das muss auch einfacher gehen habe ich mich ein wenig auf die Suche nach einer Lösung mit Ruby gemacht. Dabei bin ich auf Gruff gestoßen. Damit lassen sich wirklich sehr einfach doch recht ansehnliche Diagramme erstellen. Einzig das Kuchen-Diagramm hat nicht den von mir gewünschten Funktionsumfang.
Und so ganz nebenbei bin ich auch noch über einen Subversion Browser gestolpert, der mit Ruby on Rails realisiert wurde. Dabei wurde an Ajax nicht gespart. Eine Demo zeigt die wichtigsten Funktionen.
So das war mein Beitrag zum Sommerloch und jetzt weiterschlafen!
JSON ist eine Alternative zu YAML, findet zunehmend Verbreitung und wird unter anderem von Rails benutzt, um Daten über die AJAX-Schnittstelle zu senden. Das Ruby-Core-Team hat sich jetzt entschieden, Ruby serienmäßig damit auszurüsten:
Mon Jun 4 21:15:45 2007 NARUSE, Yui <naruse@ruby-lang.org>
* lib/json.rb, lib/json, ext/json, test/json:
import JSON library.
require 'json' # To create a JSON text from a ruby data structure, you # can call JSON.generate (or JSON.unparse) like that: json = JSON.generate [1, 2, {"a"=>3.141}, false, true, nil, 4..10] # => [1,2,{"a":3.141},false,true,null,"4..10"] # It's also possible to call the #to_json method directly. json = [1, 2, {"a"=>3.141}, false, true, nil, 4..10].to_json # => [1,2,{"a":3.141},false,true,null,"4..10"]
$ irb19 -rjson irb(main):001:0> jj Array('1.8'..'2.4') [ "1.8", "1.9", "2.0", "2.1", "2.2", "2.3", "2.4" ] => nil
Die Bibliothek wurde in C von Florian Frank geschrieben und gestern in den trunk importiert (das heißt, in Ruby 1.9.) Zu Weihnachten gibt es also schnellen JSON-Import und -Export in Ruby.