Sunday, January 24, 2016

My 62nd Birthday - and the Sydney Thunder win the Bigbash final

Today marks my 62nd birthday. Yes, I am all of 62 years old. I didn't really do anything to celebrate my birthday today. I got lots of phone calls and messages on Facebook which was nice.

In the evening, my favourite Cricket Club the Sydney Thunder won the Big Bash league grand final for the first time in their history. I was so happy, I ordered a commemorative T-Shirt for myself, as a birthday present for myself.

So, it was a pretty good day overall.


Wednesday, January 13, 2016

A hot Wednesday

Today was my day off for the week. The temperature got to 40 degrees Celsius. I took a dip in the local pool later on.

I visited Botanic Village in Kangaroo Flat earlier. I had a look at the premises. Very nice. If  I can afford it I might look at moving in one of these days.

Check them out at http://www.botanicvillage.com.au/.

Monday, January 11, 2016

Our local MP (Member of Parliament) pays BUCO a visit



Today, my workplace had the privilege of getting a visit from Ms Lisa Chesters, who us the federal MP for the Bendigo Region. She bought the local media up with her and this will guarantee BUCO some good free publicity, (and hopefully some more support). I can't wait to see what is in the local paper tomorrow.


Saturday, January 9, 2016

Book review - Murachs Javascript - 2nd Edition


Here is my book review of Murach's Javascript - 2nd Edition ………………………………………………………………………………………….

 Section 1 Get off to a fast start with JavaScript development.


 Chapter 1 


Pages 4-5 How a web application works 

Well explained text. Calling the Internet “the cloud” was interesting.

 Pages 6 and 7. How static web pages are processed.

Well explained. Made the process very clear but I already knew this.

 Pages 8 and 9. How dynamic web pages are processed.

 These pages gave a good explanation of server-side processing. The diagram using the three servers was well done. Perhaps you should have explained the difference between dynamic web pages and static web pages here.

 Pages 10 and 11. How JavaScript is used for client-side processing.

 I feel that you could have explained that Client side processing happens on the browser as against server side processing.

 Pages 12 and 13. What you need to know about the ECMAScript specification? 


You gave a good history lesson page 12. On page 13 you wrote: • Allows you to run in strict mode. What is “strict mode”. • Allows several methods to that make it easier work with arrays. Arrays and methods are not explained at this stage. • Adds a safer way to create an object and more control over object properties. What are objects? Not explained just yet. Writing this stuff here could be confusion for new people not familiar with Javascript.

 Pages 14 to 17. The components of a JavaScript application.


 As I already understood HTML and CSS I just skimmed through his section.

 Page 18. The JavaScript. 

I ran the example for Chapter 1 in my browser and was pleased to see that it worked well the first time. I had downloaded the files from Murach.com. I felt that it was important to talk about DOM scripting as JavaScript works by changing the Document Object Model. This very fundamental.

 Page 20 – 31. The HTML skills you need to know fore this book. 

As I am familiar with HTML and CSS, I just skimmed through this section of the book. I typed in the web stuff on page 25 to help get a refresher with attributes.

 Page 32. How to test a JavaScript application.


 Testing can only be a matter of experience. Page 32 was mostly common knowledge. I usually use file explorer to find my files. Page 33 was common knowledge.

 Page 34. How to find errors in your code


Everything worked OK. Could be scary for new developers.

 Page 36. How to provide cross browser compatibility.

 Very good explanation about how to use shiv’s etc.

 Page 38 – 45 Aptana.

 I am not a big fan of Aptana. I use Codelobster or Notepad++.

 Perspective

A good introduction. I don’t think it went too fast.

   Chapter 2. Getting started with JavaScript.


 Page 52. How to include JavaScript in an HTML document.

I typed in the example you had. Everything worked well the first time and was easy to follow. Well explained.

 Page 54 - 55. How to include JavaScript in the body of an HTML document.

Your examples worked well and were easy to understand.

 Page 56 - 57. The JavaScript syntax. 

These pages were well written and easy to understand. This is important as good syntax needs to be understood. 

Page 58. How to create identifiers. 

These pages were well written and easy clear. The rules for creating identifiers was well spelt out. There was a good discussion about using camel case and underscores. 

Page 60. How to use comments. 

Self-explanatory.

 Page 62. How to use objects, methods and properties.

 I thought that these two pages were well explained. The second page did a good job of reinforcing the first one. These concepts need to be understood. Very well explained. 

Page 64 - 65. How to use write and writeln methods in the document object. 

These methods were well explained. I followed the examples which worked well. But I am not sure why JavaScript bothered with writeln if you have to use


   to make it work.


Page 66. How to work with JavaScript data.

The concept of the three data types were clear enough. I am assuming that this book is aimed at people with some type of programming knowledge. So far everything is clear but it is not a beginner’s book.

Page 68. How to code numeric expressions.

JavaScript uses largely the same expressions that most other languages use. The order of precedence is the same as in most other languages. The author did well to explain where to use the increment and decrement operators as that can be crucial to the program.

Page 70. How to work with numeric variables.

I have seen this before. Nothing new here. This will make more sense to new users with
 practice though.

Page 72. How to work with string and Boolean variables.

This was a good explanation about how to use string variables. What was new here was
 using += to concatenate a string. I had not seen that before.

Page 74. How to use ParseInt and ParseFloat methods.

This was a good explanation about ParseInt and ParseFloat. I had not heard of Nan before
 this.

Test Exercises.
Both the Miles Per gallon program and the Test Exercises program worked well. Made
sense of what has been taught so far. I feel that these 2 chapters have got me off to a good start.

Chapter 3. The essential JavaScript elements

Page 84. How to use the basic control statements.

The IsNan method was new to me. I was familiar with the other operators. 

Page 86. How to code if statements.

It says on page 86 “if you are new to programming, take it slower”. This is not a book for
 beginners as JavaScript is not a language for beginners. While overall, I understood what
 was written here, I feel that this may be too terse for a beginning programmer to understand.

Page 88-89. How to code while and do while loops.

The examples were easy enough to follow. 

Page 90-91. How to code while and do while loops.

Again, the examples were easy enough to follow. 

Page 92. The three illustrative applications.

Without getting too much into detail, I typed in all three of your practice programs, and after getting rid of my typing errors, discovered they all worked well. They all did a good job of
conveying the concept of loops and conditionals.

Page 98 - 104. How to work with arrays.

After reading through these pages, I noticed how close they were in syntax to C and Java. The text was easy to follow and the example worked well.

Perspective

I felt that this chapter did a fine job of explaining how conditionals, loops and arrays worked. The examples were good and I feel that it gives me a basis to move on to the next chapter.

Chapter 4. How to work with JavaScript objects, functions and events.

Page 108. How to use objects to work with data.

confirm (string) is new. I have seen parseInt and parseFloat before. We are clearly starting to get into the DOM structure here.

Page 110. How to use Textbox and Number objects.

I found reading through the text on page 110 slow going, although the examples on page 111 were clear to follow.

Page 112. How to use Date and String objects.

I found reading through the text on page 110 slow going, although the examples on page 113 were clear to follow.

Page 114. How to use DOM to change the text for an Element.

Page 114 was well explained. The image on page 115 helped.
It was good that you pointed out that elements that do not have closing tags are called Void or singleton elements and do not have any child nodes.

Page 116 - 119. How to use functions.

I am quite familiar with functions. Your examples all worked well, except for the showYear
function on page 119.
The first line was incorrectly coded as 
function() showYear {
instead of
function showyear ()  {

Page 120 -121. When and how to use local and global variables.

You gave a good explanation about local and global variables.
It was good to point out what happens if the var keyword is left out.

Page 122 -123. When and how to use Strict mode.
You gave a good explanation about strict mode and why it is used. It was good to point out the best coding practices for variables.


Page 124 -125. How to handle events.
Reading through the pages made things clear.
I types in the example on page 127 and it worked fine.
Things are coming together quite well I feel.

Page 128 – 133. Two illustrative applications.

The Miles per gallon program.
After reading through the text on pages 128-129, the coding in the program made sense. I
typed in the program from my keyboard and could not get it to work! When I opened up the exercise file you provided it worked just fine! Maybe it was just my crappy typing.

Page 130 – 133. The email list application.

I found your explanation of the program easy to follow and the way it was presented made sense. It worked well the first time.

Perspective

This was a complicated but important topic but it made sense the way it was presented. I learned a few new things such as Nan, chaining, strict etc.
I am also starting to see how JavaScript uses the DOM in order to process the browser. It is coming together just nicely.

Chapter 5. How to script the DOM with JavaScript.

Page 140 – 143. DOM scripting properties and methods.

The discussion on DOM scripting made good sense. It is becoming clear how JavaScript works.

Page 144 – 145. The methods of the Document and Element Interfaces.

I read through these page sand it appears to make sense. I really do fee l that the reader should have more small examples to work with.

Page 146 – 147. The properties of the DOM HTML specification.

You talked here about the DOM Core specification followed by the DOM HTML specification. I thought that this got a bit confusing.

Page 148 – 151 The FAQ’s application.

I studied the text carefully. The actual examples worked well. I felt hat I understand what is written, but I can see how JavaScript takes practice.	

Page 152 – 153 How to script forms and controls.

Easily understandable.

Page 154 – 155 How to script Textbox, TextArea and Select objects.

Easily understandable. I am familiar with these.

Page 156 – 157 How to script radio and Checkbox objects.
Well explained.

Page 158 – 158 How to use Methods and Events for form and controls
Well explained.

Page 160 – 163 The register application.

The example worked well. The JavaScript is becoming easy enough to follow by now.

Page 164– 165 How to add new nodes to the DOM.

After reading the text, it was not at all immediately apparent.

Page 166– 167 How to add new nodes to the DOM.

I read through the text but without a good example to work with it was not immediately apparent what was being discussed here.


Page 166– 173 The Register application with a table.

The program worked well. It was fascinating to see how JavaScript adds a table to the
browser after the form has been filled in.

Perspective
I learned a lot from this chapter. But I can see that I will need plenty of practice with
JavaScript to really get the hang of it.

Chapter 6. How to test and debug a JavaScript application.

I feel that you only learn debugging by practice so I skipped over this chapter.

Section 2
Javascript essentials.

Chapter 7. How to work with numbers, strings and dates.

Page 200 - 201 How to work with numbers.

I wonder how many people really use positive and negative infinity? The rest of the pages
were understandable.

Page 202 - 203 How to work with numbers.

I am not sure why they they have such things as abs, but there must be a reason for that.

Page 204 - 205 How to generate a random number.

I ran the example on Page 205 and it did not seem to want to output the second half of the
program.

Page 206- 209 How to generate a random number.

I tried this application and it worked well. After studying the JavaScript I found that it all
made sense.

Page 210- 211 How to generate a random number.

This was a good explanation about escape sequences.

Page 212- 213 How to use the methods of the String Object.

I am familiar with these methods as they are similar to methods used in other languages I
have studies in the past.
Your explanation was clear enough.

Page 214- 215 Examples of working with strings.

I am not sure why anybody would want to put leading or trailing spaces on a string but your examples worked well enough.

Page 216- 217 How to work with dates and times.

I thought your discussion was overly complicated. I did not follow all of it.

Page 218- 219 The methods of the Date object.

A good discussion of the Date object. Your examples worked well.

Page 220- 221 Examples of working with dates.

Your examples all worked well and I am fairly sure that I could use them in my own
applications of I needed to.

Page 222- 226 The Count Down application.

This program worked well when I ran it. I followed the JavaScript code and made good
sense of it. I am sure I could use this program in my own applications if I wanted too.

Perspective
This chapter provided a very good introduction to numbers, strings and dates. 

Chapter 8. How to code control statements.

Page 230 – 231 How to code conditional expressions.

I had never heard of “type coercion” before. Also “Identity operators” are new to me. I feel 
that it is a god idea to make sure your operators are of the same type.

Page 232 – 233 How to code relational operators.

I did not know that relational operators also perform type coercion. These pages clearly 
show that you need to be aware when making comparisons.

Page 234 – 235 How to use logical operators.

I am familiar with conditional expressions but was not aware that there was an order of 
precedence. I feel that it is a good idea to use parentheses to clarify the order of evaluation.
I had not heard of short circuit evaluation.

Page 236 – 237 How to use the selection structures.

It was interesting to hear about one-line IF statements. I just think that it is better coding to put your code on several lines.

Page 238 – 239 How to code switch statements.

I am familiar with switch statements. I am not sure why you would want to employ fall through in a switch statement though.

Page 240– 241 How to use the conditional operator.

I had never heard of a Ternary operator before I read this book. I am familiar with
conditionals.

Page 242– 243 How to use AND and OR operators for selections.

I was unaware that AND and OR operators return the last value of the last operand they
evaluate.
The text of the book here was complicated at times. For example, what is the point of using a method that does not exist? Surely you would make sure and object exists before coding it

Page 244 - 245. The Invoice Application.

I tried this program and it worked first time. After studying the JavaScript, it was easy to see how it all worked. A nice program.

Page 248 - 249. How to code while and do loops.

I am familiar with do and while loops so I picked this up easily enough.

Page 250 - 251. How to code while and do loops.

Same as with for loops. These examples all worked well.

Page 252 - 253. How to use the break and continue statements.

Same as with for loops. These examples all worked well and I picked up the idea well.

Perspective

What I learned from this chapter is that JavaScript has its own particular ways of doing loops, conditionals, iterations etc. and returns values in ways we need to be aware of.


Chapter 9. How to work with arrays and web storage.

I was glad that you made out at the start that all JavaScript arrays are dynamic.

Page 258 – 259 How to create and use an array.

This was generally a good explanation of arrays. You did not specifically tell the user what arrays are used for. I am sure that the author expects pre-knowledge on the part of the reader.

Page 260 – 261 Add and delete array elements.

You did a good job of describing how to add and delete array elements. I had never heard of a “sparse” array before this.

Page 262 – 263 How to use for loops to work with arrays.

I read through these pages and then ran the examples on page 263. All worked well. Having good simple examples to work with as you go made learning much easier.

Page 264 – 265 How to use for-in loops to work with arrays.
I had never heard of for-in loops before this. All the examples you showed on page 265 worked well in practice.

Page 266 – 267 How to use the methods of the array objects.

It was interesting to see all the various ways you can manipulate an array. Doing sort() and reverse() was great to learn. It would have been nice if you had provided more simple examples just here.

Page 268 – 269 Examples of the Array methods.

I studied the code and did not have any trouble understanding just how these methods work. I am not sure why you would want to splice an array however.

Page 270 – 273 The ECMAScript 5 methods.

Things started to get a bit more technical here. After reading through the first three pages, I ran the examples on page 273 and they did not all work as expected. These pages got things rather complicated.

Page 274 – 275 Other skills for working with Arrays.

On these pages ALL the examples worked and everything made sense.

Page 276 – 277 Other skills for working with Arrays.

I had never heard of an associative array before, that is one that uses strings as indexes. The description was good and all your examples worked well.

Page 278 – 279 How to create and use an array of arrays.

This was news to me. No multidimensional arrays so far. Things are getting complicated here. Still understandable but getting complicated.

Page 280 – 283 How to use web storage.

This was completely new to me. In fact, a bit of a revelation. These pages provided a good discussion on local and session storage. I can see where this can be a good advantage over server-side storage. I was also unaware that you could use the Chrome browser to tell what other websites are storing information about me.

Page 284 – 290 The task manager application.

I studied both these programs. They will make more sense with a bit of practice I am sure.

Perspective

This was a very comprehensive chapter on arrays. I did not realize they could be so complicated or that there were so many ways they could be modified. Certainly a well written chapter although a few things might have escaped me.

Chapter 10. How to create and use functions.

Page 294 – 295 Basic skills for working with functions.

After reading through the text on page 294, I tried the examples on page 295. All worked 
well. 

Page 296 – 297 How values are passed to functions.

The difference of being passed by value and passed by reference were all well explained. The examples on page 297 all worked well. 

Page 298 – 299 How lexical scope works.

The difference between local and global scope was well explained here. The examples on
page 299 all worked well. 

Page 300 – 301 How to create and use Javascript libraries.

This was a good introduction to using JavaScript libraries. I am not sure what “separation of concerns” means.

Page 302 – 309 The Task Manager application.

I read through these pages and found that the example you provided worked well. The
JavaScript code was quite understandable.

Page 310 – 311 Object-oriented skills for working with functions.

I did not understand your first example on page 311. The rest made sense. All examples worked well.

Page 312 – 313 How to use the this keyword and the call and apply methods.

Your text on page 312 was a bit complicated. I am not sure what is the purpose of the this keyword. The examples on page 313 all worked well enough.

Page 314 – 315 How to use the method to get to the this keyword.

I am afraid that I am still not sure of the purpose of the bind keyword.

Perspective

This chapter did provide a good discussion on functions and their uses. I felt that I generally got a good grasp on the subject.

Chapter 11. How to create and use objects.

Page 320 – 321 Basic skills for working with objects.

I did not know that there was an object of the Object type. These pages provided a good discussion about Object types.

Page 322 – 323 Basic skills for working with objects.

Page 322 provided a good explanation about objects and object literals. The examples you provided on page 323 all worked well.

Page 324 – 325 How to extend, modify or delete an object.

Page 324 provided a good discussion about how to extend, modify or delete objects. I am
glad you talked about referring to objects by reference and not by direct value.
Frankly, I did not find your explanation or your examples very clear here. This was
disappointing as constructors are a fairly important topic.

Page 328 – 358 Rest of the chapter

Unfortunately, I rather gave up on the rest of this chapter as I did not find your explanations very clear at all. I am afraid you are starting to lose me a bit here. I did have to look to other sources, notably Bill Tabor of http://www.LearnVisualStudio.NET” for a clearer and simpler explanation of this topic. 

Perspective

The chapter started off well but you lost me as you went along.

Chapter 12. How to use regular expressions, handle exceptions, and

validate data.

Page 362 – 364 How to use regular expressions.

This was easy to follow. All the examples worked well.

Page 364 – 365 How to create regular expression patterns.

This did start to get a bit complicated. I just think a simpler explanation plus maybe one example per pattern might be a good idea.

Page 366 – 367 How to create regular expression patterns.

I read through the page and generally found your explanation easy enough to follow. The examples all worked well but this is a bit of a complicated subject.

Page 368 – 369 How to create regular expression patterns.

Really getting a bit complicated now.

Page 370 – 371 String methods that use regular expressions.

As I go through the examples provided I find that the all work well. But your explanation on
page 370 is complicated.

Page 372 – 373 Regular expressions for data validation.

 I read through these pages and did my best to understand them, I found it complicated.
Page 372 ends with the notion that many programmers find these patterns online and use
them without fully understanding them. I agree.

Page 374 – 375 How to handle exceptions.

I found this easy to follow and all your examples were self explanatory. Same with pages
376 – 377.

Page 378 – 379 The Register application.

This program worked well. I will need to study the code well to get a good understanding of it, but I feel that it pulls together everything I have learned so far. I do believe that this type of validation is at the heart of JavaScript.

Perspective.

I found this topic complicated in places. I can see where data validation is a key component of JavaScript.

Section 3
Advanced JavaScript skills

Chapter 13. How to work with events, images and timers.

Page 396 – 397 How to work with events.

You did a good job of explaining how and event travels down the DOM tree. You did a good job explaining about the three types of events.

Page 398 – 399 How to attach and detach event handlers.

Page 398 provided a very complicated explanation about event handlers. I thought it was interesting that at the end of the page the author said that you usually use JQuery for event handling.

Page 400 – 401 How to cancel the default action of an event.

I had never heard of the a “default” action before. But thinking about it, it makes sense to have one. I did not realize you could enable the default action. I assume that the third example works with all elements.

Page 402 – 407 The FAQs application.

I read through the text and code and it is all starting to come together for me. Although it is not hard to see why people are using JavaScript Libraries for these things.

Page 408 – 411 How to work with images.

When I tried the code on page 409 it did not work at all. I coded the examples on page 411 and it still did not work.

Page 412 – 415 The Rollover application.

The Rollover application worked well. The HTML and the JavaScript was easy to understand.
Page 416 – 419 How to use timers.

I though t your explanation bit complicated and did not come away with a good understanding of timers.

Page 420 The Slide Show application.

Your example worked well but the coding is becoming more complicated. I can see why developers are using JQuery.

Perspective.

This chapter did provide a good grasp of events, images and timers. But I feel things are getting complicated and I can see how it takes time and practice to become a good JavaScript programmer.

Chapter 14. How to work with closures, callbacks, and recursion.

Page 430 – 431 How to work with events.

The discussion about the scope chain was clear.

Page 432 – 433 How closures work.

When I types in and ran your examples I got a different looking result as to what you got on your page. I am not sure just why you would want to use closures at all!!

Page 434 – 435 Closures in the Rollover application.

I felt that your discussion on page 434 did not make things clearer.

Page 436 – 437 How to use closures.

I can understand why we have to make things private. An example that we could type in here would have been useful.

Page 438 – 439 How to code an immediately invoked function expression (IIFE).

When I ran the examples on page 439, the fourth example did not display anything.

Page 440 – 441 How to solve the closure loop problem.

Your fist example on page 441 gave me no results at all.

Page 442 – 443 How to work with the this keyword in closures.

When I ran your first two examples on page 443, neither would work properly.

Page 444 – 449 The Slide Show application.

The Slide Show program worked well. With practice and patience, I am sure the code will be understandable.

Page 450 – 451 How to use callbacks.

This was lot to learn here.

Page 452 – 455   How to create and use callback functions.

I am afraid that I found page 452 – 455 a bit hard to understand rather hard to understand.

Page 456 – 457   How to use recursion.

I read through these pages without any real understanding of Recursion. I am not sure of the point behind Recursion.

Page 458 – 459   A binary search recursive function.
I ran your example on page 459 and could not get it to work. Maybe it was just my crappy typing (who knows……??).

Perspective
I am afraid I struggled to get my head around this chapter. I am beginning to think that this
book is a good reference book but not a good tutorial.


Chapter 15. How to work with namespaces, modules, and custom

properties.

Page 474 – 475 How to work with namespaces.

Your discussion about Global Namespace Pollution was good to read about.

Page 476 – 477 How to create and use namespaces.

This was a good discussion which was easy to understand.

Page 478 – 479 How to create nested namespaces and use aliases.

I can see the sense of using aliases. I was not quite sure of the idea of the Namespace Creator function.

Page 480 – 481 How to prevent Global Pollution with an IIFE.

I can see why using an IIFE makes sense as everything goes out of space once the IIFE completes.

Page 482 – 487 The Task Manager Application.

Your task Manager application worked well, except in the Microsoft browser. I read through your code and tried to follow it the best I could but I have to say that things are getting complicated here.

Page 488 – 489 How to work with the Module pattern.

Not sure I quite understood it all.

Page 490 – 491 How to augment a Module.

Not sure I quite understood it all. Once again, I seemed to find this topic a bit over my head.

Page 492 – 497 The Slide Show application.

The Slide Show application worked well in my Chrome Browser. I read through the program in an effort to make sense of it all.

Page 492 – 497 The Slide Show application.

The Slide Show application worked well in my Chrome Browser. I read through the program in an effort to make sense of it all.

Page 498 – 511.
I have to say that I rather slogged my way through until the end of this chapter and tried to understand it as best I could.

Perspective

This was clearly a very advanced topic and one that I struggled to get my head around. It will take time and experience to come to grips with some of these topics. These are clearly not topic for the novice user.

Chapter 16. How to work with Javascript Object Notation (JSON).

I started reading this chapter but unfortunately, soon got bogged down. I thought the author was trying to explain to much too quickly, so I just gave up. I have seen other explanations about JSON that were much more understandable and readable. Including those at: http://www.w3schools.com and http://www.develophp.com. 

Chapter 17. When and how to use JQuery.


I did not even start reading this chapter as I have a whole book to read on the subject.

Final thoughts.

I must say that I did learn a lot about JavaScript by reading this book. JavaScript is a very
difficult subject and one that I have really tried to avoid until recently. Your book did fill me in on a good deal of the subject but there were parts, (particularly in the last chapters) that just went over my head. I found it a slog in parts. But generally, I have to say that I feel that is a
very good reference book, if not always an ideal tutorial. I would certainly keep this book
handy if I have to develop any web sites that involve complicated JavaScript in the future. 
I am looking forward to reading your book on JQuery. It should make a lot more sense after going through this book.

Thank you for sending me this book to review. It was a challenge in places, but we all need to be challenged some times.

Have an awesome and happy 2016.

Gerry Gates

Monday, January 4, 2016

Back from holidays

Well, I am finally back from my break. To recap, I took off to the Gold Coast for about 10 days after i finished work for the year. I spent Christmas day and boxing day having celebrations with my family who I see only at Christmas as a rule. We live all around the country. While i was on the Gold Coast I tried my hand at 737 a flight simulator, went out on a jet boat, went swimming and generally anything to help me relax. But it is always good to get back to Bendigo and back to my usual routine. I look forward to a very exciting 2016. i will keep you posted as usual. I hope you all have a great 2016.

Funeral of an old friend

This week, my good friend Colin Pilcher passed away after a fall at his home. I have known Colin for more than 40 years and it was sad to se...