Skip to main content
 

Wordpress Base Theme

I've released a first look at "Wordpress Base Theme", a bare bones base for your own themes:

  • DRY
  • KISS
  • easily customisable WordPress base theme.

You can build on this to speed up your own theme development.

 

Setting up a VM based development system - Part 1

I recently set up a local development server running Ubuntu on VMware player. I thought it would be interesting to document the process and instructions so that it will be useful to others, and you can follow along / correct / improve this guide. On completion of this series you will end up with a complete LAMP local development system..

Installing Ubuntu

You will need:

Install VMware player (VMP). Restart the pc if necessary.

I’m installing the virtual machine on my USB harddisk, this way I can take my whole development with me on the go (home/work) - this is great because you only have to set all this up once, instead of on every machine you plan to use it on.

Start VMP and “Create a New Virtual Machine” and browse to the downloaded .iso. As part of the Easy Install Information write down the login:

username: __________ password: __________ 

Store the VM on your removable drive.

On the Specify Disk Capacity screen you will want to go higher than the recommended disk size, I chose double (40GB). Make sure you have enough free space available, check this before continueing. I went for double the recommended amount as I want to avoid to repartition later. Accept the other defaults and Ubuntu will start. Keep waiting as Easy Install is installing Ubuntu on your behalf.

If you are a chmod 777 user (jackpot settings), this is a great time to read up on file system permissions by reading the article series starting with “Linux File Permission Concepts” (click next in the summary, there are 5 articles in total): http://articles.slicehost.com/2010/7/17/linux-file-permission-concepts

After a restart the login screen appear and after a successful login you will see the desktop. Because we are going to install a bunch of software let’s make sure everything we already have is up to date. Start the update manager > Settings > Ubuntu Software > Other > Select Best Server. This will speed up downloads. Check again and install updates.

Time to read some more, btw have you created a new tag for all these bookmarks yet? When you are finished reading the above articles, here are some really good resources to read later:

You should now have a running Ubuntu system.

(Source: donationcoder.com)

 

Silicon Knights: "used games are cannibalising the industry"

Silicon Knights boss Denis Dyack talks about used games effect on development budgets:

"I don't think as an industry we can afford $300 million budgets. Some games can, don't get me wrong - for a game like Call of Duty, if they had a $100 million budget, or whatever their budget is, they can afford it. That's not the industry, that's sort of a one-off.

Perhaps there is a point after which it makes little sense to spend more money as you simply cannot recoup it in the market. I'm guessing this limit is probably closer to $0 than $300 million.

source Gamesindustry International.

 

Fork webpages

I'm looking for something a bit unusual. Say you are following the instructions for installing a software package (rl example: http://library.linode.com.../webmin/installing-webmin). Now you find out the instructions are outdated, or incomplete.

How do you keep your notes/additional instructions together with the original? Now you have two problems, your instructions and the original can be updated independently. What happens when the original is updated, or a new version of the software is released?

Wouldn't it be great if you could fork the webpage and update it (or even submit a pull request to the maintainer)?

Is there any practical way of working this way - or will I be stuck with a notetaker / blog / bunch of outdated textfiles?

A lot of questions - maybe one of you has the answer.

 

Link: Stop paying your jQuery tax

Speed up your jQuery powered site by moving scripts to the footer.

Turns out that pushing jQuery to the footer is quite easy for the common case. If all we want is a nice $.ready function that we have accessible everywhere we can explicitly define it without jQuery. Then we can pass the functions we capture to jQuery later on after it loads.

The big lesson learned is that we could avoided this whole problem if we started off with my proposed helper.

via Stop paying your jQuery tax.

 

Hide elements that will be shown by jQuery later

I stumbled upon this gem by Jerph on Stackoverflow:

Right after the body tag, put a script tag with this javascript:

jQuery('body').addClass('js');

This gives you a style hook for any elements that will look different in some way when Javascript enabled, and it happens immediately.

via css - Hide jQuery Accordion while loading - Stack Overflow.

 

Project Cars

Sign up to WMD, the somewhat unfortunate acronym chosen for Slightly Mad's World of Mass Development platform, and you're granted access to regularly released builds of the game, which you're then free to pick apart in the official forums. That feedback then gets absorbed by Slightly Mad Studios, a simple loop that means that, when the game is eventually released, it'll be as much a product of the community as it is of the studio.

via Project Cars Preview • Eurogamer.net.

Looks like an interesting development strategy, made famous by Minecraft.

 

Asynchronous UIs - the future of web user interfaces

Discovered this javascript MVC framework SpineJS. The ToDo app is extremely impressive. Try and manipulate items as quickly as possible. Tthen close and reopen the browser. Nice.

via Asynchronous UIs - the future of web user interfaces.

 

Combining multiple Subversion repositories

This post describes a step by step guide on how to combine multiple Subversion repositories whilst keeping individual history (and commit messages).

Dumping

Exporting from pagefeedbacktool repository the /trunk/public folder and integrating that into the services repository under /trunk/public/pagefeedback:

Dump the repository including only /trunk/public as follows:

E:\\Repositories\\pagefeedbacktool>svnadmin dump .| svndumpfilter include --drop-empty-revs --renumber-revs trunk/public > ..\\services\\filtered.dump

Loading

However as pathnames are stored as part of the dump (and replacing the path with a texteditor corrupts the dump), we have to include the full path under a different parent directory:

In VisualSVN create a /trunk/public/pagefeedback/trunk/public folder structure (try without the final public if import fails) then load the dump as follows:

E:\\Repositories\\services>svnadmin load . --parent-dir "trunk/public/pagefeedback" < filtered.dump

The dump is successful but at the wrong path:

currently: /trunk/public/pagefeedback/trunk/public
should be: /trunk/public/pagefeedback/

Post-correction

Open two Windows Explorer windows with both paths side by side, select all the files that should be moved, then RIGHT click drag them to the destination folder and choose SVN Move versioned files here...

Commit from the repository root.

It is now safe to remove the trunk/public folders under /trunk/public/pagefeedback/

Commit again.

 

 

HOWTO Use UTF-8 Throughout Your Web Stack

Unicode can be an issue that's hard to resolve, so it's guide to use the guidance in this document and ALWAYS use unicode where possible.

via HOWTO Use UTF-8 Throughout Your Web Stack

 

Serve.sh updated for terminal use

After publishing the previous article about serve.sh - the shell script I created to easily serve websites in development - I made some changes to make it easier to run it from the terminal, for example over ssh. I thought I'd share it with you.

One of the problems with the original script was that it was optimized for a GUI setting - ie. start the script by clicking on it from the desktop. However usually I want to run it from the terminal. I don't like typing so I added code to make the script available from any directory to the ~/.bashrc:

export PATH=$PATH:~/bin

Then moved it to that path and renamed it to shave another 3 characters off the syntax:

mv ~/Desktop/serve.sh ~/bin/serve

In addition I noticed that prompting which site should be served was just a workaround for commandline arguments, which are now added. It doesn't check that you entered an argument though. So the new script now requires you to specify which directory you want to serve: to serve the current directory simply run:

serve .

Latest script contents:

#!/bin/bash
my_path=`readlink -f $1`
sudo rm /var/www
sudo ln -s $my_path /var/www
echo Now serving $my_path...

 

Serve.sh - A shell script for serving sites

I am experimenting with using a Linux virtual machine as my web development environment of choice. I store the vm on a removable drive so that I can develop from any location, without having to setup a working environment. Previously I had to check out the repositories, setup a local webserver and I had trouble keeping things working, because every configuration change had to be applied in every location. Now it is all centralized and my life is simpler.

The aim is to make working on projects as easy as possible. I have all projects checked out in a folder called /var/sites. They are mostly PHP projects and because of my shared hosting environment they share a single apache configuration. How can I easily serve them? Having seperate virtualhosts for each project would result in me having to make manual changes on every location again, so this was not the way to go.

Instead I created a simple shell script that creates a symbolic link from the Apache's webroot to the project I am working on:

[gallery link="file"]

#!/bin/bash
echo "Available sites:"
ls  /var/sites
echo
echo -n "Type site to serve: "
read site
if [ -z "$site" ]
then
exit
fi
sudo rm /var/www
sudo ln -s /var/sites/$site /var/www

 

Intranet Migration Strategy

Next week we're turning off our old intranet site so I have setup a "Migration Switch" and a redirection page so that from the moment we turn off the site people will not be able to access it. Because if we actually turn off the site we would receive phonecalls with people needing access to their lost data, and because certain parts of the old intranet are reused in our new one, we instead check if the page is embedded, and if it's not check that the user is on a whitelist of specifically allowed users (us). If this is not the case we redirect them.

Next week we will remove all navigation links to the old intranet, turn on the switch, and remove the documents from the search indexer on the (new) intranet. There must be better terminology for old and new intranet.

Hopefully this will ensure that everything works smoothly.

 

Subversion repository creation rule

Do not use capitals for repository names!
Because when checking out a working copy you will have to specify the respository url case sensitive. Failing to provide the correct case sensitive name result in things might appear to work but you might get access forbidden messages for certain users in some point, and other mysterious errors, such as the svn commit error below:

access to '/svn/project/!svn/act/c50e0f11-eec3-154a-9695-20ec222ad7f3' forbidden

 

Amasan's WordPress Tweak Roundup

Made few tweaks to improve the blog in preperation for several drafts I'm currently working on. Here's a quick rundown for everyone that's interested in the wordpress blog platform.

  • Related Posts should show up to 5 related posts without too many false positives on single article pages. I like how this plugin scores posts on relativity and that I can set it to show nothing when no posts are related, which keeps the interface clutter to a minimum.
  • A single easy recognisable block of Google Adsense adverts has been added to single articles. You won't see it if you have Adblock Plus installed like myself, but it should give helpful suggestions on articles with a single subject and support hosting costs in the process.
  • Template tweak: Moved post-meta-information from under the title to the footer (tag/cat info) so that the header is better connected with the body of the post. There's enough clutter on other sites.
  • I've visually combined  categories and tags underneath articles. Category are used for url purposes and tags  to facilitate cross linking of subjects. No need for two lists.
  • I added a tagcloud to the site so you can browse the site and discover some other articles. I don't think browsing by time and month is useful to many people so that's been removed from the site. The only concern I have at the moment is that the cloud would grow to too big a list, so in the future I might just show the top 7 tags used. For now that's not a problem.
  • PHP Speedy. This is the most important reason why the site is so snippy.

There's more but I'll save them for another time.

 

Rewarding feedback

Acquiring feedback on web projects can be harder than you'd think, especially when you're working on internal projects that don't get discussed on outside your organization. By making feedback a fun, easy and rewarding thing to do more people might be encouraged to help us and put in the effort.

I'm sure some of you are in a similar situation: you launch a project and silence follows. Trivial problems might emerge but a there's no general response to the long hours you put in. That makes it much harder to evaluate the project and set a schedule for future developments.

To help with this we've created a UserVoice page. Let's describe it as a digg-like FAQ. People are encouraged to leave a message, can vote on feedback they find important, and always have the full picture of what the development is focused on. Developers act on the consensus and theoretically will work on solving the most urgent issues.

Of course this model will work best when both users and developers care enough to communicate. So Uservoice is engineered to make it trivial to leave a message. It can be easily integrated into an existing site. Some functionality requires a user account, which is a stumbling block. But you can leave feedback without it, which is a bonus. Oh and it doesn't integrate with any bug trackers which is a shame.

Will it work and will there be enough participation? Ask me again in 6 months time. I'm not sure how to make it any easier though.

 

Youtube Dreamweaver CS3 Tips

Brian Wood presents an excellent Dreamweaver tips video on Youtube. Many people just use DW as a text-editor but it's capable of a lot more even in code view. The following video might open your eyes:

Very nice.

 

Improving someone's code

Don't call your submit button 'submit' if you want to change the submit event with Javascript:

If you do, the browser (please read “Firefox 1.5 or IE 6? - that’s what I tested at the moment) will consider submit is an object. And an object is not a function (although you might enjoy later on the paradox that a function is an object).

Source [webprodevelopment.com]