Thursday, 26 July 2012

Using Scripts in HTML Web Pages

Web pages use a variety of technologies to present interactive content to users. If you are responsible for a website for your business, you can enhance its interactivity using scripting. The content and structure of a site generally involves HTML markup, which you can manipulate using scripting in JavaScript code. With website scripts, you can respond to user interaction with your page elements, for example detecting users moving the mouse over a particular part of the page and altering its appearance in response.


Create a script area within your page. Open your HTML page in a text editor. Enter a script section within the head area as in the following outline:

<!DOCTYPE html>



The script content will appear between the opening and closing script tags in the page head, with the page content inside the body section.


Detect user interaction. JavaScript functions typically execute when events occur, such as user interaction. Within your HTML page elements, you can detect particular types of interaction. The following HTML markup instructs the browser to execute a particular JavaScript function when the user clicks the element:

a picture

The "onclick" code indicates a click listener. When the user clicks the image, the browser will call the function named "changeElement" which you will create next. By including "this" within the function brackets, you pass a reference to the image element as a parameter to the function. Alter the image "src" attribute to indicate the name and location of your own image.


Create a JavaScript function. In the head section, between the opening and closing script tags, enter your function outline as follows:

function changeElement(elem) {
//function content


This is the function outline. The function name is followed by a parameter in the brackets, matching the syntax you included in your image element click listener. Within the function, your code has access to the element reference passed to it, so it can manipulate the image element within the page.


Respond to user interaction. Inside your script function, between the opening and closing curled brackets, enter the following code for demonstration:"50px";

This code uses the element reference parameter to alter its appearance in the page. To demonstrate the principle, the function alters the element style properties, in this case applying a margin to the left of it. You can carry out many different types of element manipulation within your script function.


Test your page. Save your HTML file and open it in a browser to test it. Click the image to prompt the script function. You should see the element move instantly to the right, when the margin is applied to the left. To see the effect more than once, refresh the page and click the image again.

  • Web page scripts can detect multiple different events, including the user moving their mouse on and off elements.
  • If your scripts become complex, they may have unpredictable results, so testing is essential.

See also:
How To: JavaScript PHP Function Calls
Programming: Handling Code Errors
Web Development Concepts: Client and Server
Web Development Concepts: Static Vs Dynamic

Monday, 23 July 2012

Computer Forensics: Evidence Types

Computer forensics is a growing field, and has become a specialist area for many technical professionals working with computing technology. There are more security threats than ever before within the digital world, and their techniques vary. In order for investigations to be carried out and ultimately for attackers to be held responsible, computer forensics examinations need to be able to find any type of evidence they can.


Emails are the source of many malicious activities such as spreading viruses, phishing attacks and other illegal activity. As well as being accessible via the user's email account, emails are stored on an email server. The email server is owned and operated by the provider of an email account, and access to it will typically have to be carried out through them.

In addition to accessing active email messages, it is sometimes possible to retrieve emails that the user has deleted, as a copy may be stored on the server.


There are many different types of computer data that can serve as evidence in an investigation. Computer files such as documents, programs and media items including images, audio and video may all be considered evidence depending on the investigation.

These files may be found stored on personal computers, on machines such as Web servers, and on external storage devices such as flash drives, USB sticks and portable hard drives. The most readily available type of data evidence is that which is still in active use within a functioning operating system.

Archived Data

Data comprising forensic evidence may be stored in archived form. This can be kept within a functioning computer's internal storage, or on an external drive. Archived files can include virtually any type of data, including documents, programs and multimedia items.

The process of archiving data normally involves compressing it in size and saving it in an archived format, such as ZIP, TAR or RAR. In order to access the data contained within such files, they must be decompressed by a compatible program. Decompression is typically not troublesome if a common format has been used.

Encrypted Data

In addition to being archived and possibly compressed, data evidence may be stored in an encrypted form. This occurs when a user has used a digital security utility. In a common scenario, the user encrypts a file with a digital signature, using a key that prevents the file from being accessed by anyone who is not in possession of the required decryption key.

Digital forensics experts are continually developing ways to access data that has been encrypted using such techniques.

Deleted Data

Data that has been deleted by its user can often still be accessed. When a file is deleted on a standard operating system, it is typically still stored in some form, so that it can be accessed in case of accidental deletion.

This principle is observed across many types of operating system, both on consumer computers and on advanced machines such as Web servers. This means that digital forensic examinations can often locate information that has been deleted from its original location. If data evidence has become corrupted, it may require complex processing to retrieve anything useful.

Related Links

The Computer Forensic Examination Process
E-Evidence Information Center - Home
Deleted Files - Computer Evidence Computer Forensic Analyst - Computer Forensic Examination

Why Web Developers are Excited About HTML5 and CSS3

If you are involved in Web design, development or just the Web itself in any way, you will almost certainly have become aware of the excitement about the emerging developments in HTML5 and CSS3. This article will attempt to explain some of the reasons for this excitement. HTML5 and CSS3 represent more than a normal update of the languages in question, as they include a number of substantial changes that promise to fundamentally alter the way developers create pages and sites.

OK, so what are HTML5 and CSS3 anyway?

HTML is the main markup language (Hypertext Markup Language) used in Web pages. When you visit a website, the content items you see (text, images, media etc) are included in HTML markup code. HTML uses tagged code to define the overall structure of a page, with elements enclosing the content items. When your browser receives the HTML markup code for a page, it interprets it and presents it to you accordingly.

While HTML defines page structure, CSS (Cascading Style Sheet) code determines the styling of a page, including layout and various other visual aspects of what you see. The way the content of a page is displayed is therefore determined by both HTML and CSS code. HTML5 and CSS3 are the most recent versions of these two specifications. Essentially, with HTML5 and CSS3, developers have new techniques to choose from when building pages.

Most websites use client side scripting in JavaScript in conjunction with HTML and CSS. This allows developers to deliver interactive components. HTML5 and CSS3 include new options for such interactive sites, including the ability to build advanced media items such as animation and drawing functions.

Fine, what does HTML5 offer over previous versions then?

HTML5 introduces a range of new elements that developers can utilise. The most notable new elements are the structural elements, media elements including canvas, and new input elements for capturing user information through website forms. The structural tags include "header", "footer", "article", "section", "nav" and "aside". These allow developers to define sections of a page in a more logical, meaningful way than before. HTML5 also includes new tags for embedding media items such as audio and video in a much more straightforward way. The canvas element is one of the most interesting additions, as Web pages can create graphics using JavaScript drawing functions, building these graphic items while the user is viewing the page.

And CSS3, what does it bring to the table?

CSS3 includes a variety of new properties and functions, allowing developers to create a greater level of interaction than before. The transform and transition functions create interactive animations in both 2D and 3D, while the "keyframes" rule defines animated sequences that elapse over time. CSS3 also introduces advanced user interface styling and the ability to use fonts without the user having them installed on their own computer.

What does semantics have to do with this?

You will see people referring to emerging techniques in Web design as being semantic. This basically means that the actual markup for a page will include an indication of semantics, or meaning, by letting the browser know something about the content of an element. For example, in the past many HTML elements simply grouped a chunk of Web page content in a meaningless way. The HTML defined the content and the CSS styled it, with only the developer and user interpreting the meaning of the content in any way. With the new structural elements in particular, HTML5 markup indicates a level of meaning that the browser can interpret and use to make the page more accessible to the user, whatever their environment happens to be.

How do HTML5 and CSS3 relate to Flash?

Many people are also making claims about the impact that HTML5 and CSS3 will have on other technologies such as Flash. It's certainly still a bit early to make huge claims about how much longer Flash will last. However, with HTML5 and CSS3, developers can achieve the kinds of interactive multimedia component that was previously mainly done in Flash. By using these new specifications instead, developers can create the same results in a way that is more accessible to different users.

Sounds good, why isn't this stuff all over the Web already?

The main factor delaying the adoption of HTML5 and CSS3 is browser support. The main browsers are all working on increasing support of these new standards, some faster than others, but full support is still a long way off. For this reason developers cannot assume that users will be able to engage with new effects created using the most recent specifications, and must provide alternatives for users with older browsers.

See also:
An Introduction to HTML5 Features
How To: HTML5 Local Storage
Using CSS3 Fonts
How to Get Started with Web Development

Web Development Concepts: Static Versus Dynamic

What is the difference between a static and dynamic Web page?

Essentially, whether a Web page is static or dynamic depends on what happens between the user making a request to see it, and the server sending the requested content to their browser. It makes no difference to users whether a page is static or dynamic, but is relevant to developers, as each model uses different techniques and technologies.

Essentially a static page is one whose content is stored in static, unchanging form in a document on the Web server, while the content of a dynamic page is only created when it is requested for viewing.

What happens when someone browses to a page?

When you browse to a Web page, for example by clicking a link or typing its URL into your browser address bar, your computer sends a request message to the Web server on which the requested page is hosted.

With a static page, the content is simply sitting in a file, typically in HTML, and the content of this file is returned by the server to your computer, where it is displayed in your browser window. For example, if you had a file saved as "page.html" on your server in the root directory, and browsed to it as follows:

The server would respond by sending the content of the file.

For dynamic pages, the process is different. Dynamic pages use programming languages such as PHP. In this case you would save your script on the server, for example using the name "page.php", and it would contain programming code as well as HTML code.

When the page is browsed to this time:

The code within the script file is executed (run) on the server. The server side program may do many different things, but typically one of them will be to build a Web page with HTML content and send this to the user's browser. The browser displays this HTML the same way it would have if the page had been static - the difference lies in what happens on the server, and makes no difference at the user (or "client") end.

How exactly is this different?

Static and dynamic pages don't just use different file formats, they use a fundamentally different technique. Static pages typically contain only markup code, whereas dynamic pages also contain programming code.

The content of an HTML file is basically text, images etc contained within a tree structure, with each element delineated by tags, each pair of opening and closing tags comprising an element as in the following example paragraph:

Some text...

This is HTML markup, and its structure, together with formatting such as CSS, tells the browser how the content of each element should be laid out and displayed.

With a dynamic page containing server side code, a different process takes place. The page script is executed according to its own logical structure, and as it goes it builds HTML structures and writes them out. This example PHP performs a simple calculation and writes the result out in HTML:

echo "<p>".$answer."<p>";

A typical PHP script will also do other things such as connecting to a database and querying it for data to write out as part of the HTML.

What are the advantages to using dynamic pages?

There are many advantages to using dynamic pages, the main one being the fact that they contain dynamic data. By connecting to a database, a dynamic page can potentially offer different content each time it is viewed. Static page content remains the same unless the page files themselves are manually changed, whereas dynamic pages populate their content at the time of viewing, according to what happens to be in the data store at that particular time.

It is often the case that many pages within a site will contain the same, or similar content. If this content needs to be changed, in a static site each page on which it occurs will need to be changed in turn. However, using dynamic scripting, the piece of content can be contained in a single, dedicated script, and this script can then be called from each page on which the content item appears. If the content needs to be changed, it only has to be changed in one place, i.e. the dedicated script, or the database if this is where it comes from.

Dynamic sites are therefore easier to maintain and to make changes to, while still keeping a consistent appearance and behaviour. If a site is being built for commercial purposes, being able to store the data in a database is also an advantage in itself.

Are there disadvantages to using dynamic pages?

The only potential disadvantage to using dynamic pages is the fact that a greater range of technologies, and therefore skills, are involved. A certain amount of programming expertise is necessary, and in most cases database development as well. However, if you're thinking about trying dynamic Web page development, don't be put off even if you have no programming experience, as these skills are actually relatively easy to pick up. There are lots of online tutorials and guides, so you really can teach yourself.

Do I need to use dynamic pages?

No! Using dynamic pages is not obligatory. However, depending on the purpose and nature of your site, it may be a real advantage. Setting your dynamic site up may seem an intimidating prospect, but once this is done the site will become much easier to amend and maintain. If your site only contains a small amount of simple information that does not need to be updated very often, there's probably no need to learn Web programming if it isn't something you're interested in.

How do I get started creating dynamic pages?

The first thing is to make sure you have a sound enough grasp of the basic Web technologies that are used in both static and dynamic pages, including the initial skills for making a Web page using HTML, CSS and JavaScript. You don't need to be at an advanced level, just make sure you understand the basic principles and practices.

Next is learning a server side language. I would recommend PHP, which is available on most Web hosting platforms. Start with the basics and build your knowledge incrementally, this is the only way to do it, and don't worry if you feel you're making slow progress, it will all fall into place eventually!

If you're building a dynamic site, you'll probably want to use a database. MySQL is available for free on many Web hosting packages and is a good system to start with. You can learn SQL if you like, but if your host provides phpMyAdmin, you can carry out most common tasks using the browser interface. If you're unsure about how to structure your database, it may be worth finding out a bit about relational database modelling.

Related Links
MySQL :: Developer Zone
MySQL Tutorial - Introduction
PhpMyAdmin Tutorial
PHP: PHP Manual - Manual
PHP Tutorial
SQL Tutorial

Tech Interpreter Links:
Why Web Developers are Excited About HTML5 and CSS3
Using Scripts in HTML Pages
What is Web Content?
What is Dynamic Content?
Web Development Concepts: Client and Server
How to Get Started with Web Development

Good Web Page Characteristics

The Web is populated by a huge variety of sites, with content in various types of digital media. A good design depends partly on the purpose of a site. However, there are a set of broad principles that apply to most websites, and the characteristics of good site design tend to be similar regardless of content type. Good webpage design is not necessarily complicated, nor does it require significant amounts of expert knowledge.


It is often considered separate to design, but the content of a webpage plays a key role in whether or not the design is successful. The type, size and layout of webpage content needs to be figured out when the design is being created. The purpose of a webpage design is to present the content to best effect, so it is impossible to come up with a good design without considering this content. In general, minimizing the amount of text that appears on a page makes it more usable, as does breaking this text into small chunks.

Layout and Design Elements

The two main factors in a webpage design are the layout and any design elements you create, such as graphics and images. For a successful design, these need to strike a balance between being attractive and not distracting users from the page content, which is likely to be their main reason for visiting the page. Graphic elements that are consistent in colour and style throughout a site help to create a lasting impression of it in the minds of visitors.


Most webpages now contain many different types of media. This can include text, images, video, audio and animation. Many sites also contain elements such as RSS feeds, interactive components and links to other sites. Because the typical webpage is busy, with many different elements within it, it becomes even more important to present the content well, encouraging users to focus on it in spite of the many distractions. The most successful webpage designs tend to be minimalist while also being memorable.


Websites are visited by varied people in varied contexts, and it is the task of designers to ensure that Web content is made accessible to as many of these people as possible. Accessibility in webpage design involves numerous techniques. Within CSS (Cascading Style Sheets), pages tend to be more accessible if they use relative sizes and layouts, as these degrade "gracefully" across Web browsers, meaning that pages are better able to adapt to different browsing contexts. Using "alt" attributes within HTML also allows people to find out about content that they cannot access, for example due to problems with vision.


Webpages are interactive, rather than just presenting information to be viewed. CSS and JavaScript are used to enhance this interaction, providing different behaviours when the user interacts with a page using their mouse and keyboard, or the fingers if they are browsing on a touchscreen device such as a phone or tablet PC. Using interaction can provide a deeper and more intuitive level of dialogue with a webpage, as well as a more enjoyable one.

Related Links

What Makes a Great Web Site?
Top 10 Mistakes in Web Design (Jakob Nielsen's Alertbox)
10 Principles Of Effective Web Design - Smashing Magazine
Website design tips, what makes a good web site
Web Building Design - W3Schools
CSS Tutorial - W3Schools
JavaScript Tutorial - W3Schools

Tech Interpreter Links

Why Web Developers are Excited About HTML5 and CSS3
The Vital Components in an Effective Web Page
An Introduction to HTML5 Features
The Characteristics of a Successful Web Page

Tuesday, 10 July 2012

Introduction To Android APK Files

The Android image is provided by Google using the Creative Commons 3.0 Attribution License - here is the source page.

What is an Android APK File?

An APK file is an archived Android Package file, and will be saved with ".apk" extension. If you have an Android phone, tablet, computer or other mobile device, it will already have APK files on it. APK files are used for distributing and installing Android applications, and contain the compiled code necessary to run those applications on devices with the Android operating system installed. Apps for Android devices are almost always installed from an APK file.

What do I need to Know about APK Files?

As a normal user of an Android phone, you will typically not need to be aware of APK files. You can get normal use out of your phone without ever having to worry about APK files, as the Android operating system automates handling of them in most cases.There may be occasions where you need to handle APK files if you download non-market applications, i.e. apps from some source other than the official Android Market.

However, APK files are a vital ingredient in Android development. If you are a mobile application developer for Android, or are thinking about learning Android mobile development, then you will have some involvement with APK files, for your own and possibly other apps.

How are APK Files created?

APK files for Android apps are generated by developers. When you develop an application for the Android platform using an IDE such as Eclipse with the Android Developer Tools installed, the process of generating an APK file is as simple as a few clicks. You will also have to sign your applications before they can be released, downloaded and installed by users.

If you want to export an APK from an app you're developing in Eclipse:

  • Select your Android project in the Eclipse Package Explorer, right-click and choose Android Tools then either Export Signed Application Package or Export Unsigned Application Package.
  • If you only export an unsigned package, you will not be able to release your app on the Android Market, but may be able to test it on your own devices (although this depends on your settings).
  • To sign your applications, you need to use the Keytool and Jarsigner utilities, both of which come as part of the development kit. Here's an overview of application signing: Android Developers: Signing Your Applications.

How are APK Files Distributed?

APK files are mostly downloaded through the Android Market, with Android devices automatically installing them once downloaded. Some APK files are also distributed over the Internet, in which case they can be stored on or copied onto an Android device before being installed.

Basically, an APK file contains all of the necessary information for an application to be installed and run, including the code and resources such as images and data. However, the Android system can be configured to prevent installation from sources other than the Android Market. In this case, you will need to alter your settings if you want to install apps from other sources.

To set your phone up to install non-market apps:
  • Open your device application menu
  • Choose Settings
  • Choose Applications
  • Check the Unknown sources box

How are APK Files installed?

In most cases APK files are used to install apps automatically through your device's Android Market program. However, if you find yourself trying to install an APK file manually the process is typically straightforward. If you're installing an app you've developed or have on a computer or other storage location, copy it onto your device memory, for example onto the SD card.

Using whatever file explorer application you have installed, it is generally the case that simply tapping on the APK file will prompt you to decide whether you want to install it. If you do not have a file explorer program already, I would thoroughly recommend the free ES File Explorer, although there are loads of others that get great reviews too.

Once you have an app installed and want to update it manually, for example where you've refined an application you're testing, simply export a new APK, copy it onto the device again and browse to it, installing it in the same way you did the first time.

You can also install APK files using the Android SDK (Android Software Development Kit), but this is more complex. Here's a guide: Talk Android - A Guide To Installing APK Apps On Your Google Android Phone.

Do I need to Remove APK Files?

Remember that APK files and apps are two different things. The APK files contain the information necessary for your device to install the program, but once this has been done the APK file is no longer necessary. If you copied APK files for installation onto your device, you can safely delete these copies once the apps are installed.


The Developers Guide | Android Developers
Android Developers Blog
Google Play
Android Things Blog
How To Uninstall Android Apps | The Tech Interpreter
What Are Android APK Files? | The Tech Interpreter
Frequently Asked Questions About Android Apps | The Tech Interpreter

The Characteristics of a Successful Web Page

While there is no one recipe for success with Web design and development, there is a basic set of characteristics that tends to be observed in the most successful sites. Development projects are extremely varied, with different aims and objectives. These should be the guiding principles for a project in any case, but it's also worth learning about the properties that might stand your sites in better stead for success whatever their purpose or context.

The Internet is overflowing with sites offering all sorts of information and services. Web design and development are complex activities involving a variety of skills. When it comes to measuring the success of a Web project, you naturally need to refer to its original brief. However, there is a series of common areas for determining the success, failure or relative quality of any single page. In this article we'll go over the basic aspects to consider when trying to establish whether or not a page is well constructed and to bear in mind when building pages yourself.

Information and Media

You might think it would go without saying that the most important element in a Web page is its content, but sadly many developers tend to forget this. When approaching the construction of a Web page, the first step should ideally be establishing what the content will be. This includes data, text and media, for example images, audio, video and even animation items. A successful Web page presents the content users expect and need it to.

For example, if you browse to a page by following a link from a search engine or other site, you will have certain expectations about what it should contain, normally determined by the information in the link you followed. A successful page fulfils the user's expectation based on the page and site title, with information and media content that is relevant, good quality and detailed enough to give the user what they're looking for.

User Interactivity

Most modern Web pages do not simply display static information for users to read. A typical page will also give the user an interactive experience of some kind. Naturally this depends on the purpose of a particular page. For example, a page with a form in which users enter information needs a reliable interaction process in order to do the job it is designed to do. At the other end of the spectrum, a page on a wiki site merely needs to display the information along with some links to other resources, so the interaction level does not need to be sophisticated in this case.

In a successful page, how to interact with and use the page will be intuitively clear to the user. The interaction will of course need to function reliably and do what the user expects it to. Many sites rely on JavaScript for interactivity, which requires substantial testing to ensure it works in different Web browsers.

Formatting and Style

Web pages are basically comprised of content and formatting. It is generally considered good practice to keep the content of a site well separated from its formatting code. Typically, the content is defined using HTML markup, with Cascading Style Sheets (CSS) providing the formatting rules, including layout, colours, backgrounds and more. Keeping the styling separate from the markup content makes a page more amenable to user preferences.

Accessibility is the major issue for formatting in Web pages. As well as ensuring that a page appears correctly in different browsers, on different operating systems and on different types of device (for example mobile phones and tablet PCs), developers need to consider the range of possible users who may be accessing their pages. You cannot make any assumptions about the user or their computing equipment when creating Web page. Successful pages are those that function equally well for the full range of users accessing them.


Web developers have a host of technologies to choose from when building pages. This includes client side markup and scripting languages such as HTML, CSS and JavaScript. It also includes server technologies such as database and programming languages, with SQL, MySQL, XML, Java, PHP and ASP among the most common.

It is hugely important that developers choose the right tools to deliver particular Web pages. By making use of server technologies, developers can create sites with dynamic data as well as sites with a stimulating level of user interaction. Unfortunately, developers often use technologies simply because they can, rather than because they are ideally suited to a project. When deciding whether to use a particular tool, it's best to ask whether or not it will best serve the purpose and content of the site, which it will do in a successful case.

Pitfalls and Tips

There are lots of common pitfalls and mistakes in Web design and development. Being mindful of these is a great way to avoid making them in your own sites. Many websites publish useful guides from experienced developers detailing what not to do. It's also a good idea to validate your Web page code to maintain a good level of quality.

See also:
An Introduction to HTML5 Features
Web Development Concepts: Client and Server
The Vital Components in an Effective Web Page
Good Web Page Characteristics

Checklist for IT Training Evaluation

With any training and development process, it is essential to have some measure of success. This gives both client and trainer the reassurance that the training process is a productive one, and also gives the trainer a level of verification that the training processes and approach are successful, potentially providing feedback that can be used for improvements. When measuring the success of an IT training process, whether it's a formal IT course or more casual on-the-job learning, there are a number of factors to consider, so referring to a checklist can be a useful technique.


One of the main evaluation tools for IT training is a questionnaire. After participating in the training program, people can fill this out in written form, or alternatively it can be worked through verbally with an interviewer. One of the main topics to explore is whether or not the training material covers an adequate area of the topic. This will depend on the particular IT discipline being taught and should relate to any objectives or requirements that have been laid out for the training process.


Questionnaires may also measure the quality of the training material, based on the participants' perceptions. This can include whether the material is being communicated in an accessible way, is easy enough to understand and increases the understanding and skill-set of those undergoing the training. Measuring the quality of training materials themselves is a useful task, focusing on whether the language, images and any other media used are of a sufficient standard.


Most IT training involves practical skills as well as knowledge, so trainees can be asked whether they feel the skills and knowledge gained will actually prove to be useful within their jobs. If the training is aimed at people who have not yet started a job but are being prepared for it, this issue will be less relevant, but in cases where individuals are already involved in the work the training relates to, trainees are in a good position to judge the usefulness of material being covered. Trainees can also be asked whether the training materials contain information that they believe is accurate.

Practical Evaluation

Any training process involving a practical skill or set of skills can only be measured accurately by observing these skills being put into action. For this reason, IT training is often accompanied by practical tests and evaluation. It can also be useful to carry this out again at a later date when time has passed since the training process, in order to establish whether or not any learned skills have persisted. Practical evaluations can involve trainees carrying out a work task that incorporates the skills taught, such as using a software program or Internet service, observing behaviour to establish whether subjects are putting these skills into active use.


One of the most useful activities within client evaluation from the training perspective is gathering suggestions for improvement. Training processes are most successful when they are continually adapted over time, according to feedback gained from people who have undergone the training, and it is therefore vital to be open to these suggestions. As well as asking for general improvements, it can be illuminating to ask trainees if there are any particular aspects of the training that they perceive as successful or unsuccessful.