Reading Email with PHP and IMAP/POP3
Tank Wars in G3D
Spooky Case of the Wem Ghost
Nasa's Space Shuttle Atlantis Transiting the Sun
A Simple 2D Terrain Model
Garmin Edge 205 GPS Cycle Training Tool
The Polish Language
Polish is a Slavic language with the unusual feature of using the Latin alphabet. This makes it a good halfway house for someone whose native language also uses the Latin alphabet. A lot of Polish words look very intimidating, with sequences of seemingly unpronounceable consonants. However, the written language is highly phonetic, and once you get to know the sounds of the various letter combinations, pronunciation turns out to be mostly straightforward.
Dynamically Adding Elements to a Form with JavaScript
Most web forms are static, as it's known in advance exactly what fields the form should show. In some cases however, you need a form that permits the user to enter a variable number of fields. Using JavaScript, you can add a button which the user can press when they need extra form fields. The button must trigger a JavaScript function to add the extra elements using the JS DOM.
Making Multiple Simultaneous Requests with AJAX in JavaScript
This article looks at how we can iterate through a set of different items on a page using JavaScript, and get further information on each in the background via AJAX. Once the AJAX calls get the extra information, we can update the items on the page. What is different about the approach shown here to others you may be accustomed to is that multiple AJAX requests are made simultaneously, allowing us to retrieve information for an indeterminate number of page items at once, allowing us to keep multiple content zones independently updated.
Graphs and Charts in PHP using PEAR Image Graph
There are many 3rd party solutions out there for drawing charts and graphs in PHP. Some are a little ropey, many are over-priced (particularly for commercial users). My research into what is available boiled down to the Image_Graph package in the PEAR repository, and a PHP class called PHPlot from a guy named Miguel de Benito Delgado. Miguel's code offers the benefits of compactness - you only need add a single PHP file to your site in order to use his drawing functions. This single file defines the PHPlot class, and is admittedly over 4000 lines long. To draw charts with PEAR on the other hand, you need all the associated base PEAR classes, and set up is a fair bit more drawn out. However, the PEAR solution is considerably more versatile allowing a huge range of charts.
Selected JavaScript Fun and Goodness
Here's a sample of JS code for allowing users to choose multiple items from a list of available options. There are many examples of code like this, however this example has the enhancement of keeping the lists well organised. To do this, we need to find the parent OPTGROUP that contains a selected OPTION, and we also need to insert a new OPTION in a specific OPTGROUP of a SELECT list.
Misc MySQL Doobries
Cool stuff in MySQL includes some conditional functions. These can be very useful and all that. Here's a quick run down of usage.
Useful Ubuntu Linux Commands
Linux commands can be far from intuitive, with files related to a single application seemingly scattered throughout various locations, such as usr, bin, etc, var. This can make it difficult to recall how to invoke certain essential but not every-day commands. This page lists these commands in a single place.
Installing and Configuring Zen-Cart
Zen Cart is an Open Source e-commerce solution. It includes an admin CMS, which allows a non-tech end-user to change many options on their site. This article looks at the low-level tasks that must be completed before a site is ready to be finalised by the end-user.
Reformat PHP code with RegEx in Eclipse, Dreamweaver etc
Eclipse and Dreamweaver both support regular expressions in search and replace. This is an immensely powerful and useful feature that makes otherwise tedious replacement tasks a breeze. In this article, a few expressions for some useful search / replace tasks are illustrated. Dreamweaver's regular expression search and replace is particularly handy for developers because you can do multi-line search and replace, and you can search and replace over an entire site or selected files in the site at once.
MySQL's Greatest Date and Time Functions
A quick run down of MySQL's date and time functions. These can be a little confusing, and there is a little overlap between several of them. This article looks at the most useful ones. Note that in all the following functions, "date" denotes a column which can usually be of DATE, TIME, TIMESTAMP or DATETIME type.
Could a Machine Fix Errors in its own Rationality?
This question was one I chose to tackle during my University degree, as part of a Philosophy of Cognitive Science module. The assessed component involved devising a suitable question to use as the subject of an essay. Rather than trying to answer the question, students were required to propose six possible theories which might apply.
How to determine what species of sysad you work with
There are four major species of Unix sysad: 1 The TECHNICAL THUG. Usually a systems programmer who has been forced into system administration; writes scripts in a polyglot of the Bourne shell, sed, C, awk, perl, and APL. 2 The ADMINISTRATIVE FASCIST. <click to read more...>
A Visual Explanation of SQL JOINs
Short and sweet visualisation of the different types of SQL JOINs from Coding Horror's Jeff Atwood. This is good for newcomers to relational databases, but also helpful for old hands to get a grip on less commonly used joins.
Mandlebrot Code Golf Challenge
Several very terse implementations of the mandlebrot set in multiple languages.
JavaScript canvas library
The canvas element introduced in HTML 5 allows sophisticated graphics to be created on web pages. JavaScript is typically used to create these graphics. <click to read more...>
Neat CSS3 + HTML5 Animation
This snippet shows an animated Bender (from Futurama). The cool thing is the animation is all done in CSS & HTML - there's no javascript involved. <click to read more...>