debuggable

 
Contact Us
 
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14

The open source business model

Posted on 12/9/09 by Felix Geisendörfer

Seth Godin explains it perfectly this morning:

You need to make something else abundant in order to gain attention. Then, and only then, will you be able to sell something that's naturally scarce.

Tim and I stumbled across this model by accident when we started our blogs a few years ago. Since then our business has been a 99% byproduct of the "free" stuff we are doing.

-- Felix Geisendörfer aka the_undefined

 

Google Chrome for Mac

Posted on 11/9/09 by Felix Geisendörfer

When @predominant linked to a OSX release for google chrome the other day I couldn't resist.

My initial feeling: Awesome. Feels much snappier than Safari 4. My only two issues: a) No support for Safari-style keyboard shortcuts for the bookmark bar items. b) Even so chrome integrates with Keychain, it doesn't seem to use my Safari logins.

Lucky for me, Google also just released their Extension API. Two hours down the sink, I created my first extension: Bookmark Bar Shortcuts.

I switched from Firefox to Safari as my main browser a long time ago because I just could not deal with its slowness on OSX. I still have a few issues with Chrome, but I think they are due to the experimental Mac release. Once Chrome goes beta I'm pretty sure Safari won't be running on my computer anymore. Nor will Firefox once somebody ports Firebug to Google Chrome.

-- Felix Geisendörfer aka the_undefined

Update: @reconbot says Ctrl + <1-9> already works on Windows. Can somebody confirm?

 

How to Fetch the ENUM Options of a Field - The CakePHP Enumerable Behavior

Posted on 8/9/09 by Tim Koschützki

Hey folks,

for a current client project of ours we had to build an extensive ACL-like permission system. It had to support roles permissions and specific user permissions, possibly overriding the roles permissions. So, to create a user, you had to first define his "role" or "level" as I called it in a dropdown box in a form.

However, the field users.level is an enum type and can have the values 'guest', 'user', 'admin', 'superadmin' and 'root'. The problem is that it could be possible that new levels were added in the future. There was no need though to have a seperate user_levels table and a UserLevel model there, since the system should simply not be as generic to allow that and adding a new level in the future would require a complete other version of the software. So I went the easy way.
Besides, as we use uuids, the users.level field would contain them and after all we want our database to be readable in our favorite db management system.

So what I came up with is a very simple behavior that can extract the options for any ENUM field. It uses simple caching in order for the query to not be run all the time, so make sure to clear your cache as you update your enum field options in the db.

Here is the behavior:

<?php
/**
 * Behavior with useful functionality around models containing an enum type field
 *
 * Copyright (c) Debuggable, http://debuggable.com
 *
 * @package default
 * @access public
 */

class EnumerableBehavior extends ModelBehavior {
/**
 * Fetches the enum type options for a specific field
 *
 * @param string $field
 * @return void
 * @access public
 */

  function enumOptions($model, $field) {
    $cacheKey = $model->alias . '_' . $field . '_enum_options';
    $options = Cache::read($cacheKey);

    if (!$options) {
      $sql = "SHOW COLUMNS FROM `{$model->useTable}` LIKE '{$field}'";
      $enumData = $model->query($sql);

      $options = false;
      if (!empty($enumData)) {
        $patterns = array('enum(', ')', '\'');
        $enumData = r($patterns, '', $enumData[0]['COLUMNS']['Type']);
        $options = explode(',', $enumData);
      }
      Cache::write($cacheKey, $options);
    }
    return $options;
  }
}
?>

To put that into the form I did in the controller:

$enumOptions = ClassRegistry::init('User')->enumOptions('level');
$this->set(compact('enumOptions'));

and then in the form:

echo $form->input('level', array('options' => $enumOptions, 'label' => 'Level:'));

Enjoy and please give feedback.

-- Tim Koschuetzki aka DarkAngelBGE

 

CakePHP Workshop in München (15-16. Oktober)

Posted on 30/8/09 by Felix Geisendörfer

Nach einem sehr erfolgreichen Debüt in Berlin, freuen wir uns sehr den ersten exklusiv deutschsprachigen Workshop in München bekannt zu geben.

Unter der Organisation der CakeExperts bietet Debuggable Ltd. erstmalig am 15. und 16. Oktober 2009 im Telekom Center München einen Workshop an, bei dem erfahrene PHP-Entwickler in die Welt von CakePHP eingeführt werden.

Der Workshop findet an zwei aufeinander aufbauenden Tagen statt, in denen den Teilnehmern anhand der Entwicklung einer spezifischen Anwendung in CakePHP die grundlegenden Prinzipien des Frameworks vermittelt werden. Die Kosten für einen Tag betragen 400 Euro, für beide Tage 650 Euro – jeweils zzgl. MwSt.. Während sich der erste Tag stärker um die Grundlagen dreht, dreht sich der zweite um komplexere Problemstellungen und deren Lösung. Parallel dazu können in one-on-one Sessions spezifische Fragen mit den beiden CakePHP erfahrenen Dozenten Robert Scherer und Felix Geisendörfer diskutiert werden.

Robert Scherer, Leiter der CakeExperts in München, ist Spezialist in der Entwicklung PHP-basierter Webanwendungen und Autor des Buchs Webentwicklung mit CakePHP (Erschienen 9/2008 bei O’Reilly Deutschland). Felix Geisendörfer, einer der Köpfe von Debuggable Ltd., ist Mitglied im CakePHP-Core-Entwicklungs-Team und setzt sein tiefgreifendes Wissen über CakePHP seit Jahren in erfolgreichen Kundenprojekten ein.

Das Buchungsformular sowie detaillierte Informationen zur Agenda sind unter www.cake-experts.de/workshops abrufbar. Weitere Workshops finden statt am:
21. / 22.01.2010
15. / 16.04.2010
15. / 16.07.2010.

Die CakeExperts, eine Business Unit der M-Invent GmbH mit Sitz in München, sind zusammen mit der Debuggable Ltd. die deutsche Fachpräsenz des kostenlosen Open Source Frameworks CakePHP. Hinter den CakeExperts stehen die beiden Geschäftsführer Roland Bühler und Jürgen Jacob sowie hoch qualifizierte Mitarbeiter unter der Leitung von Robert Scherer.

Debuggable Ltd. wurde 2008 von Felix Geisendörfer und Tim Koschützki in Berlin gegründet. Die beiden CakePHP core Entwickler schlossen sich zusammen, um gemeinsam kommerzielle CakePHP Dienstleistungen anzubieten sowie an eigenen Projekten zu arbeiten.

M-Invent GmbH
Business Unit CakeExperts
Thierschstrasse 15
80538 München
Deutschland

Tel.: +49 (0)89 385 327 55
Fax: +49 (0)89 385 327 57
www.cake-experts.de

Pressekontakt:
Xpert-Marketing
Eine Business Unit der M-New GmbH
Thierschstr. 15
80538 München

mailto: nicole.thiel@xpert-marketing.com
tel.: +49 (0) 89 - 3585-4470
fax: +49 (0) 89 – 3585-4471
mobile: +49 (0) 179 – 74 96 263
www.xpert-marketing.com

-- Felix Geisendörfer aka the_undefined

 

Transload.it - XSS as a Cloud Service

Posted on 27/8/09 by Felix Geisendörfer

Today we are very happy to announce our new startup transload.it.

Transload.it is a video uploading & encoding service that is designed to make developers happy.

You might have had a client before that said something like: "Oh, and it would be cool if you could upload videos in the application.". And he is right, it would be cool - regardless whether it is a client project or something you were working on yourself.

However - implementing a feature like this means work. Hard, tedious, frustrating trial & error kind of work to be exact. I'll spare you the details, but just trust me when I say your average client could not repay you for the suffering.

Meet transload.it - the cure for all video upload suffering out there. Our idea is simple: Create an account --> Include our jQuery plugin --> Done.

But jQuery can't encode videos you might say. This is where the XSS part comes in. Whenever somebody uploads a file on a transload.it-enabled form, the plugin actually takes this file and sends it to our cloud service. Even better, it also shows your users a nice upload progress bar - no flash involved! Try it out.

The uploaded files are encoded in FLV, iPhone, iPod or PSP format (you can configure that) and finally stored in Amazon S3. We will add an option for you to use your own S3 buckets as well as your own FTP, SFTP or CDN servers as the final storage targets.

Anyway, enough good stuff. Let's talk about a few sad things. This is an alpha version. We have only a single server online right now, so as people will simultaneously upload their adult video collections (not you of course) things might really fall apart.

We will bring more boxes online over the next week, promised. However to be able to diagnose & debug issues as fast as possible, we opted for a single-box launch.

Now it is your turn to go out there & break things, mention competitors who already launched a product like this 2 years ago or contact us about investment opportunities.

-- Felix Geisendörfer aka the_undefined

 
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14