Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Tuesday, August 17, 2010

Drupal musings 11: Git up and go ...

For more than I care to remember I've recognised that version control is an essential facet of software development. During this time though I've not had a need for version control. Renewed awareness of this tool was inevitable as I decided to identify a content management system [CMS], which brought me to Drupal and I simultaneously also discovered Ruby.

Now I'm pleased that over the past three years I did not commit to Concurrent Versions System [CVS] as used by the Drupal community. I listened to talks, downloaded, and tinkered, but now - the (old) news that Drupal 8 development will use GIT.

So, for me it is time to jump on-board with git for version control: a book and presentations next week:

http://cph2010.drupal.org/sessions/git-fundamentals

It's not that I'll be contributing to D8, it just makes sense to git up to speed on this (sorry!). I've been through the program and created my schedule for next week in Copenhagen. There is so much to look forward to!

Version control is one thing, having the need and discipline for testing is another ...

Saturday, August 7, 2010

Drupal musings 10: Archive & FAQ

There are now three archive pages more or less complete. I'm using HTML 5 and CCS3 (well trying) to mark and style the pages, with the addition of the new semantic tags:

article, aside, figure, footer, header, hgroup, menu, nav, section {display:block;}

(I'm not sure if these disappeared at one point in the editor, so everything is a work in progress.)

Next up - the FAQs. As a live document this will be styled differently. As yet I am not quite sure how, but I still need to sort the way to handle quotes. The method I found includes blockquote: hover: after in the style sheet, then combines blockquote, cite and p on the page. The problem is you can't copy and paste, something that visitors may wish to do. A related issue is how to display when the page was updated and accessed - an essential piece of page furniture. A search reveals many other examples and now is the time to experiment.

I also have to remember that I still don't know what the final theme and look for the site will be. So global settings, columns and such like need to be kept in-check for the moment. There may be Drupal modules to add page access / updated details, so time to check on this and accessibility. And all with just ten days more to work - then Drupalcon! :-)

The questions and answers are being be completely revised; so if you have any you would like to see please get in touch: h2cmng at yahoo.co.uk

Wednesday, May 12, 2010

Drupal musings 3: PHP, Textmate, h2cm and Forms


Happy International Nurses' Day!



For quite a few months I have not connected the MacBook to the external monitor. I did so last night using:
(Experienced programmers may at this point want to go review some political party broadcasts - coalition news as there's a lot more happening there.)

I typed in a PHP file, purposefully trying Textmate's 'Bundles' > 'HTML' > options to mix some PHP and HTML.

The file does not do a lot, but like creating, reading and writing a file it's a start. All this effort does is display four text box input fields (Chapter 11 Form Handling) with submit buttons. Previously I have mirrored the laptop screen to the external 24" Acer, that appears to be the default. ;-) Tinkering with the display options and turning off mirroring I found that I could pick up the Textmate window and move it to the big screen on my right. Meanwhile on the laptop I could preview the output in the browser. Apple's Spaces is a related facility to master.

Not only that, but suitably editing the PHP file in Textmate resulted in updates on the browser (Refresh after change. Delay 0.40 s.) To me - that's Magic!

On the Drupal front - despite the title of this post - there's not much to report. The news is brief and yet kind of major in that I've bought my ticket for Drupalcon in Copenhagen. I am really gutted that this year I did not get to the Scottish Ruby Conference in March, after '08 and '09. At least getting to grips with Textmate will also help with Ruby (and Rails) too.

OK, back to Textmate to try the other PHP input types: text area, check boxes, hidden fields, select and labels.

Sunday, April 18, 2010

Musings in the nursing domain (specific language)

It is one giant leap from the humanistic world of nursing, health and social care to the m(a-e)chismo of information technology. It is no Earth-bound chasm that greets us in considering the vaguest possibility that nursing could ever be captured, distilled and represented in a domain specific language (DSL). Given the full title of Hodges' model my attraction to DSLs should be obvious, but how realistic is this fascination?

Here are some links to definitions / resources on DSLs:
I am not advocating DSLs as a real time clinical software application, there is neither time here, nor on the wards. Since the sky above is clear blue with not a contrail in sight I am indulging in a little blue sky thinking, a reverie...

Nursing already has its concept analysis, but taken at face value this says nothing about domains as per h2cm (other than the context / application is nursing). To avoid confusion with career in the job-work sense, I have emphasized the notion of domains. By this I mean a partition of specific knowledge about a discipline or subject. This disciplinary focus or subject is often the province of expert practitioners. My forte then in Hodges' model are the INTERPERSONAL and SOCIAL care domains. This is my rationale for the musings here, as all experts were learners once upon a time, and are still as lifelong learners. It is an educational application that I have in mind.

I have come across a paper by Reinhartz-Berger, who describes the movement - Towards automatization of domain modeling. The author refers to domains artifacts and domain analysis:
(I have removed the reference numbers and inserted from prev para*)

A domain in this context [Domain engineering, also known as software product line engineering]* can be defined as a set of applications that use common concepts to describe requirements, problems, capabilities, and solutions. Domain artifacts are built and reused through domain analysis, which identifies the domains and captures their ontology to assist and guide system developers with particular applications in those domains. Despite the rapid growth of technologies and technical solutions, domain analysis models usually remain valid longer than domain designs and implementations, potentially justifying the cost and effort required for their development. Domain analysis artifacts may also serve as the basis for defining Domain-Specific Languages (DSL). Reinhartz-Berger (2010), p.491.
As the previous post - Reading the signs... Idealised Care - amongst several revealed, the domains within the health career model are broad to say the least. So broad that from the INDIVIDUAL-GROUP axis the left-hand margin of the INTRAPERSONAL-SOCIOLOGY# care domains are but distant horizons (with no curvature in-sight). It's no surprise that I keep wondering about how to get a grasp on that 'space', for reasons of a website, a potential community of explorers, educational objectives and sheer enthusiasm for trying to mix IT up. Reinhartz-Berger continues:
Several domain analysis methods have been proposed over the years. However, they all can be criticized as making the domain engineer alone responsible for developing correct, complete, and consistent domain analysis artifacts. Since domains may cover broad areas and are usually understood only during the development process, creating domain models can be a very demanding task. It requires expertise in the domain, reaching a very high level of abstraction, and providing flexible, yet formal, artifacts. Reinhartz-Berger (2010), p.491.
Also in the literature Chavarriaga and Macías (2009) highlight two approaches that are the focus more generally to help get a grip and the big wide world of knowledge: The Semantic Web and Web 2.0.:
... However, in spite of its semantic power, one of the main underlying problems with this [semantic] paradigm is the explicit representation and visualization of information, mainly focused on ontologies and the complex relationships that these code. This has made the Semantic Web inaccessible and unmanageable by most designers that are not expert on ontological representations and languages, but on domain specific applications and creative design.
On the contrary, the Web 2.0 paradigm provides a rather pragmatic vision. It is based on the use of wikis, folksonomies and protocols like SOAP, mainly intended to the automatic management of services and the collaborative maintenance of (mainly) syntactic knowledge-based information. Moreover, Web 2.0 can be considered an end-user paradigm. ... Chavarriaga and Macías (2009), p.1329.
The Semantic Web, Web 2.0 will (at some point) figure in the new site. A folksonomy can be quite broad by definition, as there is no strict control on the definition of terms. As to DSLs in Hodges' model, there we have four VERY broad domains. Exactly how domain analysis proceeds and what domain artifacts might emerge from this model would no doubt depend on reducing each of the domains, sub-dividing, being more specific.

If nothing else at present the health career model is a hybrid cognitive domain specific language.

References: (my source: Science Direct)

Iris Reinhartz-Berger (2010) Towards automatization of domain modeling, Data & Knowledge Engineering, Volume 69, Issue 5, May 2010, Pages 491-515. doi:10.1016/j.datak.2010.01.002

Enrique Chavarriaga, José A. Macías (2009) A model-driven approach to building modern Semantic Web-Based User Interfaces, Advances in Engineering Software, Volume 40, Issue 12, December 2009, Pages 1329-1334. doi:10.1016/j.advengsoft.2009.01.016

Tuesday, March 23, 2010

Lovelace, women's IT and QUADratic equations

When you stop and think about it - really stop and think, the foresight of Charles Babbage was astonishing, even though he did not quite achieve his objectives. What is even more amazing then is the role that Ada Lovelace played in the development of computing and scientific computing.

This post is to celebrate Ada Lovelace Day. As per this post 12 months ago, I am and always will be celebrating Enid Mumford and her work on the need and importance of sociotechnical insights when we attempt to apply IT in the work place*. Her work also exemplifies what women can and do contribute to IT.

In terms of the 3R's I am 'literate', but real maths evades me at least the level of ability I wish I had. Namely, the expertise to exercise some of puzzles in the social sciences.

BBC radio 4's Woman's Hour has regularly featured maths education for women and girls, bemoaning the maths abilities of the female population. Some maths has come to me through programming in BASIC, sorting, recursion, functions and using SPSS (DOS version!).

They should teach more programming in schools. Computing and maths are often equated (sorry!) and fittingly the BBC have also featured the genius of Ada Lovelace.

So all these things are connected: the pioneering insights of Ada Lovelace, the state of mathematics education for girls and how girl's are engaged in IcT today globally.

Additional links:

Gender IT: http://www.genderit.org/en/index.shtml

Europa: Women and ICT Status Report 2009

Association for Progressive Communications: http://www.apc.org/

APC Women

Alice innovative 3D programming environment

Image source:
http://www.bbc.co.uk/radio4/womanshour/01/2010_07_mon.shtml


* Jones, P. (2009) Socio-Technical Structures, the Scope of Informatics and Hodges’ model, IN, Staudinger, R., Ostermann, H., Bettina Staudinger, B. (Eds.), Handbook of Research in Nursing Informatics and Socio-Technical Structures, Idea Group Publishing, Inc.

Saturday, March 13, 2010

Drupal musings 2: Drupalese and Nursese - help or hinder

Drupal logo
As I repeatedly wade into the blue Drupal waters and then run out again (the water's hot) I note ongoing conversations at Drupalversity, Drupal dojo, Drupal-kata and similar forums about the challenge of learning Drupal. (I know the cure. That - is so simple, just do it: CREATE A SITE!)

On Drupalversity a comment by Becky Kinney caught my attention as Becky also refers to Drupalese. There's been discussion about how learners can make progress getting to grips with Drupal, but then because they lack prerequisite knowledge and skills the learning materials / instructions lapse into Drupalese.

Coming to Drupal is like nursing in so far as experiential learning is helpful. Any programming experience may help (or hinder), at the very least newbies (do I hate that term?) will be familiar with how websites appear to work, in the same way that would-be nurses are aware of the effects of infection, trauma, basic healing processes and treatments, what it feels like to be 'sick' to some degree, symptoms and signs. There's a point though that with a burgeoning new vocabulary of nursing, medical and care terms this challenge also becomes Nursese.

That reference above to help or hinder is a little like nurses who work as care support workers initially. There is a risk (which should not exist these days) that prior to starting formal nurse training they may pick up bad habits. Drupal is no different in the sense that it is complex and there are several ways to achieve the same outcome, but which is the most effective, efficient, future proof, safe and secure. ...?

Hodges' model can help nurse learners, but what about Drupal learners - this one included?

Not a chance.

A conceptual framework is not going to help here. While Hodges' model does have socio-technical credentials, it is no software engineering shoe-horn, life jacket...

It will take (several) new Drupal websites to exercise the beast, my mind, fingers and what I hope is a potential community out there. Time for another paddle!

Sunday, March 7, 2010

CfP International Journal of People-Oriented Programming (IJPOP)

********************* CALL FOR PAPERS *********************
(edited here for length)
*** INAUGURAL ISSUE ***

SUBMISSION DUE DATE: 1st May 2010

International Journal of People-Oriented Programming (IJPOP)

Official publication of the Information Resources Management Association
http://www.igi-global.com/IJPOP

Co-Editors-in-Chief: Steve Goschnick & Sandrine Balbo
Published: Semi-annual (both in Print and Electronic form)

Mission of IJPOP:

The International Journal of People-Oriented Programming (IJPOP) is cross-discipline in range yet singularly focused on empowering individuals to conceptualise, design, program, configure and orchestrate Internet-powered mashups, game mods (modifications), aggregate and structure personal media and build standalone cloud-based and client-side applications (on smartphones, netbooks, laptops, desktops, home network and novel appliances) – into self-fashioned tools and products that ultimately suit the user's own unique needs and aspirations. Other individuals may well take up such apps, mods and mashups for themselves, further customising, enhancing and embellishing them, or they may in part be used in a social or family context (to the benefit of the collective aspirations of those Social Worlds of which the individual is a part) – nonetheless, the focus of composition, development and customisation is on a product for oneself, upon theory, concepts, techniques, methodologies and ultimately tools that service a market of one. Our mission is to be the first journal that comes to mind to academics and practitioners alike and remain the best with regard to all aspects of People-Oriented Programming. Our papers and reviews will be insightful and compelling to both educators and researchers, and often to a wider audience too – the people for whom this paradigm of software development has come about.

SCOPE:

People-Oriented Programming requires high-level tools to empower both the technical and non-technical user, which in turn calls upon research into meta-models that inform design and construction, that aid comparisons of these tools, and facilitates the interchange of content between them. The meta-models of most interest to POP initially, are drawn from two disparate disciplines – the Task Analysis (TA) and Agent-Oriented (AO) paradigms– both of which often have models with representations of entities matching the needs of POP, e.g. goal, task, object, agent, individual, role, intention and communication. Several AO architectures and methodologies have called upon branches of Psychology to formulate AO meta-models that incorporate mentalistic notions such as perception, motivation and intention, but which are most often aimed at constructing artificial humans and the like. In POP we too call upon those same Psychologies and similarly enhance and formulate meta-models and methodologies influenced by them, but with the intention of augmenting and empowering the individual human, in areas where they themselves desire aid or have identified a gap in their own abilities or resources, which they want to enhance.

From Sociology, POP draws upon ethnography with a focus on self-ethnography using tools such as cultural probes, life blogs and life logs to capture aspects of the individual's own life, themselves (or through a life coach), from which they draw the desire and/or frame the need for new technological artefacts to be used in their own lives. Interactivity, with respect to facilitating and streamlining a regular user's intention to build their own artefacts, and situatedness in terms of the individual's current location and activities, are two other facets of HCI (human computer interaction) that POP encompasses.

Video gaming is the first application area where large numbers of everyday users have been able to envisage and then developed their own innovations within existing games. So-called game mods are working examples of POP where players have appropriated userfriendly tools, usually built into the game engines by the vendors (e.g. The Sims, World of Warcraft, etc.). Video games have joined other media (e.g. movie, novel, comic) in the new genre of transmedia storytelling (e.g. franchises such as Tomb Raider, The Matrix, Harry Potter), allowing the player to enter the story 'so far', extending it in the 'now', constructing their own individualised narratives and increasingly, with the capability to enhance and extend the realm of the game itself. These individual constructed game mods allow players to extend virtual realms and narratives in real-time, in directions often unforeseen by the game engine makers. Such activities are increasingly a part of an individual's entertainment and education. Game modding as described, and the engines and tools that enable it, are within the scope of POP.

Internet-based mashup tools (e.g. Google Wave) have opened up a second application front beyond game mods, where POP is likely to gain mass adoption and occasionally produce radical user innovation. The selection and orchestration of disparate distributed services (e.g. web services; information feeds; the Cloud) by an individual within a user-friendly toolkit or framework, is also in the scope of POP. While the formal protocols and the technical enactment of such specific services are of little interest here, the quality, access, usage, aggregation and orchestration of them by the individual themselves, into a personalised synergy of capability made available through some enacting technology, are of acute interest to POP. Modeling techniques and people-friendly notations that bridge and coordinate distributed services together with local resources within POP tools – ones that the layperson can understand and use in conceptualising their designs - encompasses another cross-discipline facet of POP.

RECOMMENDED TOPICS:

Topics to be discussed in this journal include (but are not limited to) the following:

* Activity theory and modeling
* Agent meta-models, mental models
* Alert filter and notification software, automated task assistance
* Augmented reality, augmented interaction
* Automating personal ontologies, personalised content generation
* Client-side conceptual modeling
* Computational models from psychology
* Context-aware systems, location-aware computing, ubiquitous computing
* Cultural probes, self-ethnography
* End-user composition, end-user multi-agent systems
* Game development support tools
* Game mods, game engines, open game engines
* Home network applications
* Human-centred software development
* Interface generators, XML-based UI notation generators
* Interface metaphors
* Life logs, life blogs, feed aggregators
* Mashups, mashup tools, cloud mashups
* Model-driven design, didactic models, model-based design and implementation
* New generation visual programming
* Personal interaction styles, touch and gestures
* People-Oriented Programming (POP)
* People-Oriented Programming case studies
* Personal ontologies and taxonomies
* Personalisation, individualisation, market of one
* Personas and actors
* Real-time narrative generation engines
* Role-based modeling
* Service science for individuals
* Situated computation, social proximity applications
* Smart-phone mashups, home network mashups, home media mashups
* Software analysis & design, software process modeling
* Software component selection
* Speech and natural language interfaces
* Storyboarding, scenarios, picture scenarios
* Task flow diagrams, Task-based design
* Task models, task analysis, cognitive task models, concurrent task modeling
* Use case models, user interface XML notations
* User-centered design, usage-centered design
* User interface tools, XML-based UI notations
* User modelling, end user programming, end user development
* Wearable computing, bodyware
* Web-service orchestration, web-service co-ordination


SUBMITTING TO IJPOP:
Prospective authors should note that only original and previously unpublished articles will be considered. INTERESTED AUTHORS MUST CONSULT THE JOURNAL’S GUIDELINES FOR MANUSCRIPT SUBMISSIONS at:
http://www.igi-global.com/Files/AuthorEditor/guidelinessubmission.pdf

PRIOR TO SUBMISSION. All article submissions will be forwarded to at least three members of the Editorial Review Board of the journal for double-blind, peer review. Final decision regarding acceptance/revision/rejection will be based on the reviews received from the reviewers. All submissions must be forwarded electronically to: stevenbg AT unimelb.edu.au

All inquiries and submissions should be should be directed to the attention of:

Steve Goschnick
Co-Editor-in-Chief
International Journal of People-Oriented Programming
E-mail: stevenbg AT unimelb.edu.au
http://www.igi-global.com/IJPOP

Additional links:

Goschnick, S. (2009). People-Oriented Programming: from Agent-Oriented Analysis to the Design of Interactive Systems, In. J.A. Jacko (Ed.): Human-Computer Interaction, Part I, HCII 2009, LNCS 5610, pp. 836–845.

Tuesday, September 15, 2009

Nursing Variables and Constant Values

From the ancient days of BBC BASIC I am today still trying to pick up some PHP to help me grasp Drupal (and Ruby).

In declaring variables - a key element of computer programs - I thought about the following both as a VARIABLE -

$nursing_care = "variable"

- and as a CONSTANT.

Which made me wonder: when do we want nursing to be a 'variable' and when a 'constant'?

The answer is of course obvious.

Nursing care must be a VARIABLE when it reflects the care plans and objectives that relate to a person - a unique individual.

Alternately, what must be declared as CONSTANT are -

safety, values and good-high quality nursing care.

You may wish to consider what other aspects of nursing and your practice are either variable or constant in nature?

Additional link:

Hodges' model care domains suggested content: http://www.p-jones.demon.co.uk/quads.htm 
I am updating the single page above and must add hygiene;
should you have any additional suggestions please get in touch - 
h2cmng at yahoo.co.uk

Monday, April 20, 2009

Cash Transactions : Care Continuity

In programming major applications such as finance there is a need to ensure within the transactions and the database operations that mistakes do not occur.

The classic example is a transfer between two accounts:
def transfer(from, to, amount)
from.debit(amount)
to.credit(amount)
end
It is vital that the above method (example provided by Tate and Hibbs) does not fail after the debit. In Rails the transaction method help to prevent 'digital accidents' as follows:
def transfer(from, to, amount)
Account.transaction do
from.debit(amount)
to.credit(amount)
end
end
transaction is itself a method built into Rail's Active Record that helps to maintain the integrity of transactions. Which brings me to 'care'. ...

There are several blog posts here since you reach a stage in your career when the hard fought lessons of yesteryear have to be faced again but this time like after dinner wind.
There are many possible care transactions that arise.

Many have a specific context and frequently these are conjoined:
  • timing
  • relationships - trust
  • responsibility - transfer
  • care environment
  • record (paper, electronic)
As to care transaction consider these:
def transfer(from, to, care_plan)
Care.transaction do
from.hospital(care_plan)
to.community(care_plan)
end
end

def transfer(from, to, day_care)
Care.transaction do
from.home(day_care)
to.day_center(day_care)
end
end
Wherever, whenever, whatever and whoever your transactions involve, take care of them and remember in health and social care (esp.) outcomes add up.

Don't forget to look after the however: the information, the knowledge, the promises ....
def transfer(from, to, promise_plan_of_action)
Care.transaction do
from.nurse(promise_plan_of_action)
to.carer(promise_plan_of_action)
end
end
Reference: Bruce Tate, Curt Hibbs (2006) Ruby on Rails: Up and Running, O'Reilly, p.35.

Friday, April 17, 2009

Nursing as reverse engineering...

At Scotland on Rails last month one of the sessions included an example of Ruby code outlining a 'morning routine'. It comprised a series of tasks and sub-tasks all of which led to getting to work.

Much of the vital essentials of the code I cannot understand beyond some tentative inklings, but in the hope of learning I've re-hashed the accessible bits and turned it into a NursingRoutine. The output looks like this....

Nursing....
"Non-judgmental attitude"
"Universal positive regard"
"Basic counselling skills"
"Open mind"
"Meet person"
"Receive referral"
"assess person utilizing Hodges model"
"Create care plan"
"Meet physical needs"
"Meet interpersonal needs"
"Meet political care needs"
"Meet social care needs"
"Holistic care"
"Evaluate physical needs"
"Evaluate interpersonal needs"
"Evaluate social care needs"
"Evaluate political care needs"
"Evaluate care"
"caring..."

Something like nursing is obviously a much more complex routine than that implied above - that is because:
  • nursing is not [some - 'thing'];
  • nursing can be represented as a routine BUT;
  • nursing seeks to transcend the routine: emphasizing the personal, unique, the humanistic;
  • nursing is parallel and sequential;
In addition now we are about collaborative, multidisciplinary care that must factor in agreement (the care plan...), and patient reported outcome measures (PROMS). ...

In the meantime I need to exercise care trying to understand the program that produced the output (that could also be easily printed as a list). While this is not an example there is such a thing as obfuscated code, but surely not obfuscated nursing care?

Sunday, April 12, 2009

Book review: Drupal for Education and E-Learning

This is the third Drupal book I have reviewed [1] [2]. I've some experience of creating computer aided learning (CAL) programs back in the 1980s on the BBC microcomputer which were used in nurse education within the UK:
  • CAPA - Computer Aided Patient Assessment
  • The Nursing Process
  • Blood Groups
  • Shades of Grey
So I wondered how this review would run? In particular I pondered on the extent that Drupal provides not only educational resources, but data structures and means that lend themselves to creating interactive presentations and exercises. The presentations and exercises bit is important because back in the 80s (and earlier) many CAL efforts were nothing more than 'page turners'. Yes, back then I wanted to present text, but I also want to create exercises to make students reflect and think. Multimedia and the rise of i-Media which is both internet media and interactive media has changed all this. I am aware of Moodle, Blackboard plus others.... and need to understand where Drupal fits in to this educational armoury. There do seem to be moves to conjoin Drupal and Moodle in some way, but these seem stalled if not currently works in progress. If the first two books helped me learn the nuts and bolts of Drupal, then what would Bill Fitzgerald's book teach me about the nuts and bolts of Drupal in education and e-learning?

Chapter 1-3 are provide an easy to follow introduction to Drupal, installation, with more than sixty pages devoted to getting started. As with other Packt titles there are plenty of screenshots to support the text. In my copy one on page 30 is a bit dark as are a few others, but it still helps to get the gist across of what the user should be seeing. You can become blasé about introductions (and instruction manuals!), but Bill Fitzgerald does a great job. It is obvious that he has an instructor's flair for communicating, revealing details and perspectives with aplomb. One point I appreciated on page 52 'create new revision' and the default option which:

"... allows you to create wiki-like functionality; each time a piece of content is edited and saved, it creates a revision, and users with sufficient priviledges can view and revert older revisions."

There is an explanation on downloading, decompressing, uploading and installing themes and modules. There are (at least) two pivotal modules 'in' Drupal - CCK the Content Construction Kit and Views. Fitzgerald gives these the attention they deserve, introducing CCK on p. 54 (and to meet his plans the Links module). Bill runs through creating roles, and content types in the form of bookmark (chapter 3), a teacher blog and assignment (chapter 4). These are explained in four stages through pages 48-64:
  1. create the content type
  2. add fields
  3. assign taxonomy
  4. assign permissions
There is a non-trivial element to creating usable sites with Drupal and that is inclusion of a text editor. Bill uses the FCKeditor, the merits of various text editing solutions is much debated in Drupal circles. Pages 65 - 89 covers the creation of views:
  1. add a view
  2. set the defaults
  3. add a display type
The Views module is described with instructions on view creation over pages 65-89. I had heard how important these modules are to the Drupal community (and the users!) and it's obvious reading Bill's account just why these modules are a Drupaller's best friend. That is - once mastered. If not tamed completely the screenshots and notes here certainly make Views less of a challenge. As I write up the first half of this review and peek ahead I wonder if Bill can do the same for Organic Groups (OG)? Listening to a session at Drupalcon Szeged last summer OG seems a head full at least initially, or was that Panels?

The Views admin screenshot p.66 provides a helpful overview. The 'set the defaults' screenshot reveals the potential power of Views and its complexity for novices on first encounter. Bill Fitzgerald's readers will expect some labour so this is a reward rather than a problem. As educators know it is always a problem showing the mechanics of a computer-based process in a book, but this is very clear.

This is were my expectations of the book were not so much shattered as a realisation that I need to catch up with educational technology and the available forms of technical and social media. Students are tech-savvy, many come to courses prepared being users of mobile devices, social media and office applications. The book does focus on Drupal's ability to deliver the staple ingredients of interaction today:
  • student blogs
  • teacher blogs
  • comments
  • assignments with due dates
  • uploading various forms of media
Some modules become so ubiquitous to the Drupal community with their established functionality, reliability, stability and user base that if not already they can be elevated to 'core' in future releases; that is, they are included in the initial Drupal download. This is where the power and flexibility of Drupal comes in with the development and integration of additional modules and this can include educational and e-learning components. With this book I did get an early helpful sense of signposting, direction regards things I really need to address above and beyond fluency in Drupal.

On page 115 the need for sample content is raised. Content! This is what it is all about. On page 116 the create assignment figure refers to high level reflection - which made me reconsider content types and what you can achieve by keeping things simple. There is a tip on p. 118 about using node: title field for troubleshooting.

At this point in the book once again I wondered about 'instructional technology', Drupal, Moodle and Computer Aided Learning... I've created (but not deployed) a 12 item multiple choice test using HotPotatoes. In Drupal this could be a module so there is scope, the book is about Drupal's existing capacity for education and e-learning which can be extended through the core and additional modules. Specific user communities adopting Drupal have produced their own 'distribution'. Examples include the Drupal Education Group and Science Collaboration Framework.

Cloning Views is a good way to learn CCK too p.123. Naming conventions in Drupal can be confusing as with the "Content: datetime: Due date (field_due_date)" example on page 128.

Chapter 5 on Enrolling Students advises you to create specific roles rather than use the authenticated user. This "provides additional level of security and flexibility" (p. 134) a key governance point, even though many academic applications may be operating within an educational establishment. In health we are increasingly 'involving patients, carers and the public' so in education parents can be invited to get involved, hence the flexibility of additional roles with the bonus of security. If admin seems a chore to you then this short chapter reveals the efficiency of Drupal which helps you to concentrate on the the essentials of a user centered site, content and experience.

On experience Fitzgerald cuations about accessibility that if students cannot publish quickly a site could be under used. The point about educational sites frequently being on-campus clearly helps with security concerns, for example e-mail confirmation of a new account may not be necessary p.138. There is reference to LDAP Lightweight Directory Access Protocol and other modules to assist with roles (p. 144); so it is well worth really thinking through your objectives and in this way I must doff my hat to Bill and other Drupal authors I have read.

In chapter 6 we clone the Teacher Blog to create a Student Blog. Views is used cloning the backlinks view as a means to see 'who is discussing what' p.149. This view isn't just repetition it extends the readers understanding of that encountered in chapters 3 and 4. There are some key points regards the subsequent updating of views as additional content types are added; and around differences in page display behaviour and that of blocks. On page 153 I struggled to find the checkbox for the illustration.

In chapter 7 Bookmarks Bill opts to use CCK to add bookmarks to the site. There are other ways and means - through the Bookmarks and Weblinks modules. My previous thoughts about Drupal in education and e-learning is illustrated by the example of Bookmarks to extend classroom activities. Again - keep things simple! A lesson here for me - which I've realised for quite some time is that there is little educational value in a collection of links for links sake as per the four links resources at Hodges' model. Links (bookmarks) are a tool and it is how they are used - the context of use that is important p.164. It is interesting how an educational interaction can quickly be established between an assigment and links. Here there is no need for complex programming or elaborated data structures.

Perhaps a little more could have been made of 'Learning Goals' p.166 even a separate chapter, but looking at the mounting page count and scope of Drupal this is for another book and the future. The Drupal community undoubtedly see Drupal as a key player so watch this space. There is a very full agenda that invites exploration and Drupal development.

Chapter 8 brings us to those content elements at the center of learners and student day-to-day learning and lives - podcasts and images p.169. On podcast production place the emphasis on content, don't get bogged down with the technical, hardware and software p.183. Accessibility and learning disability is acknowledged and project based learning. On imaging, Bill explains the relationship between Imagefield, Image API, Imagecache and Thickbox or Lightbox 2 is a gift. Detail is paid to to the Image module which is usually sufficient to meet most needs p.186. It is a subtle change but the differences between Image Module settings and admin/setting/image and Creating Gallaries p.189 admin/content/image is well worth noting.

Video in chapter 9 (pp. 195-213) is an area I know little about. This chapter made me want to learn more, and consider the possible student projects p.211 especially video bookends. Bill refers us to the work of Dan Meyer - a maths teacher - and the creation of video for specific educational goals. Drupal can also act asa hosting and processing platform for video p.212.

Chapter 10 Forums and Blogs is real bread and butter stuff. There is an informative explanation about forums and containers, and in structuring a forum the need to ensure it looks busy as soon as possible p.216. Chapter 11 is pivotal for community building - 'social networks and extending the user profile'. Firstly using the Core Profile module. There is something of a module managerie here as the Content Profile Module includes Content Profile User Registration module.

Unless I've missed a trick the illustration referred to on page 244 is three pages out being on 235 not page 238. The Content Profile User User Registration module adds the USer Registration fieldset. Once I found the correct screenshot to compare all was light and bright. Other modules for social networking and user profile are listed, with a customary closing summary for a chapter central to community building. As Bill states you want users to have a personal investment in the site p.245.

Chapter 12 brings us to 'Supporting Multiple Classes' with resort to Organic Groups and Organic Groups Vocabulary modules p.247. Attention is drawn to OG working closely with other modules particularly Panels and Notifications. Five pages in here and the utility of OG to the education and other communities is wholly apparent. It really is powerful. I could have done with reading this chapter indeed this book before attending Drupalcon. It would have served me better (rather obviously given my status) than reading Pro Drupal! Given the plethora of modules in Drupal there is a tip about duplicate functionality between OG and the core Tracker module.

For newbies to Drupal the heading "Adjusting your site to work with OG" could be read as "Adjusting your mindset to work with OG" The key as ever is content:

1. Content types that can be used to create group;
2. Content types that can be posted into groups;
3. Content types that are never posted into groups.

OG therefore prompts Bill to create the content types a Class and a Club. It is interesting that the OG fieldset refers to 'Wiki group post' with Wikis often posited as an educational tool. 'Instructor' and 'Teacher' refer to one role which threw me at first on page 256. Having content types and groups of course requires the creation of custom menus with some good insights on differentiation of navigation from other menus p.256-7. Strangely there is no mention of 'Wiki' in the otherwise comprehensive index. I believe the screenshot referred to on page 262 is that on page 260 and 261.

Views is so ubiquitous in Drupal that it is revisited in chapter 13, tracking student responses to assignments. Another module 'Coherent Access' may have a role to play in your site as Bill applies it to furnish private communication with students p.291. This mix of public and private communications bears due deliberation and is raised elsewhere in the book. Cross functionality recurs again with OG and the Coherent Access module, with work ongoing to resolve the issue in Drupal 7 (p. 293).

Beginning on page 297 chapter 14 on Themeing and User Interface Design was never going to be long. Beginners in turn are often flumoxed with primary and secondary menus in Drupal. Here Bill stresses the two principles for site design and the menus out of the box. Other modules e.g. Menu Block are discussed as a means of extending the primary menu options. Here you will learn about creating custom menus and the close relationship between menus and blocks - with the critical workflow of leaving a new menu empty initially - a key take home lesson. The explanation here on populating the primary links are a gift in their simplicity and yet their significance to a learner.

Chapter 15 covers cron, backup and maintenance with a recommended list of initial user names and passwords to document and store safely and separately. You think Bill might be tired on the final leg, but the explanation of backing up the codebase, contributed modules, files and use of the DB Maintenance module and database optimization is quite thorough. Awareness of the 'admin' side surely helps early on, and for Bill this includes knowing the status and efficiency of your database through the use of log files. Here you run full circle revisiting the structure of a Drupal site and the parts you need to backup, using PHPMyAdmin or the command line. Both PC, Mac and Linux variations are discussed p.342. Backup of a server site leads Fitzgerald to the creation and use of a test site for experiments with new modules and update procedures. No backup is complete without demonstrating the ability to recover your site. This chapter closes with short and detailed version of how to upgrade Drupal p.361.

The final chapter concerns a resource that is far from 'last' - How to work effectively in the Drupal community. Drupal.org is featured, the handbooks, becoming familiar with the issue queue, support forums and mailing lists. Drupal comes home so to speak with the groups, since there may be one near you.

I have really enjoyed this book and the sense of Drupal being established in education and keen to strengthen and extend its roots. Unfortunately, my reading has been rather broken, but this is a book I hope to use over the next few months. Those new to Drupal and not necessarily with an education or e-learning application in mind will also find much here to speed and ease their learning. As to my own learning the 80's was one thing the teenies will be another...

Additional links:

Drupal in Education Group

Drupal.org search 'education'

LAMP University

Open Academic


Acknowledgement: Thanks to Packt Publishing for the book copy.

Tuesday, September 30, 2008

Reflection: programming and caring II

Reflection: (Ruby Pocket Reference, O'Reilly, 2007, p. 147.)

The ability of a language such as Ruby
to examine and manipulate itself.
For example, the reflection method class from Object
returns an object's class ("hello".class # => String).

Reflection within health and social care - is there a further definition ...?

Well yes, there are several, but there may be another ...?

The ability of a health and social care model such as Hodges' model
to examine and manipulate itself *
in response to an individual's (and family's)
care situation and context.
For example, the reflection method class from Object
returns an object's class (Intrapersonal.class # => Domain)#.


*This would require of course that Hodges' model is represented as a programming language or formalised conceptual space of some sort....
#Or something like this....

Saturday, September 27, 2008

Composability: programming and caring

Composability: (Ruby Pocket Reference, O'Reilly, 2007)

The degree to which you can express logic
by combining and recombining
parts of a language
(p. 136).

Composability within health and social care - is there a further definition...?

The degree to which you can express care situations
by combining and recombining
the parts of a language encompassed within a health and social care model,
(a dedicated conceptual space).