Recent projects

A few days ago I’ve launched a new website for the Equal Money System project. The project is about a complete social and economic change, worldwide.

I really enjoyed doing the graphic design and I am satisfied with how it turned out. The feedback of the community is also very positive. Programming wise it was nothing advanced – it’s backed by the excellent WordPress, which I am again “falling in love” with.

Equal Money For All

More productivity on a notebook?

I am realizing an interesting thing. When I work solely on my Macbook just with a mouse I get done much – and I mean it – much more work as opposed to when I work behind my desktop with a big 24″ screen.

It’s like with the big screen I focus too much on details – especially when designing and doing front end/GUI stuff. On the 15″ Macbook screen everything is more compact. Less information to process, more focus possible.

Interesting.

WordPress Hosting

If you are looking to start a website or blog, then WordPress hosting may be what you need. WordPress is an incredibly popular Content Management System (CMS) which automatically manages site content like blog updates, but also has features form maintaining statics pages. Let’s look at some of the features of WordPress, and then see how to choose a WordPress host.

WordPress makes managing your blog simple by automatically taking care of all the technical details. You don’t have to know anything about computers, servers, or the technicalities of web hosting to run and maintain a WordPress setup. It has a full-featured text editor, and great software for allowing you to manage your content. WordPress is the most popular blogging platform, and is used by thousands of bloggers every day.

There are two ways to run a WordPress blog. You can sign up at WordPress.com for a free account, and let them host your blog for you. This is free and easy, but the free account has a lot of restrictions, and you don’t have very much control over your blog. For much more control, you can use the free download of WordPress from WordPress.org to custom install WordPress on your own server. This gives you a lot of power and control over your blog.

If you are new to blogging and you don’t know much about web hosting or running a server, then this can sound very complicated. Fortunately, many web hosting providers offer packages where you can have WordPress installed and maintained for you, so you don’t have to worry about the technical details. These web hosts usually use software like the cPanel hosting software or a similar package to make it easy to control your server using an easy to understand graphical user interface.

WordPress hosting is a great choice for anyone looking to start a blog. It makes the process of maintaining a blog simple, and there are a wide variety of free themes and widgets that you can use to customize your blog and make it unique. There is also lots of support available for it because so many people use it. WordPress is free, and open-source, so its options for growth, development, and extensions are nearly endless. WordPress hosting makes maintaining a WordPress blog even easier than it already is, so you can have a completely worry-free WordPress experience. Check out what WordPress today to see what it can do for you.

This is a guest post by Jonas Bates.

Unit testing/Test driven development

…really enjoying it. I have been doing unit testing sparingly for a long time, but just now I am really starting to take it serious. Every new functionality I add to a project/application I am working on I seal with sufficient unit tests. Also it’s much faster to develop and test business logic using tests than testing it trough GUI. I’ve been missing a lot!

I am still alive

I can’t believe the last post here is from May 2008. That’s quite a while.

So what have I been doing all the time? First off I got my first open source project going – Wildflower. It’s my vision of what a web CMS should look like, although that vision has and is changing along the way. I am really happy how it turned out, especially the responses from the community. People build sites with it and I really enjoy comments saying that it’s the most rapid to develop with CMS.

Of course, I’ve been busy with client work. All powered by Wildflower. I’ve also screwed some things up and learned how to really disappoint a client. These are as worthy lessons as the successes in my book.

That’s it for now, time to cook some launch.

Zend PDT on 64bit (x64) Linux systems how-to

I am amazed with Hardy Herdon. It’s the best OS I’ve ever used. The only thing that was bugging me is that I was not able to install x64 version of Zend PDT. In my opinion it’s the best free PHP IDE around. The solution is very easy trough.

  1. Download Eclipse IDE for Java EE Developers from Eclipse downloads. It includes all the plugins PDT needs. You’ll be missing some with the vanilla Eclipse.
  2. Run it, and go to Help -> Software Updates -> Find and Install… Click Next and add a new remote site. Name: PDT, URL: http://downloads.zend.com/pdt
  3. Thick the new remote site and click Finish. When asked to choose which plugins to install, be sure to deselect the debugger. It’s not available for 64bit systems as far as I know and you’ll get an error proceeding with it.
  4. When you finish the process and restart Eclipse you’ve got it working.

This guide assumes you have 64bit Java working on your system. On Ubuntu it’s just a matter of installing a package in Synaptic.

CakePHP and some web hosts

CakePHP is quite a mature framework. Yet I often run into troubles with some more exotic hosting companies.

Yesterday I was deploying a site hosted at 1 & 1 Internet Ltd. For a few hours I was trying everything but still I got the same 500 internal error. Finally I traced the problem to mod_rewrite. It turned out that I need to add RewriteBase to all Cake’s .htaccess files. So if you’re deploying your lovely new site to 1 & 1 your root .htaccess file might look like this:

# Turn on PHP 5
AddType x-mapp-php5 .php
RewriteEngine on
RewriteBase /
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]

mysqli_connect and socket support

Some web hosts use sockets for MySQL connection. Socket is the 6th parameter in mysqli_connect (or mysql_connect). Cake does not know about this 6th parameter. I submitted a ticked some time ago, but it was closed and the change not implemented.

The solution is however very simple. Depending on what driver you use, edit file dbo_mysqli.php or (dbo_mysql) in cake/libs/model/datasources/dbo/ and on line 94 (CakePHP 1.2 rev 6311) add the 6th parameter to the mysqli_connect function. Don’t forget to add the default socket value (I use null) to the $_baseConfig private variable of the DboMysqli class you’re just editing.

Kvalitest – Construction Business Services

I am very proud of this one. Kvalitest – Stavebné skúšobníctvo a geotechnika dates back to around 2007 and as such is among the first professional websites I’ve build in my career. After 8 years I am satisfied with how the design and implementation is still going strong and stands the test of time. Granted, it’s a simple website, it could use a touch of responsiveness for the mobile devices, but it “gets the job done” par excellence.

In the backend it features a PHP CMS I’ve build back in the day, called Wildflower (now discontinued).

kvalitest-front

JavaScript’s setTimeout and how to use it with your methods

Update (May 2015): The following article deals with the nowadays well know JavaScript scope behavior and it’s much better explained/solved elsewhere.

While working on real time web chat application I run into problems with JavaScript’s setTimeout function. I would like to write down what I learned. It may save you some time, next time you’ll need to use this function.

Shortly about setTimeout

setTimeout is a simple JavaScript function used to repeatedly call some function after a specified amount of time. It takes two required parameters and an unspecified number of optional ones. Like this:

setTimeout(functionToCall, time, param1, param2, ....);functionToCall is the name of the function which will be called after time millisecond. You either use reference like in the example above or a string representing a call to the function:

setTimeout('functionToCall()', time, ...)The optional parameters can be used to pass any number of parameters to our functionToCall.

Where’s the catch?

Everything works as expected until you try to call a method inside your ‘class’ (there are no real classes in JavaScript). Something like this won’t work:

setTimeout(this.methodToCall, time);Passing a string representation instead of reference doesn’t work either.

The solution

I found the solution after a while searching in Google Code Search. The above example needs to be rewritten like this:

setTimeout(function(thisObj) { thisObj.methodToCall(); }, time, this);Here we are passing reference to our class as an optional parameter of the setTimeout function. In the called function we catch it and suddenly we can use it to call our method. I have no idea why such a simple thing needs to be so complicated but it only demonstrates that you need to learn a few tricks when you want to do real OOP in JavaScript.