Dave's blogWe're Growing and Hiring (25.6.2008, 06:15 UTC)

Dave Hall Consulting has been growing strongly. We currently have a couple of contractors working on various projects. We are about to commence a significant new project and so need more hands on deck.

We are not looking for website developers. If you are a web application developer with at least 2 years commercial PHP experience looking for contract work, email your resume to jobs@davehall.com.au. Make sure you include links to code you have worked on.

You should have FOSS development experience, although some of the work will be proprietary client systems, they will be built on top of FOSS stacks. We are based in Melbourne, but the current team is distributed, so telecommuting is fine. Experience with cross platform JS and CSS is essential. Knowledge of Zend Framework, PHPUnit and YUI are preferred. We value elegant quality solutions, as should you. A good grasp of written and spoken English is a must. Pay, hours and term of contract are all negotiable.

Link
Dave's blogEvince Blows my Mind! (6.6.2008, 10:40 UTC)

A couple of days ago I was emailed a scanned invoice as a PDF. I was planning to just print it and file it, as the tax office here still requires dead tree records for 7 years last time I checked. Before printing it on 100% post consumer waste recycled paper, I opened it in evince. Nothing spectacular in any of that.

Then it happened, I accidentally clicked and dragged on the page. All of a sudden evince was highlighting the printed text on the page. This was a bitmap embedded in a PDF. Evince was using OCR to highlight the contents of the page.

There are moments every so often I am amazed by the features talented hackers add to FOSS. This was one of those moments. I will never look at evince the same way again.

evince showing the scanned page

evince showing the scanned page with highlighted text using OCR

I had a similar reaction when properly using the awesomebar in firebox 3 for the first time.

Update After seeing the comment below from Mr X, I checked evince with a few more PDFs and unfortunately evince wasn't doing OCR in real time. The text is embedded in the PDF. Maybe one time this will be possible. Any evince developers reading, please consider this a feature request.

I am still impressed with evince, just a little less impressed than I was.

Link
Dave's blogInternode adds SourceForge.net Mirror (3.6.2008, 23:26 UTC)

Yesterday Internode annouced that they will be hosting the Australian SourceForge.net mirror. Internode has been a long term supporter of FOSS. They are one of the few ISPs who officially support Linux. They offer their massive mirror, which has terabytes of FOSS, to the world.

The new SourceForge mirror will be available to the world. The Australian mirror was previously hosted by Optus. Optus hosts other mirrors for FOSS projects including ubuntu. Unfortunately their mirrors are not as reliable as many users would like. The Australian sf.net mirror should be rock solid if Internode's past performance is anything to go by.

Like the other content Internode mirrors, the sf.net mirror will be unmetered for node's ADSL customers. This is in addition to a large amount of other unmetered content, such as ABC content, almost 100 streaming radio stations and other services..

I use and recommend internode to anyone who is interested in high quality ADSL services. The support for FOSS is a secondary consideration, as it is pointless having access to it all, but the connection being down all the time.

Link
Dave's blogOffer of the Day (2.6.2008, 10:24 UTC)

This turned up in my inbox this morning and I thought I would share it with people.

Good day

I have on several occasions received email from some other debian consultants not just you they've all been asking me to introduce debian to every institution in my country; you must understand that though am very interested, we are talking about a number that would almost run into infinity.

It is true that my Government can bear the cost of importing up to 500Million CDs but the fact remains that I personally do not understand the Software or what it's used for, as such I can't propose it to the senate this is one aspect that we have to discuss in detail about, preferably via my private email which am presently using to write you.

Kindly get back to me so we can discuss about this software and it's benefit to the users if it's beneficial then I promise we can impose it on my country just like Microsoft and make money out of it like you proposed but most important is that you get back to me with details.

Best regards

Abubakar Maikafi
Email: maikafiabubakar@gmail.com
Phone: +234-07025419252.

He is obviously after full CD sets of Debian if he wants half a billion CDs. I am not in a position to supply this quanity of discs, but if you are, please feel free to contact Abubakar Maikafi about his needs.

Usually I only get unrelated spam or resumes from Indian coders looking for .NET on Windows work via my Debian Consultants listing. This even slipped past spam assassin and made my morning.

Link
Dave's blogEssential Tools for a PHP Developer (1.6.2008, 12:07 UTC)

Tobias Schlitt has just posted some slides from his talk entitled "6 essential PHP development tools in 60 minutes". I flicked the 90 or so slides in PDF format, they pretty much mirror my development environment.

Tobias left out 2 must haves from my personal list. Vim, the only editor I can use for any prolonged period of hacking (go easy emacs fanbois). Although not really a PHP tool, Firebug, is an essential tool for any serious modern web application developer,

With this environment hacking on PHP based web apps should be a breeze.

As a side note I am starting to play with git after watching Linus' Google Tech Talk on it, and I am starting to like a it, so maybe soon it will be s/svn/git for me.

Link
Dave's blogUsing Gigabyte BIOS Updates on Linux Boxes (25.5.2008, 03:45 UTC)

Dealing with Gigabyte support can be a frustrating experience. They only offer support via their website. Once they reply to your enquiry which can take several days, you get a response telling you to visit their website to read the response, and you can reply. This process means it can take several weeks to get a clear and final answer.

In my case I was trying to get a fix for what I thought was a flakey BIOS in my Gigabyte GA-M68SM-S2L. Although Gigabyte claim that their QFlash BIOSes can be loaded independently of the OS the box is running, they only supply them as Windows binary self extracting archives. Gigabyte tech support aren't much help, suggesting that users can just extract it on a Windows box. There is an alternative.

The Gigabyte QFlash binaries are simply self extracting rar files. The following steps make it easy to update Gigabyte QFlash BIOSes on a linux box (albeit with non free software).

  • Download the firmware from Gigabyte
  • cd /path/to/gigabyte-fw.exe
  • unrar e gigabyte-fw.exe
  • cp firmware.fw /path/to/usbstick
  • Reboot computer and select flash BIOS from USB

If all goes to plan you should now have a new BIOS and not had to use a Windows machine to do it.

Link
Dave's blogClassic Javascript Games (23.5.2008, 13:23 UTC)

A post today on the Ajaxian blog about a javascript based version of Super Mario Kart, reminded me of some of the other great classic games ported to javascript. Below is a quick list based on my bookmarks and other stuff kicking around on my laptop.

I wish you luck getting away with slacking off in the office while playing these in the office.

Feel free to suggest others in the comments

Link
Caeies, portions de dev !phpGW third item from todo list: Or how to try to debug two apps each others ... (21.5.2008, 09:42 UTC)
Hi all

I'm working on Sync since 3 days. First I had to compile the opensync / libsyncml stuff. I found some interesting help on compilation Opensync (here) and use. You should know that at time of writing, you should stick to the svn version 3307 (found why here) to be able to play a little bit with it.
To use it with phpGW I was obliged to made some patches that I still need to send back to the opensync project. Here's are some of them :
  • in libsyncmlclient :

    Index: src/syncml_http_client.c
    ===================================================================
    --- src/syncml_http_client.c (révision 3307)
    +++ src/syncml_http_client.c (copie de travail)
    @@ -558,6 +558,8 @@
    * automatically detect the datastores.
    */
    SmlDevInf *devinf = smlDevInfAgentGetDevInf(env->agent);
    + if(devinf != NULL)
    + {
    unsigned int stores = smlDevInfNumDataStores(devinf);
    unsigned int i;
    for (i=0; i < ctx =" osync_context_new(error);">
    @@ -570,6 +572,11 @@
    smlDevInfDataStoreGetSourceRef(datastore),
    contentType, version);
    }
    + }
    + else
    + {
    + osync_trace(TRACE_ERROR, "NULL devinf returned !");
    + }

    /* disconnect from the syncml server */
    OSyncContext *ctx = osync_context_new(error);

    this patch avoid a segfault when trying to discover the supported materials by phpGW SyncML Server.


Following the tutorial at blog.dukanovic.com in the latest part could help you with how to made it working for phpGW. If you have question don't hesitate to post them here, I will try to help you.

If you are interested by helping us to made sync working for phpGW, you can read this post for infos ...

Second part : Drums .... YEAH !!! It kinda works :).
So here's the step to reproduce my success (at least I Hope).
  1. msynctool --addgroup phpgw2file
  2. msynctool --addmember phpgw2file syncml-http-client
  3. msynctool --addmember phpgw2file file-sync
  4. msynctool --configure phpgw2file 1 : Replace the given file with this content between the <config> tags (on only this, adapted to you needs)

    <auth>BASIC</auth>
    <username>phpgroupware</username>
    <password>********</password>
    <url>http://localhost:80/~phpgroupware/syncml/syncml.php</url>
    <recvlimit>40000</recvlimit>
    <maxobjsize>4000000</maxobjsize>
    <syncml_version>1.1</syncml_version>
    <database>
    <name>my-notes-collection</name>
    <objtype>data</objtype>
    <objformat>plain</objformat>
    </database>

  5. msynctool --configure phpgw2file 2 : replace the content between <config> tags with

    <directory>
    <path>/tmp/tests/notes</path>
    <objtype>data</objtype>
    </directory>
    (note : the '/tmp/tests/notes' directory should exists)

  6. msynctool --discover phpgw2file 1

  7. msynctool --discover phpgw2file 2

  8. msynctool --sync phpgw2file


And YEAH ! it works ... Well ... mostly. Now you have to fix bugs in the ipc layer to let notes getting all be backs. But you can try to add a new notes, it could work ...

Regards.

Caeies
Link
Dave's blogA Virtual Host per Project (21.5.2008, 07:57 UTC)

Not long before my old laptop got to the end of it usable lifespan I started playing with the Zend Framework in my spare time. One of the cool things about ZF is that it wants to use friendly URLs, and a dispatcher to handle all the requests. The downside of this approach, and how ZF is organised, it works best if you use a Virtual Host per project. At first this seemed like a real pain to have to create a virtual host per project. One Saturday afternoon I worked through the apache docs and found a solution - then I found it fantastic. Rather than bore you with more of my views on Zend Framework, I will explain how to have a virtual host model that requires a little work up front and is very low maintenance.

It gets tedious copying and pasting virtual host config files each time you want to start a new project, so instead I let Apache do the work for me.

I added a new virtual host config file called projects to /etc/apache2/sites-available. The file contains

UseCanonicalName Off

LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon

<Directory /home/dave/Projects>
Options FollowSymLinks
AllowOverride All
</Directory>

NameVirtualHost 127.0.0.2
<VirtualHost 127.0.0.2>
	ServerName projects

	CustomLog /var/log/apache2/access_log.projects vcommon

	VirtualDocumentRoot /home/[username]/Projects/%1/application/www
	AccessFileName     .htaccess
</VirtualHost>

The important bit is the VirtualDocumentRoot directive which tells Apache to map a hostname to a path. I use an IP address from the 127.0.0.0/8 range for the virtual host, so they aren't accessible to the outside world and I don't have to worry about it changing every time I check locations.

All of my projects live under ~/Projects and each one gets a directory structure that looks something like this.

[projectname]
  |
  +- notes - coding notes, like grep output when refactoring etc
  |
  +- resources - any reference material or code snippets
  |
  +- application - the code for the project
     |
     +- www - document root for vhost

There are usually other paths here too, but they vary from project to project.

To make this work there are few more steps. First enable the new virtual host

$ sudo a2ensite projects

Don't reload apache yet.

Next you need to add the apache module

$ sudo a2enmod vhost_alias

Time to edit your /etc/hosts file so you can find the virtual hosts. Add a line similar to this

127.0.0.2 projects phpgw-trunk.project [...] phpgw-stable.project

Now you can restart apache

$ sudo /etc/init.d/apache2 reload

This is handy for developing client sites - especially using drupal.

Now my /var/www/index.html is just an empty file.

I am getting a bit bored with adding entries to /etc/hosts all the time. If I get around to adding dnsmasq with wildcard hosts to the mix, I will post a follow up.

This setup is based on my current dev environment (Ubuntu Hardy), but it also works on older versions of Ubuntu. The steps should be similar for Debian and derivatives. For other distros, it should work, just how to make it work may be a little different. Feel free to post tips for others in the comments.

Link
Vida y obra de jarg VMware Mount Tool (5.5.2008, 00:18 UTC)

Pues resulta que me vi en la necesidad de renombrar el archivo winlogon.exe de un Windows 2003 que esta en una maquina virtual residiendo en un disco usb externo, pero en el proceso mi disco se quedo sin electricidad asi que se apago. El resultado fue un bonito Windows 2003 sin winlogon.exe, lo cual se traduce a que ya no me dejaba iniciar sesión.

Entonces a recomendación de edgar busque en las herramientas de VMware y me encontré con un script llamado vmware-mount.pl en mi instalación de VMware en mi Linux. Con esta herramienta puedes montar discos virtuales en la maquina host, es una belleza en verdad. Monte mi disco desde linux y pude ver todos mis archivos.

El asunto fue que ese Windows tiene NTFS, pero ese no fue impedimento, vi que hay unos paquetes en Debian que se llaman ntfs-3g y ntfsprogs y con eso pude montar mi disco virtual con permisos de read/write.

Una vez montado mi disco virtual puede hacer un

    mv winlogon.bak winlogon.exe

y al reiniciar mi Windows todo regreso a la normalidad.

Link
LinksRSS 0.92   RDF 1.
Atom Feed   100% Popoon
PHP5 powered   PEAR