According to Wikipedia1:
"Archaeology, or archeology (from Greek ἀρχαιολογία, archaiologia – ἀρχαῖος, arkhaios, "ancient"; and -λογία, -logia, "-logy"), is the study of human activity in the past, primarily through the recovery and analysis of the material culture and environmental data that they have left behind, which includes artifacts, architecture, biofacts and cultural landscapes (the archaeological record)."
You can also add legacy software systems to that list of ancient artifacts. Like real antiquities, legacy software if often poorly understand by its inheritors, due to a lack of supporting documentation and access to the original designers.
Here are some techniques that I have found useful when dealing with legacy code:
Its real: placekitten.com
When you create a new database on MySQL, the default behaviour is to create a database supporting the latin1 character set. This is fine for most use cases, however if your application needs to support natural languages that do not use the Latin alphabet (Greek, Japanese, Arabic etc.), then you will need to convert your database to use UTF-81 instead.
In this tutorial, I will show you have to convert an existing database and tables from latin1 to the utf8 character set. Note that I am using MySQL 5.5.34.
Firstly we are going to create a test database for testing the migration process. Note that if you are going to migrate a real database, you should run this procedure against an offline backup, not against a live production system.
Lets begin by creating a new database with a simple table:
Now I remember why I left it so long to add UTF-8 support to the Alpha Framework: the current support for UTF-8 in PHP5 is unpleasant to work with to say the least. Some third party libraries try to make it more bearable, Patchwork UTF-8 in particular is commendable, but these are just plugging gaps in the core language until PHP6 comes along (right around the time we'll see Perl6, and Duke Nukem Forever 2...).
It is amazing what you can do using only CSS these days:
When I bought my first PC, it proved to be a very frustrating experience. It came with a number of bundled games on CD-ROM, and I thought all I needed to do was place them in the disc tray and the game would run. Coming from the background of running games on a console, I was trained to think of the PC, which is essentially a professional device, in a dumbed-down way. I genuinely did not even possess the concept of installing a game from a CD-ROM to a hard drive.
Regardless, my expectations had already been set so I arrived to the PC with a bias as to how it should work, then grew annoyed and frustrated when these expectations were not met. This is a common pattern that good User eXperience (UX) design should try to solve.
Just as the console dumbed-down my expectations of how a PC should work, so to are the mobile computing devices like smart-phones and tablets. These user-friendly consumer devices have edged out the PC as the general purpose computer for web browsing, email, playing games or other media consumption. Their ease of use timed with the growth of mobile data networks have decimated PC sales in the consumer market, especially desktops, pushing the PC back to it's former role as a professional device only.
That is why I was genuinely surprised to be confronted with major usability issues recently while setting up a smart-phone for a friend. Just like my frustration in the past with the PC, it stems out of a device not meeting the expectations I have as a user. I expected a smart-phone these days to be, well, smart, and easy to use. If I need to follow the tutorial videos included with the device, it has failed the usability test. The same can be said for looking up manuals or online help forums: if the device is intuitive and user friendly I should not have to do this.
The more I work within teams that use the scrum1 process, or at least try to adopt it, the more I believe that the daily scrum meeting is the most important element. The simple act of gathering each day to communicate to your team what you done yesterday, and what you intend to do today, is in itself a massive win.
I say this as someone who has worked in teams that completely malfunctioned, mainly due to personality issues and a reluctance to communicate. Team members can become silos of information, in some extreme cases black holes where information useful to the rest of the team goes to die.
Getting team members to openly share their work-in-progress, and to flag any blocking issues they have, is a vital part of scrum or indeed any team management process. If that is the only part of scrum that a team implements, then at least it has gotten them talking to one another.
I am happy to announce the 1.2.2 release of the Alpha Framework is now available for download. You can download the release from the Alpha website here. This is a maintenance release of Alpha, that introduces a number of security improvements including the following highlights: