Qaiku, the conversational microblogging service that launched a year ago had a refresh that launched today. While it hasn't yet convinced the twittering masses, it has already proven itself as a lot more thoughtful platform for the Finnish online community, and as a valuable workstreaming tool.
The new version looks quite nice and fresh. Notice the privacy information on the right-hand side, which is relevant as Qaiku allows channels and profiles that are private or invitation-only:
Technically the new version is also remarkable as it is the first major website to run fully on top of the legacy-free Midgard2 platform. So yes, every entry you see there is a GObject. And D-Bus signals fly when you post.
On to the challenge, thenTo highlight Qaiku's threading, conversational nature I started a new "On my travels, I have" thread for sharing your most extraordinary travel experiences. This is not on Twitter or Buzz as with Qaiku it is so easy to keep the conversation together and accessible for the future as well.
To contribute, sign up on Qaiku, go to the thread and add your experiences as a comment. If you have a link or picture to include, you can also do so. My first entry was:
seen ice descend from the heavens and provide us with cold beer on a hot day in LesothoWill be interesting to see what comes out of this :-)
From CMStr.com there's a new tutorial showing you how to set up Joomla manually just in case something happens with the install and you need to change things yourself.
Why would I want to do a manual install when my web host has this Fantastico thingy that will install Joomla for me? Good question. [...] If you are building websites for a living, and or plan on using Joomla a lot, then you really need to start doing your own installs. [...] If you are an experienced parachute jumper, you would pack your own chute right? This is no different.Screenshots are included to help make the process easier as they walk you through setting up the basics like language settings and database information. They also touch on the FTP setting (off for security) and removing the admin user's information to help make things a bit more secure. It's not a comprehensive list of the things you'd need to do to get it 100% configured for just what you need, but it's a start.
On Kavoir.com there's a new post that reminds you that hashing isn't enough anymore to protect your users and their passwords. They offer a suggestion or two of what you can do to help lock things down a bit more.
The common practice is to hash the user password and store the hash string of the password in the database. When the user tries to log in and supplies his password, it is used to generate a hash string to be compared to the one stored in the database. [...] This approach may be secure in the 70s of the last century, but barely any more.Computing has evolved enough to where hashed can be matched, sometimes in less than two or three minutes. Their answer to the problem? Generate a random salt each time you create the hash with a constant being used as a base. A code snippet calling a user-defined function and the sha1 function are included.
Brandon Savage has posted his own response to the "don't be afraid of the upgrade" thread that's been going around concerning updating to PHP 5.3. He takes a different approach to the matter, though - one of a bit more caution.
When it comes to open source projects endorsing PHP 5.3 as their one and only PHP platform, I encourage caution. When it comes to open source projects that use PHP, there are three main issues that I believe should be considered before making the leap to PHP 5.3 (or any new release of any new software).He sees three considerations projects and companies should consider before making the upgrade on their servers - the amount of control you have over the environment, deciding if the upgrade is worth possible backwards compatibility breaks and how much support you want to still provide for the pre-5.3 version(s).
New on the PHPClasses.org blog there's an article on neural networks written up by Louis Stowasser looking specifically at creating a neural mesh with PHP.
Neural networks are a relatively new technology that aims to reverse engineer the functionality of the brain within a mathematics model. This may sound daunting and complex but the underlying concepts are very simple and Neural Mesh does the hard work for you. In a Web environment NNs (neural networks) are considered too slow and complex to warrant effort on what might even be a trivial task. To solve this, Neural Mesh has been heavily optimized. It uses caching to speed up running and training of networks.He explains what a neural network is on a base level and talks about it's ability to learn from the training its given (supervised or unsupervised). He also talks about how the networks can be useful and how to use the framework (found here) to create a simple network.
A new tutorial has been posted to the Zend Developer Zone today looking at making scalable vector graphics with PHP and the hep of one of two charting packages - ezcGraph or SVGGraph (examples are provided for both).
Programmatically generating graphs and charts using SVG requires a deep understanding of the SVG specification and the various SVG primitives, as well as a fair amount of time for research, experimentation and debugging. Or, in other words, that's your entire weekend shot! Fortunately, help is at hand. There are a number of open-source PHP libraries that support SVG chart generation, and using them can significantly reduce the amount of work involved in adding this feature to a Web application.He shows how to create simple images like bar, line and pie charts as well as adding in other things like a legend, custom titles and a sample where the user can define the sizes of a pie chart via some form input fields. Screenshots are included for all code examples to give you a better idea of the end result.
I'm doing a talk today in the Bossa Conference about using Midgard as a content repository for mobile applications. As part of my presentation I wrote some simple example code for using the Midgard APIs in Python, and thought they would be good to share to those not attending the event as well.
The idea of a content repository is that instead of coming up with new, isolated file formats or database setups for your application you can just work with objects and signals, and let Midgard handle the rest. This is something that lots of people are doing with CouchDB as well, but we feel Midgard, with its light footprint and native APIs for languages like Python, C, Vala and PHP fits better in the mobile applications context.
Installing MidgardMidgard packages are available for many different Linux distributions through the OpenSuse Build Service. To find the right repository for your setup, go to the OBS project page. For example, on my Ubuntu Karmic netbook the URL to add to apt sources.list is deb http://download.opensuse.org/repositories/home:/midgardproject:/mjolnir/xUbuntu_9.10/ ./. Then I just:
sudo apt-get update sudo apt-get install python-midgard2Midgard is also available in Maemo extras and for OS X on MacPorts.
Defining a schemaThe first thing when developing a Midgard application is to define your storage objects. This is done using the MgdSchema XML format. In this case we're doing a simple "attendee" object that amends Midgard's built-in person record with information related to the conference:
<?xml version="1.0" encoding="UTF-8"?> <Schema xmlns="http://www.midgard-project.org/repligard/1.4"> <type name="openbossa_attendee" table="openbossa_attendee"> <property name="id" type="unsigned integer" primaryfield="id"> <description>Local non-replication-safe database identifier</description> </property> <property name="person" type="unsigned integer" link="midgard_person:id"> <description>Person attending the event</description> </property> <property name="registration" type="datetime"> <description>Registration date of the attendee</description> </property> <property name="likesbeer" type="boolean"> <description>Whether the attendee likes beer</description> </property> </type> </Schema>Then we just save this XML file into /usr/share/midgard2/schema/ so that Midgard will find it.
Initiating the repository connectionOnce the MgdSchema is in place it is time to import antigravity and start hacking in Python. The code works pretty much in the same way in other languages Midgard is available for, but Python is used here for the sake of simplicity. First we load the Midgard extension:
import _midgard as midgardThen we setup the repository connection. With these settings we will store our content into an SQLite database located in ~/.midgard2/data/midgardexample.db:
configuration = midgard.config() configuration.dbtype = 'SQLite' configuration.database = 'midgardexample' # Open a Midgard repository connection with our config connection = midgard.connection() connection.open_config(configuration)As this is the first time we're interacting with the repository we need to tell Midgard to prepare the storage for itself and also for our new openbossa_attendee class:
midgard.storage.create_base_storage() midgard.storage.create_class_storage('midgard_person') midgard.storage.create_class_storage('midgard_parameter') midgard.storage.create_class_sTruncated by Planet PHP, read more at the original (another 2314 bytes)
On the php|architect site there's a recent post that splits apart the singletons versus static methods debate that seems to com up every once and a while with a better suggestion - dependency injection.
Much more important than performance is the fact that both static methods and singletons suffer from major drawbacks. When it comes to deciding between the two, you might forgo the benchmark comparison and choose the third-party candidate: dependency injection.He mentions the "dark side" of both static methods and singletons and how dependency injection can help rid your code of both. Instead of focusing just on the benchmark numbers, DI helps you keep your code more well-structured and "smarter" by scoping things to where they need to be and making them easier to test.
On DZone.com today there's a new interview by Lyndsey Clevesy with Jason Gilmore looking at the Zend Framework and some of the general things to expect in coming versions.
This week's DZone Refcard is about Getting Started with the Zend Framework. The card introduces you to the basics of the Zend Framework and sets you on the path to creating your first project. I met the author, Jason Gilmore, to find out more about the topic.They talk about some of what the framework currently has to offer developers, what kind of involvement he's had with it, who it supports as far as advanced PHP features and what's to come in version 2.0. The Zend Framework RefCard mentioned can be viewed or downloaded here - a six-page quick reference for some of the more common Zend Framework tasks.
Alvaro Videla has submitted a new post he's written up combining PHP and Erlang yet again, but this time he's using it to just store key/value pairs rather than for session data.
In this post I want to show you some of the neat things that can be done with the PHP-Erlang Bridge extension: A Key Value Store. Erlang comes packed with a Key Value store in the form of the ETS module. This is database is pretty fast and efficient for storing the Erlang terms in memory.He tried a proof of concept to see how well the system would respond and was able to push over 150k items into the storage in one second. Sample code and instructions on getting the bridge working are included in the post.
Which CMS does The Real Story Group Use? (Tony Byrne / CMS Watch):
The answer is, we use an open-source platform called "Midgard." We picked it nearly ten years ago, and it has held up fairly well.While the post contains many negative points about older Midgard (the UIs are a bit better now than they used to be, quite a lot of development has since been happening especially in the LTS branch), it is remarkable that CMS Watch has been able to run their services through the same CMS setup for ten years. This really shows the durability and commitment to long-term stability we have in the Midgard community. We've been doing this for more than ten years, and will likely keep going for quite a bit longer.
As for usability and popularity of Midgard, there is quite little we can do about it in the Midgard1 area, as that is now in long-term support phase that won't allow major changes. But Midgard2 is a new world with new opportunities. Midgard's content repository is pretty much there already, as is the MVC layer, and this spring we should be able to unveil the new, quite revolutionary CMS concept as well. Watch this blog for updates!
On the Template Monster blog there's a recent post looking at some of the upcoming features in WordPress 3.0 that many WordPress site owners have eagerly been waiting for.
Alright bloggers, web surfers and simple web enthusiasts, we've got some fascinating news for you all. Yes, Internet community can't stop buzzing about the forthcoming release of the new version of #1 blogging software '" WordPress 3.0. [...] The official release is scheduled for May 2010 but now we have opportunity to mark the major advantages that this release will bring.They list a few of the major enhancements that'll happen in the new release including:
You can find out more about this upcoming release from this post to the man WordPress blog.
Matt Butcher has a new post to his blog today with five things that every PHP developer should know about MongoDB, the popular NoSQL database project.
2010 is the year of the document database. While momentum has been steadily building over the last seven years or so, there are now a wide variety of stable document databases -- from cloud-based ones from Amazon and Google, to a wide variety of Open Source tools, most notably CouchDB and MongoDB. So what is MongoDB? Here are five things every PHP developer should know about it.He points out a few things - that MongoDB is a stand-alone server, that it's schemaless, you won't need to learn another query language to use it and that PHP and MongoDB play very well together (thanks to the Mongo PECL package already released).
On the Zend Developer Zone today there's a new post (technically a repost) of an article from Kevin Schroeder about using the job queue in the Zend Server software to enhance the functionality of your application.
When talking about building a scalable application there is a big concept out there that many PHP developers are not overly familiar with. That concept is queuing. It is becoming much more prevalent in PHP-land but the concept of a queue is still relatively unused among PHP developers. [...] Queuing a job is actually very easy to do. A job is run by calling a URL where that job resides. The Job Queue daemon will receive the request from your application and will then call the URL that you specified in the API call. Once you call that URL your application can continue going on its merry way to finish serving up the request.He includes some code snippets showing how to create the request - in this case a simple call that will just email when the job is preformed. There's more than one way to do it and he includes a more well structured/less scripty way to do things in an abstract class.
Brian Swan has a new post to his MSDN blog today with links to a few good PHP-based CodePlex projects that he thinks look pretty useful for the development community out there.
Admittedly, I'm interested in some of these projects [tagged with PHP] purely out of curiosity, but some of them actually look useful. I won't claim that these are the best of the PHP projects on Codeplex (hence the question mark in the title), but here are some that piqued my interest and that I plan to check out.The projects in his list are include PHP LINQ classes, Virtual Earth integration and the Zend Framework DB adapter for Microsoft SQL Native Client.
For those not able to attend this year's PHP London Conference, you might check out a summary post Lorna Mitchell has recently added to her blog about her time there.
This year I had the privilege of speaking at this event [...] my talk was entitled "Best Practices in Web Service Design" although perhaps "Things I Wish Web Service Creators Would Consider Before Writing Unclear and Unstable Useless And Frustrating Services" would have been a better title.This year's PHP London Conference was held on Friday, February 26th in London and had talks on regular expressions, mobile application development, cloud computing and database optimization. Check out the Joind.in page for the event to see comments left by those that attended.