Warum ich selbständig geworden bin?
July 23, 2008 on 5:15 pm | von Alexander Lang | 4 KommentareIch kann arbeiten wann ich will.
Ich kann arbeiten wo wo ich will.
Ich kann arbeiten mit wem ich will.
Ich kann arbeiten woran ich will.
Ich kann mir meine Kunden aussuchen.
Ich kann arbeiten womit ich will.
Ich kann arbeiten wie ich will.
Ich kann mir mein Büro aussuchen und einrichten wie ich will.
Ich kann mir aussuchen, wieviel Geld ich verdienen will.
Ich lerne jeden Tag mehr dazu, weil ich nicht nur Programmierer, sondern gleichzeitig noch Projektmanager, Geschäftsführer, Administrator, Sales-Fuzzi und sonstwas bin.
Um das mal zusammenzufassen: ich habe die freiheit zu tun was ich will. Und wenn ich irgendwann mal keine Lust mehr habe kann ich mich immer noch anstellen lassen. Oder nach Hawaii gehen. Darum.
(Hab ich noch was vergessen? Kommentare…)
Oslo we’re coming
July 18, 2008 on 5:53 pm | von thilo | keine KommentareSo, finally everything is prep’ed: flights booked, accommodation confirmed, host office organized and cat fed. Tomorrow, very early in the morning, off we go to Oslo to live and work there for one week
It’s just a short period of time but we’ll try to get the most out off it. We got in contact with the local ruby user group, starting off with a couple of beers on sunday and hopefully exchanging some great wisdom. Maybe we can also initiate a speaker exchange with the berlin ruby user group.
Thanks to shortcut who have been kind enough to let us stay at their office for the week, we are mighty excited to get a glimpse on their work culture. And in the evenings and weekends we will surely check out the vicinity of Oslo.
I’m sure this will be cool work holidays
If anyone in Oslo wants to meet us just send an email. We’ll also be posting some photos once we’re there.
RSpec Story Runner auf deutsch
July 14, 2008 on 12:22 am | von Alexander Lang | keine KommentareWir sind gerade mit einem neuen Projekt gestartet - alles richtig “nach Lehrbuch”: kurze Iterationen, Iteration Planning zusammen mit dem Kunden, Behavior Driven Design, User Stories, automatisierte acceptance Tests - all die schönen Dinge die man in so einem modernen agilen Softwareprojekt haben will.
Während der Planung der ersten Iteration haben wir zusammen mit dem Kunden User Stories geschrieben, um sie anschließend direkt in den RSpec Story Runner zu werfen, also As a User I want to upload my photo So that everyone can see my smiley face. Da unsere Kunden deutsch sprechen war das Meeting und dementsprechend auch die Stories auf deutsch, also Als Benutzer will ich mein Foto hochladen können damit alle mein tolles Grinsegesicht sehen können. Damit der Story Runner damit umgehen konnte mussten wir ihm eine neue Sprache beibringen. So geht’s:
Moving from Rails 2.0.x to Rails 2.1 [Updated]
June 4, 2008 on 10:59 am | von thilo | 1 KommentarWe are in the process of moving our production code from autoki to the shiny new rails 2.1 and thanks to our unit tests/(r)specs we encountered some gotchas and wows we’d like to share.
Here are some things that change in rails you shold be aware of.
If you are using custom callbacks for you rails observer you now have to tell rails about these callbacks first. Simply add a define_callbacks :your_callback, :your_other_callback in models with custom callbacks.
Dealing with legacy databases - multiple models per table
June 4, 2008 on 10:33 am | von Alexander Lang | keine KommentareOn a recent Rails project I had to use an old database schema that had been designed years ago for some php app. The two main entities in the application were companies and their projects. For whatever reason the designer had created one huge table called organizations with all the companies and projects inside. A row in the database marked a company when the is_company column was 1 and a project when the is_project column was 1.
|----------------------------------------------------| | id | name | is_company | is_project | |----------------------------------------------------| | 1 | google | 1 | 0 | | 2 | world domination | 0 | 1 | |----------------------------------------------------|
In my rails app I created two ActiveRecord models: Company and Project and set the table name for both to organizations:
Now the real problem was his: when I did a Company.find :all I got all the companies and all the projects, so I had to do this instead: Company.find :all, :conditions => {:is_company => true} - throughout the project, and whenever I forgot the condition somewhere all the projects showed up in the wrong place. So what I needed was a generic solution.
To make a longer story short I played with scope_out defining a projects scope on the Company model, so I could at least do Company.find_all_companies and didn’t have to specify the conditions over and over again - but that still wasn’t DRY at all. One morning short after waking up (the time I usually have the best ideas) it dawned on me how simple the solution actually is:
I added a scope around all find and count calls of my model and now I can just do whatever find operations I want and don’t have to think about scopes and tables ever again. Sweet object encapsulation.
New plugin: totally restful authorization
June 3, 2008 on 9:48 am | von Alexander Lang | keine KommentareWe have again released a new plugin. Continuing the series of completely original names it’s called totally restful authorization.
The exec summary: you can declaratively add permissions to your (ActiveRecord) models for creating, viewing, updating and destroying them. A set of before filters automagically checks all incoming requests on your restful controllers for the permission and grants or denies access based on the permissions declared on the respective model.
How to install
Now with Rails 2.1 out all you have to do is script/plugin install git://github.com/langalex/totally-restful-authorization.git.
How to use
Include he PermissionCheck Module into the controllers you want to be checked or simply into the ApplicationController to secure your entire application.
Second, declare permissions on your model using the built in domain specific language.
That’s it. From now on all requests will be checked against your model permissions and be blocked if the authorization fails. For more details see the README and the unit tests. (Btw. if anyone has a good idea on how to replace the controller tests with RSpec specs, i.e. get controller specs working in a plugin please tell me)
MySql - Teil 1: Den richtigen Index finden
June 3, 2008 on 8:54 am | von thilo | keine KommentareDie Datenbak MySql ist bei Webanwendungen sehr verbreitet, unter anderem weil sie kostenlos, relativ schnell und etabliert ist. Auch bei uns verrichtet MySQL zuverlässig seinen Dienst. Grund genug mal unsere Erfahrungen in ein paar Blogeinträge zu gießen und damit das rumlavieren in der sehr umfangreichen offiziellen Dokumentation auf echte Härtefälle zu beschränken.
Zuerst schauen wir uns mal an welche Werkzeuge MySQL von Hause aus mitbringt, um beim Erstellen von sinnvollen Indizes zu helfen.
weiterlesen…
New Rails Plugin for making ActionMailer asynchronous
May 19, 2008 on 1:09 pm | von Alexander Lang | keine KommentareWe have just released a new rails plugin called workling_mailer. This plugin provides a module which - when included into an ActionMailer subclass - pushes all emails that would normally be delivered synchronously into a queue for asynchronous processing. For queuing it relies on the workling plugin which can use for example twitter’s starling as a queue server.
We use this on autoki which sends a lot of email (thanks to our social feed plugin
).
Recently we got errors from the mailserver complaining about too many concurrent connections. This did not only cause emails not being delivered and our users getting an error page, it also caused long running transactions in the database: if you send an email within an after_create hook in a model this happens inside of the database transaction. That means that if you have a 60s timeout on your mail server you end up with database transactions taking 60s to finish (or being rolled back in this case) which essentially locks up your tables after a short period of time.
Now that we are sending our emails from a queue one at a time, the mailserver is happy and our database transactions are again as short as they should be.
You can get the sources at github.
Git commits in the blog sidebar
April 25, 2008 on 3:47 pm | von Alexander Lang | 1 KommentarAs the careful reader might have noticed, we have added another RSS feed to the blog sidebar. Under the keiala product blog you can now see our commits to all our open source repositories on github. To make this possible I have used yahoo pipes for the first time. The pipe consumes the RSS feeds of all our open source projects on github, merges these into one, prefixes the titles with the project names and also truncates them, before wordpress consumes that pipe’s output and displays it in a sidebar widget. That’s what I call a real mashup.
If anyone is interested, here’s the pipe.
New Rails Plugin: social feed
April 25, 2008 on 3:40 pm | von Alexander Lang | 2 Kommentare
This is our latest and also largest plugin for ruby on rails so far. After the installation it adds a social feed as seen in the picture to your rails application. The sources have been extracted from autoki which has had a social feed for a couple of months now, so rest assured we have put some thoughts into it over time.
Features so far: As a user I can decide what kinds of events I want to see on my social feed and also wether I want to be sent an email when an event occurs. I can also decide wether others will receive a notification on their social feed concerning my own actions.
The plugin includes model extensions for the user, a controller and views for viewing the feed and editing settings as well as a generator to easily create new event types so, getting started only takes a couple of minutes. For more info check out the README or get the sources from github.
Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds.
Valid XHTML and CSS. ^Top^
post to del.icio.us

