The eZ Components BookLatest events |
Friday, August 15. 2008Running free, an OpenMoko short reportOn Wednesday I finally received my OpenMoko Freerunner, the smart phone every open source guy is dreaming of. I don't want to rant a lot about it, but just give you a rough overview on my impressions. I received the Freerunner from Trisoft who offer amazing support (IRC, free hotline), are very helpful and dealing with them is absolutly uncomplicated. Thank you, guys! The Freerunner box is shown above. The phone ships with a stylus, a headset, a nice bag, a USB cable and a charger cable. The hardware equipment is absolutely promising: A 400Mhz processor, 128 MB SDRAM, 256 MB internal flash memory (extensible via Micro-SD), triple band GSM, Bluetooth, Wifi, GPS and 2 3D accelerometers. When first switch on the Freerunner, the OpenMoko Linux distribution 2007.2 is booted. You see some kernel messages (cool!) and a nice boot splash after that. Booting is quite slow (felt like 1.5 minutes or so), but that's negligible for a fully blowen Linux. The interface of this initial version is based on GTK+. It looks clean, but still not really nice. However, you can live with that for now. Only rudimentary applications are installed from scratch:
The Terminal is (what would you expect) the most important app so far for me. Without it, connecting to your PC over USB network is not really comfortable. The OpenMoko wiki is already quite good. The getting started article references most important articles. Setting up the network and updating the phone using the opkg package manager is finished within minutes. The official OpenMoko repositories, as well as some user provided ones, offer already a huge variety of applications. I already installed a media player (not sure if this one works), some GPS tools and Mozilla Minimo. I did not have time to play around with these applications, yet. I might write more, ASA I do so. Yesterday during our weekly Usergroup meeting I installed the brand new 2008.8 software release (code name ASU) onto my SD card. Luckily I did not put it into the flash, so my 2007.2 is still alive. Installation of the distro works flawlessly. Booting the new version feels even longer than the old one did. The interface is absolutely ugly and basic stuff like scrolling does not work really good. The mixture of GTK, QTopia and other applications and GUI framework stuff looks extremely annoying and the usability of the GUI is even worse. The only good things I found in 2008.8 is the new (qwerty) keyboard and the scrolling top shelf I have to admit, I'm not too deep into the OpenMoko community, yet. Therefore my considerations might be a bit mis-leaded. However, I cannot understand why the GTK based approach was officially killed. The GUI looked nice and consistent, even the icons were OK. The new approach I read about (implementing FSO as a basis framework) sounds quite good to me, but the recent mixture of different platforms does not look promising in any way. My greatest relapse so far is, that I have no clue on which platform I should start developing. It does not make much sense to choose any of the available for now, so I won't start with anything soonish. That's quite a pita, since I have lots of crazy/funny/cool ideas in mind. I'm pretty sure, that's the same for a lot of potential OpenMoko contributors out there. For now, the Freerunner is a cool Linux platform to play with. Maybe I'll write some shell stuff to perform the most important stuff for me. Hopefully OpenMoko will come to a solution for the currently platform disaster soonish, so we all can get started contributing to the iPhone killer. I'd prefer a solution based on FSO and GTK. :) Short note for other Freerunner enthusiasts on the Ruhrgebiet area: We entered the PHP Usergroup Dortmund as a Local Group to the OpenMoko wiki, since 3 groupies now own a Freerunner. If you like to share experiences, ideas or just want to hang around in a nice geek circle, don't hesitate to join us on the weekly meeting!
Posted by Tobias Schlitt
at
12:21
| Comments (2)
| Trackbacks (0)
Defined tags for this entry: community related, openmoko
Thursday, August 14. 2008Beware, FrOSCon ahead!One of the most amazing German OS events is right in front of the door. Since the organizers of the FrOSCon expect a massive ammount of visitors, they ask everyone kindly to register on their website. If you did not do so, yet, take your heels and do so! Beside the head liners Rasmus Lerdorf and Andrew S. Tanebaum, you can also meet many of the national and international PHP-VIPs there:
some of them are giving really cool talks in the dedicated PHP track or one of the many other session tracks. Still undecided? Find the conference info ahead:
More information can be found on the PHP@FrOSCon website and the official FrOSCon homepage. If you plan to come around, feel free to leave a note here! Looking forward to seeing you! Tuesday, July 8. 2008Really helpful open source guysWhile writing tests for the eZ Components Webdav component I stumbled over an issue with Konqueror 3.5.9. While we have working tests for the PUT request (uploading files) for version 3.5.7, this request type did not work with my recent Konqueror installation. Some debugging and request dumping in Lighttpd later I was quite sure that Konqueror was the issue. I'm neither a C(++) guy, nor do I use KDE. Therefore I joined #kde-devel on Freenode to see, if anyone there would be willing to support me in my bug tracking. After a rough description I instandly got feedback on the essential points I needed: Where in the code to look for the issue (it's kdelibs/kioslave/http), what the correct SVN revisions for the 3.5.7 and 3.5.9 tags are and how I can easily try if the issue resides in the supposed code area. Some kdelibs compile later I could verify that the issue came from the kioslave http module. While I could not really see the issue in the diff from 3.5.7 to 3.5.9 myself, again some people in the IRC channel instantly helped me and we found the problem together within minutes. A patch was created within minutes and I hope my bug report for Konqueror will be closed soonish. In this sense: Thanks KDE people! That was really good support! :) Monday, June 30. 2008iRefuseToUse aNamingSchemeI find the recent discussion about good naming schemes quite funny. Namespaces are potentially coming in PHP 5.3 (does anyone believe?) and people start discussion about how they can even shorten their names from Abstract to aSomething and from Interface to iAnotherthing. I'm a fan of short names. As Lars pointed out:
and
I agree with these rules and am of the opinion that class names must all above anything contain a semantic. Interfaces indicate what you can do with an object, while abstract classes model that different classes have a common base and can be used in the same mannor. And indeed you can add these semantics to names without using the terms. Good examples are Persistable which indicates that an object implementing this interface can be persisted, Configurable or Connectable. Abstract classes usually model a common base for other classes and define how these are being used Reflector and Configurator are good examples for such semantics. If this does not indicate their abstractness good enough to you, you can still indicate that this is a basis for other classes to be extended before being used: BaseReflector or BaseConfigurator. In fact for me, the abstractness of a class does not really matter that much. Most commonly you also provide descendants of this class and it is commonly clear that one should not use DatabaseHandler but either of OracleHandler or MysqlHandler. Just my .02.
Posted by Tobias Schlitt
at
19:49
| Comments (0)
| Trackbacks (0)
Defined tags for this entry: php api design
Monday, June 23. 2008Sending HEAD requests with ext/curlext/curl is the common tool of choice, if one needs to perform more advanced HTTP requests from a PHP script (for simple ones, use a stream!). I recently wanted to perform a HEAD request to a file, after which I wanted to perform some more advanced HTTP interaction, so CURL was also the tool of choice here. Trying it out on the shell with a local web server, CURL was operating quite slow, in contrast to a GET request. The -i command line switch makes curl include the headers in the printed output, -X lets you define a custom HTTP request.
A difference of 6 seconds runtime of a HEAD in contrast to 0.2 seconds for a GET is quite contrary to the original idea of a HEAD request. HEAD is used to just receive the headers of an URI instead of receiving the whole contents, to save bandwidth, memory and execution time. ext/curl showed the exact same problem. Fiddling a bit with the command line switches, I found to replace -i with -I which makes curl print only the headers, but not the body of the response.
0.04 seconds is now even faster than the corresponding GET request, with the -I switch, which took me 0.09 seconds. Now I just needed to transfer the command line options to the corresponding ext/curl ones:
The RETURNTRANSFER makes ext/curl return the HTTP response instead of printing it. Using the CUSTOMREQUEST option you define to send a HEAD request instead of a standard GET or POST request. The HEADER option makes ext/curl include the response headers in the return value of curl_exec() call and NOBODY avoids the inclusion of the body content here. The URL option as usually sets the URL to request and curl_exec() makes ext/curl execute the request. The runtime was even a fraction of a second faster here, compared to the command line version, but that can be subjectively. However, the HEAD request works as expected now. Maybe it's useful for someone to know this. Sunday, June 22. 2008Hierarchical cachingOne of the cool new features in the new 2008.1 release of the eZ Components library is hierarchical caching. Until now, we supported several types of cache storages. Some of these utilize the file system to store data, others can use APC or Memcache. While file based caches are usually large, since disk space is getting cheaper and cheaper, they are also much slower than memory based caches. RAM caches in contrast are blazingly fast, but memory is still much more limited than disk space. Therefore it is sensible, that the most important data for a website is stored in memory while less important stuff gets cached on the disk. The new ezcCacheStack class in the eZ Cache component provides an automatic way of realizing this. You simply stack together an arbitrary number of storages. The stack will store every item into all of the stacked caches. You can configure how many items may reside in a storage. A replacement strategy class takes care about purging a certain number items in case a storage runs full. On restore, the stack will fetch the desired item from the topmost cache it is still stored in. Replacement strategies shipped with the eZ Cache component provide you with 2 well-known cache algorithms: Least Recently Used (LRU) and Least Frequently Used (LFU). The first one keeps track on when a cache item was last used and discards items that have not been used for the longest time, in case a storage runs full. LFU, in contrast to that, purges items that have been used least frequently. If none of these strategies fits your needs, you can always implement your own strategy, quite easily. Using the cache stack with an appropriate replacement strategy allows you to simply ignore which items are stored where and simply use the stack as your only cache storage. There are lots of other cool things in the 2008.1 package, which was released last Monday. We have 3 new components: Document, to parse and render different document formats, Feed, for creation and aggregation of XML feeds, and Search, which is a search engine abstraction layer, modelled after the PersistentObject component. Beside that, some other components got major new features. Feedback as usually highly appreciated. Enjoy! Friday, June 20. 2008eZ Conference: A technical view on eZ Components slidesI'll be giving a session on the technical aspects of eZ Components in about 20 minutes at the annual eZ Conference here in Skien, Norway. Here are my slides of this presentation for download. It also includes code examples for many new features in our most recent release 2008.1 (hot, just fron Tuesday). I'll write some more about that later. Update (2008-06-20, 15:13): I messed up with the download link, which is fixed now. Wednesday, June 18. 2008Firefox 3 out nowLast night the Mozilla developers released Firefox 3.0 to the wild. Congratulations for the new major version! I've been using the RCs since some weeks to see what the new version can. My impressions are a bit mixed. On the one hand, I love the new rendering, which seems much faster and smooth. The new bookmark management is quite cool and after some fiddling I also got my foreward/backward button back, which is 1 button instead of 2 now. Luckily, most of my favorid extensions already have adopted Firefox 3 and run smoothly. Web developer toolbar, Flashgot, Adblock plus, Flashblock, Google preview, Download Statusbar, Greasemonkey and the StumbleUpon work nicely. Firebug ist still in beta state for 3.0, but also works fine so far. However, there are still some, which did not see new releases for ages and therefore do not seem to be even near to a Firefox 3 version. I needed to switch from All-In-One-Gestures to Firegestures, which was fine, since I mostly use the "back" functionality which works the same in both. Tab Mix Plus does not work at all, but is essential for me. Started from the undo close tab history, which gives you a list of recently closed tabs instead of just restoring the last, over the duplicate tab function to the central close button, I'm missing a good part of my used Firefox functionality. I'm a bit sad, that I neither have the time nor the possibility to dig deeper into XUL stuff to fix the issues myself, which would be the open source way to do it. However, I still hope that someone else out there will have or that other people will come up with a different extension which brings the same nice features. So long, I can live quite good with Firefox 3 for now. It still hangs in certain conditions on my system, but that should be fixed in one of the next bug fix releases. I know very well, that X.0 versions are never absolutly stable. Amazing, how stable Firefox 3 already is! In that sense, great work, Firefox hackers! Everyone out there should download and try out Firefox 3.0 today, to help with building the desired world record. There have already been more than 250,000 downloads from Germany, as I write this article. So, let's see where this leads. :) Update (2008-06-18, 19:08): The Search Status extension works, seems I had disactivated it for some reason. Update (2008-06-23, 10:36): Thanks to a comment here, I got aware of a recent dev build of Tab Mix Plus. Luckily it seems to work quite fine, so my FF3 is near to be complete now. :) Thursday, May 29. 20086 essential PHP development tools slides from IPC/DLWA little bit belated, but as promised during the session, I just uploaded my slides from the talk 6 essential PHP development tools in 60 minutes. Since there is so much to say I actually managed to get 4,5 tools through and for all of these it felt to be too few time. I think I should provide a workshop for the next conference Hope to see you there! 'till next time. Wednesday, May 28. 2008eZ Components status slides from IPC/DLWYou can find my slides from The state of eZ Components online now. The talk was quite crowded and I hope to also have attract some new contributors. Tuesday, May 27. 2008Database abstraction slides from IPCI just uploaded my slides from the talk Database abstraction with eZ Components. Thanks to the attendees for being so active and even borrowing me a notebook and an USB stick, since the beamer disliked my Thinkpad! :) The slides are CC by (see last slide for details). Tuesday, May 20. 2008Girl Geek Dinner right before IPC/DLW next weekNext week the Dynamic Languages World conference (aka |





