The articles here are published in the articles section, but this doesn't mean they're done feel free to edit and enhance them.
Prior to a course, the instructor is responsible for reviewing learner (student) information and course materials to identify areas where modifications are needed. The modifications to course materials may be short-term (accommodating a unique group of learners) or long-term (permanent). The instructor is expected to discriminate between minor changes an instructor should make and major changes that should involve instructional designers and other organizational stakeholders.
Locate and analyze all available information about your learners in order to identify client-training requirements, learning objectives and unique group characteristics that may necessitate modifications to the courseware (e.g., a group of COBOL programmers taking a course on PERL will have different requirements than a group of students with no programming experience at all). During your analysis, attempt to locate learners or groups of learners that may need extra preparation/motivation.
Are there any cultural issues you need to be aware of with individual learners or a group of learners? It may be necessary to adjust course materials/delivery so as not to transgress any beliefs, attitudes, values, or customs held by your students (e.g., in some cultures it may be necessary to schedule breaks during a course to observe customs regarding prayers/fasting).
Are there other issues that may affect individual learners (for example, medical problems or learning disabilities)? Depending on the outcome of your analysis, in some circumstances, it may be worthwhile or necessary to refer a student or a group of students to a more appropriate venue, rather than adapting the course or “dumbing-down” the curricula.
Course materials should be checked to make sure the content does not contain: Outdated, inappropriate, or inaccurate information/visuals, Concepts that confuse learners or cause conflict, Information which contradicts local/current theory and practice, and Content that does not match the levels and abilities of your students. Course activities should be analyzed to make sure they are not inappropriate for the learners and will not be perceived by them as too easy or too hard.
Only make changes to the course material and its delivery when tangible learner benefits can be demonstrated and when the changes are in agreement with accepted industry standards. Modifications based solely on trainer preferences are not acceptable. All modifications should remain faithful to the original purpose and design of the course.
As the instructor, it is your responsibility to make sure that all logistical arrangements for your course have been settled beforehand. Scheduling and booking of the physical facilities (classrooms, labs, and breakout rooms), confirming student registrations, ensuring that each student has adequate course material and so on.
Arrangements for guest speakers, media (e.g., videotapes that require a television and video player), transportation (for field trips), and testing services should be confirmed prior to the start of the course. Required hardware and/or software should be set up and configured prior to commencement as well – conferring with an on-site technician may be necessary.
Inspect the venues to make sure they will not impair your delivery of the course material to the students. Check for adequate space and ease of access to the facilities. When movement between facilities is necessary, ensure that it can be done within the time constraints of your delivery schedule. Proper signage is important so students won’t get lost and come to class late. Also, make sure there is for wheelchair accessibility.
In the event there are problems, communicate them to a responsible party before taking it upon yourself lest you breach an organizational policy and open yourself up to a lawsuit.
Before learners arrive for a class, it is important to verify the physical arrangement of the delivery venue. Sufficient furniture and equipment should be available as needed to accommodate all learners and should be arranged to maximize accessibility and course delivery.
Supporting materials and equipment should be organized for ease of access as well. Student courseware should be easily accessible at all times. Materials needed by the instructor should be organized for ease of access during the lesson as well (e.g., courseware or markers for a whiteboard). Supporting equipment should be checked prior to each class to see if it is operating properly/safely (e.g. audio equipment volume levels, overhead projector focus, and working remote controls).
You must manage the physical environment to maintain learner comfort and learner safety throughout your lessons. Problems with temperature, poor ventilation, improper lighting and poor acoustics will detract from a student’s learning experience.
The safety of your students is paramount. Make sure that furniture does not block exits in the event of an emergency. Power cords and other loose cabling should be taped to the floor to prevent being tripped over. Safety gear should be used whenever warranted along with whatever handling equipment is necessary. If chemicals are being used as part of the lesson, they must be used and disposed of properly.
When preparing the instructional site, it is important to identify potential distractions and plan how to minimize them. Some distractions can be circumvented by rearranging the physical environment or through rearranging schedules. Discuss logistical concerns (schedules, location of washrooms, rules for smoking, dress, and conduct, etc.) with students at the beginning of the course. As distractions will still occur, the instructor should develop a contingency plan for dealing with them. Unforeseen problems should be handled calmly in manner consistent with effective instructional practice.
At the end of the course, the instructor is responsible for the proper arrangement or disposal of furniture, equipment, and course materials. This can mean returning the arrangement of classroom furniture to its original state, returning equipment or audiovisuals signed out for the course, returning any changed settings for lighting, sound, ventilation, and temperature to their proper levels, disposing of any extra materials, and ensuring you leave your instruction areas clean when you leave.
Any problems experienced while using the facility/equipment/materials should be communicated to the proper authority as per organizational guidelines. It is important to document these problems for later review by the client, training manager, and other responsible parties.
Your personal conduct includes dressing appropriately for the audience and instructional situation (which adheres to organizational norms and health and safety issues) and maintaining proper carriage and posture.
Be honest. If a mistake has been made or the instructor lacks information that a student has requested, be candid about it and accept responsibility instead of attempting to place the blame elsewhere. Do not get embarrassed, act defensive, start apologizing, or do anything to antagonize or embarrass a student. If a student stumps you with a question/problem that you cannot answer immediately in class, record it, and, using other sources, find the answer in a timely manner.
Demonstrate integrity. You should always treat all learners equally, with courtesy and respect. Set a standard for appropriate behavior at the outset of the course and discourage unsuitable, unethical, or illegal behavior (such as cheating, pirating copyrighted software, etc.). Respect and maintain student confidentiality within the limits of organizational standards.
You can promote skills and knowledge transfer through problem-solving discussions, application exercises, and involving students in ways to apply the course content to their own situations.
The instructor must also demonstrate acceptable social practices. This means establishing a level of courtesy and manners that is appropriate for the instructional situation, as well as avoiding and discouraging ethnic, sexual, and other inappropriate jokes and stories. Any code of conduct that is established must be applied equally to all learners in the class regardless of their race, ethnic background, sex, age, etc.
Demonstrating content expertise is also paramount. When you introduce yourself to the class, don’t be afraid of telling learners about your experience and credentials, but do it without sounding egotistical and in a manner that encourages respect for the instructor from the learners.
Prior to a course, make sure you have mastered the content you will be teaching. During the course, use the appropriate technical jargon, metaphors, and concepts, as needed but don’t speak strictly in “jargonese.” The metaphors and analogies you use to explain your content should be understandable to the learners.
Differences of opinion aren’t necessarily a bad thing. Invite alternative positions from students and address them in an open and supportive manner. This will enhance instructor credibility and make you seem more approachable.
Get learners involved. Don’t just lecture the course content to the students. Use anecdotes provided by learners to support course content. Students may have expertise that allows them to share in delivery of course content – use it when this will not interfere with the original intent of the course design.
At the outset of each class, you must establish a supportive learning environment for your students. The presentation strategies you select are critical to ensuring that learners understand and accept the course plan, and that housekeeping details and learner performance expectations are communicated properly.
Throughout each class it is critical to keep your learners comfortable. Learner comfort is emphasized to encourage participation. Activities such as role-playing, games, and simulations are used where appropriate and when they don’t put the learners at risk. Students are only ever made to feel at risk to exploit opportunities for personal growth. Don’t go overboard and make your students too comfortable – the comfort level should be appropriate to the course objectives and reflect performance expectations the students can expect to encounter in the real world.
Until human cloning becomes both socially acceptable and widespread in practice, you will have to accept that your learners' will have differences. The ability to think on your feet and adapt your delivery styles to compensate for the differences in experience and learning amongst your students is essential. It is within your discretion to restructure activities, provide additional examples, and modify the delivery schedule but not straying from the design objectives of the course.
Managing the learning environment also entails the scheduling of the course’s class elements. Be observant of the time allotted for each activity: try to adhere as closely as possible to the schedule presented to students in the housekeeping details (competency two). Failure to do so may cause you to lose credibility in front of the learners (competency three) and prevent the learners from achieving the course objectives. You may adjust the pace of your delivery if it is necessary to meet the needs of your learners. Always have a contingency plan prepared, as situations may arise that force unexpected time constraints on your delivery schedule.
Learner success is a critical issue. Regularly assess your learners’ progress to ensure that they are meeting intermediate objectives. Moving ahead despite poor learner performance puts your students at risk of failure (not meeting the terminal objectives intended by the instructional designer). You must recognize and exploit opportunities for students to identify their own successes. Positive reinforcement will help your learners attribute their achievements to their own efforts. Adjusting the pace of delivery, providing extra attention and presenting additional examples to struggling students will enable them to meet their intermediate objectives.
When managing group interaction, it is important to promote participation by all learners. Successfully controlling the group dynamic will facilitate transfer of concepts to the students. It is the instructor’s responsibility to ensure that all group interactions are appropriate to the local and organizational culture and are respectful of the individual rights of others. Resolving behavioral problems in the classroom can be a challenge. Instructors are expected to prevent learners from engaging in unsafe/illegal activities while at the same time maintaining learner self-esteem and minimizing disruptions. Preserving learner confidentiality is paramount – never chastise a student in front of his or her peers when a quiet conversation during a break will suffice to remedy the problem. In many instances, unacceptable behavior can be controlled simply through the gestures, facial expression, and movement of the instructor in the classroom (e.g. making eye contact with and standing near students chatting amongst themselves rather than participating in the lesson).
After each instructional assignment take some time to assess whether or not the learning environment was managed properly. Was your delivery appropriate to the audience and instructional situation? Did you keep distractions and inappropriate behavior to a minimum? Did the learners successfully complete their learning objectives? Did the students display an acceptable level of comfort and confidence? Be prepared to provide a rationale of your performance to your training manager that establishes you have conformed to accepted industry standards.
When delivering instruction, ensure that your verbal and non-verbal language do not contradict each other (e.g. attempting to verbally reassure frustrated students while your body language signals irritation and impatience to them). Proper use of gestures, facial expressions, and body movement help to place emphasis on important content points. Always be aware of and in control of your body in a classroom – careless movement, gestures, and expressions can also detract from your delivery (e.g. jingling keys in your pocket).
Speak clearly to your class using the correct pronunciation, grammar, and syntax. Tailor the vocabulary you use when presenting making sure it is appropriate to the instructional situation. Use technical jargon when necessary, but don’t overdo it in an attempt to impress your audience. Vary the level, inflection, and tempo of your verbal presentations to maintain the interest of your audience. Pauses, accents, inflection and silence in speech are all powerful tools for emphasizing key content points. Use of verbal fillers (e.g., “uh”, “ah”, and “um”) are distracting and not only detract from your presentation, but also affect your credibility.
This should go without saying, but please remember that an instructor must always appear free of bias. Avoid using offensive language or making inappropriate statements (e.g., telling jokes that are sexually obscene or culturally insensitive) in front of learners.
When delivering instruction, using frames of reference that learners are familiar with often best facilitates concept transfer. Provide examples that help apply concepts taught in the classroom to the “real world.” Always be prepared to use a different analogy or example in the event your initial attempt is unsuccessful at clarifying key content points. Assessment through questions, user feedback and observation of learners’ non-verbal communication will aid in determining whether or not your students understand the message. It is important to identify which students have not met the lesson objectives and formulate a response. Regular self-assessment of your communication skills will help you to judge the effectiveness of your communications style and to adjust your delivery accordingly.
When presenting, your voice should be audible to all learners – if necessary, use a microphone. Vary your rate of speech, its volume, and its tempo as necessary to highlight key content points. Once again, distracting verbal expressions (e.g., “you know”) and fillers (e.g., “umm”) are to be kept to a minimum.
Stories, anecdotes, and analogies are powerful tools for capturing the attention of your audience and conveying difficult concepts. Humor can be used to establish a positive group dynamic and to increase the comfort level in an instructional situation. All anecdotes, stories, etc must conform to the instructional objectives. Avoid relating stories or telling jokes that could be considered offensive or culturally insensitive.
Make effective use of your body movements and posture when presenting. Gestures can be used to mark key points. Take advantage of space and props in your presentation area – they may serve as examples or be used to demonstrate concepts. Proper use of gestures, movement, posture, and props will enhance concept transfer and help maintain the interest of learners.
Use eye contact effectively by establishing frequent and direct eye contact with each learner, making sure your attention is distributed evenly among your class. Avoid staring at particular learners, as this will detract from the comfort level you are trying to establish. Failure to make eye contact with students may indicate disinterest or lack of self-confidence, and hurt your credibility.
When organizing the content of a presentation, you must make sure that the premise of your presentation and its supporting materials relate to the course-design objectives. Examples and facts need to be relevant and supportive of the premise without digressing from objectives or exceeding the time constraints.
Instructional concepts need to be linked by transitional statements. Phrases or words such as ‘as well as,’ ‘next,’ ‘furthermore,’ and ‘however’ are commonly used transitions. Concepts must be clarified with concluding statements that may summarize material discussed, offer solutions for a ‘real world’ technical problem or link to the next main concept to be discussed. Within the content of your presentation, you must ensure that words and sentences are arranged logically. Using the scattergun approach to content dissemination only serves to confuse the students and muddle the information, rendering your course’s learning objectives useless.
Furthermore, to guide your students’ successful learning you should incorporate overviews of materials already discussed and previews of upcoming material. Transitional tools (single words, phrases or concepts) to link and unify the presentation, summaries to paraphrase what has been covered, as well as synthesizing information to tie all the parts of the presentation together are useful for demonstrating to the students how the numerous concepts relate and interact with one another.
Questions are used to involve students in the learning process. You can also use questions and answers to assess learner comprehension and to recapture flagging interest by your students during a particularly long or complex presentation.
Direct your questioning to promote learner comprehension and confidence. The questioning should facilitate learner participation in the instruction. Do not go overboard by asking too many questions, or questions that are inappropriately difficult and undermine trainee confidence. Avoid developing predictable patterns of choosing respondents (going from left to right) and never use questions as weapons to single-out, belittle or antagonize students.
There’s no point asking a question if you don’t bother listening to the answer. Nothing destroys a group dynamic faster than an indifferent instructor who can’t be bothered to acknowledge the feedback he or she has received. Always appear interested in what your students have to say. Use active listening techniques such as eye contact, nods of your head, gestures, and verbal communication to convey to the student that you are paying attention. Paraphrasing learners’ comments and questions indicates to them that you hear and understand what they are saying.
You are expected to correct errors and any misconceptions of course content expressed by learners. However, when responding to learner questions and comments, be sure to tailor your response to the content of their message and not the emotions they have expressed to avoid hurt feelings.
When a question receives an incorrect answer, a partial answer, or no answer at all, it may be necessary to restructure, rephrase, or repeat your question. Breaking one question into several related questions will increase the likelihood of a correct answer and help you to understand at what point the learner’s comprehension has failed. Rephrasing a question may help you to avoid embarrassing a student. When a learner gives a partial correct answer, give them positive feedback on their success and frame your following questions to build on the partial answer.
A popular saying is “if you are not making mistakes, you are not trying hard enough.” Create a non-punishing learning environment for your students where they can safely make a mistake, learn from it, and move forward.
Give your trainees an appropriate amount of time to answer a question (ten second rule – if too little time is allotted, students are unable to synthesize a response, if too much time is allotted, their discomfort level rises). Appropriate use of a silence or a pause after asking a question is a good way to get quieter learners involved. Your trainees all process information at different rates – as the instructor you are responsible for identifying and monitoring trends among the learners and modifying your questioning technique accordingly. Don’t let group discussions of questions wander off into unrelated areas or allow them to be dominated by any one student.
Be aware of the non-verbal cues presented by your learners. For example, at the end of a presentation on key content points, your attempt to assess group comprehension through several overhead questions is met by silence and you find your students are all avoiding eye contact with you. At this point it is necessary to frame specific questions in order to diagnose where their understanding failed and to begin formulating a remedy.
Whenever possible, attempt to keep a record of questions used during delivery and their particulars (type, level, and framing), how they mapped to the instructional objectives, and the successes/failures they met. This will allow you to judge the efficacy of your questioning technique, identify problem areas, and incorporate successes into upcoming lessons based on the same course content.
As a competent instructor it is important to identify learners with clarification and feedback needs. In order to accomplish this, you must be cognizant of learner questions, responses and comments that indicate additional clarification of concepts or feedback about learner efforts are needed. You must also be on the lookout for body language, facial expressions and other nonverbal cues that signal confusion, lack of understanding or need for feedback rather than those indicating a lack of involvement or interest in the material. The 'deer in the headlight' look of panic is usually a good indicator of confusion while constant staring out the window at the building next door signals that the learner may not be interested in what you've just presented.
Determining how and when to respond to a learner's quest for clarification or feedback involves being able to gauge whether it would be most effective to address the question, comment or circumstance yourself or have another student respond. If the question delves into information not yet discussed, it would be more prudent to answer it yourself. However, if the question spans material already covered, you might be able to have another student attempt to address the question. When you are confronted with numerous questions about the same matter, it is a better use of your time and resources to address the entire class with the information rather than answering it individually and repetitively. Be sure not to alienate learners, imply or state unacceptable biases or jeopardize your own credibility when you are responding. As you may have already told your students to admit when they don't know the answer, so should you. Your credibility will be greatly undermined if you attempt to give false information or 'politician speak' your way out of a difficult question. If you are unsure of an answer to a question, attempt to find it out at a convenient time and relay it to the student in a reasonable amount of time. Nothing can frustrate a student more than an instructor who doesn't know their material and isn't willing to rectify the situation.
A good instructor will also make sure to provide a balance between responses that disseminate information and those that challenge or stimulate student self-discovery. While 'spoon-feeding' may be desirous by some students, it is the 'why' or 'how would you' questions that may be most beneficial in the long term.
Use verbal cues such as redirected questioning or nonverbal cues such as a shake or nod of the head to support and enhance responses as well as encourage or discourage discussion. It is your job to keep students on target for the overall intermediate and terminal course objectives.
When presented with learner questions or comments that are inappropriate, threatening, unnecessarily challenging or otherwise not supportive of learning, address them in a courteous but firm manner because at this point the interest of the class as a whole overrides the interest of that individual student.
Provide enough information to satisfy the student's needs without flooding them. Adapting your questions' style and types of comments will help you control how challenging or difficult a response will be. This is important, as you will be dealing with various levels and abilities of students. You do not want to turn a student off with questions that are too difficult or too easy. Being cognizant of your learners' abilities will also assist in establishing an environment conducive to learning.
By demonstrating your sincerity, openness and availability through your response techniques, you will be working towards establishing a comfortable and supportive learning environment.
When giving feedback, ensure that it is prompt, timely and specific to the situation and learner. Responding promptly to comments, questions or actions will assist the student to build on prior learning. Be aware of when you give the feedback as to maximize its usefulness. Give information that helps correct errors, enhances performance or a continuation of appropriate behaviour. Rather than praising how 'nice' of a person they are or giving noncommittal comments, give feedback that is descriptive and performance-based. Information that is accurate and focuses on a learner's specific request or question is desirable. Praise that is sincere, timely and relevant encourages support for the learner.
Being aware of your students' abilities, confidence, self-esteem, motivation and concerns will assist you in determining how much and what kind of feedback to give your students to assist them in obtaining the learner objectives for your course. If a student is lacking self-confidence, you may be dispensing more encouragement to him than on a student who is secure in her learning abilities and only needs a specific correction to an error. Furthermore, understanding your students' attributes will also help you manage the conditions of feedback. For example, some students may be more comfortable with receiving feedback in private or it may be in the interests of time constraints to offer this feedback outside of class time.
Determine where additional feedback beyond the requirements of the instructional design may be needed. As always, this is gauged by student response to concepts. You may find that a little more time spent on a more in depth concept will actually save you time further on in the course.
Remember that your feedback can be verbal or nonverbal. A smile or a nod of approval can be just as effective as verbal praise.
Finally, keep students informed of their rate and success of progress, as this will be reflected in how well the course objectives are covered and attained.
The greatest successes are achieved in an instructional setting when your students want to learn the material being presented. Helping learners to understand how achieving the course objectives translates into new skills that they can use to further their careers and personal lives out in the “real world” will incite them to participate more willingly in the course delivery.
Unfortunately, no course design can compensate for the differing motivational requirements you will encounter in given groups of learners in each instructional situation. It is up to you, the instructor, to analyze their needs and through the use of encouragement, feedback, and rewards, help each learner translate their personal goals into an eagerness to attend to your instruction in order to acquire beneficial new skills and knowledge.
Always attempt to map the learning outcomes of each instructional situation to the needs of the learners and their organization so that your students will perceive the value of the skills and knowledge they are acquiring. For example, assume you are teaching a hostile group of students being forced into an unpopular software upgrade. Many state that they do not see any reason why they should waste their time in your course. You must sell them on the benefits of attending your course by showing them how the new skills they will acquire will build on their knowledge of the old software and benefit them as they perform their job. Use introductory activities to establish learner interest and comfort when beginning the delivery of content or when distractions and loss of focus have made it necessary to re-engage the group’s interest. For example, try using a role- playing exercise upon return from a lunch break to re-focus the group’s attention on the content being delivered. Feedback, reinforcement, and the appropriate use of rewards will help maintain the confidence level of your learners and allow them to build upon their successes. Their accomplishments should not only be recognized by the instructor, but the other learners as well. Rewards should be appropriate to the circumstance – too little or too many rewards may set a bad precedent in front of other learners and jeopardize the group dynamic. All use of motivational strategies should fall within the parameters of accepted industry practice and serve to further design objectives of the course. Repeated instances of having to adapt motivational exercises in the instructional design should be brought to the attention of your training manager and the instructional designer(s) responsible for the course content.
As a competent instructor you will be able match, adapt and implement a variety of basic instructional methods, as outlined by the instructional design of the course, to your students in order to make the best use of class time, instructional situations and student skill levels. Basic instructional methods include lectures/presentations, demonstrations, class discussions, brainstorming exercises (useful for problem solving exercises), gaming (case problems), role playing, written exercises, Socratic dialogue (a form of questioning that allows the learners to discover what the correct answer will be), case exercises (activities that present the event and its outcome but require the students to figure out the causes of the outcome and possible solutions) and simulations (activities where the setting and tasks are preset, but the learners drive the actions and discover the resulting outcomes).
Encourage your students' participation by stating your expectations of them in relation to the instructional method you choose. For example, you may expect your students to attain two possible solutions for a case exercise. Group dynamics play a strong role in your ability to match instructional methods to your learners. Understanding your students' abilities and desires to participate and building trust between you and your students will help you gauge what methods are appropriate and plausible.
You must be cognizant of the level of participation by all students and ensure that there is a balance. Don't allow a minority of students to always answer or not answer questions. It is your job to assist the learners in defining what their roles and responsibilities are within the group and what the objectives of the group are.
Don't be afraid to 'check their pulse' as this will assist you in choosing the most beneficial instructional method. If you find that there is not much group participation in a brainstorm session, you may wish to implement a role-playing scenario to flush out possible solutions to a problem. Each group will have its own dynamics: what worked for a previous class may or may not work with your current one. If the students tell you directly or indirectly that what you're doing isn't working, accept it and try another method. This doesn't mean just abruptly changing direction. You will need to ensure that there is some sort of closure on the learning activity, even if it only to reiterate what you expected that they were to achieve through this particular exercise. As with all groups, not everyone will consistently agree all of the time. It will be your responsibility to manage or help learners manage any disagreements or conflicts that may arise among them. Keeping an open, trusting environment among your group will assist this. As always, let your students know how they are doing and what sort of progress they are making towards the learning objectives of your course. When employing appropriate instructional techniques, you should keep in mind skills covered in competencies four, five and six. Use transitions to connect new content to already acquired skills, topics to topics and theory to reality.
Get accustomed to implementing your skills to overview, preview, summarize and synthesize content (see competency six for more details). You will also find it useful to use these techniques: comparison/contrast; examples and non- examples; sequencing (simple-to-complex, general-to-specific organization); paraphrasing, diagrams and charts, drawings, and equations (see competency five for more details), as well as stimulating initial presentation techniques such as startling statements or questions and problem statements (see competency four for further details).
Always debrief learners to understand where they were successful and where they met challenges in mastering concepts or content. This will assist you in modifying the instructional methods deployed. As well, you will be better able to offer suggestions for enhancing their learning and participation. Reflect on the effectiveness of your methods and techniques by judging how the prescribed instructional methods, adaptations and modifications worked for the instructional situation. This will be most useful in deciding if you were able to maintain the integrity of the original design and intended outcomes and how well you were able to enhance learning and confidence among your students.
(See competency one for further details).
Besides simply reflecting on your effectiveness, you need to provide a rationale for that judgment. This simply means you need to link what you did to standards of practice/theory, organizational standards or to some other reasonable opportunity for success within that situation; document any modifications or adjustments you made; and show how those modifications impacted learner needs/interests or situational constraints.
As an instructor, you will find it necessary to use media effectively. The decisions and actions related to media use will be made during preparation for the class. When planning and using media be certain to prepare for its safe operation and unobtrusive placement so that students are able to see and hear the content clearly without being hindered with hardware, its accruements and dangers (might be as simple as taping down a loose cord on the floor or shining the overhead higher up on the projection screen). Make sure you have a back up plan in case of a technical difficulty and have spare parts (bulbs, power cords, etc) on hand. When you are finished with your class, return or dispose of equipment and media according to the facility's or organization's requirements (may be simply having to turn off the switch on an overhead, or returning a TV and VCR to a designated room). It is important to assess your students' learning styles and use the appropriate media presentation in order to maintain interest and attention. You may find that you have auditory learners who are best served using an audio presentation on a TV/VCR or you may have visual learners who can be validated using an overhead projector or PowerPoint presentation.
You will find that from time to time technical difficulties make minor troubleshooting necessary. Use a logical, calm, rational approach to determining what the problem is and what the best solution would be (this will also show your students that you practice what you preach). While you are quickly making minor repairs or replacements, provide an alternative, appropriate activity for your students. Having some quick jeopardy-style review game or case assignments may prove to be a godsend when a minor technical glitch puts the class on hold.
Sometimes, based on your students and the situation, the prescribed media isn't as effective as it could be. It will be your responsibility to determine this, what to do about it and how your modifications would be best implemented.
Integrate these changes with the least amount of fuss and delay. Chances are your students won't even know that you made the modifications unless you tell them. Just make sure that your changes are consistent with the objectives and guidelines of the courseware and the intended learner outcomes. No one's lesson plan ever goes exactly how they've planned it, so being able to think on your feet and having some alternatives ready in your bag of tricks is essential. In order to ensure that your adapted or new media is effective, make certain that it:
Determining how effective your media has been involves judging how appropriate the prescribed media or any changes or modifications were to that particular learning moment. You also need to check how well the modifications/substitutions/new creations maintained the integrity of the original design and intended outcomes, and enhanced learning, interest and attention. How well did your new media test against preset standards of media design? Were you able to work your new media into the instructional sequence with a minimum of fussing and fuming? As always, you will need to provide a rationale for any changes you may have made. Judge your changes against the learner (needs/capabilities/interests), the course objectives, intended outcomes, and any operational problems that may have cropped up. Supporting your rationale simply means you need to link what you did to standards of media design and use, document any modifications or adjustments you made and show how those modifications impacted learner needs/interests or situational constraints. This information will be necessary for the instructional designers, training manager and any other interested stakeholders.
Evaluation of learners incorporates a variety of techniques including self- evaluation and instructor evaluation, both of which may be summative (overall final mark) and formative (ongoing anecdotal, descriptive comments). You will need to assess participation and performance throughout activities, discussion and exercises, both of individuals and groups. The data that you glean will be valuable in assessing learner preparedness for using new knowledge and skills and about the adequacy of the learning design. Your students will be eager to know how you think they have performed. Your ability to judge their performance includes being able to clearly and accurately communicate to them the criteria against which they will be assessed. This will also help them define what it is they need to strive for throughout the course of your instruction. You will need to decide what activities and events you base your evaluation on, and use unobtrusive, multiple observations throughout to produce a fair and accurate assessment of your students. Judging their abilities also relies on you being able to interpret their responses and behaviors during the instruction. Someone who is prone to constant errors and will not accept your corrections isn't as likely to succeed as someone who puts into practice your assistance. Your students will need to be observed individually but evaluated in the same manner. For clarification to both you and your learners, discuss the limitations of whatever assessment tools and techniques you use. Not any one single assessment tool will be completely predictive of learner performance, so it is in everyone's best interests to use a variety of these tools to create as in depth of a performance picture as you can. When administering tests and instruments, it is important for you to follow as closely as possible the directions for administrations and to document any deviations you may have made. Explain to the students why you are using a particular test or tool and what its desired outcome should be. To avoid contaminating or biasing the results you need to follow all directions for administration and scoring while refraining from adlibbing your own comments during the course of administration. As part of your course planning, set aside adequate time for preparation, dissemination and debriefing of evaluation and assure that evaluation is done at logical points in your agenda. There is no point testing a concept if you have not allowed students to practice it or question it. Explain in appropriate, meaningful language the test/instrument instructions, how the results will be shared and used and why you are choosing this particular test of their knowledge and/or skills. To evaluate whether the end-of-course objectives were met, measure overall student performance against uniform standards. You should also break this evaluation down to individual students and how they performed for each objective or sequence of related objectives. They will be interested to know what concepts they grasped well and those that challenged them more. Document and rationalize evaluative statements through the use of test scores, anecdotes, critical incidents and other defensible sources. You must be able to explain how the variety of evaluative tools you used helped you arrive at each student's overall assessment. For example, maybe an oral quiz would only comprise five percent of the assessment, while a complex simulation would be worth forty five percent of the final assessment. Finally, give credit where credit is due through the use of instructional design approved grades, certificates, etc. All good instructors reflect upon the various aspects of the job they have completed to assess the strengths and weaknesses of their performance. Judge the adequacy of your student evaluations by determining how closely you have followed the criteria from the Instructor's Guide, and whether or not inappropriate techniques were changed effectively, collected unobtrusively, and backed up by other assessment tools used. In other words, were you fair and consistent throughout your evaluation, providing adequate opportunities for your students to strut their stuff? As always, it is necessary to provide a rationale for what you have done and why you did it. As long as you have used objective data that took into account the learners’ needs, the instructional situation and the standards laid out by the course, your individual student and group evaluations will be reasonably accurate. Keep a paper trail: this can save much time if a dispute arises and also provides valuable information on what did and did not work in your presentation.
As the expression goes, ‘the proof is in the pudding,’ so the proof is in good learner outcomes. While it is true that students can learn in spite of poor teaching, their results would greatly increase with good instruction. A good instructor can take even the driest material and turn it into a quality learning experience. As an instructor, you need to assess your delivery abilities to ensure that you are the best person for the job. If there is room for improvement, make the adjustments based on sound professional considerations. When you evaluate the instructional design that you have modified during your delivery, look for why you made those adjustments. Did you do it for personal preference (a definite no-no), or did you do it to enhance learner abilities and needs? Did you face a crunch in the instructional environment? Were content requirements and learning objectives kept in mind when you made your changes? Did you make sure you documented your changes and the causes and effects of those changes? Sometimes we are our own worst critics. This tendency can be alleviated if you assess yourself on specific criteria such as your ability to analyze the given learning material, learner information and feedback, your varied teaching styles and techniques, your effective communication skills, your professional image, your questioning techniques, classroom management and media usage. Using the above criteria will also determine how well you may work with a fellow instructor and how objective you may be in a variety of situations. Not everything is in our control in a classroom. It is up to you to judge what effects, if any, may have transpired with changes to the physical conditions of the classroom, to the instructional agenda or to those changes that are unique to a particular incident or situation. Not all of our learners come to us with the same skills, experiences or knowledge base. It will be up to you to evaluate how well the course worked for each group you teach. Take a look at appropriateness of instruction versus learner needs, accomplishments and comfort levels. Document any barriers or pitfalls that may hinder the transfer of this learning to the students’ real world experiences. Finally, state a rationale about what you've changed and why you found it necessary to make those changes. This judgment should demonstrate how your modifications conform to accepted theory and/or practice.
The importance of accurate, objective evaluation reporting is most evident when one considers that the information collated can be used to make personnel decisions or client achievement decisions. Reports could be made to any or all of four audiences: clients, instructional designers, training managers and instructors. You must be prepared to report post-course summary and evaluation information to the clients in a comprehensible language and format. Second, you will need to report evaluation and end-of-course information to the appropriate audiences in the appropriate form, language and level of detail. You are responsible for ensuring that accurate bookkeeping, accounts of evaluations, attendance and learner barriers are documented and reported. As well, don't be surprised if follow-up letters and/or material are requested. If you have completed your job satisfactorily, any questions asked should be easily answered. Also, don't be afraid to voice any concerns you may have had about instructor assignment or selection. If you're not comfortable with your assignment, say so to the appropriate person(s). In order to assist in course development and instructional delivery improvements, recommend any revisions and changes to existing material or suggest ideas for new programs or activities. Management needs to know what works and what doesn't, whether it is with the facilities (inadequacies with logistics to the effect that the physical environment hurt the learning process) or the course content (irrelevant material to information overload). After all, you are working together to create the best possible experience for your clients. There is no point in reinventing the wheel, so share any resource material you have that may assist other instructors in similar situations. You will find that the favor is reciprocated. As with so many other competencies, you will need to be able to judge whether the evaluation reports you've created are plausible, adequate, appropriate, legally defendable and timely. Make sure that your data is quantifiable, complete and punctually submitted. Finally, state the rationale behind the decisions you've made about information inclusion or exclusion, information relevancy and how those balance against accepted professional practice.
Here's the copy of the report I've sent to the arabeyes mailing list. Late as usual but I expect that you all are used to this when it comes to my side ;-)
From the 28th of January to the 4th of February, Was Asia source I Co organized by The Tactical Technology Collective and Mahiti in Bangalore, India.
I was short in time when Arabeyes asked me to present them there as no one from the core team was free. I was able to take a vacation from my job and fly there, I was preparing my papers till the last hour.
We stayed in a camp on the outskirts of Bangalore.
The 8 day event came with a flexible agenda. It included an outing to either the IT park or to a school. And this was the only time we had to be divided into 2 groups! and the organizers left a good room for us to modify it.
This event was not an event seminar, but a workshop seminar. Rather than having the attendees sit and listen to lectures, the event concentrated more on hands-on learning and activity. The overall aim of the event was to increase the uptake of FLOSS by NGOs (non-government organizations). They planned 3 main tracks for the camp:
1) Localization Track, which I was part of as a facilitator. In it we were trying to transfer our knowledge regarding l10n to the attenders.
2) Open Content Track, which was further divided into the 2 sub tracks of content and media. The overall aim was building skills on how to use FLOSS tools in the multimedia field and how to build community websites using open source CMSs.
3) Migration and Access Track, which included an introduction to GNU/Linux and FLOSS for to the win32 platform. i.e. How to plan migration of NGOs from the latter to the former and how to apply the plan etc...
In addition to the documentation side-track to document the whole event.
As I said, The whole thing was done via hands-on sessions that included interaction between the facilitators and the other attendees, As this is believed to be the better way to learn and teach by the event's organizers.
Every day began at 8 AM with breakfast of course, followed by a morning's circle at 9 driven by "Gunner" the awesome guy, and on of the events' organizers, which is then followed by the main tracks' outings from 10 AM to 1 PM.
The day resumes at 3 PM with another meal, followed by a 4 to 5 session at the same time covering various relevant topics and sure you can only attend one of them ;-) The broad spectrum of topics covered issues from 'FLOSSophy' to wireless sessions and wireless antenna building to GNU/Linux security to FreeBSD introduction and many many more.
Another meal was dispensed at 7:30 PM? (not exactly sure), followed by a single evening event, It could be a movie watching, A DJ. Or anything, And one has a choice not to attend it.
During the week we also had some various side activities. One of them was the wiki painting, where the idea is that each one is supposed to go and paint whatever he wants on a board prepared for that. The board stayed there for days, And each one got a piece of the large painting.
As I was representing Arabeyes more than EGLUG "But I was representing myself too ;-)" I think I came out with the following from the event (This does not include any lessons or things I learned personally). They may be of help:
1) We can get in contact with the pootle and translation toolkit development teams. Those are written in Python, and maybe we as Arabeyes can join the development (I'm thinking about doing it myself). Pootle as a web-based translation tool "plus some tools to convert mozilla and open office translation formats to PO files and vice versa." can be used when we have people with permanent connection and even by someone like me who hates GUIs ;-)
2) I came out with a basic understanding about how the translation teams work. How to plan for a l10n project.
3) How do teams translate hard words? Usually people try to see the English roots of the word and examine other languages they know and see how they came out with the translation.
4) I got in touch with the KhmerOS founder. They have an NGO with employed people to do the translation. Another project (perhaps the Hindi translation, not sure) is based on dictatorship were each volunteer is assigned a file to translate.
5) Most of the people I found are not asking the volunteers to use CVS to manage the translation. I see that this is a good point as we shouldn't require the volunteers to interact with the CVS or have good technical skills, but can rely on people with pure translation skills.
6) I think I somehow understand a basic idea on how to create fonts.
7) I'm somehow interested in helping the Pashto and Urdu people but this is my own interest which not tied to arabeyes.
8) I have a report on "A project for the computerization of East Timor in Tetum language" But I'm not yet sure about the license so I'm not going to publish it, And I have to read it 1st.
9) I think I found someone to help in certifying the Quran data files, I didn't take any actions yet, But I'm planning to contact the guy "It seems that the this won't happen!".
10) Each participant (myself included) went back home with a copy of NGO-in-a-box which is basically a box containing some distros and documentation among other software suitable for NGOs trying to switch to FLOSS (I didn't find time to look at it, but I'm sure it's worthwhile).
11) I'm sure I've forgot many things!
I have also been interviewed by Frederick ;-).
IMHO we didn't gain much regarding Arabic. Very few of the attendees had issues related to Arabic. The event was mainly organized via the wiki. You can find all the information you want there. Also the contact info for the localization track facilitators . Last but not least is the list of participants.
We as Arabeyes could have gained much more had we been given more time to prepare. I however gained quite a few contacts and friends :-)
Another source event'll take place in Africa this year, But they are thinking about organizing it in north Africa as almost no Arabs did attend the previous source event in Africa but they are having a problem finding a place to organize it.
I'm not sure whether Arabeyes can hold such an event alone, But IMHO if we can find a sponsor we can do it.
Egyptian companies have long relied on proprietary software to get their work done. There are many reasons for this, mainly lack of knowledge & awareness of the Free/Open Source alternatives. Most business owners/managers are simply wary of free (zero cost) software. "How would a free O/S have the quality of windows ??" is a popular question. Even grandma has some sort of windows experience, which makes them feel assured that it will be easy to obtain technical support, should problems arise.
Well, how about showing a real Egyptian business which relies solely on FOSS ??
Mr. Omar BayehElDin. is the owner of Abu Youssef company, which works in cloth. He's been running solely on GNU/Linux & Free software for years, and he's quite satisfied. He forgot all about crashes, viruses and has saved a lot of money ever since. here is the story:
6 years ago one of Mr.Omar's relatives (who was studing in U.S.A) showed to Mr.Omar And his Brother a strange Oprating System. that oprating system was GNU/Linux and they kept playing with it but it`s wasn`t a very friendly operating system like nowadays and it wasn`t known in Egypt at all.
In those old days windows was alrady installed in Mr.Omar company`s Lan ( 2 computers , 2 Laptops ) but he was using GNU/Linux on 386 box as a file server. After closing uneeded services it ran perfectly. He also used FoxPro for database stuff and sure the microsoft office on the computers of his Lan. but all that was about to change.
That change happend 3 years ago when el mosnfat (kinda like egyptian Intelectual Property police) sent Mr.Omar a letter asking him to rearrange his software and get rid of any pirated software he use if he using any or else face the consequences (very high fines and confisication of equipmen, not to mention lengthy trials and legal dances). so he chose to forget about that headache and save some money by switching to FOSS and GNU/Linux and use them full time in his company.
He started with the accounting system, after quickly reviewing Nola, Compier and SQL-Ledger he settled for SQL-Ledger which is a powerful accounting system that can do almost everything in accounting.
he also used OpenOffice.Org (and somtimes Koffice for compatibility with legacy proprietary formats like *.doc *.rtf), KDE as desktop env.
They're using Mandrake (after playing with Redhat, Slackware and Debian), currently running Mandrake 10, Mandrake was chosen for its ease of use and for adding arabic support very early on, but at the moment they're contemplating a move to debian due to the greater stability.
Mr Omar faced little hardware compatibility problems (some old soundcards that are now well supported), one big problem was internal winmodems, they avoided this eternal problem by buying external modems and switching to ADSL the moment it was available.
They get support online from free community sites, sometimes it difficult to find answers but a bit of searching is all they ever need.
Mr.Omar is quite happy and satistfied with FOSS and it`s work. since there is are viruses like windows and the system is less likely to be compromised, He says it was soo easy to switch to GNU/Linux becouse it did not required special skills from the employees all thay have to do is File->open stuff. Nothing fancy, just regular GUIs with menus, data entry fields and stuff which is user-friendly and quite similar to windows applications.
While Mr. Omar and his employees are no hackers, they're not simple users either, Mr Omar often finds himself using command line tools to find and grep things feeling that its much faster than the typical graphical ways.
when faced with a need that was not covered by existing FOSS apps, Mr Omar started thinking how he can help solve the problem by helping or contributing, the acountants needed a localized accounting package, Mr Omar quickly realised that if they don't do it themselves no one will, and after finding out that the process was rather simple he sat down and did the job himself, till this day he still maintains the Arabic translation of SQL-Ledger.
Really FOSS is great for all kind of work. and Mr.Omar Advise other small business owners to switch for FOSS if they are can dig enough into computers (or find employees who can).
We thank Mr. Omar for his contribution (FOSS is all about contributing and giving something back) - and for his precious time (as busy as he was, he gave us all the time we needed and was quite helpful). He showed us some of the very useful features of SQL-Ledger.
We hope this small interview would urge other businesses to migrate to Open Source software and benefit from the stability, security & cost savings. Having seen someone who's already done that may be just what we need.
if you know of other cases of FOSS usage or development in Egypt, tell us so we can cover them.
And now here are some pics of SQL-Ledger in Action.
NOTE:We coudn`t get (elmosanfat) letter since it was hard to find.
![]()
This is an invoice with some sold items, to be printed.
![]()
Creation of the invoice, you can change the currency and add new currency for the items that the company deals in (selling or buying).
![]()
Incoming statments for the company (trial).
![]()
Mr. Omar ,DarKnesS_WolF and ShErbO - Mr. Omar was showing us some work with SQL-Ledger.
![]()
This is the 2nd computer on the network.
introduction
this is not a "howto" for creating centralized authentication, it's rather a "what i know"
what i want to do is have all my usernames and passwords in one location and access any PC in my network with it, and have a global address book available to all users through their mail client.
after reading this you should be able to run an openLDAP server populate it with users information and authenticate other linux PCs to it and provide the user information in thunderbird addressbook (isn't that cool)
TODO
let's do it
Open LDAP Packages
configuration files
now after you install the packages you start by editing slapd.conf
#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
pidfile /var/run/slapd.pid
argsfile /var/run/slapd.args
## ACL ##
access to * by * read
#######################################################################
# ldbm and/or bdb database definitions
#######################################################################
database bdb
suffix "dc=lab,dc=local"
rootdn "cn=admin,dc=lab,dc=local"
rootpw {crypt}
defaultaccess read
directory /var/lib/ldap
# Indices to maintain for this database
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
#index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
#index nisMapName,nisMapEntry eq,pres,sub
the first
then defining args and pid file, then access controls (the line there lets anybody have read access)
the rest is not really important to get started so i won't get into that now
now that we have configured the server, let's start it and populate it with user entries.
now some concepts (don't rely on me for concepts), these are my 2cents notes on understanding this issue
example of an entry for a user (see how it has DN object to identify it and the a set of attributes for details)
dn: uid=john,ou=people,dc=example,dc=com cn: John Doe uid: john uidNumber: 1001 gidNumber: 100 homeDirectory: /home/john loginShell: /bin/bash objectClass: top objectClass: posixAccount
now looking at this example we can see that it is an entry for a posixaccount (unix user account) that the pam_ldap would look for to get user information.
Now how do we populate such data in ldap, simple there is a file format called LDIF (ldap data interchange format) that does it, you open an empty text file, you write in your entries and then ldapadd -W -D "cn=admin,dc=lab,dc=local" -f file.ldif while the server is running. this command will create the database entries which will be located in /var/lib/ldap/ (as defined in the slapd.conf) and if you delete these files you can start from scratch and populate new data.
now the most important thing to do thetrick is to figure out what to put in that ldif file (that took a lot of time and reading, lucky for you i did my homework and you can bypass that time, i hope) here is my sample file
dn: dc=lab, dc=local
objectClass: top
objectclass: organization
objectclass: dcObject
o: Opencraft labs
dc: lab
dn: ou=users,dc=lab, dc=local
ou: users
objectClass: top
objectClass: organizationalUnit
dn: ou=groups,dc=lab, dc=local
ou: groups
objectClass: top
objectClass: organizationalUnit
dn: cn=engineering, ou=groups, dc=lab, dc=local
objectclass: top
objectclass: posixGroup
cn: engineering
gidnumber: 500
memberuid: foo
dn: cn=ramez hanna,ou=users,dc=lab, dc=local
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: ramez
userpassword: {crypt}
uidnumber: 500
gidnumber: 500
gecos:ramez zoheir hanna
loginShell:/bin/bash
homeDirectory: /home/rhanna
shadowLastChange:10877
shadowMin: 0
shadowMax: 999999
shadowWarning: 7
shadowInactive: -1
shadowExpire: -1
shadowFlag: 0
cn: ramez hanna
givenname: ramez
sn: hanna
mail: me@domain.com
title: CEO
StreetAddress: somewhere
l: cairo
postalCode: huh
telephoneNumber: 54545454
homephone: 454545454
mobile: 555555555
facsimileTelephoneNumber: 555555
ok now one last tip, when you add a new user to the system you will first add the entry to ldap then create a group with the same name and then create the home folde /home/$username and make it owned by the user and it's group
now i wish you good luck if you chose to follow my steps and try it
references :
scripts:
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = <STDIN>;
my $crypttext = "{CRYPT}".crypt ($plaintext, $salt);
#!/usr/bin/perl
use Net::LDAP;
# configuration section
# edit the next lines to meet your environment
#
$server = "ldap.opencraft.local";
$suffix = "dc=opencraft,dc=local";
$rootdn = "cn=admin,$suffix"; #if not present the script will ask for it
$ou = "ou=People";
$gou = "ou=Group";
$homeDir = "/home/";
# end of configuration
$action = shift;
if ($action eq "useradd") {
$username = shift;
$options = shift;
$groupname = $username;
$_ = $options;
if (/^-g/) {
$groupname = $';
}
ifexist($username,"user","exit");
ifexist($groupname,"group","exit");
adduser();
addgroup($groupname,"auto");
}
elsif ($action eq "groupadd") {
$group = shift;
ifexist($group,"group","exit");
$idNumber = generate_uid_num();
addgroup($group,"user");
}
elsif ($action eq "passwd") {
$username = shift;
print "changing password for user $username";
ifexist($username,"user","continue");
`ldappasswd -x -v -S -w secret -Dcn=admin,dc=opencraft,dc=local uid=$username,ou=People,dc=opencraft,dc=local`;
}
elsif ($action eq "usermod") {
$username = shift;
$changes = shift;
ifexist($username,"user","continue");
usermod();
}
else {
die "you have to specify an action";
}
################################ sub routines ##############################
#
# connect to ldap server
sub ldapconnect {
$ldap = Net::LDAP->new( $server, version => 3 ) or die "new failed : $!";
$ldap->bind( $rootdn,password => 'secret') or die "cannot bind :$!";
}
# disconnect from the server
sub ldapdisconnect {
$ldap->unbind;
}
# add a user
sub adduser {
open(TMP,">/tmp/ldapuser.tmp") || die "cannot cache data: $1";
open(TEMPLATE,"< adduser.ldif") || die "cannot read template file: $!";
while (<TEMPLATE>) {
if (!/^#/) {
@field = split(/:/,$_);
if ($field[1,1] eq "") {
if ($field[1,0] eq "dn") {
$field[1,1] = "uid=$username,$ou,$suffix\n";
}
elsif ($field[1,0] eq "uid") {
$field[1,1] = $username."\n";
}
elsif ($field[1,0] eq "userPassword") {
print "enter value of $field[1,0]-$field[1,2]";
$crypted = generate_pass();
$field[1,1] = $crypted."\n";
}
elsif ($field[1,0] eq "uidNumber") {
$idNumber = generate_uid_num();
$field[1,1] = $idNumber."\n";
}
elsif ($field[1,0] eq "gidNumber") {
$field[1,1] = $idNumber."\n";
}
elsif ($field[1,0] eq "homeDirectory") {
$field[1,1] = $homeDir.$username."\n";
}
elsif ($field[1,0] eq "cn") {
print "enter value of $field[1,0]-$field[1,2]";
my $name = <STDIN>;
$name =~ s/\n//;
$field[1,1] = $name."\n";
}
else {
print "enter value of $field[1,0]-$field[1,2]";
$field[1,1] = <STDIN>;
}
}
print TMP "$field[1,0]:$field[1,1]";
}
}
close (TMP);
print "adding user $username to LDAP . . .";
`ldapadd -x -w secret -D"$rootdn" -f /tmp/ldapuser.tmp`;
print "user added\n";
print "creating home folder . . .";
system ("cp -Rfa /etc/skel/ $homeDir$username & chown -R $username:$username $homeDir$username");
}
# encrypt the password using {crypt}
sub generate_pass {
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = <STDIN>;
my $crypttext = "{CRYPT}".crypt ($plaintext, $salt);
return $crypttext;
}
# get the latest uid/gid number to get a new uid for the user or the group
sub generate_uid_num {
ldapconnect();
$searchbase = $suffix;
my $filter = "!(uidNumber=65534)";
my $attrs = "";
my $results = $ldap->search(base=>$searchbase,filter=>$filter,attrs=>$attrs);
my $count = $results->count;
my $entry;
my $list;
for (my $i=0; $i<$count; $i++) {
$entry = $results->entry($i);
if (($entry->get_value('uidNumber')>499 and $entry->get_value('uidNumber')<65534)or($entry->get_value('gidNumber')>499 and $entry->get_value('gidNumber')<65534)) {
$list = $list.",".$entry->get_value('uidNumber').",".$entry->get_value('gidNumber');
}
}
ldapdisconnect();
my @uids = split(/,/,$list);
@uids = sort { $a <=> $b } @uids;
my $count = @uids;
my $last = $uids[$count-1];
my $newuid = $last+1;
return $newuid;
}
# add a group
sub addgroup {
my $name = @_[0];
my $mode = @_[1];
open(TMP2,">/tmp/ldapgroup.tmp") || die "cannot cache data: $1";
open(TEMPLATE2,"< addgroup.ldif") || die "cannot read template file: $!";
while (<TEMPLATE2>) {
if (!/^#/) {
@field = split(/:/,$_);
if ($field[1,1] eq "") {
if ($field[1,0] eq "dn") {
$field[1,1] = "cn=$name,$gou,$suffix\n";
print TMP2 "$field[1,0]:$field[1,1]";
}
elsif ($field[1,0] eq "gidNumber") {
$field[1,1] = $idNumber."\n";
print TMP2 "$field[1,0]:$field[1,1]";
}
elsif ($field[1,0] eq "cn") {
$field[1,1] = $name."\n";
print TMP2 "$field[1,0]:$field[1,1]";
}
elsif ($field[1,0] eq "memberUid") {
if ($mode eq "user") {
print "enter value of $field[1,0]-$field[1,2]";
my $input = <STDIN>;
chomp ($input);
my @members = split(/,/,$input);
ldapconnect();
foreach $member (@members) {
$searchbase = $ou.",".$suffix;
my $filter = "uid=$member";
my $attrs = "uidNumber";
my $results = $ldap->search(base=>$searchbase,filter=>$filter,attrs=>$attrs);
my $entry = $results->entry(0);
my $memberUid = $entry->get_value('uidNumber');
$field[1,1] ="$memberUid\n";
print TMP2 "$field[1,0]:$field[1,1]";
}
ldapdisconnect();
}
elsif ($mode eq "auto") {
$field[1,1] = $idNumber;
print TMP2 "$field[1,0]:$field[1,1]";
}
}
}
else { print TMP2 "$field[1,0]:$field[1,1]"; }
}
}
close (TMP);
print "adding group $group to LDAP . . .";
`ldapadd -x -w secret -D"$rootdn" -f /tmp/ldapgroup.tmp`;
print "group added\n";
}
# modify the users attributes
sub usermod {
my %ReplaceHash = ( keyword => "x", proxy => "x" );
my $result = LDAPmodifyUsingHash ( $ldap, $dn, \%ReplaceHash );
my $result = $ldap->modify ( $dn,replace => { %$whatToChange } );
return $result;
}
# check if user/group exists
sub ifexist {
ldapconnect();
my ($attrib,$entity,$action) = @_;
my $searchbas,$filter,$attrs;
if ($entity eq "group") {
$searchbase = $gou.",".$suffix;
$filter = "cn=$attrib";
$attrs = "gidNumber";
}
else {
$searchbase = $ou.",".$suffix;
$filter = "uid=$attrib";
$attrs = "uidNumber";
}
my $results = $ldap->search(base=>$searchbase,filter=>$filter,attrs=>$attrs);
my $count = $results->count;
if ($count > 0) {
if ($action eq "exit") {
print STDOUT "dependency failure ( user/group exists\nin case you are adding new user you can use -g with useradd to assign another default group)\n";
exit;
}
}
ldapdisconnect();
}
#adduser.ldif the template for new users #this is the template for creating users #syntax: #attr:value:comment #only missing values will be prompted by the scrip #note that even if you won't have comments you need to add the ":" dn::identifier usually the full name or the username objectClass:top objectClass:person objectClass:posixAccount objectClass:shadowAccount objectClass:organizationalPerson objectClass:inetOrgPerson uid::username userPassword::password not less than 5 char uidNumber:: gidNumber:: gecos::more information divided by commas loginShell:/bin/bash homeDirectory::home folder shadowLastChange:10877 shadowMin:0 shadowMax:999999 shadowWarning:7 shadowInactive:-1 shadowExpire:-1 shadowFlag:0 cn:: givenname::surname sn::full name mail::user's email title::job title StreetAddress::home address l::city telephoneNumber::home phone number mobile::mobile number
2 -Terminal Emulators ( Psuedo ) ---> from the GUI ( Graphical User Interface )
$ls -la
$ls –list
$ls --almost -list
$ls -h!( h : for human readable )
man -k is your friend ..
$man -k
What manual page do you want?
$man -k kernel
$man -k copy
$man -k delete
$man cp( the copying command )
$man mv( the moving "deleting command - or renaming )
Old School ASCII Graphics ;)
$cd .." Up "
$cd -" Back"
$touch oct-{first,second,third,fourth}-{1,2,3,4,5,6,7}
$ls oct*
$ls oct-fourth*
for more information about the “ touch “ command
$man touch;)
$cp -F( F: Force )
$cp -R( R: Recursive )
$cp -rf( recursive and force )
$ pwd
/home/slacker
$which mozilla
/usr/bin/mozilla
$whereis mozilla
mozilla: /usr/bin/mozilla /usr/lib/mozilla /usr/local/mozilla /usr/share/man/man1/mozilla.1.bz2
$whatis mozilla
mozilla (1) - a Web browser for X11 derived from Netscape Communicator
$whoami
slacker
$id -un
slacker
$echo $SHELL
/bin/bash
$echo $PATH
/usr/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin/:/usr/games:/home/slacker/bin
$echo GO $USER
GO slacker;)
$echo DJ KING IS A $USER
DJ KING IS A slacker= )
$echo YOU NEVER KNOW == MohammedSameer
YOU NEVER KNOW == MohammedSameer
ls -l
-rw-r--r-- 1 1000 users 366481 Jul 24 19:59 tls1.4.1-linux-x86.tar.gz
drwx------ 5 acidtears acidtears 8192 Aug 18 01:32 tmp/
-rw-r--r-- 1 acidtears acidtears 4665344 Aug 2 23:41 Usher_vs_Bee_Gees_Stayin_Yeah.mp3
drwxr-xr-x 5 acidtears acidtears 56 Aug 17 08:23 Wireless-NIC/
for an example : -rw-r—r-- in learning these permissions first of all we must divide them into the 3 parts i have just told you about -|rxw |r-- |r--
1 2 3
r : read
w : write
x : execute
in the same example we can notice easily that the user (1) can read (r) , write (w) and execute(x) where the group and others can only read (r)
to change these permissions we use the command line “ chmod “
we can do that using two methods
$chmod u -/+ rwx
$chmod g -/+ rwx
$chmod o -/+ rwx
user | group | others
r w x |r w x | r w x
4 2 1 0 0 1 4 2 0
then simply the command will be
$chmod 716 testfile
Enterprise resource planning systems (ERPs) are management information systems that integrate and automate many of the business practices associated with the operations or production aspects of a company.
The generally accepted purpose of Customer Relationship Management (CRM) is to enable organizations to better serve their customers through the introduction of reliable processes and procedures for interacting with those customers.
Compiere is the #1 Open Source ERP software application with fully integrated CRM software solutions. Compiere is a fully integrated business solution for small-to-medium enterprises worldwide. Compiere is based on business process rather then departmental boundaries.
-ggdb
"strip -S"
A list of steps by the application or a list of function calls lead to this situation.
Simply the memory of the application is being dumped to a file!
-ggdb
gdb <application> <core file> where
gdb <application> <pid> where
This is useful if the application is started via a script as openoffice and mozilla.
gdb foo set args bar zot r "When the crash happens: go back to the terminal, You might need to press C-C" where quit
break file.c:#
* How to generate a unified diff:
diff -Naur <orig> <modified> -N - Treat absent files as empty. -a - treat all files as text -u - Unified diff: -r - recursive
-X <file>
patch --dry-run -p# < patch --dry-run: Don't really modify files. -p#: strip # leading slashes from the files.
patch -R -R: Reverse.
cvs -d:pserver:anonymous@uniball.dyndns.org:/var/lib/cvs login export CVSROOT=":pserver:anonymous@uniball.dyndns.org:/var/lib/cvs" cvs login
cvs -d:pserver:anonymous@uniball.dyndns.org:/var/lib/cvs co projects/illigal or export CVSROOT=":pserver:anonymous@uniball.dyndns.org:/var/lib/cvs" cvs -z3 co projects/illigal
cvs -z3 update
cvs diff -u or cvs diff -u <file>
| Wednesday 2005-07-13 | Command line |
| Saturday 2005-07-16 | Introduction to python scripting, music applications |
| Tuesday 2005-07-19 | Introduction to Drupal session |
| Saturday 2005-07-23 | Mail servers |
| Saturday 2005-07-30 | web application security |
Ever wondered how many connections you have from each single IP ?
netstat -tn | grep :80 | awk '{print $5}' | sed -e 's/:.*//' | sort | uniq -c | sort -nr | head -n 25
Credits: raema
===
MSameer: I use:
netstat -nt|tr -s " "|cut -d \ -f 5|grep :|cut -d : -f 1|sort -n | uniq -c|sort -n
The intent behind the composition of this paper is to define a guiding framework for cooperative activity between the EOSBC and the Egyptian Linux Users' Group. Broadly speaking, four concepts will be tackled.
These are:
We will be focusing on Free and Open Source Software (FOSS) and not simply open source software for the simple reason that the `free as in beer' aspect is the most immediately beneficial to a developing nation such as Egypt due to its effect of lowering capital investment requirements.
Different segments of the market have different expectations of software and may require separate handling.
We will segment where relevant as follows:
There is no clear picture of the state of FOSS in Egypt at the moment. This lack of information is expended upon in section sub:Information. There are, however, subjective and highly unscientific yet nevertheless indicative observations upon which conclusions can be made.
There is no visible government policy either regarding or involving open source software. Not even a negative one; FOSS is simply not on the map. Contrast with emerging South American government policies stipulating open source software in government contracts.
There is no visible government sponsorship of FOSS development.
There is FOSS being employed in government, but it is spare and very invisible. An example is the meteorological service's work developing weather system models on Linux clusters.
It is probably more difficult to gauge FOSS status within the local enterprise and the business environment than in government. Let us try all the same.
It is a rarity to see job adverts in the Friday edition of Al Ahram1 requiring Linux experience.
Probably the most visible source of local linux knowledge is the LUG's website at http://linux-egypt.org. The frequency of discussion of enterprise-relevant topics there is very low. A possibly meaningless indicator, take it or leave it.
The LUG, the most prominent forum for Linux end users, claims under 1,500 members.Let us say that only 25% of the people who would register with this community are aware of its existence and did so. This makes for 6,000. It is unlikely that all 6,000 are even know what Linux is2. If 80% of people who registered knew what FOSS and Linux is, then this leaves 4,800 persons. Of these 4,800 persons, if 75% (a terribly optimistic figure) have actually tried Linux, this gives us 3,600 persons who know what FOSS is and have tried Linux. If 50% of people who try Linux stick with it, then we have gone down to 1,800 aware Linux users in Egypt. It makes no sense to assume this figure down any further; it is already low enough to reflect the state of adoption of Linux in Egypt.
In any case, it is indicative that the most visible Linux Users' Group in the country can only claim 20 to 40 active members at best.
This is probably the most significant factor hindering FOSS adoption in Egypt.
FOSS is quite simply not visible. End users do not know that there is such a thing as Mozilla/Firegoat. It gets worse; the concept of Internet Explorer as an independent entity which has alternatives is rare. This kind of misconception is not endemic to Egypt, but it is exacerbated by the almost absolute platform monoculture.
Similarly, there is the inability to separate the operating system from the physical hardware conceptually. Windows is the computer. This leads to charming notions such as Linux being something you install over windows.
Part of what has been generating awareness of FOSS as a viable alternative in Europe and North America has been the support of large companies, most notably IBM with their interesting Linux marketing ploys. This is not conducted here in Egypt, partially because the awareness problem extends into these companies. It is perhaps also felt that it is not worth pushing Linux in Egypt because the market is not there. Chicken and egg.
People, additionally, are deluded into thinking that what they have works. If the computer crashes, this is because computers crash and not because the OS is buggy. If Outlook is busy redistributing viruses, this is the virus author's fault and not the e-mail client architecture. If Exchange is a beast to set up, this is because e-mail servers are beasts.
People are not aware they have a choice because the alternative is not visible.
There is also a severe lack of awareness regarding the importance of the code being open.
Five primary misconceptions can be identified. Several of them are not specific to Egypt, but are mentioned nonetheless since they are factors.
They are, in no particular order:
The relative ease or difficulty of obtaining FOSS is a factor not only in deployment and adoption, but in visibility also. Let us assume that Linux is the most frequently sought after FOSS product.
Linux can be gotten either in physical media or through an internet download.
Physical media requires distribution points and these exist but are sparse and ill-advertised. There are perhaps two or three shops carrying Linux, but these are exceptions. The LUG maintains a distributors' list; this is a list of volunteers in various locations with contact information whom you can get in touch with to obtain copies of linux. Needless to say, even if this list were operating smoothly (it isn't) it is hardly a solution to the availability issue.
Internet downloads are not a solution in a country where telephone lines are not yet ubiquitous and where DSL is still in its infancy. One does not download the latest three-CD Mandrake distribution over dial-up.
See section sub:Improving-Access for a proposed solution.
Non-end user adoption of FOSS requires several things which don't exist.
The pool of available FOSS-skilled labor is too small3. If an enterprise is aware of, for example, the plentitude of excellent FOSS enterprise and business-class software and wishes to deploy one such item, it will most likely not be able to find someone to deploy and run such a thing. Proposed longer-term remedies are in section sub:Infrastructure-Building.
Additionally, there is no institution-backed liability coverage for FOSS, or it is not visible enough. The business will want a supplier to sue when the database eats all the historical data, and you do not get this when you download and install postgresql, for example. Of course, part of this is related to the business overestimating the extent to which existing software suppliers are willing to assume liability (covered in section sub:The-Liability-Myth).
This is primarily an issue at the government level and the development-oriented business. There is a strong impetus to export at the governmental level, and domestic software output is not exempt from this; there is the perception that FOSS means zero price, which is not true. One effect of the anticipated dominance of FOSS is the commodification of software which, when taken at face value, works against government efforts to boost revenue from software exports. In reality, this is far from certain; `exported software' could translate to programming tasks outsourced to Egypt which would make the development task an in-house affair and thus exempt from the GPL requirement for redistribution of code. In any case, this point is likely to be a complicated one to tackle.
The project must have measurable goals such that progress may be measured. This section is a list of proposed indicators to assess this.
Awareness is Achieved
Misconceptions are Educated Down to Acceptable Levels
The end user segment will be regarded as requiring no further action when: Availability is Ubiquitous
FOSS is either deployed to cover 85% of business needs for which a FOSS package exists which is at least equivalent to the most logical proprietary alternative, or plans to deploy to reach 85% are in place.
FOSS status within this segment of business is beyond the scope of this document.
Information is needed in several areas to better appreciate the status quo and to quantify progress made in this initiative to promote FOSS. These areas are:
A number of documents will be needed to be able to quantify some of the above-mentioned points.
Visibility is the key. Misconceptions cannot be handled before there is awareness, so this should be the key area of action.