Meeting the client again

Today was our last class before easter break.  We had our client come in again to look at our websites.  we have made a number of changes to the general layout of the website, we have changed things like the colour scheme. We have also added things like a google map plugin and an ability to set up different user groups and give them different sets of permissions.

Generally he was pretty happy with the websites,  he said that none of the websites really stood out, however he said they all matched the brief.

The client asked us all how much time we had put into the website so far.  We conceded that we had put in about 25 hours.  most of the teams had done roughly the same amount of time into their website.  We discussed that for example this equates to about $2500 – $3000 if we were to charge $100 per hour.  This is the normal cost of a website.

In an interesting aside, we discussed how he sees the IT industry in Nelson and globally.  It was really interesting to hear what he thought about IT, after all he is a professional with 25 years experience.



Three content management systems (CMS) go head to head

Joomla is:  
Open Source
7800 extensions available

Drupal is:
PHP (Symfony)
Uses PHP Data Objects to abstract data layer, this means it can be used with a variety of database (MYSQL, SQL Server, SQLite)
36000 modules
2300 themes
1100 free distributions that come preconfigured for different usage scenarios





Web Standards & Accessibility

In todays class we talked about web standards and accessibility.

Todd took us through the ‘Standardistas alphabet website.  this is a website that demonstrates how a website can be built with accessibility in mind We are talking here about accessibility for people with disabilities, ie using Windows reader to dictate the contents of the website to a blind reader.

Accessibility standards are defined by WCAG.  The WCAG standards defines things such as the fact that a html document must have a DOCTYPE tag, encoding (UTF-8) etc

It was quite interesting to hear that it is good practice to use tools to greyscale the site so illustrate what the site would look like to someone with colour blindness.

We discussed Jakob Nielson, a usability Guru, his website is:

The really annoying thing about web browsers is that even though they can all be fully web standards compliant they can actually all render the same code slightly differently, which means that the same code can give wildly different results in different browsers, this is a little tedious.

We can use automated tools, such as  they run a series of tests on the accesibility of the site

WordPress actually has plugins available that will validate pages.  thats great I think I will be using that.

One interesting set of standards that I have learned about during my time at NMIT is the NZ Government web standards.  The government actually has a set of standards that can be found at the following link:

This set of standards defines who NZ websites should be constructed with regard to accessibility and usability.  All New Zealand government websites MUST adhere to these standards, obviously other websites don’t have any obligation to meet the standards, however a lot of what is in the standards is good practice and they are worth being aware of.


Permalinks to work or not to work

WordPress relies on a system of permalinks to connect to its various pages.

for example a wordpress address may be localhost/blogs/latest

In a simple web server we would expect to find a file structure that reflects this, subfolders blogs/latest and then finally an index.html file.

WordPress doesn’t do this.  instead it uses a system of dynamic redirects to get you to the right place. It calls these redirects PERMALINKS.

in its default form (on Apache at least) these redirects are implemented by a .htacess file.  However on the web server that we are using the .htaccess redirect functionality is not implemented, .htaccess files are ignored by the server.  This causes a problem.  Luckily WordPress doesn’t rely on this functionality, it has other tricks up its sleeve to get you to where you want to be.


By clicking on the ‘settings’ tab in the wordpress menu we find a section ‘permalinks’  here we are able to change how the links work.  By choosing the ‘simple’ option at the top of the list we dispense with the need to .htaccess redirects and instead wordpress implements a schema that seems to rely on $_GET variables.  It seems to pass a set of numbers obviously tie in with something in the WP Database to tell wordpress where to look.

Anyway, the long and short of it is that it works.   Might be worth looking into how wordpress deals with other types of server.  for another day maybe….

WordPress deployment

We are looking at WordPress.  Remember there are other CMS out there.

We will be looking at how to take our wordpress website from our local development environment and deploy it out to a production server on the world wide web.

There are key differences between a development environment and a production environment, one of the main differences is the way that the environment handles errors.  A development environment may provide debug data, or display error messages, whereas the live production server may handle the same error completely differently, it may avoid crashing by forwarding the user elsewhere in the environment.  A production environment will almost certainly NOT provide debug data.

Things to watch out for (traps):

  • Check PHP version on both environments are the same, or close enough that all extensions and plug in are in use.
  • .HTACCESS file – a special file that can specify folder level functionality and permissions.  It is important for WordPress that HTACCESS is enabled.
  • .htaccess can be used to map requests.  It can be used for a myriade of things.


Actually migrating a WP Website……

For the migration we use the following technologies:

Putty (SSH Client)

  1.  compress wordpress (ZIP) folder on local machine
  2. connect with winSCP to the remote machine (also possible to use SFTP)
  3. We need to ensure we copy the correct files to the correct location on the remote server
  4. Login into the server using SSH, we can now unzip the file that we transferred.
  5. Now edit the wp-config file to update the new database path, user etc as required by the remote environment
  6. Next up we head over to Phpmyadmin on our local server.  We can export a SQL Script that contains all the data and structure of the  wordpress DB
  7. Take this script and import it into the phpmyadmin on the remote server


wordpress site all installed and running on the remote host 🙂

our websites can  be seen at big ears server

Its actually possible to have two databases hosted on the same instance of a database as long as different prefixes are defined in the wp-config file


Information Architecture assessment

The next stage of developing our website is to try and create a structure, an idea of how the overall website will be structured and how each page will be structured within that.

During our WEB601 course we learned a method for creating websites called Information Architecture analysis.  We will use that process again here to provide the page and underlying structure of the website.

The Information Architecture process can be found at the following link:

There are a total of 5 lessons to work through.  I have pasted the notes on the process that I worked through below.


What is the mission or purpose of the organization?
To provide IT (particularly database) services

What are the short- and long-term goals of the site?
Educate people about who we are and what we do.  Attract new clients, provide contact point for existing clients.
Long term – build the business by attracting new and returning customers

Who are the intended audiences?
People looking for database support in New Zealand.  Direct marketing company-company

Why will people come to your site?
Will be looking for data services, may be word of mouth,  referred by previous clients or find via web search

Inform customers about who we are
Inform customers about our team
Inform customers about our services
Inform customers about our previous projects
Provide a contact point


1 -New Customers – NZ wide
2 -New Customers – local
3- Referred Customers (from other clients)
4- Other
5- Past Customers

A new customer is searching google for database services in the NZ, they were originally looking for something local to wellington however they come across the NDS website and read that they can get the same services cheaper with remote connection from nelson than paying for expensive wellington prices

SCENARIO 2- Local customer
They have heard about NDS through the grapevine and want to know who they are and what they do.  Nelson is a small town and locals often know each other through 2 degrees of seperation

SCENARIO 3- Referred
A potential customer has been referred by an existing customer, they come to the site for a general feel of the company, they would like to see if NDS offers what they need. They are the sort of person that likes testimonials

Someone browsing the web comes across the website, this could include someone in the states looking for database support.  With remote connections this world is a small world

SCENARIO 5 – Past Customers
Past customers returning might just need contact details that they have misplaced



Offer database services in australia & new zealand.  They manage databases, assist with large database migration projects, offer BI support services and other DB Services

Site Sections
Our company
Managed services
Professional Services
Business Intelligence
Our Clients
Contact Us
Secure Portal

This website has top level heading for the main services that the company offers.  At the top level we also see links to information about the company, its history, testimonials and a contact page.  There is also a login to a secure area for existing customers.


They offer a wide variety of services new zealand wide, everything IT from database management to software development.  They offer very similar services to NDS, but are the corporate end of the spectrum, a large slow clunky machine of a company that offers huge resources but corporate pricing to match

Site sections



Case Studies

About Us





About the company

Why choose NDS

Our Services

Privacy Statement


Contact Form



Organizational metaphors

Small team, small friendly company

Functional metaphors


Visual metaphors

This is a database company, database type images, engineering.

Also Nelson is a key aspect, the outdoors, greens, sky blues etc


Navigation system


This is a small site, so we will only require one level of pages.  

Later on as the site grows we may need to add sub pages




About us – Home / Landing page



Contact Us




We have a simple site structure, layout grids will be kept clean.  With a single top level menu running across each page


Today we had our first question/answer session with a customer.

A local business that specialises in data solutions is looking for a website to help advertise their services.

The business has been running for a number of years but has been so busy completing work that they haven’t had time to create  a website for themselves.

The website will be relatively ‘greenfield’ and the client doesn’t have a great idea of what he wants.  However during the QA session we were able to glean a certain amount of information.

They are DATA driven business.

They are highly specialised and highly skilled.  they are a small team

They are very solution oriented, they don’t like to say no to customers, in fact their company mottos ARE:

‘don’t limit your challenges – challenge your limits’

“The person who says it cant be done shouldn’t interrupt the person who is doing it”


They are adept in the following technologies:  .NET, SQL Server, Access, ORACLE,

They have worked with numerous government agencies, including DOC, CAA, Police, ACC, TDC, ANZ Bank.


key things for the website:

He wants a postive, simple, professional, can do, IN nelson

He likes the color Green

Potential Pages could be


Our Services

Contact page

Staff P:age



we finished up the day by installing XAMPP and wordpress



Filling in the blanks on the final furlong

Its been a week of report writing.  And I’m almost done, phew.

As I said in my last post its actually been a much more productive experience than I expected doing this write up,  I’ve managed to fill in a whole lot of blanks about some of the concepts that we used, but that I didn’t really understand.  Now that I have time to digest what we did concepts like dependency injection make a lot more sense to me.

I’ve also been blown away by finally getting my head around JavaScript, ES6 and Typescript, how they all fit together.

Having some of this time to think over the work placement has also given me a bit of perspective on everything that happened.  The final part of the write-up is an evaluation of the placement, my own performance, what went well, badly and what I gained from the experience.  It’s taken me a full month to get my head around these things, but I think I finally know what to write.

It’s also nice to hang out with my dog during the days instead of rushing between jobs.

Writing reports is quite interesting actually…

Just a quick (possibly final) post on this blog.  The work placement is finished and so now I am in the thick of my rather large report.  Top be honest I’m enjoying it more than I thought I would.  I’ve finally got the time to sit back and digest some of the stuff that we covered during our placement.  Reading up on the differences between Javascript and ES6 and filling in some of the blanks as to why we did some of the things that we did.

With my new found knowledge of Typescript and Angular 2 I have also started to implement new features into a database interface that I have maintained for many years.  The method of developing the interfaces without any CSS styles that I learned at Datacom is also being employed in this project.  It’s not something I would have ever thought to do before, but it’s a great system that means you can get the functionality right without worrying about the style too much.

A couple of things that we didn’t cover at Datacom were:

How to bundle and minify the project, Angular 2 has about 12,000 separate files in a project.  Obviously I don’t want to be uploading this many files everytime (and the client doesn’t want to be downloading them either), so I am currently looking at bundling the javascript, also minifying the bundle size and deployment options.

How to deep link into a project.  This is something that I looked at, but it wasn’t really my concern at Datacom (and it wasn’t super simple to implement) however, it is something that I will need in this personal project and so it needs to be addressed.


Anyway, back to the report

All Over Red Rover

Finished, phew. It was the last day of my work placement yesterday. It’s been a very long 10 weeks, to be honest I’m pretty happy that it’s over, don’t get me wrong I’ve absolutely loved it, I’ve learned more than I thought I would and pushed my boundaries hugely, boundaries of both my technical knowledge and interpersonal skills. It’s been over a decade since I’ve spent this long sitting at a desk in an office with a group of people, It was nice to be back in a real workplace, studying has been fun, particularly the second year when I really pushed boundaries and felt like I learned and achieved a great deal, but the third year has really felt like a chore. The fourth year!! I dread to think about that just yet. Oh well, at least the end if coming into sight now.

It’s been a funny final week, I’ve actually done a whole heap of work, the Python code in the web APIs has really started to make sense to me and it’s been really cool being able to bounce between the API and the Angular interfaces. I’ve added a number of tables to the database now, all with the correct foreign key constraints and APIs in place. There have definately been challenges there, particularly with exception handling in the python, the biggest problem was getting the API to return an appropriate error message back to the Angular when the DB threw an exception. After a couple of ‘logic battles’ between myself and Python (my logic was wrong and Python was right so I backed down) Everything seems to be working hunky dory.

Had a bit of a personal low on Tuesday, I had been trying to refactor some of the datamodel to allow for Regionality of some of the data. Without going into detail I did a reasonable amount of refactoring on a part of the model, took me most of the afternoon, all worked well and I pushed it up to Github. However, the work wasn’t required. I found out that evening while working at the cinema that I needed to roll back this work. To be honest I was pretty gutted, unsure of how to rollback and right there and then I just wanted to not go back to Datacom. Over the 10 weeks I have realised that Tuesday night/Wednesday morning are my personal low points. I work 13 hours on a Sunday, then Datacom on Monday morning, mentor Chinese students Monday afternoon, sleep, Datacom Tuesday morning then back to the Cinema till 11.30pm. Usually shattered by the time I get home, but can’t sleep straight after work. Looking back I probably should have cut down on my Datacom hours at the start of each week, but to be honest I really enjoyed being in the office and working on the project so happy to be there, just a little tired and grouchy sometimes. Anyway, I digress. I was asked to rollback the changes, I replied to the email that I didn’t think I could efficiently do that and that Chris should do it instead, I didn’t want to spend the whole next day trying to learn how to rollback and holding other folks up in the process. Chris immediately rolled back the changes that evening. So what do you do when you feel like you don’t want to go back the next day? get your head down and sleep, get out of bed as soon as you wake up and get your arse into the office, don’t give yourself time to think about it in the morning. So that’s just what I did, I was at my desk, computer cranked up and coffee in hand by 8am, and thankful that I was to be honest. Chris has rolled back the API changes, but there were a number of Angular Changes that I had also made, I was able to fix this all up in an hour before the Standup meeting and all was well with my little world again.

As for the booking interface, the pages that give the user the ability to list bookings, view, create, edit, confirm and delete (CRUD with a few extra little whizzbang features), well it’s not finished. Gutted. I was given one module of the project to work on and I couldn’t get it done by the end of the work placement. To be fair it turns out that booking is one of the more complex entities in the datamodel and to make matters worse it has been a moving target, moving away from me that is. The initial user-story for this module has just grown and grown as we have matured our knowledge of the business model. The version of booking that I leave behind is basically just awaiting ‘Regionality’ to be added so that we can identify which business region the booking is in, something that I couldn’t do as I was awaiting API changes from Chris. It was me however that created the ‘Region’ model (yay for me).

Sprint 3 officially ends today and so we should be dropping something through to UAT testing over the weekend, I suspect that the bookings component will be completed by Chris just to get it done. I also suspect that this won’t be the end of the booking component. It’s devilishly complex 🙂 a real challenge to work on.

It will be strange not having to go to Datacom on Monday morning, instead I’ll be throwing myself into NET602 and starting the writeup for this project.

Big thanks to Chris, Ben, Ben, Liam, Lee, Thi, John and Fleur who I have worked with on this project. Been challenging, frustrating, awful, enjoyable and awesome all at the same time.