# flowing motion Posts

I am currently doing the John Hopkins course on R that is offered through Coursera.   There is likely to be a gap between taking the course and using R, and these are my notes on how to get started.

## Software and setup

1. Google R, download the version to match your operating system, and install it on your machine using the defaults.  Set up a data folder in My Documents.

## Data

2. Use the first row to label your columns.
3. Use NA to mark missing data.

1. Open R with the shortcut
3. List your data to screen with this command: data
4. Note that you can use any name you like instead of “data” [though I imagine there are some unallowable names]

## Find out the number of rows/cases and varibles/columns

1. To find out the number of columns where data is the name of your data as above : ncol(data)
2. To find out the number of rows where data is the name of your data as above : nrow(data)

## Print out the first line to inspect the names of your variables/columns

1. Use this command where data is the name of your data as above : data[1, ]

## Take a subset of your data

1. For sake of the example, let the name of your first variable be VAR1 and your third variable be VAR3
2. Make a new dataframe containing all rows where the values of VAR1 and VAR3 are as shown: newdata <- subset(data, VAR1 > 31 & VAR3 > 90)

## Take a subset of one variable excluding missing data

1. Set up a new variable/vector containing a LOGICAL variable which is TRUE when a value is missing: VAR1BAD <- is.na(data[,1])
2. Set up a new variable/vector that copies the values from the original vector, providing they are not “bad”: VAR1GOOD <- data[,1][!VAR1BAD]

## Do some basic statistics on your newly created variable/vector

1. Mean[VAR1GOOD]
2. Max [VAR1GOOD]

## Issues covered during the first week not listed above

1. Vectors must contain data of the same type i.e., numeric, character, or logical
2. A list can contain a mix of types
3. When a vector, as opposed to a list, has mixed types, the type is “coerced” to the LCD, so to speak – logical is reduced to numeric (1,0) and numeric and logical is reduced to character
4. R uses factors – which in essence are labels such as “male” and “female” where other statistics programmes used numerals. Note that the underlying value might actually be numerical.
5. Data is read in as a dataframe rather than a matric i.e. as a table that can contain columns of different types. Dataframes can be converted to matrices.
6. There are various tricks for using massive data sets not covered in this post.

This post describes a very simple ‘to do’ list that I made in a Drupal 7 website.

The website already had a Calendar and Date function.  I can add a Date, and all its details, which is recorded as a node of content-type Date and displayed on a Calendar View.

Already installed and enabled : Drupal 7, Token, Pathauto, CTools, Views and Views UI, Date, Calendar, Computed Field

## To add items and to put them on and off the ‘to do’ list

To make this simple to do list, I decided –

1. To add the things I want ‘to do’as a Date and, if they have no date, I record an arbitrary start date – say the end of the quarter or the end of the half.
2. When I want to move an item to my active ‘to do’ list, I simply edit the item and change the start date to today or if it on this week’s list, to Monday.
3. When I have finished the task, I edit the item again to reflect the finish date.
4. As I will describe below, an odd feature of the filter’s in Views required an extra Boolean filed so I check a box when the task is complete.

## Permanent record

With this simple set up, I have a permanent record, in one place, of all my projects that are pending, and of all my projects in the past with the dates when I started them and finished them

To keep me thoroughly focused, I made two taxonomies – one for work and one for leisure. Both of these were added to Date so that later I can retrieve work and leisure activities into separate Views.

As I have both start and end information, I added another field to Date to calculate the Elapsed Time between the date I started and ended a project. There is code available on the internet and I repeat it here.  Simply, we retrieve the entity values for the two times, make DateObjects with the values, and then choose our granuality (‘days’).

I also added another field to Date, Days in Queue, and added similar code to calculate the time between the day the Date was added and the start date.

## To display my ‘to do’ list

To display my current ‘to do’ list, I made a View in a Block, in table format, and display the taxonomy tag and Date title

I also added two filters. First, using a Relative filter, I selected Dates with a start date equal or larger than now.  Second, I searched on the Complete check box.  It is important to manually put in 1 and 0 as the default values when you set up the field initially, otherwise they will filter will not work in the View. The reason that I added what seems to be a superfluous checkbox is that the default finish date for a new task is not NULL, as one might expect, but the start date. The only way to select tasks that have been started and not finished is to add the extra box.

As I have made a Block, I can put the Block in a side bar.

Note also that we can tell the Block View to order the items in the order of the Taxonomy.  So when you set up the Taxonomy, ensure you put the tags for work into the order of your daily routine.

Note also that I did try using Editable Views but firstly, it did not work out of preview, and secondly, the preview showed a massive date edit screen that would not be user friendly.  So to record a project as finished, I follow the link and edit the Date and check the complete box.

## To set up my ‘to do’ list

To review my pending list of items in the queue, I made another View, this time as a page. This time I use all four fields – Date, title, Elapsed Time, Days in Queue – in a table.

I can also filter by taxonomy.

Here I can pick my items, follow their link and change the start date to today or Monday.

## To review what I have achieved

For those days when I have been buried in a task and feel that I have achieved nothing, I have an ordinary View of all four fields – Date, title, Elapsed Time, Days in Queue – in a table. This time, I have two exposed filters.  The first is headed, ‘Finish on or after’ and the second is headed, ‘Finished before’.

By setting my time range, I can immediately see what I have finished during the period in question.

## Leisure

I can repeat the entire setup for leisure items.

## Features to be developed

My next tasks will be to track my Elapsed Time and Days in Queue, particularly for work items.

To understand my own planning behaviour better, I will group all my Dates by week and count the number of items inserted and the number of items that are finished. Now I will have the basic information to understand my queue – how fast am I adding things and how fast am I finishing things.  Ideally, I’ll plot these numbers on a graph.

To understand the chunking of my tasks, I’ll group them again by week and calculate the minimum, average and maximum Elapsed Time.   Hopefully, both the spread of times and the average time will decrease below 5 days – meaning, I have designed tasks that can be finished within a week.

And I will calculate the minimum, average and maximum Elapsed Time and Days in Queue for a moving period of quarters, halves and years so that I can be aware of how long I take to complete something I have decided to do and how my behaviour changes in time.

## Summary

There it is.  A simply backlog manager.  Add Dates to a Calendar.  Use Computed Fields to monitor both the Elapsed Time and the Days in Queue. Use a check box to show a task is complete because filtering by a blank end date does not work.  And add two taxonomies so that you can split your lists and display tasks in order.

How to make a slideshow in Drupal

## The concept behind a slideshow

A slideshow in Drupal is actually a View.   A View is a query that will search through your pile of nodes, pick out any that match the criteria you set, and display them in a format you set.  Slideshow simply extends Views to layout your content in a slideshow with our without a carousel.

This post will describe how to get the slideshow working without a carousel.

## Before you start

Before you start, you will obviously need a working Drupal website with some content, such as a collection of images.  You can also use a slideshow to display ordinary posts as I do on the front page of Rooi.  We will use images here because that is the more common use.

Additionally, you need to have View downloaded and enabled and you will also have to enable its sub-module View_UI.

You also need to know, at least roughly what the following mean:

• Page and block
• Content-type, node and field

## Modules & Plugin

To set up Slideshow, you will need the modules: Libraries, Views _Slideshow, Views_Slideshow_JCarousel and Libraries.  When you enable Views Slideshow, also enable Views_Slideshow_Cycle.

Additionally, you will need the jCycle plugin which you download from https://github.com/malsup/cycle (get the .zip file on the right).

Unpack the file into your Libraries folder. If you don’t have a Libraries folder, make one under /sites/all/.  Rename the folder that the .zip file creates as jquery.cycle.

## Make a View Slideshow

You will recall that to make a View, you go to Structure/Views and make a new view.

Screen 1

1. Add a name and a description
2. Choose your content.   Notice that everything on the list is a content-type. If you have a separate content-type for images, choose it. Otherwise choose a content-type that has a field for images. The default content-type Article has a default field for images and I chose Article.
3. Decide whether you want to display your slideshow on a page or a block.
4. If you chose page, check the path.
5. At format, choose slideshow.
6. Set the number of images to show before pagination kicks in.
7. Decide whether you want a direct link to show on a menu.
8. Continue & edit but beware, your work has not been saved at this point.

Screen 2

1. The second screen has a baffling array of controls.  Look over them carefully and ignore Advanced Options in column three for the moment.
2. The middle column controls the path, the links to menus, the permissions, and pagination.
3. Most of the controls that you want for a slideshow are in column one.
4. Starting at the top, you see Display Name and Title. Display name is the name used to when Views are listed. Title is the name displayed as part of the view – that is, above the slide show.  So make sure the Display Name speaks to administrators and developers and Title speaks to users and visitors.
5. The next four blocks cover FORMAT, FIELDS, FILTER CRITERIA and SORT CRITERIA.
6. Starting from the bottom — as those are easiest to understand – Sort Criteria telsl you the order in which slides will be displayed.  If you want to change the order, this will be the block where you will find the controls.
7. Filter Criteria is also fairly self-explanatory:  with the default settings, the slideshow will only display published content that is an Article.
8. The FIELDS block, if you followed the instructions for Screen 1, will be blank.
9. FORMAT refers in the first line to Slideshow|Settings and Content|Teaser.  We will begin with Content and you will see that varying the Content changes your Field options in the Fields block below.
10. Click on Content and choose Fields.  Now you see Content:Title come up below.  You can also Add a field.
11. Add a field and you will see many choices.  Think a little – you are looking for Content: Image.  Add that, and it will come up in the Fields block.

## Inspect Preview

Scroll down to the bottom of your screen.  You should see a slideshow of all the images that you have uploaded into Articles with the title of the Article above the Image.

Save and go to the menu where you linked the slideshow or type in the url to see your work on your website.

You might also note that you are also seeing the title to every Article, whether it contains an Image or not.

To add a another Filter to choose only the Articles that contain an image, you can look first at the list of Filters.  I don’t think we will find a suitable filter because we are displaying nodes of content-type Article and we want a logic that would go something like “contains an image” rather than “is an image”. But look anyway.

(Remember to edit a View, go to Structure/Views.)

I went instead to Advanced Options and chose the Relationships. On that list I could find Content:Image (field). I added it and checked required.

Now my slideshow only contains Articles which contain an image.  And it is cycling nicely.  Save if you wish.

## Slideshow Settings

What if I want to speed up my slideshow or add previous and next buttons?

Go back to the View and go to Slideshow | Settings in column one.  (Btw, if you have not downloaded jcycle correctly, on the following screen you will get a big warning message in red. So if something is not running correctly and you want to eliminate jcycle as being the cause look here.)

To get some basic settings, scroll down to the bottom and check the options under Bottom of the page.  Be patient as when you check the options, more options are revealed.

Oddly, the controls aren’t working as I expected them to.  I checked all three and checked the option to stop when hovering.  Only the counter is showing at the bottom for me.

## Summary

So far, we have downloaded the correct modules and plugin and set up the basic slideshow view.

You know how to reveal fields and to add fields.  You know how to filter on the content-type (column 1) and on the fields (under Relationships in column three).  And you know where to find the settings to control the slide show.

You can also decide where your slideshow will go on you site – onto a page or block and if it is page, attached to a menu or not.

The next post will describe how to get the carousel working.

To install WYSIWYG successfully, it is helpful to understand that works at three levels: text filters, WYSIWYG and Editor.

## Text filters

Drupal 7 arrives with pre-installed text filters.  If you have a fresh install (and even if you don’t), got to the admin bar at the top of screen and select Configuration.  On the left hand side, close to the top, you will see Text Filters.  Have a look at these.  You will see Filtered HTML, Full HTML and Plain Text.

The filters give you control over three things:

1.  Who can use Full HTML, or Filtered HTML and who must use plain text.

When you are new to Drupal, leave everything on default.  You can see that with the default settings only administrators can use Full HTML.  Later on, you might want to limit anonymous users to plain text as Drupal attracts spam.

2. Which Filter is used by default

Also, note that Filtered HTML is at the top. That means that is acts as the default, even for administrators. If changing the filter manually becomes annoying when you need Full HTML, change the order.  You can change the order back again later, if you wish.

3.  The exact functions of the filter and the order in which they work

As a general rule, do not play with the settings. There are several of them and when you fiddle, you are fiddling with relationships to the underlying code and to the effect of combinations of settings.  When in doubt, don’t touch!

There are three settings that you will probably want to change though.

1. When you add the Media module, you must check the box for “Convert Media tags to markup” (and Save).  The Media module will remind you if you forget. You must check this box in both Filtered and Full HTML.
2. When you add the WYWIWYG module, you are recommended to uncheck “Convert line breaks into HTML (i.e. `<br>` and `<p>`)”.  Uncheck this box in both Filtered and Full HTML.
3. Additionally, when you add the WYSIWYG module, go to “Limit allowed HTML tags” under Filter Settings near the bottom of the page, and add <p> and <br>.  You only need to add these tags in Filtered HTML.

Text Filters is the first level of setting up WYSIWYG.

## WYSIWYG module

You can install and enable the WYSIWYG module in the usual ways.

• Either, use drush (drush dl wysiwyg) and (drush en –y wysiwyg)
• Or, go to the admin bar/modules and insert the url that you retrieved from the WYSIWYG page. When prompted, enable the module.

WSYIWYG should now show up on the Configuration page under Text Filters. If it does not, then clear your caches.

• Either, use drush (drush cc, followed by 1 when prompted)
• Or, go to the admin bar/configuration and performance where you can clear all caches.

Go to WYSIWYG at the Configuration page and you will see the three Text Filters you saw in the first stage above, with a drop-down box that says “No Editor”.

Your next task, is to go to the “third level” and install an editor. Then we will configure a combination of WYSYWYG and the editor you have installed.

## CKEditor

Drupal will prompt you with a list of editors and highlight one in particular, CKEditor, in pink.  CKEditor is very well established but I must begin with two warnings.

• Do not install the CKEditor for Drupal.  Install the normal CKEditor.
• Do not install the most recent CK Editor, because Drupal/WYSIWYG will insist that it cannot see it.   You can install the latest development version of WYSIWYG (by downloading it manually into the WYSIWYG folder), but it does not play nicely with DRUPAL and destroys the Edit layout and does not render a tool bar.  Install an older version, say 3.5.
• Do not fuss about all the instructions about where to put the CKEditor. Download the zip file and unzip it into /www/yourwesbite/sites/all/libraries. If this is the first library that you are installing, then you must create the library folder.  CKEditor will unpack itself neatly.

Once you have an (old) version of CKEditor, when you go to WYSIWYG on the configuration page, you should now see CKEditor in the drop-down box where you once saw No Editor. If it doesn’t show up, try cleaning your caches before you panic.

Now you can configure your WYSIWYG/CKEditor.  You only have one task to do but you must do it for Filtered HTML and Full HTML. And remember to save each time.

Click on Configure and go to Buttons and Plugins. Check all the buttons that you want on your tool bar. Be mean, rather than extravagant but remember to check “HTML Block Format” which give you a drop down list for headers and “Media Browser” if you are going to add the Media Module (near the bottom).  This may feel like a tedious chore, but enjoy – when you are done with this you will have working WYSIWYG.

## Summary

WYSIWYG requires you to think at three levels.

1. Set up your text filters and prepare for the addition of WYSIWYG and Media as I described in the first section above.
2. Install WYSIWYG and go to the configuration page where you are prompted to get an editor.
3. Get an old version of CKEditor and set up the buttons for your tool bar with the configure button.

## What is mobile first?

Mobile first.  This is the new mantra for web design.

We design the smallest screen first and design the larger screens later.

## Does mobile first help me position my service?

As the owner of a service, I like mobile first.

Mobile first constrains me to think clearly about the main purpose of my website.

The small screen prompts me to edit, edit and edit again until I am saying what I need to say, simply and completely.

## Where can I get good examples of mobile first?

Though the mobile first mantra has become a mantra, when I google mobile design, I have found very little advice about how to think about mobile design.

Oddly, blog posts promising 50 best responsive sites, for example, immediately contradict the mobile first mantra and show the desktop layout first.

In short, much to my frustration, I haven’t found a good catalogue of examples of responsive design that is mobile first.

## What advice on mobile first is out there?

The advice out there is either very generic (think about what the customer wants) or very technical about media queries, for example, or very sophisticated, such as have dummy actions to make the user think your website is more responsive than it is.

To get started on using mobile first, I am going to have to think through the principles for myself.

## How does mobile first clarify my service design?

### The scenario

Mobile users are probably on the go somewhere.  They are unlikely to be at their desk.  They don’t have a keyboard.

Not only are they away from the conveniences of their own desk, at any time their signal might fail.  They are very likely to be interrupted by something going on around them, or by having to break off a task and ‘move on’, get off a train,  say.

They not even all that likely to be sitting down.  They may be on public transport with their bags and worldly possessions between their feet, with one hand hanging onto the overhead strap, and only one hand and a thumb to work their mobile phone.

### What mobile users want and need

Clearly, the interaction between mobile users and myself must

• Obvious at a glance
• Not disturbed by noise and activity around the user
• Manageable one handed with a thumb
• Complete in itself in a very small window (a few seconds).

This list feels dull and pedestrian.  It is certainly “micro”.  Can I really conceptualise my interaction with a user as a matter of seconds?

### Mobile interactions are small

The smallness, if not meanness, of mobile engagements, stopped me in my tracks.  Has life come down to a few seconds?

Alternatively, I can ask was life ever about more than a few seconds?

### What did we do before we had mobile?

If we arrived at the supermarket without a shopping list, for example, what did we do?  Instead of calling home to get oyur list, we had to guess?

Before we had mobile, when we were sitting on a train, we made a plan in our head for what we would do when we left the train.

After all, we still do this when we are driving, or when we don’t have a signal.

### Plus ca change – has mobile changed anything?

I am not totally convinced that mobile has changed anything.

To continue the supermarket example, we might be able to call home to get our shopping list and rectify our own confusion, but our relationship with the supermarket does not change.

The supermarket doesn’t have our goods waiting for us when we arrive.  Nor, do they send us scooting around their warehouse with an efficient map like an Amazon worker.  Nor, does a robot fetch our goods for us.

### Our relationships with our users persist even with mobile

The relationship between user and supplier, at least in the case of the supermarket, has not changed.  All that has changed is that the user can be a little more efficient.

I am going to use this insight as a heuristic and generate all the relationships we might have with a user and look where our offering of a mobile experience might allow them to be more efficient.

## What do we do when we are mobile and don’t have a signal?

When we are driving or sitting on a plane without a signal, how do we think about lives and our relationships with the various people on whom we depend?

What do we want to know and what decision have are we thinking about making?

What will make us happy and feel we have achieved what we set out to achieve?

### Scenario 1

I am whiling away the time and hoping for something to do to pass the time.  If I don’t have an internet connection, I might pick up a free newspaper or an inflight magazine.

### Scenario 2

I might feel at a loss in the setting and not want other people to see that I feel at a loose end.  If I don’t have a mobile connection, I might scribble on a notepad or pretend to look seriously at the artwork on the walls.

### Scenario 3

I might want to catch up with news, international or purely social, and be taking this moment because my movements precluded doing it earlier.  Without a mobile connection, I might look at a newspaper for news or glance at my email or social media messages.

### Scenario 4

Particularly at the beginning of the day, I might be looking for amusement and entertainment as a mood-maker to start the day with a smile.  In days gone by, I would have looked for the daily cartoon.

### Scenario 5

Particularly at the end of the day, I might be hoping for some inspiration or distraction to contradict a disheartening day, or recent encounter.   Anything, which allows me to jump the tracks of despair, and to creatively restore hope, will do.  Without rich resources, I would have depended on my imagination and memory.

### Scenario 6

I might have a specific problem to solve and I am hoping that someone has put a clear solution online. For example, how do I check my foot size before buying shoes?  Or, how do I think economically about mobile design?  Is there someone out there who is sufficiently expert to lay out the issues clearly?  Without a connection, I might be thinking about how to find out and whom to ask when I am connected to the world again.

### Scenario 7

I might be looking out for a specific message from someone – on my email, twitter account, or even on a broadcast service.   I am looking for something specific and I want to go to a url, log in if necessary, and get an answer to my question.  Has the message come and can I relax or move to the next stage of a task?

### Scenario 8

I might be hoping to make a specific action.  To take a simple example, I might want to bookmark ten useful sources that I can follow up at home.  At this stage, we might be tempted to mimic a website set up for desktops.  It might be more helpful to think through the basic actions first.  What actions? What information do I need to act and what will the action be?  How do I know when I am done (or when I am half-done)?  How will I remember how far I got?

## Using the scenarios to gain insights

Working through the scenarios, I was struck that the first scenario and possibly, the fifth, fall into window shopping.   These services might be important to regular customers of mine but probably of limited value to someone looking desultorily for distraction.

Scenarios 2, 3 and 4 provide services to clients that used to be served by mainstream media and newsletters.  To the extent that we have anything useful to contribute, clients might like this service.

Scenario 6 offered a specific insight for my kind of business.  Design my layout to show the questions, provide sufficient information for the user to judge whether they have found their answer, and make provision to bookmark the link in some way.

Scenario 8 turns out to be the most insightful for me.  So often when we start a new task, the steps aren’t clear to us.  Thinking in the micro terms of mobile helps us communicate the structure of tasks more clearly to our clients.

Scenario 7 seems to be more a matter of general services but will include messages from us.

## Moving forward

I am going to begin from here.  Do these insights help me visualize the small screen of mobile and what my clients would like to receive as they, for example, hang from a strap on a jolting train, and attempt to look something up one handed with only a thump free?

Like many people, I have a WAMP server on my laptop where I mock up new websites and run private websites as internal Wikipedia.

I am currently running WAMP 2.2 and it fails – a lot – three times in six months.  I have no idea why and each time the symptoms are different.

But I do know what the solution looks like. I need to restore long enough to be able to gain access to my database and back up anything that is not backed up and to set any unusual settings to defaults so I can think about an alternative.  But first I must restore WAMP without losing my website files (www) and the databases which are stored in bin.

Here are the steps.

## Step 1 Backup your WAMP folder

Simply copy your WAMP folder into C:/ .  Windows will keep it as Wamp – Copy.

Have a break and calm down. This might take an hour or so depending on how much is in your database bin and www folders.

Select user, host from mysql.user;

Note well that if you are an organized person, this is a table that you might want to keep on hand for emergency purposes.  But right now we will proceed assuming that we cannot quite recall what we did when we set up WAMP.

Write down what you can remember and do it now before you start guessing and create chaos later.

## Step 3 Print out all the files that you might have edited when you set up WAMP

1.  wamp/apps/phpmyadminVerNo/config.inc.php (this is where you put your user name and password and where you might have set up authentication and ports)
2. /wamp/wampmanager.tpl (you might have changed http://localhost to http://localhost:81 if you have changed the port for apache from 80 to 81  three places)
3. /wamp/bin/apache/apacheVerNo/conf/httpd.conf (if you changed the above, you will also have changed Listen 80 to Listen 81 and localhost:80 to localhost:81)
4. /wamp/bin/mysql/mysqlVerNo/my.ini (you might have changed the port for myql from 3306 to 3307 – three places)
5. /wamp/scripts/testport (where you might have changed 80 to 81 in several places)
6. /wamp/lang/English (where you might have change Port 80 to Port 81)

Also write down the Version Numbers for Apache, MySQL and Phpmyadmin.

Check whether your computer is 64 bit or 32 bit.

You are now ready to start restoring WAMP.

Find WAMPSERVER on the internet  and download the correct version of WAMPSERVER.  Don’t be tempted to upgrade while you are restoring.  Keep the task manageable.

## Step 5 Uninstall WAMP

Go to your Control Panel (from Start) and uninstall WAMP.  Uninstall removes everything except your www and bin folders.

## Step 6 Install the correct version of WAMP

Install WAMP.  I use all of the defaults (IE and dummy email).  If I need to fix my email, I do it in a separate exercise.

REMEMBER to enable the rewrite module in Apache. Go to the WAMP menu, Apache, modules.  Click on rewrite. And close. Then check again. Sometimes the “tick” doesn’t stick.   If you don’t enable rewrite, your websites will not be able to read “pretty urls” that you carefully set up for humans to read and you will get baffling errors.

## Step 7 Let WAMP start

When WAMP asks, let it start itself up.  You will see the icon in your bottom tool bar and it should go GREEN.

Got to your config.inc.php file (see Step 3). If it differs in format from the one you printed out, then you have installed the wrong version of WAMP. Close all services, exit and start again!

If you have the correct version, then change your user name and password. If you have changed your ports, then do nothing else right now.

Stop all services and restart all services (from the WAMP menu).

Check you have access to phpmyadmin.  If you get a pink error message #2002 or #1045, then in all likelihood, you have put in the user name and password incorrectly.  But sometimes you have little choice but to try to reinstall (start again).  In short, at this point, you should have access to Phpmyadmin and clerical error or confused working procedures is a more likely cause of failure than anything more complicated (Don’t google  it. That is like looking for medical information – you will just panic. Calm down and work systematically.)

## Steps 10 & 11 Access a website

Now go to localhost and access a website. If you did not change your ports, everything should work fine.  All done.

If you did change your ports, you have one of two options.  Change the port settings on your websites to match the defaults.  Or, carry on and edit all the files that you printed in Step 3.

To change the port settings in Drupal, the port setting for mysql is in /www/sites/all/default/settings.php. You have to go to Properties with a right click and change from read-only. Change the port to the default of 3306.  Save and set the Properties back to read-only.  Remember you will have to do this for every website.  Also remember if you test this on one website and then go on to change the port settings, come back to change the port setting to the new number.

If you have edited all the files in Step 3,  then this time stop all services, exit and restart WAMP and then all services because you have edited the menu as well as the services you call.

If all goes well, you should be able to access all your websites.

## Step 12 Consider changing your server

WAMPSERVER 2.2 seems unstable to me. I don’t know if 2.4 is anybetter.  What I do know is that the config.inc.php file in WAMPSERVER 2.4 is radically different from the one in 2.2 and I cannot see how to update the ports.

Also the version of mysql is different which requires an undate of your data tables as well as your software. To upgrade, you might do better to treat the job as a migration and back up all your websites and all your mysql, rebuild your server and then rebuild your websites.

There you go –it might take you an hour to get back into action. If anything goes wrong, it might take several hours. But don’t panic.  The web is littered with half instructions and panicky notes.  Don’t go near them.  Just work very systematically. Check as you go so that you don’t cause more chaos. And everything will work.

One of the annoying features of Drupal 7 is that its submit button is below the fold.

Inevitably when we are writing a long post, we become distracted at some point and posts are left unsaved.  Without an automatic save feature, it is equally inevitable that posts are lost.

To make life a little easier, it is cool to put a Save button at the top of the Add Content form. And it is easy to do.

1. Install and enable the module Content Type Extras
2. Go to the list of Modules and Configure Content Type Extras
3. The Module allows for all manner of extra buttons that I don’t use. I will just forget what they all do.
4. I go to Extras and check two boxes to add a Save button to the top of each Content Type.
5. Save and buttons appear whenever you add  a new Article, Book page, etc.

Now you have saved yourself a needless task of scrolling down to find the Save button and given yourself a prompt to Save when you are distracted.

I find web design enormously difficult.  I like to approach work in an organized way and I don’t see the method that designers use, though they must have one.

I was enormously relieved then to find a list of rough guidelines on the Adaptive Themes blog originally taken from Smashing Magazine.  Rephrased — here they are.

## Serif and Sans-Serif  Fonts?

• Sans-serif fonts, i.e., fonts such as Arial that have no serifs or flourishes at the end of letters, are still more popular than serif fonts such as Times New Roman.
• The more common rule-of-thumb is that we should use sans-serif fonts because they are easier to read on the web and serif fonts when we are presenting on paper.
• The second rule-of-thumb is to use the opposite type of font for the headings.

• Popular choices for headlines are Georgia, Arial and Helvetica.
• Popular size for headline fonts range between 18 and 29 pixels.
• Header font sizes are typical 1.96 times the size of the body font.

## Body Text

• Popular choices for the body of the text are Georgia, Arial, Verdana and Lucida Grande.
• Typical sizes for the body font are 12 to 14 pixels.
• The line height for the body text is typically 1.48 times the font size in pixels.

## Paragraph spacing

The spacing between paragraphs is typically set at 0.754 the line height in pixels.

## Characters per line

The optimal number of characters per line is between 55 and 75.  75 to 85 characters per line is more popular.

## Alignment

The body text is usually aligned left.

## Images

Image replacement is rarely used.

Links are underlined or highlighted with bold or color.

One of the more infuriating problems that you will encounter with WAMP is that it will refuse to  import an SQL file.  Too big, it says.

Google this problem and you will learn that it is down to phpmyadmin and that there are three possible ways forward.

1.  Adjust our php.ini settings to allow a larger file
2. Use the command prompt to run mysql.exe commands
3. Edit the .sql file

There is a fourth way forward that is so much simpler.  Hat-tip to this UK web developer.