Posts Tagged Kieran Mathieson

The CoreDogs Experience: Part 4

Sections covered in this article: Basic database applications.

In each CoreDogs Experience article, my goal is twofold: (1) to look in-depth at a single feature of the site or its content (this will likely be analysis or commentary of a CoreDogs feature that is present in multiple places as opposed to a single section) and (2) to take a look at what went on in a given section of the course.

CoreDogs Feature: Organization

So far we’ve taken a look at several of CoreDogs’ differentiating features.  Now, let’s take a look at the way the site is organized.  There are three “books” of instruction; Foundations, ClientCore, and ServerCore.  Within each of these books are 5-10 lessons.  Each lesson contains a number of “sub-lessons” or explanations.  There is a definite and obvious hierarchal structure to the entire site.

Another element of organization that I really like is the Wikipedia-style table of contents at the beginning of each sub-lesson.  Here is the table of contents for the Creating a database lesson:

[image here]

Each item on the table of contents is clickable and takes the user to a hash tagged location on the page.  I love seeing this simplistic table of contents at the beginning of each sub-lesson because it lets me know (along with the “Where are we?” and “Lesson Goals” sections) what exactly I’m in for and how much content there is.  Additionally it gives me an instant picture in my mind of the shape of the lesson.  By “shape of the lesson” I mean something like the story arc of a book or movie.  It’s a sort of Cliff Notes to what I’m going to be learning.

Course Content So Far

The Basic database applications section focuses on creating an application (in the form of a website) that displays information (from a database) for users.  Furthermore, the application allows administrators to add, edit, or delete records in the database.  As noted in a previous article I found the sections regarding forms to be tough and a little hazy in instruction, but this database section was a home run.

The way that this section teaches the concepts should be imitated as much as possible in today’s textbooks.  The first three sub-lessons (of 17 total) focus on providing the goals of and necessary background information for creating a basic database application.  Then, two separate Sample applications are introduced; a website called DogToys (that stores products in its database) and a website called DogRock (which stores articles about dog rock music).  As new concepts are introduced throughout the section, it is explained how the concept would be implemented on each site.

Furthermore, the student is instructed to build a third sample throughout the section; a website that stores jokes in its database.  So for each concept that is taught, the student not only sees it implemented in two different samples, but then is charged with implementing it themselves in their own, slightly different sample.  When done this way, CoreDogs does not teach the student how to replicate an action; it actually causes them to be able to apply what is learned in a real world situation.  If one is able to create a basic database application revolving around jokes, why wouldn’t they be able to create one revolving around books?

On top of these praises, I have to add that creating the database was fun.  I actually enjoyed myself as I worked through each sub-lesson, crafting my application to make it better, bit by bit.  The way that the entire Basic database applications section is broken up is masterful; at no point did I feel bogged down or confused.  This is what the Form lessons should ideally be like as well.

There are a few ways that this section of the ServerCore book could be even better.  First of all, when MySQL injection attacks are discussed, it may be helpful to provide a little further explanation as to what the “escape_string” method actually does to the data.  I also found myself wondering if phpMyAdmin is only for use in PHP applications, or can be used otherwise as well.

Finally, the exercises page could use some help.  It seems that there are three large projects offered here, but each one is broken into three smaller exercises.  I understand that this helps break down the work, but it can also be disorienting to fish through nine different exercise wondering “Which one should I do?”.  Simply dividing up each group of exercises would probably do the trick.

All in all, this was an excellent section of CoreDogs.  The “learning” itself was at the seemingly perfect steepness so that this student was never frustrated and actually enjoyed creating the application.  Seriously, all textbook should try teaching their concepts in this fashion; it could change the way that we learn.

Tags: , , , , , ,

The CoreDogs Experience: Part 3

Sections covered in this article: Fundamental forms, Saving form data, and Checking form data.

In each CoreDogs Experience article, my goal is twofold: (1) to look in-depth at a single feature of the site or its content (this will likely be analysis or commentary of a CoreDogs feature that is present in multiple places as opposed to a single section) and (2) to take a look at what went on in a given section of the course.

CoreDogs Feature: Humor

In addition to the minimalist writing style and Socratic dialogue methods, a fair share of humor is interspersed throughout the content.  Humor is a very personal thing, (preferences can greatly vary between individuals) and my first concern would be that the creator’s humor style would be an annoying hindrance throughout the course.  Let’s look at an example of CoreDogs’ humor:

 [image here]

Most of the humor revolves around the idea that the “speaker” of the content may or may not be a dog.  It’s funny, yet neutral.  It never pokes fun at any potentially controversial topics/debates/issues.  Another common example of this is that whenever the student sees the results of a “productivity win”, they are treated to a resounding W00f!

I’ll let readers decide for themselves, but I don’t mind the humor at all.  It always seems to be brief, entertaining, and not detracting from the educational value of the content.  Though, it’s not hard for me to imagine that those who are less inclined to humor may have trouble picking up on the whole dog shtick and in a grievous error reduce all hints of humor to an inadequate word like “stupid”.  You win some and you lose some I guess, but in my opinion the humor works.

 

Course Content So Far

The Fundamental forms section focused on the basics of creating forms for web pages.  It began with the HTML basics, and then moved onto some pieces of form creation that involve PHP.  In usual CoreDogs style, all the usual factors that make the learning beneficial (the humor, writing style, and dogs) are all still being used.

At the beginning of this section though, the instruction seemed a bit hazy.  Many new ideas were introduced successively, some that seemingly contradicted things I have learned previously.  Specifically, it was hard to grasp the idea of “sending form data to a page”.  Is this like sending data to a PHP script or program that resides on the server?  Consistent use and explanation of these terms would take some burden off the student.

Furthermore, the concept of HTTP GET requests and included headers are also introduced in this section but I found myself wondering “Why?”.  After completing the majority of the sections regarding forms I was able to understand that pages/programs need to receive this data in so that they can process or check it in some way.

Another area that could use clarification is the distinction between a method and a function in PHP programming.  In the Doing Computations lesson when I would see the term “shipping method” mentioned, I kept wondering where the corresponded method was located in the code.  I later realized that this one was my own brain’s fault – the course content was simply referring to the method with which a purchased product was to be shipped, not an actual method used in programming.  Furthermore, this distinction is briefly mentioned in the Checking form data section.

There were also some very helpful parts in this section, particularly on the Magic quotes and strings page.  I had always wondered why on some web pages, data output would seem corrupted, with all of these weird backslashes in the middle of the words.  Right after I read the content that explained this occurrence I wondered “WHY?!?!” and sure enough, the dogs were right there, asking and answering the same question.

The Saving form data section includes lessons on sending form data by email, or saving the data to a file.  These were both quite helpful.  After learning PHP, I can imagine one of the first things a student might want to do is to create a contact form on their website that allows visitors to ask a question or send a comment.  This lesson shows how to do that.

Also, in the sending form data by email lesson, the concept of “arguments” within a PHP function is mentioned, but not really introduced.  For someone who is new to PHP and programming as whole (which is likely the target audience for the content) it would be helpful to explain what an argument is and what it does within a function.  A graphic of a function with arrows pointing the arguments might be nice[1].

The saving form data to a file lesson was equally as helpful.  I particularly like figure 9, a table that shows the step by step interaction between the browser, apache web server, and PHP interpreter.  Seeing this really helped to solidify what was actually going.  A few more of these in other areas may be helpful (There is also one in the Complete validation lesson).  Also, the variety of exercises in this section is a good thing.  I especially like the fact that the “Transaction log” exercise was directly applicable to use in a small business.  This is something that has the potential to be immediately useful to students.

The Checking form data section ended up being very complex.  It revolved mainly around validating user input, but eventually this included using JavaScript on the browser side, PHP on the server side, and then getting them to work with each other and appear seamless to the user.  Despite this complexity it was possible to understand the lesson; one just needs a firm foundation of understanding before putting all the pieces together.  The section culminates in a mega-example in the Complete validation lesson.  HTML, CSS, JavaScript, and PHP are all in play here.

One question that I kept asking myself was “Why do we need server side validation if the data is being checked by JavaScript in the client side?”.  There were three reasons listed in Basic server-side validation lesson that aimed to answer this!  Once again the content seems to anticipate the questions that the student may ask.

PHP Function Libraries are mentioned in both the PHP Functions and PHP Validation Function lessons.  I found myself wondering why these files use the “.inc” extension.  This may be a good question for the dogs to explain.

On the whole, this section required some very hefty thinking.  In fact, the complexity of the final example was almost a little too much.  This may be because the example used a lot of JavaScript which is taught in the ClientCore book.  It’s been a while since I had personally been through that book, so I’m sure that contributed to the difficulty.  I found that I was removing myself from the flow of the lesson more often than usual in order look something up or look back to another lesson for clarification.  Moving in and out of the lesson became disorienting after a while, especially because of the longer lesson length.  This could be combated in a few ways: (1) break down the information into smaller bits.  It makes sense for all the content in the Complete Validation page to remain together but maybe the use of H3 tags could be employed even more. (H3 tags are put to good use in the Code Changes section)  Breaking the content up graphically like this may help to keep students brains from launching into the stratosphere. (2) since a lot of the complexity comes from the fact that we are dealing with both JavaScript and PHP it would be helpful if each time focus is shifted to a bit of code, it would be announced if it was PHP or JavaScript.  This is done sometimes, but for example below figure 8 in the Complete validation lesson, instead of saying:

If the submit() function returns true, the browser goes ahead and…

You could say:

If the JavaScript submit() function returns true, the browser goes ahead and…

Clarifying the language being used as much as possible should help to keep students’ heads on straight.

Finally, I love the “name dropping” of useful webber resources whenever applicable.  Specifically, mentioning the FAMFAMFAM Silk Icon set.  Sometimes searching for the best (free) resources can consume just as much time as the actual coding.  Sharing these resources is highly beneficial.

All in all, these sections were another great chunk of instruction.  For the first time things started feeling really tough (In the Complete validation lesson) but given the complexity of what is being taught, this is probably excusable.



[1] Technically, there is a graphic like this in the PHP Functions lesson, but shouldn’t this be explained when we first start talking about functions and arguments?

Tags: , , , , ,

The CoreDogs Experience: Part 2

Section covered in this article: Web site templates.

In each CoreDogs Experience article, my goal is twofold: (1) to look in-depth at a single feature of the site or its content (this will likely be analysis or commentary a CoreDogs feature that is present in multiple places as opposed to a single section) and (2) to take a look at what went on in a given section of the course.

CoreDogs Feature: The Dogs

Another recurring theme within CoreDogs is the presence of some dog characters.  Some of the commonly appearing ones are named “CC”, “Renata”, and “Kieran”.  They are employed as characters who contribute a sort of Socratic debate method that aim to answer common questions.  For example, after a given amount of explanatory/instructional content either CC or Renata will make a comment like “Hey wait a minute, this seems awfully complex.  Is it worth the effort?”, and then the Kieran character will affirm their question by saying something like “Good point.  Let’s talk about that a bit”.  After this hypothetical dialogue, the course then gives a detailed answer to the dog’s questions.  The screen shot to right is placed near the end of Web site templates section.  The conversation that follows is very helpful in making an argument for the added productivity that the seemingly complex PHP dynamic web template creates.  It serves as a great summation of the usefulness that should be grasped from this section.

This method aims to answer questions that students would commonly ask at a given point in the lesson.  I love this.  (I was immediately reminded of the way the Apostle Paul lists hypothetical questions and then answers them for readers of his letter to the Romans)  As a student, thinking that I could read detailed explanations to my questions would greatly decrease any worry that I might have about taking an online course.  In my opinion, it would be great to see this used in all of the text books that I’m required to use at school.

 

Course Content So Far

The Web site Templates section focuses on the PHP require command as well as variables to create a dynamic template for a website.  The advantages of this sort of template come from being able to edit the header or footer of a website in one spot, and have the changes be immediate on every page of the site.  You could almost call this sort of template a content management system.

This section felt quite a bit longer and more exercise laden than the previous sections, but this is understandable because it is introducing the actual use of PHP for the first time in the ServerCore book.  To get the student familiar with PHP, a combination of near-transfer and far-transfer exercises are used.  While I was going through these exercises, one question kept popping up in my mind:

Earlier in the ServerCore book, I was instructed to set up a development server on my PC using XAMMP.  This was very easy to set up and has worked seamlessly so far.  BUT, after completing each exercise, the user is instructed to submit the URL of the completed exercise.  This is so the instructor can check my work and make comments on it if necessary.  The problem is that if I submit the “localhost” URL from XAMMP, the instructor won’t be able to access my work.  This shouldn’t surprise anyone, but I think it should be clarified that to submit an exercise, it needs to be first uploaded to an actual web server.[1]  In fact, differentiating between the student’s Development and Production server could be useful in that it will familiarize students with this real-world concept that may be used in the workplace.  A comment at the end of an exercise like “Upload the completed exercise to your production server and submit the URL” should be enough once this concept is explained.

Another minor snafu related to the use of XAMMP was that in the Show IP Addresses exercise, IP addresses were displayed as “::1”.  This was mentioned by another student in the discussion section of the exercise (which proved helpful in this case).  If the use of XAMMP is encouraged throughout ServerCore, it may help to mention this in the main body of the content as well.

One more XAMMP related remark was that in the Web server time exercise, the time was displayed was not the same time as my PC’s clock.  This doesn’t bother me much, but I can imagine some students getting frustrated by this (thinking they did something wrong).

The quality of the instructional content is still top-notch, as mentioned in my previous article.  Though, something to be careful about is the use of the HTML <code> tag when referring to file names that are in examples or diagrams.  In the image below (taken from the Complete template system page) I thought there was a CSS file named “library.dogsite.css” being referred to.  This is a tiny quibble but may be worth keeping an eye on.

 

All in all, this section was rewarding especially because I’m already able to use PHP to create a sort of dynamic web site template.  Many of the images and diagrams work very well and are great at visualizing what is being explained.  I particularly liked this color-coded one.  See the table below for a summary of my thoughts on this section.

 

What I Liked

Needs Improvement

  • “The Dogs” and their discussions can be very helpful.  I wished more text books used this!
  • Being able to actually use PHP in under an hour was encouraging.
  • Images and diagrams are well done and do an excellent job at further explaining the instructional content.
  • Results of the Show IP Addresses exercise were a little peculiar due to the use of XAMMP.
  • Results of the Web server time exercise were also peculiar.
  • Using “x.html” as an example file name could be mistaken for XHTML, the markup language.
  • Spots where <code> tags are used for file names could be potentially confusing.

 



[1] Admittedly, this is mentioned in the instructions for the Web server time exercise, but I think it could be more helpful if it was implemented throughout the ServerCore book.

Tags: , , , , , ,

The CoreDogs Experience: Part 1

Sections covered in this article: Why learn PHP with CoreDogs? and The PHP Ecosystem.

In each CoreDogs Experience article, my goal is twofold: (1) to look in-depth at a single feature of the site or its content (this will likely be analysis or commentary a CoreDogs feature that is present in multiple places as opposed to a single section) and (2) to take a look at what went on in a given section of the course.

CoreDogs Feature: Writing Style

The first thing that jumped out at me was the style and methods of writing that are employed on CoreDogs.  The writing style is clean, factual, and minimal.  Never wordy, every sentence is very clear in the point that it wants to make.  Take for example the two opening paragraphs of the ServerCore book:

ServerCore helps you write programs that run on Web servers. As explained in Foundations, that’s where much of the business value of the Web is. It’s not surprising that companies want to hire people with server-side skills. Even humans, as well as us dogs.

ServerCore covers the programming language PHP. Other languages are used on the server-side, like PERL, Ruby, Java, and C#. The first chapter explains why PHP was chosen. The second chapter is short, talking about how PHP works, and (free!) tools for writing PHP.

Paragraphs often begin with a simple statement like: Read the rest of this entry »

Tags: , , , , , ,