The Pragmatic Programmer
From Journeyman to Master
Preface
- core process: taking a requirement and producing working, maintainable code that delights the user.
- QWAN - quality without a name. Don’t preach, just tell/do what works.
- pragmatic -> lat. (pragmaticus) -> greek “to do”.
- There are no easy answers There is no such thing as best solution, tool language or OS.
- You shouldn’t be weeded to any particular technology but have broad enough background and experience base to allow to choose good solution in any particular situation.
What Makes a Pragmatic Programmer?
- Early Adopter & Fast Adapter - instinct for technologies and techniques, love to try things out, grasp it quickly and integrate with the rest of the knowledge. Your confidence is born out of experience.
- Inquisitive - you tend to ask questions (TODO).
- Realistic - try to understand the underlying nature of each problem you face.
- Jack of all trades - always able to move on to new areas and new challenges.
TIP 1: care about your craft
TIP 2: Think! About your work. Think what you are doing while you’re doing it. Never run on autopilot. Constantly be thinking, critiquing your work in real time.
- Quarry workers’ creed: We who cut mere stones must always be envisioning cathedrals
- It’s a continuous process. Kaizen: continuously making many small improvements. Every day work to refine the skills you have and add new tools to your repertoire.
Chapter 1. A Pragmatic Philosophy
The Cat Ate My Code
- The greatest of all weaknesses is the fear of appearing weak
- Take responsibility. In addition to your personal best you must analyze the situation for risks that are beyond your control
TIP 3: Provide options, don’t make lame excuses
Software Entropy
- One broken window, left unrepaired for any substantial length of time, instills in the inhabitants of the building a sense of abandonment. A sense that the powers that be don’t care about the building -> littering, graffiti -> structural damages -> a sense of abandonment becomes reality.
- Don’t leave “broken windows”: bad designs, wrong decisions, poor code. Fix as soon as you discover. If you don’t have the time to fix properly board it up (TODO, XXX …).
Putting out fires
- If you find yourself working on a project with a few broken windows it’s all to easy to just follow suit. By the same token, if you find yourself in a project where the code is beautiful, you’ll likely take extra care not to mess it up.
- TODO: Help strengten your team by surveying your company “neighborhood”. Choose two or three broken windows and discuss with colleagues what the problems are and what can be done to fix them.
Stone Soup and Boiled Frogs
- It’s easier to ask for forgiveness than to get permission
- Stone Soup parable: People find it easier to join an ongoing success. Show them a glimpse of the future and you’ll get them to rally around. Let them dream. “This can be added later” - in case they lack something.
TIP 5: Be a catalyst for change.
TIP 6: Remember the big picture. Don’t be like the frog (Boiled Frog that doesn’t notice the gradual change in it’s environment). Constantly review what’s happening around you and not only what you are personally doing.
Good Enough Software
- Doesn’t mean sloppy or poorly produced code. All systems must beet their users’ requirements to be successful.
- Involve your users in the trade-off
- Remember it’s equally unprofessional to promise an improbable time scale and to cut base engineering corners to meet a deadline.
TIP 7: Make Quality a Requirements Issue
- Know when to stop: don’t spoil a perfectly good program by overembellishment or over-refinement. Example: OS producers ship even though they know their SW is not perfect and will have patches in future.
Your Knowledge Portfolio
- Your knowledge and experience are your most important - and expiring - assets.
- Invest regularly, as a habit.
- Diversify. Know the ins and outs of the particular technology you are working with ATM. Don’t stop there
- Manage risks. Don’t put all your technical eggs in one basket.
- Buy low, sell high. Learn emerging technologies before they become popular.
- Review and balance.
TIP 8: Invest Regularly in Your Knowledge Portfolio
Goals:
- TODO: Learn at least one new language each year
- TODO: Read a technical book each quarter. Then each month.
- Read non-technical books too.
- TODO: Take classes.
- Participate in local user groups.
- TODO: Experiment with different environments, tools, technologies.
- TODO: Stay current - subscribe to trade magazines and other journals
- Get wired
Critical Thinking: never underestimate the power of commercialism. Just because a search engine lists a hit first it doesn’t mean it’s the best match.
TIP 9: Critically Analyze What You Read and Hear.
- TODO: Challenge: Get out and talk technology with people who aren’t involved in your current project or don’t work in your company.
Communicate!
- Having the best ideas, the finest code, or the best pragmatic thinking is ultimately sterile unless you can communicate w. other people. A good idea is an orphan without effective communication.
Know What You Want To Say
- probably the most difficult part of the more formal styles of communication in business is working out exactly what is it you want to say.
- Plan what you want to say. Write an outline. The ask yourself: “Does this get around whatever I’m trying to say?” Refine until it does
Know Your Audience
-
You need to understand the needs, interests and capabilities of your audience.
-
Communicating vs. talking, which is annoying. Annoy - from old french “enui” (means also “to bore”).
-
Wisdom acrostic:
|W|hat do you want them to learn? What is their |i|nterest in what you've got to say? How |s|ophisticated are they? How much |d|etail do they want?
Whom do you want to |o|wn the information? How can you |m|otivate them go listen to you?
-
By making the appropriate pitch to each group, you’ll get them all excited about your project.
Choose Your Moment: Sometimes all it takes is the simple question: “Is this a good time to talk about …?”
Choose Your Style - format / just the facts / … suit it your audience.
Make It Look Good: Any chef will tell you that you can slave in the kitchen for hours only to ruin your efforts with poor presentation.
Involve Your Audience: If possible, involve your readers with early drafts of the document. Get their feedback and pick their brains.

- Encourage people to talk by asking questions or have them summarize what you tell them.
- Turn the meeting into a dialogue and you’ll make your point more efficiently.
Go Back to People: Always respond to e-mails and voice mails, even if your response only says “I’ll get back to you later”.
TIP 10: It’s both, what you say and the way you say it.
- The more effective the communication, the more influential you become.
- Mails:
- Proofread before you send.
- Check the spelling.
- Keep the format simple.
- Minimize quoting.
- Organize and archive them.
Chapter 2. Pragmatic Approach
The Evils of Duplication
- Knowledge isn’t stable. It changes rapidly -> we spend large part of our times in maintenance mode. Programmers are constantly in maintenance mode.
- It’s easy to duplicate knowledge in specifications, processes and programs -> maintenance nightmare.
- DRY principle: Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.
TIP 11: DRY
-
Mitigations
- code generators. The trick is to make the process active, not a one time conversion which would be duplicating data again.
- Documentation in code: untrustworthy comments are worse than no comments at all.
- Whatever the situation, avoid unnormalized data.
-
Shortcuts make for longer delays
-
Hardest type of duplication occurs between different developers on a project
- frequent communication
- appoint a librarian
TIP 12: Make it Easy to Reuse
Orthogonality
- Two or more thing are orthogonal if changes in one do not affect any of the others.
- Nonorthogonal systems are more complex to change and control. In such a system there is no thing as a local fix.
TIP 13: Eliminate Effects Between Unrelated Things
- write small, self-contained components
- promote reuse. Components have specific, well-defined responsibilities.
- If two components are not orthogonal, there will be overlap and the result will be less. You get more functionality pre unit effort by combining orthogonal components.
- Orthogonal approach reduces risk - diseased sections of code are isolated and it’s easier to slice something out and transplant something new and healthy -> less fragile system, easier testing, less tightly coupling.
- Same applies for Project Teams. If there is a lot of overlap, there is confusion about responsibilities. Every change needs a meeting of the entire team, because any one of them might be affected.
- If I dramatically change the requirements behind a particular function, how many modules are affected? In an orthogonal system, the answer should be “one”.
- Don’t rely on properties of things you can’t control.
Coding
- Write shy code. Modules that don’t reveal anything unnecessary to other modules. If you need to change an object’s state, get the object to do it for you.
- Law of Demeter
- Avoid global data
- Be careful with singletons - they can also lead to unnecessary linkage.
- Avoid similar functions.
- Refactor - look for any opportunities to reorganize your code to improve it’s structure and orthogonality.
- every module should have unit tests and that tests should be performed automatically as part of the build process
Reversibility
- Critical decision aren’t easily reversible.
- If you really abstracted the idea of a [database] out - to the point where it simply provides [persistence] as a service - then you have the flexibility to change horses in midstream.
- Instead of caring decisions in stone, think of them as being written in the sand at the beach. A big wave can come along and wipe them out at any time. (Flood, Sand Mandala)
TIP 14: There Are No Final Decisions
- Architecture: Whatever mechanism you use, make it reversible.
Tracker Bullets (Agility)
- Like gunners, you’re trying to hit a target in the dark. Dealing with lack of knowledge, experience … The classic response is to specify the system to death. One big calculation, then shoot and hope.
- Code That Glows in the Dark: we’re looking for something that gets us from requirement to some aspect of the final system quickly, visibly, and repeatably.
TIP 15: Use Tracer Bullets to find the Target
- Tracer code is not disposable. It contains all the error checking, structure, documentation … that any piece of production code has. It is simply not fully functional.
- Tracer development is consistent wit the idea that a project is never finished. There will be always changes required and functions to add. It is an incremental approach.
- Advantages
- Users get to see something working early. You have something to demonstrate.
- Developers build a structure to work in.
- You have an integration platform.
Tracer Code vs. Prototyping
- Prototype = reconnaissance and intelligence. With a prototype you are aiming to explore specific aspects of the final system. A true prototype will be always thrown out and you recode the system properly applying the lessons you’ve learned.
- Tracer code is lean but complete. Forms the skeleton of the final system. Helps you to know how the application as a whole hangs together.
Prototypes and Post-it Notes
- What to investigate with a prototype? Anything that carries risk. Anything unproven, experimental, doubtful.
- Prototyping is a learning experience. Its value is in the lessons learned, not in the code produced.
- Make absolutely clear, that the code is disposable, incomplete and unable to be completed. If not possible to convey, use tracer coding instead.
TIP 16: Prototype to learn
- When prototyping, you can ignore correctness, completeness, robustness, style.
- Prototyping architecture: what you’re looking for is how the system as a whole hangs together, again deferring details.
Domain Languages
The limits of language are the limits of one’s world. – Ludwig von Wittgenstein
- The language of the problem domain might also suggest a programming solution.
- DSL - you’re giving yourself a tool that let’s you work close to the problem domain (tetX, ply, TTTech’s code generator). By coding at a higher level of abstraction, you’re free to concentrate on solving domain problems and you can ignore implementation details.
TIP 17: Program Close to the Problem Domain
- If you are writing in the problem domain, report problems in terms the user can understand (perform domain specific validation).
- Most applications exceed their expected lifetimes. In most cases you just might be better of adopting a more complex and readable language up front. The initial effort will be repaid many times in reducing support and maintenance costs.
Estimating
TIP 18: Estimate to Avoid Suprises
- The units you use a make a difference in the interpretation of the result (130 days vs about 6 months).
- Basic estimating trick: always ask somebody who’s already done it first.
- Understand What’s Being Asked: make it a habit to think about the scope before starting to guess.
- You’ll often find yourself basing an estimate on other subestimates. That’s where the largest errors come from.
- The only way to determine the timetable for a project is gaining experience on the same project.
TIP 19: Iterate the Schedule with the Code
- What to Say when Asked for an Estimate: I’ll get back to you
Chapter 3: The Basic Tools
- Tools amplify your talent
- Keep the basic tool set sharp and ready to use.
The Power of Plain Text
- Your base material isn’t wood or iron, it’s knowledge. Best format format for storing knowledge persistently is plain text. It gives the ability to manipulate knowledge, both manually and programmatically, using any tool at our disposal.
- The problem with most binary formats is that they divorce data from its meaning.
TIP 20: Keep Knowledge in Plain Text
- Larger and slower vs. Insurance against obsolescence, VCS + diff, easier testing.
- Human readable forms of data, and self-describing data, will outlive all other forms of data and applications that created them. Period
- Difference between human readable and human understandable.
Shell Games
- For a programmer manipulating files of text, the workbench is the command shell.
- Doing all the work using GUIs, you’ll miss the full capabilities of your environment. WYSIWYG - what you see is what you get. What you see is all you get.
TIP 21: Use the Power of Command Shells
Power Editing
- One Editor - better know one editor well and use it for all editing tasks.
- Editor Requirements: configurable, extensible, programmable.
- Automation: For anything you find yourself doing repeatedly, develop a set of macros (or equivalent) to handle it.
- Try to accomplish any given editing task in as few keystrokes as possible.
Source Code Control
- Those who cannot remember the past are condemned to repeat it.
TIP 23: Always Use Source Code Control
Debugging
- modern computers are still limited to doing what you tell them to do, not necessarily what you want them to do.
- In the technical area, you want to concentrate on fixing the problem, not the blame. It doesn’t really matter whether the bug is your fault or someone’s else. It is still your problem.
TIP 24: Fix the Problem, Not the Blame
A Debugging Mindset
- The easiest person to deceive is one’s self
TIP 25: Don’t Panic
- Before you start looking for the bug, make sure to turn on the highest level of warnings and that the code compiles cleanly without any warnings.
- You must brutally test both the boundary conditions and realistic end-user usage patterns.
- Tracing: debuggers fous on the state of the program now. Tracing helps you see what happened in the past.
- Rubber ducking - explaining the cause of a problem to someone else - helps (you to see, what you’ve taken for granted).
TIP 26: select() Isn’t Broken
- Binary search: if you have no obvious place where to start looking from.
TIP 27: Don’t Assume It - Prove it
- If the bug is the result of bad data propagated through a couple of levels before causing the explosion, see if better parameter checking in those routines would have isolated it earlier.
- While you’re at it, see if there are ny other places susceptible to this same bug. If so, fix them now.
- Debugging Checklist
- bug or merely a symptom
- Is the bug really in the compiler? In the OS? Or is it in your code?
- If you explained this problem in detail to a coworker, what would you say?
- If the suspected code passes its unit tests, are the tests complete enough? What happens if you run them with this data?
- Do the conditions that caused this bug exist anywhere else in the system?
Text Manipulation
TIP 28: Learn a Text Manipulation Language
- perl, ruby, awk, sed, python, tcl…
Code Generators
- Take away complexity and reduce the chances of making mistakes, leaving the craftsman free to concentrate on quality. Just like woodworkers using a template when producing the same thing over and over.
TIP 29: Write Code That Writes Code
- Passive code generators are run once to produce a result. From that point forward, the result becomes freestanding. They save typing, they are basically parametrized templates.
- Active code generators run each time their result is required. While passive generators are a simple convenience, active ones are necessity if you want to follow DRY principle.
- Whenever you need to get two disparate environments working together, consider using active code generators.
Chapter 4.
Design by Contract
- A contract defines your rights and responsibilities, as well as those of the other party. In addition, there is an agreement concerning repercussions if either party fails to abide the contract.
- DBC: if all the routine’s preconditions are met by the caller, the routine shall guarantee that all postconditions and invariants will be true when it completes.
TIP 31: Design with Contracts
- Remember, if your contract indicates that you’ll accept anything and promise the world in return, then you’ve got a lot of code to write!
- Liskov Substitution Principle: Subclasses must be usable through the base class interface without the need for the user to know the difference.
- Even w/o automatic checking (Eifell), you can put contract in the code as comments. If nothing else, the commented contracts give you a place to start looking when trouble strikes.
- It’s much easier to find and diagnose the problem by Crashing Early, at the site of the problem.
- If DBC is so powerful, why isn’t it used more widely? Is it hard to come up with the contract? Does it make you think about issues you’d rather ignore for now? Does it force you to THINK? Clearly, this is a dangerous tool!
Dead Programs Tell No Lies
- Sometimes other people can detect things aren’t well with you before you yourself are aware of the problem. It’s the same with other people’s code.
- It’s easy to fall into “it can’t happen” mentality.
TIP 32: Crash Early
- When your code iscovers that something that was supposed to be impossible just happened, your program is no longer viable. Anything it does from this point forward becomes suspect, so terminate it as soon as possible. A dead program does a lot less damage than a crippled one.
Assertive Programming
There is a luxury in self-reproach. When we blame ourselves we feel no one else has a right to blame us. – Oscar Wilde, The Picture of Dorian Gray
TIP 33: If it Can’t Happen, Use Assertions to Ensure That it Won’t
- Assertions can be turned off -> never put code that must be executed into an assert.
- Assertions don’t replace real error handling. They check for things that should never happen.
- Your first line of defense is checking for any possible error, and your second is using assertions to try to detect those you’ve missed.
- Even if you do have performance issues, turn off only those assertions that really hit you.
- “Heisenbug” - debugging that changes the behaviour of the system being debugged.
When to Use Exceptions
- “Will this code still run if I remove all the exception handlers?” If the answer is “no”, then maybe exceptions are bing used in nonexceptional circumstances.
TIP 34: Use Exceptions for Exceptional Problems
- exceptions represent a kind of cascading goto -> spaghetti code -> maintainability problems.
How to Balance Resources
TIP 35: Finish What you Start
- the routine or object that allocates a resource should be responsible for deallocating it.
- Nest Allocations
- Deallocate resources in the opposite order to that in which you allocate them. (stack)
- When allocating the same set of resources in different places in your code, always allocate them i the same order. This will reduce the possibility of deadlock.
- Balancing and Exceptions: finally.
- Checking the Balance: it is a good idea to build code that actually checks that resources are indeed freed appropriately. For most applications, this normally means producing wrappers for each type of resource, and using these wrappers to keep track of all allocations and deallocations.
Chapter 5. Bend or Break
- we need to make every effort to write code that’s as loose - as flexible - as possible.
Law of Demeter
Good fences make good neighbours – Robert Frost, “Mending Wall”
- Write “shy” code: a) don’t reveal yourself to others b) don’t interact with too many people.
- Spies, dissidents, revolutionaries are organized into small groups of cells. Organize your code into cells and limit the interaction between them. If one module get’s compromised and has to be replaces, the other modules should be able to carry on.
- When we ask an object for a particular service, we’d like the service to be performed on our behalf. We do not want the object to give as a third-party object that we have to deal with to get the required service (general contractor - house construction).
- Rather than digging through a hierarchy yourself, just ask what you need directly.
- Law of Demeter: any method of an object should call only methods belonging to a) itself b) any parameters that were passed in to the method c) any objects it created d) any directly held component objects
TIP 36: Minimize Coupling Between Modules
Metaprogramming
No amount of genius can overcome a preoccupation with detail – Levy’s Eight Law
- Make our code highly configurable and soft - i.e. easily adaptable to changes.
- Items (middleware, DB, algorithms …) should be implemented as configuration options, not through integration or engineering.
TIP 37: Configure, Don’t Integrate
- Use metadata that describes the application. Our goal is to think declaratively (and specifying what is to be done, not how - e.g. DI). Program for the general case, and put specifics somewhere else - outside the compiled code base.
TIP 38: Put Abstractions in Code Details in Metadata
- We want to defer definition of most details until the last moment
- Configure business logic by writing rules, not cutting code. Less complex logic can be expressed using a mini-language.
- Software that adapts itself to its environment
- Without medatadata, your code is not as adaptable or flexible as it could be.
Temporal Coupling
- Workflow: find out what can happen at the same time, and what must happen in strict order. Think line in workflow diagrams is called synchronization bar.
TIP 39: Analyze Workflow to Improve Concurrency TIP 40: Design Using Services
- Instead of components, we have really created services - independent, concurrent objects behind well-defined, consistent interfaces.
- Design for Concurrency: with linear code, it’s easy to make assumptions that lead to sloppy programming (programming by coincidence). But concurrency forces you to think through things a bit more carefully - you’re not alone at the party anymore. To begin with, any global or static variables must be protected from concurrent access.
TIP 41: Always Design for Concurrency
- By architecting your system as independent services, you can make the configuration dynamic as well.
- Going the other way (try to add concurrency to a non-concurrent app) is much harder.
It’s Just a View
- A good definition of a module (or class) is that it has a single, well-defined responsibility.
- Using events to minimize coupling between objects - so they don’t need to know much about each other. The sender doesn’t even have to have explicit knowledge of the receiver. There can be even multiple receivers.
- Publish/Subscribe. Use this mechanism to separate the views from the model. This is one of the most important ways of maintaining reversibility.
TIP 42: Separate Views from Models
Blackboards
- Consider how detectives might use a blackboard to coordinate and solve a case.
- A blackboard system let’s us decouple our objects from each other completely, providing a forum where knowledge consumers and producers can exchange data anonymously and asynchronously.
- methods:
- read (retrieve data from space)
- write (put item into the space)
- take (retrieve and remove an item from the space)
- notify (set up a notification to occur whenever an object is written that matches the template)
- On large cases, the blackboard may become cluttered -> partition.
TIP 43: Use Blackboard to Coordinate Workflow
- We can use the blackboard to coordinate disparate facts and agents, while still maintaining independence and even isolation among participants.
Chapter 6. While You Are Coding
- Developers who don’t actively think about their code are programming by coincidence - the code might work, but there’s no particular reason why. Avoid programming by coincidence - relying on luck an accidental success - in favour of programming deliberately.
- For code you write that others will call, the basic principles of good modularization and of hiding implementation behind small, well-documented interfaces can al help. For routines you call, rely only on documented behaviour.
- Assumptions that aren’t based on well-established facts are the bane of all projects.
TIP 44: Don’t Program by Coincidence
How to Program Deliberately
- Always be aware of what you are doing.
- Don’t code blindfolded. Attempting to build an application you don’t fully understand, or to use a technology you aren’t familiar with.
- Proceed from a plan.
- Rely only on reliable things. Don’t depend on accidents or assumptions. If you can’t tell the difference in particular circumstances, assume the worst.
- Document your assumptions.
- Write an assertion to test your assumptions.
- Prioritize your effort. Spend time on important aspects.
- Don’t let existing code dictate future code. All code can be replaces if no longer appropriate. Refactoring assumption: the impact will be less than the cost of not making the change.
Algorithm Speed
- Normally, the size of the input will affect the algorithm, the larger the input, the longer the running time or the more memory used. Most significant algorithms are not linear.
- If you write Loops or recursive calls, check subconsciously for runtime and memory requirements.
- O() Notation. Worst-case time. Upper bound. It is convention to remove from it all low-order terms and do not bother showing any constant multiplying factors. O(n2/2+3n) -> O(n2/2) -> O(n**2)
- Things start getting out of hand quickly once we get over O(n**2):
O(1)
constantO(lg(n))
Logarithmic (binary) search (Binary chop).O(n)
linearO(n lg(n))
not too much worse than linear (quicksort, heapsort). Divide and Conquer.O(n**2)
square lawO(n**3)
cubicO(C**n)
exponential (Traveling salesman problem). Combinatoric( e.g. 5!) -> use heuristics.
TIP 45 Estimate the Order of Your Algorithms
- After all this estimating, the only timing that counts is the speed of your code, running in production environment, with real data.
TIP 46: Test Your Estimates
- Danger of premature optimization: make sure an algorithm is really a bottleneck before you invest previous time improving it.
Refactoring
- Rather than construction, software is more like gardening - more organic than concrete. You plant things in your garden according to an initial plan, then you constantly monitor the health of the garden, making adjustments as needed. Things that don’t work out as planned need to be weeded / pruned.
- When refactor? Don’t hesitate - there is no time like the present. Common reasons: Duplication, non-orthogonal design, outdated knowledge, performance.
- Refactoring - like surgery, take it out now or let it grow and deal with major trouble.
TIP 47: Refactor Early, Refactor Often
- Don’t try to refactor and add functionality at the same time.
- Make sure you have good tests before you begin refactoring.
- Take short, deliberate steps so you avoid prolonged debugging.
Code That’s Easy to Test
- Chips are designed to be tested, not just at the factory, not just when they are installed, but also in the field when they are deployed. Like our HW colleagues we need to build testability into SW from the very beginning, test each piece thoroughly before trying to wire them together.
- Think of unit testing as testing against contract. We want to write test cases that ensure that a given unit honors its contract.
- Pass in value that is to be rejected, pass in boundary values that are still to be accepted. Pass in correct values.
- Testing requires you to test subcomponents of a module first. Once the subcomponents have been verified, then the module itself can be tested.
TIP 48: Design To Test
- When you design a module, or even a single routine, you should design both its contract and the code to test that contract. By designing code to pass a test and fulfill its contract, you may well consider boundary condition and other issues that wouldn’t occur to your otherwise.
Writing Unit Tests
- Make the test code readily accessible.
- Providing unit tests isn’t enough. You must run them and run them often.
- At the end of the debugging session you need to formalize the adhoc test. If the code broke once, it is likely to break again. Don’t throw away the test you created; add it to the existing uni tests.
- Testing is more cultural than technical.

Chapter 7. Before the Project
- no method can replace thinking
The Requirements Pit
- Requirements rarely lie on the surface. Normally, they’re buried deep beneath layers of assumptions, misconceptions, and politics.
TIP 51: Don’t Gather Requirements - Dig for Them
Digging for Requirements
- gathering requirements leads to a system that is well factored to support metadata.
- It’s important to discover why the users do a particular thing, rather than just how they do it. Documenting this reasons will give your team invaluable information when making daily implementation decisions.
- Become a user. Request: “May I sit i for a week while you do your job?”
- Management will give you one view of how things operate, but when you get down on the floor, you’ll find a very different reality - one that will take time to assimilate.
TIP 52: Work with a User to Think Like a User
Documenting Requirements.
- Sometimes, the Interface Is the System. While slavishly duplicating what already exists doesn’t allow for progress, we must be able to provide a transition for future.
- Using a formal template as an aide-memoire.
- Use Case Diagrams: Don’t be a slave to any notation, use whatever method best communicates the requireements with your audience.
Overspecifying
- good requirements document remain abstract. Where requirements are concerned, the simplest statement that accurately reflects the business need is the best.
- Requirements are not architecture. They are not design, nor are they not user interface. Requirements are need.
- See further
TIP 53 Abstractions Live Longer than Details
Just One More Wafer-Thin Mint
- The key to managing growth of requirements is to point out each new feature’s impact on the schedule to the project sponsors.
Maintain a Glossary
- Create and maintain a project glossary. All participants in the project, from end user to support staff, should use the glossary to ensure consistency.
TIP 54 Use a Project Glossary
- It’s very hard to succeed on a project where users and developers refer to the same thing by different names, or even worse, refer to different things by the same name.
- Get the Word Out - have your requirements in the WWW and make sure they are accessible all the project folks.
Solving Impossible Puzzles
- The secret to solving the puzzle is to identify the real (not imagined) constraints and find a solution therein. Think outside of the box encourages us to recognize constraints that might not be applicable and to ignore them.
TIP 55: Don’t think Outside of the Box - Find the box
- Categorize and prioritize your constraints. When woodworkers begin a project, they cut the longest pieces first, then cut the smaller pieces out of the remaining wood. In the same manner, we want to identify the most restrictive constraints first, and fir the remaining constraints within them.
There Must Be an Easier Way!
- Is there an easier way?
- Are you trying to solve the right problem, or have you been distracted by a peripheral technicality?
- Why is this thing a problem?
- What is it that’s making it so hard to solve?
- Does it have to be done this way?
- Does it have to be done at all?
All you need are the real constraints, the misleading constraints, and the wisdom to know the difference.
Not Until You are Ready
He who hesitates is sometimes saved. – James Thurber, The Glass in the Field
- Great performers share a trait: they know when to start and when to wait
TIP 56: Listen to Nagging Doubts - Start When You’re Ready
- Software development is still not a science. Let your instincts contribute to your performance.
- Choose an area that you feel will be difficult and begin producing some kind of proof of a concept.
The Specification Trap
TIP 57: Some Things Are Better Done than Described
- specification and implementation are simply different aspects of the same process - an attempt to capture and codify requirement. Let there be no artificial boundaries. A healthy development process encourages feedback from implementation and testing into the specification process.
- The longer you allow specifications to be security blankets, protecting developers from the scary world of writing code, the harder it will be to move on to hacking your code out. Look at prototyping, consider a tracer bullet development (agile).
- Sometimes a picture is worth more than any number of words. Sometimes it is worthless.
Circles and Arrows
-
Blindly adopting any technique without putting it into the context of your development practices and capabilities is a recipe for disappointment.
TIP 58: Don’t Be a Slave to Formal Methods
-
Shortcomings:
- We prefer to show the user a prototype and let him play with it instead of basing everything on designers’ explanations.
- Formal methods encourage specialization. We prefer to understand the whole system we’re working on.
- We like to write adaptable, dynamic systems using metadata to allow us to change the character of application at runtime.
-
Never underestimate the cost of adopting new tools and methods. Be prepared to treat the first projects as a learning experience.
-
Never become a slave to a methodology: circles and arrows make poor masters.
TIP 59: Expensive Too Do Not Produce Better Designs
- If you come across a project where the philosophy is “the class diagram is the application, the rest is mechanical coding,” you know you’re looking at a waterlogged project team and long paddle home.
Chapter 8. Pragmatic Projects
Pragmatic Teams
- No Broken Windows: Quality is a team issue. Teams as a whole should not tolerate broken windows - those small imperfections no one fixes. Some teams have a quality officer - ridiculous.
- Boiled Frogs: Maybe appoint a chief water tester. Have this person check constantly for increased scope, decreased time scales, additional features, new environments - anything that wasn’t in the original agreement. Keep the metrics on new requirements. The team need not reject changes out of hand - you simple need to be aware that they’re happening. Otherwise you’ll be in hot water.
- Communicate: great project teams have a distinct personality. Generate a brand.
- DRY: some teams appoint a member as the project librarian.
- Orthogonality: the closer to the user you’re allowed, to more senior you are. Programmes who are two or three levels from the actual user are unlikely to be aware of the context in which their work will be used.
TIP 60: Organize Around Functionality, Not Job Functions
- Divide your people into small teams, each responsible for a particular functional aspect of the final system. Let the teams organize themselves internally.
- Cohesive, largely self-contained teams of people - exactly the same criteria we should be using when we modularize code. If the user suddenly decides to change DB vendors, only the DB team should be affected.
- This all required responsible developers and strong project management. Project needs at least two “heads” - one technical, one administrative. The technical one sets the development philosophy and style, assigns responsibilities to teams and arbitrates inevitable “discussions” between people. The technical head also constantly looks at the big picture, trying to reduce orthogonality of the common effort. The PM, schedules resources the team needs, monitors and reports the progress and helps decide priorities in terms of business needs. The administrative head acts also as the team’s ambassador when communicating with the outside world.
- Larger projects might also need a librarian who indexes and stores code and docs and a tool builder (devops) - ensure that things get automated.
- Know When to Stop Adding Paint: give just enough structure and support and ensure that the project delivers against the requirements.
Ubiquitous Automation
Civilization advances by extending the number of important operations we can perform without thinking. – Alfred North Whitehead
- We want to ensure consistency and repeatability on the project. Manual procedures leave consistency up to chance
All on Automatic
TIP 61: Don’t Use Manual Procedures
- Cron, Makefile, Build automation (CI/CD)
Automatic Administrivia
- memory is the second thing you lose as you age. Our goal is to maintain, unattended content-driven workflow.
- Any information generated by the nightly build should be accessible on the development Web site.
- Look at your habits throughout the workday. Do you see any repetitive tasks. Do you type the same sequence of commands over and over again?
Ruthless Testing
- We are driven to find out bugs now, so we don’t have to endure the shame of others finding out bugs later
TIP 62: Test Early. Test Often. Test Automatically.
- Start testing as soon as you have code.
- Tests that run with every build are much more effective than test plans that sit on a shelf.
- The earlier a bug is found ,the cheaper it is to remedy. “Code a little, test a little”.
- A good project might have well more test code than production code.
TIP 63: Coding Ain’t Done ‘Til All the Tests Run
- code is never really done. More importantly, you can’t claim that it is usable by anyone until it passes all the available tests.
- With good contracts in place and well tested, any integration issues can be detected easily. Otherwise, integration becomes a fertile breeding ground for bugs. In fact, it is often the single largest source of bugs in the system.
- Failure to meet usability criteria is as big a bug as dividing by zero. You need to perform usability testing as soon as you can, while there is still time to make corrections.
Design/Methodology Testing
- Lines of code
- McCabe Cyclomatic Complexity Metric (measures complexity of decision structures)
- Inheritance fan-in (number of base classes) and fan-out (number of derived modules using this one as a parent)
- Response set (see Decoupling and the Law of Demeter). One of the many advantages of writing decoupled code is more modular testing.
- Class coupling ratios
TIP 64: Use Saboteurs to Test Your Testing
- After you’ve written a test to detect a particular bug, cause the bug deliberately and make sure the test complains.
TIP 65: Test Sate Coverage, Not Code Coverage
- Even with good code coverage, the data you use for testing still has a huge impact, and more importantly, the order in which you traverse code might have the largest inpact of all.
Tightening the Net
- If a bug slips through the net of existing tests, you need to a add a new test to trap it next time
TIP 66: Find Bugs Once
- Once a human tester finds a bug, it should be the last time a human tester finds that bug.
It’s All Writing
The palest ink is better than the best memory. – Chinese Proverb
- embrace documentation as an integral part of the overal development process.
TIP 67: Treat English as Just Another Programming Language
- All documentation is a mirror of the code. If there is a discrepancy, the code is what matters.
TIP 68: Build Documentation In, Don’t Bolt it On
Comments in Code
- too many comments are as just bad as too few.
- Comments should explain why something is done, its purpose and its goal. The code already show the how - DRY. Document anything that is not obvious.
- Remember that you and others after you will be reading the code many hundreds
times, but writing it only a few times. Take the time to spell out
connectionPool
instead ofcp
. - Names are deeply meaningful to your brain, and misleading names can add chaos to your code.
- One of the most important pieces of information that should appear in the source file is the author’s name - not necessarily who edited the file last, but the owner.
Print It or Weave It
- Documentation of any form is just a snapshot. Try to produce all documentation in a form that can be published online, on the Web, complete with hyperlinks. Put a date stamp or version number on each Web page.
- Documentation and code are two different views of the same underlying model, but the view is all that should be different.
- Sometimes it is uncomfortable to document the design of source code because the design isn’t clear in your mind; it’s still evolving. You don’t feel that you should waste effort describing what something does until it actually does. Does this should like programming by coincidence?
Great Expectations
- the success of a project is measured by how well it meets the expectations of its users.
TIP 69: Gently Exceed Your Users’ Expectations
- As your understanding of their needs develops, you’ll find areas where their expectations cannot be met, or where their expectations are perhaps too conservative. Parto f your role is to communicate this.
- Some easy things that make users happy:
- Tooltips
- Keyboard shortcuts
- Quick reference guide as a supplement to user’s manual
- Colorization
- A splash screen customized for the organization of the customer
- Ability to run multiple versions of the system for training
Pride and Prejudice
- Don’t shirk from responsibility. Instead , we rejoice in accepting challenges and making our expertise well known. If we are responsible for a design, or a piece of code, we can do a job we can be proud of.
TIP 70: Sign Your Work
- Anonymity, especially on large projects, can provide a breeding ground for sloppiness, mistakes, sloth and bad code.
- While the code must be owned, it doesn’t have to be owned by an individual.
- People should see your name on a piece of code and expect it to be solid, well written, tested, and documented


{% load avatar_tags %}
Each participant has a profile on the Kukui Cup website. You can personalize yours right now and get 5 points immediately!
{{ form.display_name.help_text }}


Settings
Send Feedback
License
Sign Out
User Profile
Terms
DELETE
Delete
Are you sure you want to delete your account?
CANCEL
DELETE


| Version | Architecture | Interface | Version | Comment |
|---|---|---|---|---|
| For automatic update and easiest installation, enable MediaArea softwares repository for CentOS search for "MediaInfo" in your package manager or "yum install mediainfo-gui" (for GUI) or "yum install mediainfo" (for CLI) |
Activate MediaArea Repository | |||
| EPEL distribution packages (Starting from CentOS 6) search for "MediaInfo" in your package manager or "yum install mediainfo-gui" (for GUI) or "yum install mediainfo" (for CLI) |
How to install CentOS EPEL | |||
| 7 | x86_64 | GUI | v0.7.96 | requires libmediainfo |
| CLI | v0.7.96 | requires libmediainfo | ||
| libmediainfo | v0.7.96 (devel, doc) | requires libzen | ||
| libzen | v0.4.35 (devel, doc) | |||
| wxGTK | v2.8.12 (devel) | home made version, use your own version if possible | ||
| ppc64 | Check RHEL releases. | |||
| 6 | x86_64 | GUI | v0.7.96 | requires libmediainfo |
| CLI | v0.7.96 | requires libmediainfo | ||
| libmediainfo | v0.7.96 (devel, doc) | requires libzen | ||
| libzen | v0.4.35 (devel, doc) | |||
| wxGTK | v2.8.12 (devel) | home made version, use your own version if possible | ||
| i686 | GUI | v0.7.96 | requires libmediainfo | |
| CLI | v0.7.96 | requires libmediainfo | ||
| libmediainfo | v0.7.96 (devel, doc) | requires libzen | ||
| libzen | v0.4.35 (devel, doc) | |||
| wxGTK | v2.8.12 (devel) | home made version, use your own version if possible | ||
| 5 | x86_64 | GUI | v0.7.96 | requires libmediainfo0 |
| CLI | v0.7.96 | requires libmediainfo0 | ||
| libmediainfo0 | v0.7.96 (devel, doc) | requires libzen0 | ||
| libzen0 | v0.4.35 (devel, doc) | |||
| wxGTK | v2.8.12 (devel) | home made version, use your own version if possible | ||
| i686 | GUI | v0.7.96 | requires libmediainfo0 | |
| CLI | v0.7.96 | requires libmediainfo0 | ||
| libmediainfo0 | v0.7.96 (devel, doc) | requires libzen0 | ||
| libzen0 | v0.4.35 (devel, doc) | |||
| wxGTK | v2.8.12 (devel) | home made version, use your own version if possible | ||
| 4 | x86_64 | GUI | v0.7.26 | requires libmediainfo0 |
| CLI | v0.7.26 | requires libmediainfo0 | ||
| libmediainfo0 | v0.7.26 | requires libzen0 | ||
| libzen0 | v0.4.10 | |||
| i686 | GUI | v0.7.26 | requires libmediainfo0 | |
| CLI | v0.7.26 | requires libmediainfo0 | ||
| libmediainfo0 | v0.7.26 | requires libzen0 | ||
| libzen0 | v0.4.10 |


1. Hold Thou my hand: so weak I am, and helpless;
I dare not take one step without Thy aid.
Hold Thou my hand: for then, O Loving Savior,
No dread of ill shall make my soul afraid.
2.
3. Hold Thou my hand: the way is dark before me
Without the sunlight of Thy face divine;
But when by faith I catch its radiant glory,
What heights of joy, what rapturous songs are mine.
LONGINGS — FOR LIVING IN THE LORD'S PRESENCE
E389† (T389) (C-290)
<IP_ADDRESS>.D.
1. Lord Jesus, I long in Thy presence to live,
From morning to evening my one world Thou art;
O let not my heart be contented or rest
When loving or seeking what with Thee doth part.
Each moment, each day, throughout suff'ring and pain,
When nought in the world can give comfort or cheer,
When sighing and weeping encompasses me,
Lord, still all my sighing and wipe every tear.
2. Each time when I dream of the goodness of life,
I pray Thee, dear Lord, that Thou in it may be;
O do not allow me to choose by myself,
Nor seek any pleasure that's other than Thee.
Each night when alone in the stillness I lie,
I pray Thee, Lord Jesus, that Thou wilt be near;
Each morning ere dawn comes, while still in my sleep,
Then whispering call me and open my ear.
3. Each time, Lord, when reading in Thy holy Word,
I pray that Thy glory may shine on each line,
That clearly I'll see what a Savior I have
And how great salvation that Thou hast made mine.
When helpless I come, Lord, to kneel at Thy throne,
I pray Thee to hear me and grant me Thy grace;
If thru my shortcomings Thou hear not my prayer,
Withdraw not Thy presence, O hide not Thy face.
4. Each time when of heavenly blessings I think,
O let my heart long to be raptured to Thee;
My only hope here is Thy coming again,
My only joy there, Lord, Thy presence will be.
Lord, teach me each day in Thy presence to live,
From morning to evening my one world Thou art;
O let not my heart be contented or rest
When loving or seeking what with Thee doth part.
MGA PANANABIK — SA PAMUMUHAY SA PRESENSYA NG PANGINOON
T389 (E389)
1. O Hesus nais kong mamuhay sa Iyo,
Ikaw ang daigdig sa araw't gabi,
Sana'y di-mapalagay ang puso ko
Kung inaasam ang hindi Mo mithi.
Anumang sandaling may pagdurusa
At walang kasiyahang matagpuan,
Nang ako'y dumaraing, lumuluha,
Luha ko'y pahirin, dusa'y wakasan.
2. Kapag mangarap sa inam ng buhay,
Hiling ko, Hesus, ang makasama Ka.
Ikaw ang aking kasiyahang tunay,
Huwag hayaang pumili pa ng iba.
Tuwing gabi pag ako'y nakahimlay,
Hiling ko'y mapalapit Ka sa akin,
At sa pagsapit ng bukang-liwayway,
Bulungan Mo ako, at Iyong tawagin.
3. Sa pagbasa ng banal Mong Salita,
Mangyaring sumilay ang Iyong l'walhati,
Nang Tagapagligtas ay makilala
At ang kaligtasang aking bahagi.
Kung dumulog ako sa Iyong luklukan,
Ipagkaloob Mo ang Iyong biyaya.
Kung dahil sa sala, 'di Mo pakinggan,
Huwag Mong bawiin ang mahal Mong mukha.
4. Kung isipin ko ang mga biyaya,
Makakapiling Ka — puso ko'y sabik.
Tangi kong ligaya ang Iyong presensya,
Tangi kong pag-asa ang Iyong pagbalik.
Ako'y turuan Mong mamuhay sa Iyo,
Ikaw ang daigdig sa araw't gabi,
Sana'y di-mapalagay ang puso ko
Kung inaasam ang hindi Mo mithi.
Hymns
390 — 399
LONGINGS — FOR CHRIST'S LEADING
E390* (T390) (C-291)
<IP_ADDRESS>. with chorus.
1. Savior, lead me, this I pray,
In the Spirit all the day;
Walking in the light of life,
I would cease from all my strife.
Lead me, lead me,
Savior, lead me, this I pray;
Deeply in the stream of life,
Lead me, Savior, in Thy way.
2. Thou as life in me indeed,
By the law of life dost lead;
When Thou reignest in Thy might,
All my darkness turns to light.
Lead me, lead me,
Savior, lead me, this I pray;
Deeply in the stream of life,
Lead me, Savior, in Thy way.
3. Liberating Spirit, Thou,
Wholly regulate me now;
Thus my mind Thou wilt renew
And Thy will I'll fully know.
Lead me, lead me,
Savior, lead me, this I pray;
Deeply in the stream of life,
Lead me, Savior, in Thy way.
MGA PANANABIK — SA PANGUNGUNA NI KRISTO
T390 (E390)
1. Diyos ko, gabayan ako,
Mamuhay sa 'Spiritu;
Paglakad sa liwanag,
Hinto na pagsikap ko.
Panginoon,
Gabayan ako ngayon;
Sa Iyong agos ng buhay,
Sa Iyong daan igabay.
2. Patnubayan Mo ako,
Sa batas ng buhay Mo;
Akin Kang awtoridad,
Dilim maging liwanag.
Panginoon,
Gabayan ako ngayon;
Sa Iyong agos ng buhay,
Sa Iyong daan igabay.
3. Nagpalayang 'Spiritu,
Isaayos Mo ako;
Baguhin ang isip ko,
Malaman ang gusto Mo.
Panginoon,
Gabayan ako ngayon;
Sa Iyong agos ng buhay,
Sa Iyong daan igabay.
LONGINGS — FOR CHRIST'S LEADING
E391
<IP_ADDRESS>.4.7. with repeat.
1. Guide me, O Thou gracious Savior,
Pilgrim through this barren land;
I am weak, but Thou art mighty,
Hold me with Thy pow'rful hand;
Bread of heaven,
Feed me till I want no more;
Bread of heaven,
Feed me till I want no more.
2. Open now the crystal fountain,
Whence the healing waters flow;
Let the fiery, cloudy pillar
Lead me all my journey through;
Strong Deliv'rer,
Be Thou still my strength and shield;
Strong Deliv'rer,
Be Thou still my strength and shield.
The author, William Williams preached and sang throughout Wales. "He sang Wales into Piety". He was the poet laureate of the Welsch revival. Soon all Wales was singing their way to the coal mines and soccer matches. And their favorite hymn was this marching song by one of their own. ("Great Songs of Faith" by Brown & Norton)
LONGINGS — FOR CHRIST'S LEADING
E392 (T392) (C-507)
<IP_ADDRESS>.7.7.
1. Jesus, Savior, pilot me
Over life's tempestuous sea;
Unknown waves before me roll,
Hiding rock and treach'rous shoal;
Chart and compass come from Thee;
Jesus, Savior, pilot me.
2. As a mother stills her child,
Thou canst hush the ocean wild;
Boist'rous waves obey Thy will
When Thou say'st to them, "Be still."
Wondrous Sov'reign of the sea,
Jesus, Savior, pilot me.
3. Though death's valley I may pass,
Still Thy grace will fear surpass;
In Thy presence I will rest,
And, while leaning on Thy breast,
I will hear Thee say to me,
"Fear not, I will pilot thee."
MGA PANANABIK — SA PANGUNGUNA NI KRISTO
T392 (E392)
1. Hesus, ako'y ugitan
Sa buhay kong mabagyo;
Alon nasa harapan,
Buhawi't batong lilo;
Mapa at direksyon ko—
Hesus ako'y ugitan.
2. Tulad ng ina ng bata,
Patahimikin Mo na—
Dagat ay mamayapa
Ayon sa Iyong salita;
Hari ng karagatan—
Hesus ako'y ugitan.
3. Sa lambak man dumaan,
Biyaya'y lampas takot,
Kapayapaan dulot,
Paghilig sa dibdib Mo,
Marinig Iyong salita:
"Uugitan nga kita."
LONGINGS — FOR CHRIST'S LEADING
E393 (T393) (C-295)
<IP_ADDRESS>.
1. Thy way, not mine, O Lord,
However dark it be;
Lead me by Thine own hand,
Choose out the path for me.
2. Smooth let it be, or rough,
It will be still the best;
Winding or straight it leads
Right onward to Thy rest.
3. I dare not choose my lot;
I would not if I might:
Choose Thou for me, my God,
So shall I walk aright.
4. Take Thou my cup, and it
With joy or sorrow fill,
As best to Thee may seem;
Choose Thou my good and ill.
5. Choose Thou for me my friends,
My sickness or my health.
Choose Thou my cares for me,
My poverty or wealth.
6. Not mine, not mine the choice,
In things both great and small;
Be Thou my guide, my strength,
My wisdom and my all.
MGA PANANABIK — SA PANGUNGUNA NI KRISTO
T393 (E393)
1. Iyong daan, di akin
Ga'no mang kadilim;
Patnubayan ako,
Basta pinili Mo.
2. Patag o mabato,
Mabuti rin ito;
Tuwid, liku-liko,
Pahinga ang tungo.
3. Ako sa sarili'y
Nangambang pumili;
Ikaw ang magpasya,
Lumakad ng tama.
4. Sa dusa o saya,
Saro ko'y pun'in na;
Masunod Iyong pasya,
Buti man o sama.
5. Piliin kaibigan,
Sakit, kalusugan.
Iyong alalahanin
Hirap ko at yaman.
6. Pagpili'y di akin,
Sa mga bagay rin;
Gabay at lakas Ka,
Dunong at lahat pa.
LONGINGS — FOR GROWTH IN CHRIST
E394
<IP_ADDRESS>.7.7.
1. Unto him that hath Thou givest
Ever more abundantly;
Lord, I live because Thou livest,
Therefore give more life to me,
Therefore speed me in the race,
Therefore let me grow in grace.
2.
3. Let me grow by sun and shower,
Every moment water me;
Make me really, hour by hour,
More and more conformed to Thee,
That Thy loving eye may trace
Day by day my growth in grace.
4. From Thy fulness grace outpouring,
Show me ever greater things;
Raise me higher, sunward soaring,
Mounting as on eagle-wings.
By the brightness of Thy face,
Ever let me grow in grace.
5. Let me, then, be always growing,
Never, never standing still,
Listening, learning, better knowing
Thee and Thy most blessed will.
Till I win the glorious race,
Daily let me grow in grace.
LONGINGS — FOR GROWTH IN CHRIST
E395 (T395) (C-298)
<IP_ADDRESS>.D.
1. O Jesus Christ, grow Thou in me,
And all things else recede;
My heart be daily nearer Thee,
From sin be daily freed.
Each day let Thy supporting might
My weakness still embrace;
My darkness vanish in Thy light,
Thy life my death efface.
2. In Thy bright beams which on me fall,
Fade every evil thought;
That I am nothing, Thou art all,
I would be daily taught.
Each day let Thy supporting might
My weakness still embrace;
My darkness vanish in Thy light,
Thy life my death efface.
3. More of Thy glory let me see,
Thou Holy, Wise, and True;
I would Thy living image be,
In joy and sorrow too.
Each day let Thy supporting might
My weakness still embrace;
My darkness vanish in Thy light,
Thy life my death efface.
4. Fill me with gladness from above,
Hold me by strength divine;
Lord, let the glow of Thy great love
Through all my being shine.
Each day let Thy supporting might
My weakness still embrace;
My darkness vanish in Thy light,
Thy life my death efface.
5.
Each day let Thy supporting might
My weakness still embrace;
My darkness vanish in Thy light,
Thy life my death efface.
MGA PANANABIK — SA PAGLAGO KAY KRISTO
T395 (E395)
1. Hesus sa aki'y lumago
Hiling walang iba;
Ilapit sa Iyo puso ko,
Iligtas sa sala.
Bawa't araw sa Iyong lakas,
Hina ko'y napawi;
Dilim, kamataya'y wakas,
Buhay Mo'y nagwagi.
2. Kasamaan ay naglaho
Sa pagliwanag Mo;
Ika'y lahat, hungkag ako,
Sa 'kin ituro Mo.
Bawa't araw sa Iyong lakas,
Hina ko'y napawi;
Dilim, kamataya'y wakas,
Buhay Mo'y nagwagi.
3. Ikaw na Banal at Tunay,
Gloria Mo'y pagmasdan;
Maging Iyong larawang buháy,
Sa tuwa't dusa man.
Bawa't araw sa Iyong lakas,
Hina ko'y napawi;
Dilim, kamataya'y wakas,
Buhay Mo'y nagwagi.
4. Iyong galak ako'y puspusan,
Hawakan ng lakas;
Mula sa 'king katauhan:
Pag-ibig 'pamalas.
Bawa't araw sa Iyong lakas,
Hina ko'y napawi;
Dilim, kamataya'y wakas,
Buhay Mo'y nagwagi.
5. Iyong pawiin sarili ko,
Buhay Ka't layunin;
Papagindapatin ako,
Iyong ngala'y taglayin.
Bawa't araw sa Iyong lakas,
Hina ko'y napawi;
Dilim, kamataya'y wakas,
Buhay Mo'y nagwagi.
LONGINGS — FOR GROWTH IN CHRIST
E396 (T396)
<IP_ADDRESS>.D.
1. I'm pressing on the upward way,
New heights I'm gaining every day;
Still praying as I onward bound,
"Lord, plant my feet on higher ground."
Lord, lift me up, and let me stand
By faith on Canaan's tableland;
A higher plane than I have found,
Lord, plant my feet on higher ground.
2. My heart has no desire to stay
Where doubts arise and fears dismay;
Though some may dwell where these abound,
My prayer, my aim, is higher ground.
Lord, lift me up, and let me stand
By faith on Canaan's tableland;
A higher plane than I have found,
Lord, plant my feet on higher ground.
3. I want to live above the world,
Though Satan's darts at me are hurled;
For faith has caught the joyful sound,
The song of saints on higher ground.
Lord, lift me up, and let me stand
By faith on Canaan's tableland;
A higher plane than I have found,
Lord, plant my feet on higher ground.
4. I want to scale the utmost height
And catch a gleam of glory bright;
But still I'll pray till rest I've found,
"Lord, lead me on to higher ground."
Lord, lift me up, and let me stand
By faith on Canaan's tableland;
A higher plane than I have found,
Lord, plant my feet on higher ground.
MGA PANANABIK — SA PAGLAGO KAY KRISTO
T396 (E396)
1. Pataas na nagtumulin,
Bagong rurok aking tam'hin;
Patuloy na nanalangin,
"Mas mataas ako'y dalhin."
Itaas ako't itindig,
Sa Canaan may panalig;
Sa mas mataas na lupa,
Poon, ilagak 'king paa.
2. Manatili di ko nasa,
Saan man may takot, duda;
Panalangin ko, Pangino'n
Mas mataas, aking layon.
Itaas ako't itindig,
Sa Canaan may panalig;
Sa mas mataas na lupa,
Poon, ilagak 'king paa.
3. Mundo'y pangibabawan ko,
Kahit pumana ang diyablo;
Sa panalig may ligaya,
Banal sa 'taas na lupa.
Itaas ako't itindig,
Sa Canaan may panalig;
Sa mas mataas na lupa,
Poon, ilagak 'king paa.
4. Pinakarurok abutin,
Sa l'walhati makatingin;
Tuloy pa ring nanalangin,
"Mas mataas, ako'y dalhin."
Itaas ako't itindig,
Sa Canaan may panalig;
Sa mas mataas na lupa,
Poon, ilagak 'king paa.
LONGINGS — FOR GROWTH IN CHRIST
E397 (T397) (C-297)
<IP_ADDRESS>.D. with chorus.
1.
Come, my Savior, and help me,
Comfort, strengthen and keep me;
Thou each moment wilt save me,
Thou art saving me now.
2.
Come, my Savior, and help me,
Comfort, strengthen and keep me;
Thou each moment wilt save me,
Thou art saving me now.
3.
Come, my Savior, and help me,
Comfort, strengthen and keep me;
Thou each moment wilt save me,
Thou art saving me now.
MGA PANANABIK — SA PAGLAGO KAY KRISTO
T397 (E397)
Ang Tagalog ay isinalin mula sa Chinese hymnal.
1. Mahalin Kang lalo,
Malapit sa Iyo,
Salita Mo'y sundin,
Ngala'y dangalin,
Lungkot Mo'y damayan,
Hirap Mo'y tikman,
Higit Iyong taguyod,
Lalo'ng pagsunod.
Hesus, ako'y ingatan,
Palakasi't tulungan;
Sa makitid na daan,
Lugod Kita'y bigyan.
2. Lalong matagumpay,
Sa Iyo'y mas tunay,
Lalo pang may silbi,
Magiting lagi,
Dusa'y pagtiisan,
Sala'y tangisan,
Batahin pagdusta,
Mas magtiwala.
Hesus, ako'y ingatan,
Palakasi't tulungan;
Sa makitid na daan,
Lugod Kita'y bigyan.
3. Lalong makalangit,
Ika'y makamit,
Pagbalik Mo'y asa,
At Iyong "parousia,"
Mas magpakababa,
Taas itatwa,
Sarili'y maglaho,
Mas kawangis Mo.
Hesus, ako'y ingatan,
Palakasi't tulungan;
Sa makitid na daan,
Lugod Kita'y bigyan.
LONGINGS — FOR LIKENESS TO CHRIST
E398 (T398) (C-301)
<IP_ADDRESS>.D.
1. O to be like Thee! blessed Redeemer;
This is my constant longing and prayer;
Gladly I'll forfeit all of earth's treasures,
Jesus, Thy perfect likeness to wear.
O to be like Thee! O to be like Thee!
Blessed Redeemer, pure as Thou art;
Come in Thy sweetness, come in Thy fullness;
Stamp Thine own image deep on my heart.
2.
O to be like Thee! O to be like Thee!
Blessed Redeemer, pure as Thou art;
Come in Thy sweetness, come in Thy fullness;
Stamp Thine own image deep on my heart.
3. O to be like Thee! lowly in spirit,
Holy and harmless, patient and brave;
Meekly enduring cruel reproaches,
Willing to suffer, others to save.
O to be like Thee! O to be like Thee!
Blessed Redeemer, pure as Thou art;
Come in Thy sweetness, come in Thy fullness;
Stamp Thine own image deep on my heart.
4. O to be like Thee! Lord, I am coming,
Now to receive th' anointing divine;
All that I am and have I am bringing;
Lord, from this moment all shall be Thine.
O to be like Thee! O to be like Thee!
Blessed Redeemer, pure as Thou art;
Come in Thy sweetness, come in Thy fullness;
Stamp Thine own image deep on my heart.
5. O to be like Thee! While I am pleading
Pour out Thy Spirit, fill with Thy love.
Make me a temple meet for Thy dwelling,
Fit for a life which Thou wouldst approve.
O to be like Thee! O to be like Thee!
Blessed Redeemer, pure as Thou art;
Come in Thy sweetness, come in Thy fullness;
Stamp Thine own image deep on my heart.
MGA PANANABIK — SA PAGKAKATULAD KAY KRISTO
T398 (E398)
1. Maging tulad Mo, O Manunubos;
Ito'y aking asam, dalangin;
May galak iwan panlupang yaman,
Sakdal Mong wangis bihis lubos.
O Panginoon, makatulad Mo!
'Sing dalisay Mo, Manunubos;
Ang katamisan, kapuspusan Mo,
Sa 'king puso'y iukit lubos!
2. Maging katulad Mong mahabagin,
Mapagpatawad, maibigin,
Iba'y tulungan, sila'y aliwin,
Makasalanan ay hanapin.
O Panginoon, makatulad Mo!
'Sing dalisay Mo, Manunubos;
Ang katamisan, kapuspusan Mo,
Sa 'king puso'y iukit lubos!
3. Maging tulad Mong mapagkumbaba,
Banal, matapang, walang dahas;
Dusa ay maamong binabatá,
Maghirap nang iba'y maligtas.
O Panginoon, makatulad Mo!
'Sing dalisay Mo, Manunubos;
Ang katamisan, kapuspusan Mo,
Sa 'king puso'y iukit lubos!
4. Maging tulad Mo palapit ako,
Nang matanggap pahid dibino;
Lahat nga ng sa akin at ako,
Mula ngayon ay pawang sa Iyo.
O Panginoon, makatulad Mo!
'Sing dalisay Mo, Manunubos;
Ang katamisan, kapuspusan Mo,
Sa 'king puso'y iukit lubos!
5. Maging tulad Mo ang aking samo,
Pag-ibig Mo'y puspusin ako;
Gawin akong templong tahanan Mo,
Angkop sa 'sang buhay Iyong gusto.
O Panginoon, makatulad Mo!
'Sing dalisay Mo, Manunubos;
Ang katamisan, kapuspusan Mo,
Sa 'king puso'y iukit lubos!
LONGINGS — FOR LIKENESS TO CHRIST
E399* (T399) (C-300)
<IP_ADDRESS>.
1. Changed into His likeness!
This my heart's desire!
May the Lord fulfill it,
All my soul inspire.
2. Changed into His likeness!
He the Spirit is!
If the Spirit governs,
He'll fulfill my wish.
3. As a glass, beholding
With uncovered face,
I can see His glory
And reflect His grace.
4. O that no more covering
May the Lord obscure,
That I may reflect Him
With a heart made pure.
5.
6. Changed into His likeness!
This my heart's one quest!
From my heart reflected,
He will be expressed.
7. Changed into His likeness
And reflecting more
Glory unto glory,
Boundless evermore.
MGA PANANABIK — SA PAGKAKATULAD KAY KRISTO
T399 (E399)
1. Sa Iyo'y mapawangis,
Ang aking nais;
Nawa'y tuparin Mo,
Itong mithi ko.
2. Matulad kay Kristo,
Siya'y Espiritu;
Kung Siyang mamahala,
Nasa'y magawa.
3. Mukhang walang tabing,
Gaya'y salamin;
Kita'y aninagin,
At l'walhatiin.
4. Sana'y aninagin,
Di na ikubli;
Panginoon Mismo,
Ng pusong puro.
5. Iyong l'walhati'y masdan,
Kata'y kaharap;
Laging tinitingnan,
O Ikaw lamang.
6. Ang makatulad Mo,
Ay hangarin ko;
Sa puso'y itatak,
Kita'y mahayag.
7. Sa Iyo'y mapagaya,
Gloria sa gloria;
Ihayag si Kristo,
Nang walang hinto.


Arsenal fans brutally troll Unai Emery on his birthday amid Jose Mourinho rumours
Unai Emery turns 48 today - but his birthday was not met with celebrations from Arsenal fans
by Rich Jones, https://www.mirror.co.uk/authors/rich-jones/Arsenal fans have brutally trolled manager Unai Emery on his birthday amid increased speculation he could be on the verge of being replaced by Jose Mourinho.
Emery turned 48 on Sunday, 24 hours after seeing his side held to a 1-1 draw at home to Wolves to extend their winless run to three Premier League games.
Early in the morning, Arsenal's official Twitter account posted a "happy birthday" to their boss.
But supporters quickly replied demanding his 'present' be his departure from the Emirates after a tough spell.
"Happy bday but sorry it's time to go," one fan wrote, whilst another said: "As a birthday gift he should get sacked."
"Happy Birthday but goodbye," came another reply, with others demanding they "present him the termination letter" or "sack him right after he cuts the cake."
Another proposed: "Happy birthday Unai Emery. The best birthday present the club can give you is a £6M cheque buying off the remainder of your contract, thanking you for your services and wishing you the best of luck for the future.
"You get the money and we get our Arsenal back. A win win for all."
The brutal response from fans comes amid claims head of football Raul Sanllehi met with Jose Mourinho for dinner last week to discuss the prospect of him taking over at the Emirates.
It is claimed Emery could have just one or two games left to save his job as the club hierarchy consider a switch in the November international break.
They are reportedly impressed with Mourinho's plans for their current squad as they consider a move to an experienced Premier League manager to ensure they get back into the top four after a stuttering start under Emery.


Scaloni pleased with Argentina progress as unbeaten run continues
by OmnisportLionel Scaloni is satisfied with Argentina's progress after a friendly draw against Uruguay on Monday.
Argentina came from behind twice to secure a 2-2 draw in Tel Aviv, where Lionel Messi's stoppage-time penalty cancelled out Luis Suarez's goal after Edinson Cavani and Sergio Aguero had struck earlier.
It extended Argentina's unbeaten run to seven matches as they continued preparations for 2022 World Cup qualifying, which begins next year.
Scaloni is pleased with Argentina's development, although the coach still sees room for improvement.
"At the level of results, we are fine. At the level of the game, it can be improved," he said, via Ole.
"The team feeling is the best we have. The important thing is that the players who play do it well. Some make a difference and others support."
Scaloni acknowledged the challenge awaiting his team, describing the CONMEBOL qualifiers as the toughest in the world.
"Now we have to think about what we did well and what we can correct. What is coming is difficult," he said.
"I spoke with people from Uruguay. It will be difficult in the qualifiers. Those in South America are the most difficult in the world.
"We have a good base."


config 1
Config 2
Time
Time
Message
Message
Amount
---
Amount
---
Channel
Channel
Product
Product
Transaction Type
Transaction Type
config 3
Config 4
Time
Time
Message
Message
Amount
---
Amount
---
Channel
Channel
Product
Product
Transaction Type
Transaction Type


Key Partners
{{form.controls.keyPartners.value}}
|
Key Activities
{{form.controls.keyActivities.value}}
|
Value Proposition
{{form.controls.valueProposition.value}}
|
Customer Relationship
{{form.controls.customerRelationship.value}}
|
Customer Segments
{{form.controls.customerSegments.value}}
|


|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.simpleframework.util.parse.Parser org.simpleframework.util.parse.MapParser<T>
public abstract class MapParser<T>
The MapParser
object represents a parser for name
value pairs. Any parser extending this will typically be parsing
name=value tokens or the like, and inserting these pairs into
the internal map. This type of parser is useful as it exposes all
pairs extracted using the java.util.Map
interface
and as such can be used with the Java collections framework. The
internal map used by this is a Hashtable
, however
subclasses are free to assign a different type to the map used.
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from interface java.util.Map |
|---|
java.util.Map.Entry<K,V> |
| Field Summary | |
|---|---|
protected java.util.Map<T,java.util.List<T>> |
all
Represents all values inserted to the map as a list of values. |
protected java.util.Map<T,T> |
map
Represents the last value inserted into this map instance. |
| Fields inherited from class org.simpleframework.util.parse.Parser |
|---|
buf, count, off |
| Constructor Summary | |
|---|---|
protected |
MapParser()
Constructor for the MapParser object. |
| Method Summary | |
|---|---|
void |
clear()
The clear method is used to wipe out all the
currently existing tokens from the collection. |
boolean |
containsKey(java.lang.Object name)
This is used to determine whether a token representing the name of a pair has been inserted into the internal map. |
boolean |
containsValue(java.lang.Object value)
This method is used to determine whether any pair that has been inserted into the internal map had the presented value. |
java.util.Set<java.util.Map.Entry<T,T>> |
entrySet()
This method is used to acquire the name and value pairs that have currently been collected by this parser. |
T |
get(java.lang.Object name)
The get method is used to acquire the value for
a named pair. |
java.util.List<T> |
getAll(java.lang.Object key)
This method is used to acquire a List for all of
the values that have been put in to the map. |
boolean |
isEmpty()
This method is used to determine whether the parser has any tokens available. |
java.util.Set<T> |
keySet()
This is used to acquire the names for all the tokens that have currently been collected by this parser. |
T |
put(T name,
T value)
The put method is used to insert the name and
value provided into the collection of tokens. |
void |
putAll(java.util.Map<? extends T,? extends T> data)
This method is used to insert a collection of tokens into the parsers map. |
T |
remove(java.lang.Object name)
The remove method is used to remove the named
token pair from the collection of tokens. |
int |
size()
This obviously enough provides the number of tokens that have been inserted into the internal map. |
java.util.Collection<T> |
values()
This method is used to acquire the value for all tokens that have currently been collected by this parser. |
| Methods inherited from class org.simpleframework.util.parse.Parser |
|---|
digit, ensureCapacity, init, parse, parse, skip, space, toLower |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Methods inherited from interface java.util.Map |
|---|
equals, hashCode |
| Field Detail |
|---|
protected java.util.Map<T,java.util.List<T>> all
protected java.util.Map<T,T> map
| Constructor Detail |
|---|
protected MapParser()
MapParser
object. This is
used to create a new parser that makes use of a thread safe
map implementation. The HashMap
is used so
that the resulting parser can be accessed in a concurrent
environment with the fear of data corruption.
| Method Detail |
|---|
public boolean containsKey(java.lang.Object name)
containsKey
in interface java.util.Map<T,T>
name
- this is the name of a pair within the map
public boolean containsValue(java.lang.Object value)
containsValue
in interface java.util.Map<T,T>
value
- this is the value that is to be searched for
public java.util.Set<java.util.Map.Entry<T,T>> entrySet()
entrySet
in interface java.util.Map<T,T>
public T get(java.lang.Object name)
get
method is used to acquire the value for
a named pair. So if a pair of name=value has been parsed and
inserted into the collection of tokens this will return the
value given the name. The value returned will be a string.
get
in interface java.util.Map<T,T>
name
- this is a string used to search for the value
public java.util.List<T> getAll(java.lang.Object key)
List
for all of
the values that have been put in to the map. The list allows
all values associated with the specified key. This enables a
parser to collect a number of associated tokens.
key
- this is the key used to search for the value
public boolean isEmpty()
size
is zero then the
parser is empty and this returns true. The is acts as a
proxy the the isEmpty
of the internal map.
isEmpty
in interface java.util.Map<T,T>
public java.util.Set<T> keySet()
keySet
in interface java.util.Map<T,T>
public T put(T name, T value)
put
method is used to insert the name and
value provided into the collection of tokens. Although it is
up to the parser to decide what values will be inserted it
is generally the case that the inserted tokens will be text.
put
in interface java.util.Map<T,T>
name
- this is the name token from a name=value pairvalue
- this is the value token from a name=value pair
public void putAll(java.util.Map<? extends T,? extends T> data)
putAll
in interface java.util.Map<T,T>
data
- this is the collection of tokens to be addedpublic T remove(java.lang.Object name)
remove
method is used to remove the named
token pair from the collection of tokens. This acts like a
take, in that it will get the token value and remove if
from the collection of tokens the parser has stored.
remove
in interface java.util.Map<T,T>
name
- this is a string used to search for the value
public int size()
size
.
size
in interface java.util.Map<T,T>
public java.util.Collection<T> values()
values
in interface java.util.Map<T,T>
public void clear()
clear
method is used to wipe out all the
currently existing tokens from the collection. This is used
to recycle the parser so that it can be used to parse some
other source of tokens without any lingering state.
clear
in interface java.util.Map<T,T>
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Curly and Floppy Twistytail, the Funny Piggie Boys
by Howard R. Garis
Chapter 22: “Flop and the Marshmallows”
Additional Information
- Year Published: 1918
- Language: English
- Country of Origin: United States of America
- Source: Garis, H. R. (1918). Curly and Floppy Twistytail, the Funny Piggie Boys. New York, NY: A. L. Burt Co.
-
Readability:
- Flesch–Kincaid Level: 5.1
- Word Count: 1,321
- Genre: Fantasy
- ✎ Cite This
Downloads
“Boys,” said Uncle Wiggily Longears, the old gentleman rabbit, to Curly and Flop, the piggie chaps, one morning. “Boys, do you think you can get along by yourselves this afternoon?”
“Why, I guess so,” answered Curly, as he looked off across the beach at Raccoon Island in Lake Hopatcong. “But where are you going, Uncle Wiggily?”
“Oh, Pop Goes the Weasel wanted me to come down to his store and have a game of Scotch checkers after dinner,” said the old gentleman rabbit. “He says he is lonesome since all the summer folk went away.”
“Of course, we can get along all right,” spoke Flop. “We’ll have our lunch and, we’ll do the dishes, so you can go and play Scotch checkers with Pop Goes the Weasel.”
“But what are Scotch checkers?” asked Curly.
“Oh, when you play that game,” said Uncle Wiggily, “you have a nice Scotchman standing near you all the while to cook Scotch scones over a hot fire. And scones are good to eat; something like pancakes, with maple syrup on, only different. It is fun to play Scotch checkers.”
“I should think so,” said Flop. “And could you bring us a few scones, Uncle Wiggily!”
“I’ll try,” said the old gentleman rabbit, “though Pop Goes the Weasel and I are very fond of eating them when we play checkers.”
So in the afternoon Uncle Wiggily went to visit his friend at the store on Raccoon Island, and the two piggie boys stayed home to keep house. And, when they had washed the dishes, Curly said:
“Now, Flop suppose we go looking for adventures.  So they started away from the bungalow. But as Curly fell asleep before he had gone much farther than the Sylvan Way (which is a nice little rustic bench on the island) no adventure happened to him. But wait until I tell you what happened to Flop.
Off he started, and he had not gone very far before he heard some one crying out:
“Oh, what shall I do with them? Oh, so many as there are! I never can eat them all!”
“My!” exclaimed Flop, “I wonder if that is a bad bear who has caught a whole lot of piggie or rabbit children?  I wonder what it is?”
So he hid behind a stump, and after a bit he peeked out and there he saw his old friend, little Cora Janet, of Montclair, walking around in the woods with a big box in her arms. And on the box was a sign which read:
CANDY
“My gracious sakes alive and some lollypops!” exclaimed Flop. “She has so much candy she doesn’t know what to do with it! I wonder if I can help her?”
So Flop jumped out from behind a bush, made a low bow, and said, most politely:
“Can I help you, Cora Janet?”
“Oh, yes, you can!” she exclaimed. “You see I came up here looking for the Indian Maiden who likes jelly so much. I thought I would give her some of my marshmallows, as I have a whole box full-many more than I can eat. But I can’t find the Indian Maiden—Pocohontas —and now I shall have to eat all the marshmallows myself.”
“Why?” asked Flop, curious like.
“Because,” answered Cora Janet, “because there is a big bear chasing after me.  But if I could only get rid of the candies he might let me alone. Oh, what shall I do? I’ve toasted them, and roasted them and eaten them just as they are out of the box, and put them in a cake and everything, but still the bear chases after me!”
“Of course I do!” suddenly growled a voice in the bushes and just then out popped the bear. The hat pin which the Indian maiden had shot in his nose was out now, and that bear was as angry as anything. He wanted to grab Cora Janet and take her off to his den I guess. Anyhow he growled as angry as could be!
“Oh, what shall I do!” called the little girl. “How can I get rid of all these marshmallows, for if the bear takes them it will only make him the more hungry and then he will want to eat me, and you too, Flop.”
“That must never be!” exclaimed the little piggie boy. “Ha! I have it!” he cried.  So she and Flop opened the box of marshmallows. Just then the bear made a rush for them, intending to grab them both in his big, long claws and carry them off to his den.
But Flop threw a sticky marshmallow candy, and it landed in one of the bear’s eyes and stayed there.
“Oh, wow!” cried the shaggy creature, and he could only see out of one eye. Then Cora Janet threw another marshmallow and it closed up the bear’s other eye. Then he couldn’t see at all.
“Oh, wow again! Double wow!” cried the bear. Then, as fast as they could throw them, Flop and Cora Janet tossed the sticky marshmallow candies.  Oh! just listen to me, would you! I’m so excited that I got that part wrong. But, anyhow, the bear couldn’t see, nor smell, nor hear.  Then Flop said:
“We are safe now, Cora Janet, and we have enough marshmallows left to roast at the camp fire tonight.”
And so they had.
So he didn’t bother Cora Janet nor Flop any more, and pretty soon Curly awakened and came back to the bungalow to hear about his brother’s adventure. And Uncle Wiggily came back from playing Scotch checkers with Pop Goes The Weasel, and everybody was happy, even Cora Janet, and they had roast marshmallows for supper.
And on the next page, in case the little boy across the street doesn’t slide down the front steps and scare the milkman’s horse so that it drinks up all the ice cream, I’ll tell you about the piggie boys and the big fish, and it will be a Hallowe’en story.


A collective of civic-minded volunteers who contribute their skills toward using the web as a platform for local government and community service.


Reports integer multiplication or left shift
which are implicitly cast to long.
Such multiplication is often an error, as overflow truncation may occur unexpectedly.
Use the checkbox below to ignore compile time constant expressions which evaluate to
a non-overflowing value.
Powered by InspectionGadgets


Kamla Nehru Institute of Technology has carved
a niche for itself in imparting value based technical education.
As part of its lofty motive of kindling the scientific temper among
the students it launches a series of tech fests sometimes exclusively
for the first year engineering students to tap their potential.
The college has a unique distinction of conducting...


The main Basalt Module itself, which contains everything inside the project.
Almost everything in each class has the least visibility possible, so don't expect many things to be exposed. You can
find the documentation for each package except the messages
package here, too.
Check out Basalt on GitHub, if you haven't already!
|
Package containing the Main Class, which is essentially used simply to start the application up and to add a shutdown hook ensuring Basalt properly shuts down. |
|
|
Package containing everything related to Audio Players or the loading of audio. |
|
|
Package containing everything related to the Basalt Server, such as the listener that listens for incoming events
as well as the |
|
|
Package containing a single |


SQL Server error<PHONE_NUMBER>
Overview
A lot of people reporting SQL Error<PHONE_NUMBER> while they are trying to install SQL Sever 2008 R2. This usually happens when you try to install SQL Server 2008 Standard Edition or Express edition on Windows VIsta. It turned out that Microsoft Vista Service Pack1 does not support SQL Server 2008 R2. As a result, you might see the error : "SQL 2008 SP1 - Exit code (Decimal): -2068643839".
Overview
Even though Microsoft admits that problem exists it does not take any steps to resolve SQL error<PHONE_NUMBER>. Microsoft team closed issue as "Not reproducible". However, SQL database administrators and SQL Developers are still running into the same issue. http://connect.microsoft.com/SQLServer/feedback/details/433855/
Solutions
One possible solution to resolve SQL Error<PHONE_NUMBER> was to uninstall and reinstall MSXML3 and MSXML 4. Other possible workarounds were:
- Uninstall all versions of SQL Server and try to install supported version (i.e. 2008) if you have Windows Vista
- Reinstalling operation system will be a last resort. However, we recommend installing Windows 7 as it will completely resolves problem with SQL Server 2008 compatibility. Number of users reported that they face this issue "SQL Error2068643839 " during SQL Server installation is significantly less.
- Remember - SQL Server 2008 R2 and SQL Server 2012 are server database management systems. They are much more optimised for server operation systems like Windows Server 2003 and Windows Server 2008.
Summary
Any issues and errors happening during SQL Server installations are really hard to tackle. Sometimes installation log can give you a clue what is happening. With SQL Error<PHONE_NUMBER> installation logs does not help. The only reasonable option is to either reinstall SQL Server 2008 suite or reinstall Windows.


{% assign player_id = include.src | append: "_player" %} {% assign controls_id = include.src | append: "_controls" %}


Dashboard
Inventory
Live deliveries
Orders
User Profile
Sign out
Do you want to sign out of this session?


SK Jewellery posts 57.9% fall in Q3 net profit
by Leila LaiCATALIST-LISTED SK Jewellery Group on Friday reported a 57.9 per cent drop in net profit for the third quarter ended Sept 30.
Earnings shrank to S$459,000 from S$1.09 million on the back of lower revenue after SK Bullion ceased operations in May, combined with changes arising from the adoption of SFRS(I) 16. Depreciation and amortisation expenses increased to S$6.31 million from S$1.13 million a year ago, as a result of the new reporting standards.
Revenue fell 46.2 per cent to S$32.6 million from S$60.7 million a year ago. Earnings per share was 0.08 Singapore cent, down from 0.19 cent in Q3 of the previous year.
For the nine months ended Sept 30, net profit was down 11.3 per cent to S$3.2 million and revenue decreased 29.7 per cent to S$104 million. Earnings per share was 0.58 Singapore cent, compared with 0.65 cent in the previous year.
Net asset value per ordinary share was 10.83 Singapore cents as at Sept 30.
Stay updated with
BT newsletters
Terms & conditions Sign up
No dividend was declared for the period under review.
SK Jewellery shares closed unchanged at S$0.095 on Friday before results were announced.


This program lets you import Midi-format files into Synthstrom Deluge SONG.XML files.
To use this program, press the "Choose File" button and select a Midi file to work with. You will then see one or more Midi tracks displayed graphically. To add a track, click on the "+ Song" button and the track will be converted and appended.
Midi File to Import:
Song File:
Download the updated song by clicking on the Download button at the bottom.
To add to an existing song, open it with the "Choose File" button.
Select a subset of a track to extract by clicking and dragging.
The "→ Clip" button puts the midi track data on the clipboard. You can then paste it into the main XML viewer program.
At present, the program only converts Note On/Note Off events.
The Midi file you choose and the SONG.XML file are processed entirely on your own computer. No information about it is sent anywhere else.
The program is experimental and no liability is assumed for bugs, crashes, etc. by Catnip or Synthstrom Audible.


MAC address:
{{params.mac_addr}}
IP address:
{{params.ip}}
Nick name for this device:
{{params.nick}}
Requsted validity of this authorization:
{{params.validity_option}}
Reason for the request:
{{params.reason}}
Please note that you will be held responsible for all network activity originating from this device for the specified time period.


DULCIE
TRAN
Dulcieland – based in Saigon
Home
Branding
Works
Contact
DULCIE
TRAN
Dulcieland – based in Saigon
Home
Branding
Works
Contact
Dulcie Tran Logo
Welcome to
Dulcieland
Dulcie Tran Logo
Welcome to
Dulcieland
Dulcie Tran Logo
Welcome to
Dulcieland
Previous Slide
Next Slide


Buildbot Configuration
Buildbot configuration
Configuration is invalid:
${err}
Base options
Buildbot url:
example: http://buildbot.buildbot.net
Buildbot login:
Buildbot password:
Builders & sources
Builder
View on Page
View on Timeline
Repository name
${builder['name']}


| Top |
GTlsInteraction provides a mechanism for the TLS connection and database code to interact with the user. It can be used to ask the user for passwords.
To use a GTlsInteraction with a TLS connection use
g_tls_connection_set_interaction()
.
Callers should instantiate a derived class that implements the various interaction methods to show the required dialogs.
Callers should use the 'invoke' functions like
g_tls_interaction_invoke_ask_password()
to run interaction methods. These
functions make sure that the interaction is invoked in the main loop
and not in the current thread, if the current thread is not running the
main loop.
Derived classes can choose to implement whichever interactions methods they'd
like to support by overriding those virtual methods in their class
initialization function. Any interactions not implemented will return
G_TLS_INTERACTION_UNHANDLED
. If a derived class implements an async method,
it must also implement the corresponding finish method.
GTlsInteractionResult g_tls_interaction_invoke_ask_password (GTlsInteraction *interaction
,GTlsPassword *password
,GCancellable *cancellable
,GError **error
);
Invoke the interaction to ask the user for a password. It invokes this
interaction in the main loop, specifically the GMainContext returned by
g_main_context_get_thread_default()
when the interaction is created. This
is called by called by GTlsConnection or GTlsDatabase to ask the user
for a password.
Derived subclasses usually implement a password prompt, although they may
also choose to provide a password from elsewhere. The password
value will
be filled in and then callback
will be called. Alternatively the user may
abort this password request, which will usually abort the TLS connection.
The implementation can either be a synchronous (eg: modal dialog) or an asynchronous one (eg: modeless dialog). This function will take care of calling which ever one correctly.
If the interaction is cancelled by the cancellation object, or by the
user then G_TLS_INTERACTION_FAILED
will be returned with an error that
contains a G_IO_ERROR_CANCELLED
error code. Certain implementations may
not support immediate cancellation.
interaction |
a GTlsInteraction object |
|
password |
a GTlsPassword object |
|
cancellable |
an optional GCancellable cancellation object |
|
error |
an optional location to place an error on failure |
Since 2.30
GTlsInteractionResult g_tls_interaction_invoke_request_certificate (GTlsInteraction *interaction
,GTlsConnection *connection
,GTlsCertificateRequestFlags flags
,GCancellable *cancellable
,GError **error
);
Invoke the interaction to ask the user to choose a certificate to
use with the connection. It invokes this interaction in the main
loop, specifically the GMainContext returned by
g_main_context_get_thread_default()
when the interaction is
created. This is called by called by GTlsConnection when the peer
requests a certificate during the handshake.
Derived subclasses usually implement a certificate selector, although they may also choose to provide a certificate from elsewhere. Alternatively the user may abort this certificate request, which may or may not abort the TLS connection.
The implementation can either be a synchronous (eg: modal dialog) or an asynchronous one (eg: modeless dialog). This function will take care of calling which ever one correctly.
If the interaction is cancelled by the cancellation object, or by the
user then G_TLS_INTERACTION_FAILED
will be returned with an error that
contains a G_IO_ERROR_CANCELLED
error code. Certain implementations may
not support immediate cancellation.
interaction |
a GTlsInteraction object |
|
connection |
a GTlsConnection object |
|
flags |
flags providing more information about the request |
|
cancellable |
an optional GCancellable cancellation object |
|
error |
an optional location to place an error on failure |
Since 2.40
GTlsInteractionResult g_tls_interaction_ask_password (GTlsInteraction *interaction
,GTlsPassword *password
,GCancellable *cancellable
,GError **error
);
Run synchronous interaction to ask the user for a password. In general,
g_tls_interaction_invoke_ask_password()
should be used instead of this
function.
Derived subclasses usually implement a password prompt, although they may
also choose to provide a password from elsewhere. The password
value will
be filled in and then callback
will be called. Alternatively the user may
abort this password request, which will usually abort the TLS connection.
If the interaction is cancelled by the cancellation object, or by the
user then G_TLS_INTERACTION_FAILED
will be returned with an error that
contains a G_IO_ERROR_CANCELLED
error code. Certain implementations may
not support immediate cancellation.
interaction |
a GTlsInteraction object |
|
password |
a GTlsPassword object |
|
cancellable |
an optional GCancellable cancellation object |
|
error |
an optional location to place an error on failure |
Since 2.30
void g_tls_interaction_ask_password_async (GTlsInteraction *interaction
,GTlsPassword *password
,GCancellable *cancellable
,GAsyncReadyCallback callback
,gpointer user_data
);
Run asynchronous interaction to ask the user for a password. In general,
g_tls_interaction_invoke_ask_password()
should be used instead of this
function.
Derived subclasses usually implement a password prompt, although they may
also choose to provide a password from elsewhere. The password
value will
be filled in and then callback
will be called. Alternatively the user may
abort this password request, which will usually abort the TLS connection.
If the interaction is cancelled by the cancellation object, or by the
user then G_TLS_INTERACTION_FAILED
will be returned with an error that
contains a G_IO_ERROR_CANCELLED
error code. Certain implementations may
not support immediate cancellation.
Certain implementations may not support immediate cancellation.
interaction |
a GTlsInteraction object |
|
password |
a GTlsPassword object |
|
cancellable |
an optional GCancellable cancellation object |
|
callback |
will be called when the interaction completes. |
[allow-none] |
user_data |
data to pass to the |
[allow-none] |
Since 2.30
GTlsInteractionResult g_tls_interaction_ask_password_finish (GTlsInteraction *interaction
,GAsyncResult *result
,GError **error
);
Complete an ask password user interaction request. This should be once
the g_tls_interaction_ask_password_async()
completion callback is called.
If G_TLS_INTERACTION_HANDLED
is returned, then the GTlsPassword passed
to g_tls_interaction_ask_password()
will have its password filled in.
If the interaction is cancelled by the cancellation object, or by the
user then G_TLS_INTERACTION_FAILED
will be returned with an error that
contains a G_IO_ERROR_CANCELLED
error code.
interaction |
a GTlsInteraction object |
|
result |
the result passed to the callback |
|
error |
an optional location to place an error on failure |
Since 2.30
GTlsInteractionResult g_tls_interaction_request_certificate (GTlsInteraction *interaction
,GTlsConnection *connection
,GTlsCertificateRequestFlags flags
,GCancellable *cancellable
,GError **error
);
Run synchronous interaction to ask the user to choose a certificate to use
with the connection. In general, g_tls_interaction_invoke_request_certificate()
should be used instead of this function.
Derived subclasses usually implement a certificate selector, although they may also choose to provide a certificate from elsewhere. Alternatively the user may abort this certificate request, which will usually abort the TLS connection.
If G_TLS_INTERACTION_HANDLED
is returned, then the GTlsConnection
passed to g_tls_interaction_request_certificate()
will have had its
“certificate” filled in.
If the interaction is cancelled by the cancellation object, or by the
user then G_TLS_INTERACTION_FAILED
will be returned with an error that
contains a G_IO_ERROR_CANCELLED
error code. Certain implementations may
not support immediate cancellation.
interaction |
a GTlsInteraction object |
|
connection |
a GTlsConnection object |
|
flags |
flags providing more information about the request |
|
cancellable |
an optional GCancellable cancellation object |
|
error |
an optional location to place an error on failure |
Since 2.40
void g_tls_interaction_request_certificate_async (GTlsInteraction *interaction
,GTlsConnection *connection
,GTlsCertificateRequestFlags flags
,GCancellable *cancellable
,GAsyncReadyCallback callback
,gpointer user_data
);
Run asynchronous interaction to ask the user for a certificate to use with
the connection. In general, g_tls_interaction_invoke_request_certificate()
should
be used instead of this function.
Derived subclasses usually implement a certificate selector, although they may
also choose to provide a certificate from elsewhere. callback
will be called
when the operation completes. Alternatively the user may abort this certificate
request, which will usually abort the TLS connection.
interaction |
a GTlsInteraction object |
|
connection |
a GTlsConnection object |
|
flags |
flags providing more information about the request |
|
cancellable |
an optional GCancellable cancellation object |
|
callback |
will be called when the interaction completes. |
[allow-none] |
user_data |
data to pass to the |
[allow-none] |
Since 2.40
GTlsInteractionResult g_tls_interaction_request_certificate_finish (GTlsInteraction *interaction
,GAsyncResult *result
,GError **error
);
Complete an request certificate user interaction request. This should be once
the g_tls_interaction_request_certificate_async()
completion callback is called.
If G_TLS_INTERACTION_HANDLED
is returned, then the GTlsConnection
passed to g_tls_interaction_request_certificate_async()
will have had its
“certificate” filled in.
If the interaction is cancelled by the cancellation object, or by the
user then G_TLS_INTERACTION_FAILED
will be returned with an error that
contains a G_IO_ERROR_CANCELLED
error code.
interaction |
a GTlsInteraction object |
|
result |
the result passed to the callback |
|
error |
an optional location to place an error on failure |
Since 2.40
typedef struct _GTlsInteraction GTlsInteraction;
An object representing interaction that the TLS connection and database might have with the user.
Since 2.30
GTlsInteractionResult is returned by various functions in GTlsInteraction when finishing an interaction request.
Since 2.30
Flags for g_tls_interaction_request_certificate()
,
g_tls_interaction_request_certificate_async()
, and
g_tls_interaction_invoke_request_certificate()
.
Since 2.40


GatherMate
Participants (one nick per line or separated by ; depending on option selected)
Separate nicks with linebreaks
Separate nicks with semicolon
Results
Team 1
Team 2