Monday, April 30, 2012

Negotiation Boot camp book summary

Summary for Negotiation Boot camp  by Ed Brodow

Mindmap summary





Text summary   

  • Destructive Assumptions
    • + 1- The average person is not tough enough to win at negotiation
    • + 2- Negotiation is all-or-nothing. You are either a winner or a loser.
    • + 3- The only good talkers make good negotiators.
    • + 4- Assertive people are selfish people.
  •  Negotiation: It is the process of overcoming obstacles in order to reach agreement.
  • Ten Traits of a Successful Negotiator
    • 1- Negotiation Consciousness
      • Ask. If you don’t ask you won’t get your needs met
      • Eliminate negative self-talk
      • Practice expressing your feelings with anxiety or anger
      • Learn to say NO
    • 2- Listening
      • You will learn the other negotiator’s needs and pressures
      • The person you are negotiating with will like you and want to help you
    • 3- The Ability to Ask Good Questions
      •                                           by asking the right questions and then listening to the answers, you can find out what is driving the other side of the negotiation
    • 4- High Aspirations
      • Successful negotiators are optimists
      • In a negotiation, your level of expectation becomes a self-fulfilling prophecy.
    • 5- Patience
      • Whoever is more patient is in the driver’s seat
      • If you slow down, you’ll make fewer mistakes.
    • 6-Flexibility
      • Successful negotiators always make assumptions, but they are flexible enough to change them in response to changing circumstances.
    • 7- Focus on Satisfaction
      •                           Successful negotiators look at situations from the other side’s perspective
                                          nstead of asking, “How can I win?” they ask, “How can I help the other negotiator feel satisfied.”
    • 8-Willingness to Take Risks
      •                               When you take a risk, consider your options if the risk turns sour
                                    Ask, “If I take the risk and it doesn’t work out the way I hope, do I have a Plan B?
    • 9-Solving the Problem
      •           Successful negotiators don’t take things personally
      •      They rise above personal feelings in order to make a deal.
    • 10- Willingness to Walk Away
      • Always be willing to walk away
      • If you want the deal too badly, you lose your ability to say no.
  • Prepare your next negotiation
    • What are your targets
      • Maximum
      • Goal
      • Minimum
    • What are your options? Do you have a Plan B?
    • What concessions are you willing to make?
    • What pressure is there on the other side to make a deal?
    • How can you make the other side feel satisfied – without giving away too much?
    • What is your opening position?
    • Where should the negotiation be held?
    • What interests do both sides have in common?
    • Get Information About the Other Party
  • Tactics
    • The Flinch ( What !!!)
      • It works because it contains a hidden message: “Your behavior is outrageous, your request is so ridiculous that it doesn’t even deserve a response, except to dismiss it completely.”
    • Emotional Barrage (Out of control !!)
      • Give them a chance to vent their feelings.
      • Empathize with them, without agreeing
      • When they have calmed down, ask them what they really want
    • The Sob Story ( 3ayatlo : )
    • The Squeeze (use compitition)
      •  
        •  
        • nstead of saying, “I like your product, but I can’t afford it
        • the buyer says,I like your product, but I can buy it cheaper elsewhere
    • Straw Demand ( mesh 3ayez el gonoot )
      • A straw demand is one that you really don’t care about or expect to receive.
                            It exists only so you can offer to drop it in return for other concessions – ones you really want.
    • The Ultimatum (This is my final offer)
      • You want the other party to feel that it has pushed you to your limit.
    • Walking Out
      • you are sending a powerful message that you are committed to your position and have been pushed to your limit.
  • Concessions
    • Open With an Extreme Position
      • You will lower the other side’s expectations.
      • You have room to give the other negotiators a concession, which helps them feel satisfied.
      • They may surprise you by accepting the extreme position
      Each successive concession should be less than the one before it. ( so that he stop asking)
      Never Accept the First Offer
      Make Straw Demands
      Getting Something In Return – With each concession, tie a string to it: “I will do this if you do that.
  • Stratigies (Maneuver)
    • Opening
      • Aim High
      • Let Them Open Firs
      • Keep Your Mouth Shut
    • Middle
      • Manage Their Expectations
      • Creating Satisfaction
    • Closing
      • Walking Away
      • 9 tips for avoiding a deadlock.
        • 1-Change your negotiators
          2- Change the level of the negotiation (up or down)
          3- Change the structure of the agreement
          4- Take a break.
          5- Introduce new information.
          6- Confront the obstacle.
          7- Offer alternatives: Ask “What if?”
          8-Make minor concessions
          9-Switch from combative to cooperative problem   solving. Change from Win-Lose to Win-Win.
  • Strengthen Your Negotiating Position
    • Negotiation power is a state of mind. It comes from
      • Having options.
        Being able to demonstrate to the other party that they will be hurt by not agreeing
        Convincing the other party that although they have options other than those you are proposing, you’re both better off making a deal.
    • Finding Their Hot Button
      • The question is, “What does he stand to lose if he does not make this deal?”
        If you discover that the other side is under pressure, look for ways to exploit that pressure in order to achieve a better result for yourself.
    • The Confidence Mystique
      • People bow to confidence
    • Know Your Options
    • Patience and Persistence
    • Legitimacy
      • If something is your company’s policy, it has legitimacy
      • If a practice in your industry is the norm, it has legitimacy.
  • Listening
    • The key to successful selling was to keep my mouth shut and listen to what people had to say.
      Trust is a necessary ingredient for successful negotiation. Human nature is to trust people who really pay attention to what we have to say.
      The 70/30 Rule – Always let the other person do most of the talking
      Don’t Interrupt
      •                     Fight the urge to interrupt with some vitally important information. It isn’t, so don’t.
      Listen Actively
      • One technique of active listening is asking questions.
        Eye contact is important.
        Body language should indicate you are paying attention. Leaning forward indicates you are listening.
      The Interviewer’s Art: Asking Questions
      • Ask Open ended questions – “How could we do this?”
        Don’t Put Others on the Defensive – Instead of asking, “Why do you feel that way?” ask, “How come you feel that way?”
        Ask for Advice – “What do you suggest we do to resolve this?”
        sk for Clarification if Needed



Presentation: how to get a job and be at the top (for IT Students)

This is a presentation conducted @ MSA University in 2009 for  CS Graduate Students, it aims to answer the following two questions:
  1. How to get a JOB
  2. How to excel in your new JOB
Original presentation: how-to-get-an-IT-job-and-be-at-the-top.pps


How to get a JOB

Topics
  1. Know your target
  2. Gap Analyses
  3. Prepare good CV
  4. Choosing a company
  5. Applying
  6. Passing Exams
  7. Passing Interviews
  8. Miscellaneous

Know your target
  •  What do you want to do ?
    •  Type of work
      •  R&D
      •  Web development
      •  Testing
      •  etc
  •  Country
  •  Academic / Practical path
  •  Your own company

Gap Analyses
  •  Estimate the Gaps between your current position and your target
  •  Fill the Gaps
    •  Reading/Courses/etc
  •  Know yourself
    •  What are your strong points
    •  What are your weak points
  •  Handle your weak points
  •  Be proud of your strong points

What is expected from you in an entry level position

Personal Skills
  • Problem solving skills
  • Communication skills
  • Team work
  • Ability to learn new technologies and tools

Technical Skills
  • UML
  • Object oriented  programming
  • language: Java  or C#
        Note: other skills may be expected


Prepare good CV
  •  CV is a key factor for employment
  •  What makes a good CV?
    •  Two pages max
    •  Most important/recent first
    •  Well formatted
    •  No grammar mistakes
    •  Persuading: shows your Skills/Achievements/Activities
    •  Targeted
  •  Compare your CV with other professional CVs on the net
  •  Let your CV be reviewed by a senior professional

Choosing a company
  •  By name, by salary, by size, by area, by technology
  •  What makes a good company
    •  Professionalism
    •  Projects, Clients, Opportunities and Experience
    •  People inside
    •  Management
    •  Flexibility
    •  Career path
    •  Training
    •  Work environment/resources
    •  Salary
    •  Empowerment
    •  Innovation/ Technologies
    •  Stability


Applying
Steps to get a job
  •  Send your CV to recruitment companies
    •  http://www.thejobmasters.com/
  •  Send to the employer directly
    •  Send your CV to HR personnel through a friend or relative
    •  Send your CV by email or through company’s website
  •  Watch job offers on the web
    • http://groups.yahoo.com/group/EgyptPro/
    • http://finance.groups.yahoo.com/group/Job_Masters/
    • http://itjob-egypt.blogspot.com/
  •  Watch job offers on companies websites
  •  Attend employment fairs
  •  Read newspapers


Passing Exams

-Exam types
  •      IQ  ( Average IQ for computer programmers : 120-130 * )
  •      English
  •      Programming
    •      C, C# or JAVA
    •      Algorithms
  •      UML
  •      General knowledge

-Try to know your employer’s exam topics and prepare yourself
-Take online exams ( Specially IQ )


Passing Interviews

General Interview guidelines
  •  Preparation
    •  Be prepared to answer questions about yourself and your CV/Rehearse
  •  Be confident, energetic, interested
  •  Two way game ( WIN-WIN )
    •  Know information about your employer and ASK
  •  Appropriate dress
  •  Be there on time
  •  Listen carefully/Speak clearly/Eye contact/Smile
  •  Don’t try to hide your mistakes, but try to focus on what you have learned from them
  •  Don’t lie

Types of interviews and expected questions

Technical
  • Coding questions
  • Design questions
  • Problem solving questions
  • Networking questions
  • Math questions
  • Very hard/unsolvable questions  ( to know how you will handle it )

Personal
  • Describe yourself
  • Achievements in your life
  • Bad situation and how did you handle it
  • Why should we hire you
  • What is more important for you in a job
  • Why did you choose our company

Miscellaneous
  • You must do a lot of effort to get a JOB, don’t wait for it
  • Don’t wait for your military status
  • Do some online work to get attention and show your talent


How to excel in your new JOB

Topics
  • Work environment overview
  • First impression/build your reputation
  • Keep your performance high
  • Continuously update your knowledge and skills
  • Contribute to your company/society
  • Work/Life balance
  • Miscellaneous


Work environment overview


IT Company organizational chart


















Terminologies
  • Attendance
  • Tracking
  • Annual Evaluation
  • Raise
  • Escalation
  • Meeting minutes
  • Company Intranet
  • Contracting


IT Jobs/Skills - Areas/Roles












source: http://www.agencycentral.co.uk/agencysearch/IT/skills/skillsearch.htm

Technologies/Concepts

















Emerging Technologies (2009)















source: http://www.marketvisio.fi/Tietoayrityksest%C3%A4/Uutisarkisto/gnews110808/tabid/750/Default.aspx



First impression/build your reputation
  •  First impression is always lasting
  •  Start building your reputation in your first project
    •  Dependability
    •  Persistence
    •  Discipline
    •  Quality
    •  Team work
    •  Proactively
    •  Ownership

Keep your  performance high 
  •  Keep your reputation
  •  Keep your performance high
  •  How is performance measured ?
      •  Projects evaluation
        •  Quality/Quantity/Timing
      •  Contributions
        •  Non-project  activities
      •  Peer evaluation
        •  Communication/Negotiation/etc
      •  Manager evaluation
      •  Self evaluation


Example of peer evaluation criteria ?


Technical Competency
  1. Deep knowledge 
  2. Self reliance
  3. Identify/resolve technical problems
  4. Quality of work

Commitment to work
  1. High ownership and dependability
  2. Meet required delivery dates 
  3. Availability at core working hours 
  4. Dedication to work
  5. Persistence to accomplish work needed
Team work
  1. Communicate effectively taking audience into account
  2. Effective listening skills
  3. Constructive negotiation skills in resolving conflicts
  4. Accepts responsibility for errors without defensive attitude or blaming others


Continuously update your knowledge and skills
  •  Reading
  •  Courses
  •  Certifications
    •  SUN , IBM ,  Microsoft,  Oracle,  CISCO,  PMP
  •  Conferences
    •   JDC
    •   ICT
  •  Intra/Extra-company activities
    •  Internal community
    •  Open source involvement


Contribute to your company/society

  •  Share knowledge
    •  Presentations
    •  Mails
    •  Talking
    •  etc
  •  Contribute to your company
    •  Tools to facilitate daily work
    •  Ideas to get more business/money
    •  Patents
  •  Society
    •  Presentations/Courses/Education/Etc

Work/Life balance

If you followed the steps above, there will be no room for your personal life  

  •  Balance between Work and Life
  •  Strict actions with your company if they are consistently affecting your  personal life - After first year
  •  Working from home – If your company supports it
  •  Apply time management techniques

Rules
  •  Work time for work activities only
  •  The rest of the day should be balanced between your personal life and your non-work activities


Miscellaneous

  •  Be Creative
  •  Work smarter not harder
  •  Monitor your performance
  •  Ask for feedback
  •  Accept criticism
  •  Be flexible


References

Performance Measurement
CVs
IQ Tests
Interviews





Mind Mapping presentation

A presentation conducted as part of Axcelerate initiative @ MSA University in 2008


Presentation file: Mind-Mapping-v4-web.ppt

Presentation content

Agenda
  1. What is mind mapping
  2. History
  3. Examples
  4. How does it work
  5. Application areas
  6. How to use it in your studies
  7. Guidelines
  8. MindMapping software
  9. References
What is mind mapping
A mind map is a diagram used to represent words, ideas, tasks or other items linked to and arranged around a central key word or idea.
It is used to generate, visualize,
    structure and classify ideas.
History
Mapping:
The mapping concept started evolving in 1960s when some learning experts discovered that meaningful learning occur when we link concepts together
Concept mapping:
The technique of concept mapping was developed by Joseph D. Novak and his research team at Cornell University in the 1960s as a mean of representing the emerging scientific knowledge to students.
Mind Mapping:
Developed and copyrighted by Tony Buzan in the1970s, the difference between mind mapping and concept mapping is that Mind Mapping consists of one Key or Concept while Concept mappings can contain many concepts
Examples
Examples - Cont
How does it work


Application areas
Note talking
Organizing ideas/brainstorming
Memorizing
It is more easier to remember mind maps rather than test notes
Decision making/planning
You see the big picture, relation between relevant information
Presentations
Others


How to use it in your studies
Note talking in class
Summarize key topics of each chapter in 1 Map
B4 any exam:
Summarize and relate key topics from all chapters in 1 Map
Don’t take the Map with you in the exam 
How to use it in your studies - Cont
Guidelines
Mind mapping software
Imindmap: http://www.imindmap.com/
Inspiration: http://www.inspiration.com/
MindGenius: http://www.mindgenius.com/
Mind manager: http://www.mindjet.com/uk/
NovaMind: https://www.novamind.com/
Freemind (Open source): http://freemind.sourceforge.net/wiki/index.php/Main_Page


Summary
References
http://en.wikipedia.org/wiki/Concept_mapping
http://en.wikipedia.org/wiki/Mind_map
http://www.innovationtools.com/Articles/InterviewDetails.asp?a=252
http://www.mind-mapping.co.uk/Articles.htm







Project Zero Introduction presentation

Presentation conducted @ IBM in 2008

Presentation file
Project Zero Introduction.ppt

presentation content

What is Project Zero

Project Zero is:

A technology incubator project
Open source (community driven commercial development )
Centered around agile development and the next generation of dynamic Web applications
A simple environment for creating, assembling and running applications based on popular Web technologies.

WebSphere sMash

WebSphere sMash
Is the commercial product based on Project Zero.
Consists of only stable modules for production deployment.


WebSphere sMash DE
Developer Edition of WebSphere sMash
It is free for development and limited deployment



Advantages

Quickly build and deliver situational applications that meet your clients’ specific needs
Includes a scripting runtime for Groovy and PHP
APIs optimized for producing REST-style services
Integration mash-ups and rich Web interfaces (DOJO)
Cost effective solutions

Zero / sMash
Zero
Zero unnecessary overhead and complexity
Zero barriers to success
Zero of what you don't need



sMash
Secure || Situational || Simple || Server side  [ Mashups ]

Architecture

Core Concepts
Restful service
Event handlers
Application-centric runtime
Global context
Virtual directories
View rendering

Core Concepts – Restful Service

Representational State Transfer
The Web architecture
Resources
Resources are addressable
Unified Interface (GET, POST, PUT, DELETE)
Client Server
Stateless


Core Concepts – Restful Service

The Project Zero environment is optimized around the REST design model.
Each REST service is implemented by a script (called a handler), scripts live in the directory: /app/resources
Services are accessed using a standard URL convention:
Example: http://localhost:8080/resources/people

Core Concepts – Event handlers

Project Zero is an event-based system
Application developers mainly provide a set of handlers that hook into the well-known system events to achieve application behavior needed




Core Concepts – Application-centric runtime
“Application is the server”

Each WebSphere sMash application is a self contained entity containing all of the components necessary to run the application

Benefits

Removal of error prone deployment task
Application Isolation
Core Concepts – Global context
Event handlers in WebSphere sMash are stateless and cannot maintain a variable state across invocations
Provides access/management of application state
Divided into a set of zones with different data lifecycles

Core Concepts – Virtual Directories
Help you use conventions to reduce
      the amount of configuration in an application
Core Concepts – Virtual Directories - cont
WebSphere sMash uses a dependency management utility called Ivy
Core Concepts – View Rendering
An HTTP response body can be generated using direct APIs
or indirect rendering

Direct API



Indirect rendering
View
JSON
XML
Error

Topics not discussed

Persistence
Security
Integration with other IBM products
Zero resource model
File manipulation
Java Bridge
Others

Demo 1
Installation of WebSphere sMash
Using application builder
   
Development Environment
Command-line interface (CLI)

Provides the basic support for developing and executing
    WebSphere sMash applications

App Builder ( IDE )

App Builder is a Web-based tool for developing WebSphere sMash applications. App Builder is itself a WebSphere sMash application

Eclipse plug-in

The plug-in provide support for creating, resolving, and running WebSphere sMash applications, as well as basic repository management.


Installation

Installation - Application builder
Download Project Zero
Unzip
Be sure you have JAVA_HOME set to the JDK folder
Open zero folder in CMD
Run “appbuilder open” command
Wait until all dependencies have been resolved( downloaded )
Application builder will open a browser window using the following   url: http://localhost:8070/
Installation -  Eclipse Plug-in
Open Help > Software Update
Add the following repository https://www.projectzero.org/zero/silverstone/latest/update/zero.eclipse
Install
Restart Eclipse
Demo 2
RESTful service
    A RESTful service to retrieve information about IBMrs

A Quick Mashup
    A Mashup to search for IBMr presence on the internet
   
References
http://www-01.ibm.com/software/webservers/smash/
http://www.projectzero.org
http://www.projectzero.org/about/zerofaq.php
http://www.projectzero.org/blog/index.php/2008/05/19/my-javaone-slides-online/
http://www.projectzero.org/zero/silverstone/latest/docs/zero.overview.doc/zero.overview.doc/Components.html
http://www.projectzero.org/zero/silverstone/latest/docs/zero.gettingstarted.doc/
http://www.projectzero.org/sMash/1.0.x/docs/zero.devguide.doc/zero.core/VirtualizedDirectories.html
http://www.ibm.com/developerworks/ibm/library/i-zero1/
http://www.ibm.com/developerworks/web/library/wa-pz-intro/
http://www.slideshare.net/jassics/ibm-websphere-s-mash-presentation?src=embed
http://www.slideshare.net/nicholsr/project-zero-php-quebec
http://www.slideshare.net/nicholsr/project-zero-java-one2008
https://twitter.com/ProjectZero
http://www.youtube.com/watch?v=M0KrnlqxUrQ
http://www.youtube.com/watch?v=q_lirVFQqoY



Web Searching 2.0 & Beyond presentation

Presentation conducted @ IBM in 2009

Presentation file
Web Searching 2.0.ppt

Presentation content


What is Web Searching 2.0 ?
WS 2.0 is about searching Web 2.0 Effectively
 How ?
By changing our searching mindset
Utilizing the modern web trends/tools in our daily searching



How search engine (SE) works ?
Crawling

Search Engine Optimization - SEO
What is it SEO?
      SEO is the process of improving the volume and quality of traffic to a web site from search engines via "natural" ("organic" or "algorithmic") search results.
Good SEO = High Ranking
      The earlier a site is presented in the search results the higher it "ranks“, the more searchers will visit that site.

How could website X be optimized for SEs ?
Adding relevant page Title and Meta Description
Good Navigation and Layout
Other website should Refer (link) to website X
Sitemaps ( an xml file describing your website )
Adding more Languages

Invisible Web - Deep Web

Deep Web
    The deep Web (also called Deep net, the invisible Web, or the hidden Web) refers to World Wide Web content that is not part of the surface Web, which is indexed by search engines.
    It is estimated that the deep web is 500 times larger than the surface Web

Searching – Where to search ?
Your PC
Google Desktop
Invisible Web
File sharing websites
Specialized Websites
Wikipedia.org
SlideShare.com
Directories
DMOZ.org
Search Engines => After 2 Slide
Meta Search Engine
Search.com
Metacrawler.com
Dogpile.com
Searching – Where to search ?
Specialized (Vertical) search engines
Koders.com
Wink.com
Social Bookmarks (Tagging)
Delicious.com
Digg.com
Visual search
SearchMe.com
Kartoo.com
Your Own search engine
Yahoo! Search BOSS  *
    http://developer.yahoo.com/search/boss/
Google Custom Search Engine
    http://www.google.com/coop/cse/
Others
Clusty.com


Searching – Where to search ?

You Decide …
How to search - Basics
List your search targets
 Search engine
 Specialized website
 …
List your search terms
Generate search strings from search terms
Search
Fine-tune your search strings

How to search - Advanced

                    
                   
           
How to search - Advanced
How to search - Advanced

Google - Specialties

Search Tips/Tricks
Change language when appropriate
Always use advanced operators
Think of the best view of your search ( filetype:ppt )
Write your search term as a question when appropriate
Don’t rush to search engine forms; plan first


Web Searching 20XX
Web 3.0
    Nova Spivack defines Web 3.0 as the third decade of the Web (2010–2020) during which he suggests several major complementary technology trends will reach new levels of maturity simultaneously



Web 3.0  - Semantic Web - Concepts

Web 3.0
    Nova Spivack defines Web 3.0 as the third decade of the Web (2010–2020) during which he suggests several major complementary technology trends will reach new levels of maturity simultaneously



Symantec Web - Technical
Semantic Web
Standards

RDF – Store data as “triples”


OWL – Define systems of concepts called “ontologies”

Sparql – Query data in RDF

SWRL – Define rules

GRDDL – Transform data to RDF




Symantec Web - Technical
RDF Triples


Symantec Web - Technical
Semantic Web
The Web is the DB





Implementations
Hakia.com
cluuz.com
Twine.com
PowerSet.com

IBM & Web Searching
IBM OmniFind Personal E-mail Search
    http://www.alphaworks.ibm.com/tech/emailsearch


    A powerful semantic search engine that enables you to search your e-mail easily and effectively; plug-ins are available for Microsoft Outlook and Lotus Notes mail systems.

OmniFind Enterprise Edition
    http://www-01.ibm.com/software/data/enterprise-search/omnifind-enterprise/features.html?S_CMP=wspace


    Pre-built integrations to more than 25 enterprise sources, including Lotus® Domino®, Windows SharePoint Services, FileNet repositories, Documentum repositories, shared file systems, relational databases, Microsoft® Exchange, and many others.

    Open platform for processing unstructured information to enable semantic queries, navigation of business intelligence results, and custom analytics applications.



IBM & Web Searching
Unstructured Information Management Architecture
    http://www.alphaworks.ibm.com/tech/uima

    Unstructured Information Management applications are software systems that analyze large volumes of unstructured information in order to discover knowledge that is relevant to an end user. UIMA is a framework and SDK for developing such applications. An example UIM application might ingest plain text and identify entities, such as persons, places, organizations; or relations, such as works-for or located-at.


IBM Web Ontology Manager
    http://www.alphaworks.ibm.com/tech/wom


    IBM Web Ontology Manager is a lightweight, Web-based tool for managing ontologies expressed in Web Ontology Language (OWL). With this technology, users can browse, search, and submit ontologies to an ontology repository. Developers can discover new ontologies without having to develop the ontology themselves; reusability is thereby promoted and development time and effort is reduced. This technology includes a Web interface for easy uploading of ontologies in an .owl format by any user of the system. It also includes an interface for generating (using Jastor) Java™ APIs from uploaded ontology files.


IBM & Web Searching

Semantic Layer Research Platform
    https://w3.opensource.ibm.com/projects/slrp/
    http://ibm-slrp.sourceforge.net/2006/12/01/what-is-the-ibm-semantic-layered-research-platform-contd/


Boca1.
Boca is the foundation of many of our components. It is an enterprise-featured RDF store that provides support for multiple users, distributed clients, offline work, real-time notification, named-graph modularization, versioning, access controls, and transactions with preconditions. Matt’s written more about Boca here . Along with Boca are included two subsystems which may also be interesting on their own:
Glitter.
 Glitter is a SPARQL engine independent of any particular backend. It allows interfaces to backend data sources to plugin to the core engine and generate solutions for portions of SPARQL queries with varying granularity. The core engine orchestrates query rewriting, optimization, and execution, and composes solutions generated by the backend. A Boca-specific backend allows SPARQL queries to be compiled to Boca’s temporal database schema.
Sleuth.
 Sleuth provides full-text search capabilities for text literals within Boca. Text literals are indexed with Apache Lucene, and the index also stores information about the named graph, subject, and predicate to which the literal is attached.
   
    A platform for building Semantic applications that use RDF, LSID and other Semantic Web technologies. The platform includes several components such as an RDF server with collections, acls, replication and transactions, client and web development kits including an Eclipse suite of plugins for RDF consumption



IBM & Web Searching

IBM Integrated Ontology Development Toolkit
    http://www.alphaworks.ibm.com/tech/semanticstk
   
    Ontology: an ontology is a formal representation of a set of concepts within a domain and the relationships between those concepts.

    IODT is a toolkit for ontology-driven development. This toolkit includes EMF Ontology Definition Metamodel (EODM) and an OWL ontology repository named Scalable Ontology Repository (SOR).

Others

IBM Multimedia Analysis and Retrieval System
IBM LanguageWare Miner for Multidimensional Socio-Semantic Networks
Anatomy Lens
Agent Building and Learning Environment
System Text for Information Extraction
IBM LanguageWare Miner for Multidimensional Socio-Semantic Networks
Scalable Highly Expressive Reasoner
Muffin
http://mufin.fi.muni.cz/imgsearch/

Projects
http://www.guardian.co.uk/media/2007/mar/05/bbc.newmedia

Summary
  1. WS 2.0 is about searching Web 2.0 Effectivly
  2. Most of the web (Invisible web) do not appear in search engines results
  3. Web searching is not limited to search engines
  4. Web 3.0 = Web 2.0 + Semantic Web
  5. IBM and WS


Thank You

References

WikiPedia
http://en.wikipedia.org/wiki/Crawling
http://en.wikipedia.org/wiki/Web_3.0
http://en.wikipedia.org/wiki/Semantic_Web
http://en.wikipedia.org/wiki/Search_engine_optimization
http://en.wikipedia.org/wiki/Deep_web
http://en.wikipedia.org/wiki/List_of_search_engines
http://en.wikipedia.org/wiki/Social_bookmarking
http://en.wikipedia.org/wiki/Metasearch_engine

Search Engines
http://www.google.com/support/?ctx=web
http://help.yahoo.com/l/us/yahoo/search/basics/basics-04.html
http://www.googleguide.com/

References

IBM
http://www.alphaworks.ibm.com/

http://w3.ibm.com/bluepedia/display/en/Semantic+Web
http://omnifind.ibm.yahoo.net/


References - Cont
Others
http://www.lib.berkeley.edu/TeachingLib/Guides/Internet/InvisibleWeb.html
http://searchengineland.com/comscore-yahoo-microsoft-gain-share-but-google-breaks-7-billion-searches-14412.php
http://www.hybridsem.com/blog/2007/11/07/the-ultimate-guide-to-advanced-searching-within-yahoo-google-and-msn-operators/
http://www.ihelpyou.com/search-engine-chart.html
http://www.bruceclay.com/searchenginechart.pdf
http://www.bruceclay.com/serc_histogram/histogram.htm
http://www.seomoz.org/blog/the-search-engines-semantic-analysis-capabilities
http://www.usa.gov/webcontent/documents/SEO_Course%2007.ppt
http://www.brightplanet.com/resources/details/deepweb.html
http://www.windweaver.com/searchlinks.htm
http://vimeo.com/1062481
http://www.dlib.indiana.edu/education/brownbags/fall2008/Semantic_Web/SemanticWeb.ppt
http://pixelcort.com/259
http://computer.howstuffworks.com/web-30.htm
http://www.readwriteweb.com/archives/10_semantic_apps_to_watch_one_year_later.php
http://www.semwebcentral.org/?open
http://www.fastcompany.tv/video/ibm-uses-semantics-get-better-search


Design Patterns and Principles presentation

This is the first presentation i conducted @ IBM in 2006


Presentation file

Design Patterns and princibles.ppt


Presentation content

Agenda
  1. What are design principles?
  2. What are design patterns?
  3. Design patterns benefits and problems
  4. History of patterns
  5. Design patterns categories
  6. Design patterns catalogue
  7. MVC “a compound pattern”
  8. Are these all the patterns we have?
  9. Should i follow design patterns/principles strictly?

What are design principles?

A set of principles that guide you during your design

Ex: “Favor composition over inheritance”


What are design patterns?
A pattern is a solution to a problem in a context

Context
Is a situation in which the pattern applies. This should be recurring situation (ex: you have a collection of objects )

Problem
Refer to the goal you are trying to achieve in this context, but also refers to any constraints that occur in the context (ex: you need to step through them without exposing their implementation )

Solution
Is what you are after: a general design that anyone can apply which resolves the goal and set of constraints (ex: encapsulate the iteration into a separate class )


It is a proven design experience that can be used to avoid common mistakes

Design patterns benefits and problems

Benefits

A guaranteed solution that is used and tested by lots of developers
Using a solutions that is well documented and that other developers are going to recognize (shared vocabulary)

Problems

Increase complexity: Design pattern often introduce additional classes and objects to your design
Decrease efficiency: Adding more layers to your design
Some times there are much simpler solutions to solve the same problem


History of patterns

Patterns originated as an architectural concept by Christopher Alexander.[3]

In 1987, Kent Beck and Ward Cunningham began experimenting with the idea of applying patterns to programming and presented their results at the OOPSLA conference that year.[3]

Design patterns gained popularity in computer science after the book “Design Patterns: Elements of Reusable Object-Oriented Software” was published in 1994 (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides) (GOF). [3]

Be proud :)  
John Vlissides is a researcher at the IBM T.J. Watson Research Center. [2]
Richard Helm was in the Software Technology department at IBM T.J. Watson Research Center investigating object-oriented design and reuse and visualization. Recently rejoined IBM  to start the Australian branch of the Object Technology Practice. [2]

Design patterns categories

Patterns are categorized according to their purposes

Creational
Involve object instantiation and all provide a way to decouple a client from the objects it needs to instantiate.

Behavioral
 Is concerned with how classes and objects interact and distribute responsibilities

Structural
 Structural patterns describe how classes and objects can be combined to form larger structures

Class patterns
Describe how relationships between classes are defined via inheritance.
Relationships in class patterns are established at compiler time.

Object patterns
Describe relationships between objects and are primarily defined by composition.
Relationships in object patterns are typically crated at runtime and are more dynamic and flexible.
Design patterns categories



Design patterns catalogue

1- Factory pattern
       
    Simple Factory (not a pattern)



Simple factory UML [12]

Design patterns catalogue

1- Factory pattern
       
    Abstract factory pattern

Definition:

Provide an interface for creating families of related or dependant objects without specifying their concrete classes

Problem

A system should be independent of how its products are created, composed and represented
A family of related product objects is designed to be used together, and you need to enforce this constraint
Design patterns catalogue

1- Factory pattern - Abstract factory pattern - Solution




Pattern generic UML [10]

Design patterns catalogue

1- Factory pattern - Abstract factory pattern - Solution







Real world example
Design patterns catalogue

1- Factory pattern
       
    Factory method pattern

Definition:

Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory method lets a class defer instantiation to the subclass

Problem

A class can't anticipate the class of the objects it must create
Need to delegate responsibility to helper subclasses
Design patterns catalogue

1- Factory pattern - Factory method pattern - Solution



Pattern generic UML [4]
Design patterns catalogue

1- Factory pattern

Design principles
Dependency Inversion principle: Depend upon abstraction. Do not depend upon concrete classes (height level class depend on abstraction and low level classes depend on abstraction…they don’t depend on each other )
It helps decoupling high level and low level classes

Benefits/consequences
+  Flexibility: removes type dependencies from clients
+  Code is made more flexible and reusable by the elimination of instantiation of
    application-specific classes
-   Supporting new kinds of products requires changing the AbstractFactory
    interface
Design patterns catalogue

2- Builder pattern

Definition:

Separate the construction of a complex object from its representation so that the same construction process can create different representations.
[it is a factory of complex objects ]

Problem

You need to encapsulate the construction of a product and allow it to be constructed in steps.
Design patterns catalogue

2- Builder pattern – Solution












    

Design patterns catalogue

2- Builder pattern – Solution












    

Design patterns catalogue

2- Builder pattern

Benefits/consequences

+    Encapsulate the way complex objects is constructed
+    Allow objects to be constructed in a multistep and varying process (as opposed to one step factories)
+    Hides the internal representation of the product from the client
+    Product implementation can be swapped in and out because the client only sees an abstract interface
-    Constructing objects requires more domain knowledge of the client than using a Factory
Design patterns catalogue

3- Prototype pattern

Definition

Specify the kind of objects to create using a prototypical instance, and create new objects by copying this prototype

Problem

You are creating an instance of a given class that is either expensive or complicated
Design patterns catalogue

3- Prototype pattern – Solution




Design patterns catalogue

3- Prototype pattern – Solution











    

Design patterns catalogue

3- Prototype pattern – Solution



Design patterns catalogue

3- Prototype pattern


Benefits/consequences

+   Hides the complexities of making new instances from the client
+   Provide the option for the client to generate objects whose type is not known
+   In some circumstances, copying an object can be more efficient than creating a new object
-    making a copy of an object can sometimes be complicated
Design patterns catalogue

4- Singleton pattern

Definition:

Ensure a class only has one instance and provide a global point of access to it


Problem

When there must be exactly one instance of a class, and it must be accessible from a well-known access point
Design patterns catalogue




Pattern generic UML [7]
Design patterns catalogue

4- Singleton pattern – Solution

   
Design patterns catalogue

4- Singleton pattern


Benefits/consequences
+ Reduces namespace pollution
+ Eliminates the need for global variables that store single instances
+ Allow extension by subclassing
-  Implementation may be less efficient than a global

Used in
WindowManager, PrinterManager, FileManager, SecurityManager, ...
Log and error reporting classes



Design patterns categories



Design patterns catalogue

5- Adapter pattern

Definition:

Converts the interface of a class into another interface clients expect. Lets classes work together that couldn’t otherwise because of incompatible interface

Problem

You want to use an existing class, and its interface does not match the one you need
Design patterns catalogue

5- Adapter pattern – Solution - Object adapter


Pattern generic UML [4]
Design patterns catalogue

5- Adapter pattern – Solution - Class adapter


Pattern generic UML [15]



   
Design patterns catalogue

5- Adapter pattern


Benefits/consequences
+   Allows for pre-existing objects to fit into new class structures without being limited by their interfaces
-    Makes it harder to override Adaptee behavior, It will require subclassing Adaptee and making Adapter refer to the subclass rather than the Adaptee itself
Design patterns catalogue

6- Bridge pattern

Definition:

Decouple an abstraction from its implementation so that the two can vary independently

Problem

You need to vary an interface and an implementation in different ways
Design patterns catalogue

6- Bridge pattern – Solution







Design patterns catalogue

6- Bridge pattern – Solution





Design patterns catalogue

6- Bridge pattern

Benefits/consequences

+    Decouple an implementation so that it is not bound permanently to an interface
+    Abstraction and implementation can be extended independently
+    Changes to the concrete abstraction don’t affect the client
-     Increase complexity

Used in
Graphic and windowing systems that need to run over multiple platforms.
Design patterns catalogue

7- Composite pattern

Definition:

Compose object into tree structures to represent part-whole (tree made of parts but treated as a whole) hierarchies. Composite lets client treat individual objects and compositions of objects uniformly

Problem

You want to represent part-whole hierarchies of objects
You want clients to be able to ignore the difference between compositions of objects and individual objects
Design patterns catalogue

7- Composite pattern – Solution


Design patterns catalogue

7- Composite pattern – Solution






Design patterns catalogue

7- Composite pattern


Benefits/consequences

+   Uniformity: treat components the same regardless of complexity
+   Extensibility: new Component subclasses work wherever old ones do
-    Can make your design overly general – Harder to restrict the components of a composite
Design patterns catalogue


8- Decorator pattern

Definition:

The decorator pattern allows new/additional behavior to be added to an existing method of an object dynamically.
Subclassing adds behaviour at compile time whereas decorators provide a new behaviour at runtime.

Problem

Need to add responsibilities to objects dynamically and transparently
Design patterns catalogue

8- Decorator pattern

Problem


Real world example [9]
Design patterns catalogue

8- Decorator pattern - Solution



Pattern generic UML [9]
Design patterns catalogue

8- Decorator pattern – Solution



   
Pattern generic UML [4]
Design patterns catalogue

8- Decorator pattern

Design principles
Classes should be open for extension but closed for modification
To keep “reliable tested code” away from altering and in the same time allow to extends your code

Benefits/consequences
+  More flexible than static inheritance
+  Responsibilities can be added/removed at run-time
+  Avoids subclass explosion
-   Lots of little objects
-   Overuse can be complex (many decorators)

Used in
Used in java IO ( BufferedOutputStream )
Design patterns catalogue

9- Facade pattern

Definition:

Provides a unified interface to set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.

Problem

Need to provide a simple interface to a complex system
Need to decouple a subsystem from its clients
Need to provide an interface to a software layer
Design patterns catalogue

9- Facade pattern – Solution





Pattern generic UML [4]
Design patterns catalogue

9- Facade pattern – Solution




Design patterns catalogue

9- Facade pattern

Benefits/consequences

+ Promotes weak coupling between the subsystem and its clients
-  One possible disadvantage to this pattern is that you may lose some functionality contained in the lower level of classes
Design patterns catalogue

10- Flyweight pattern

Definition:

Flyweight is a structural pattern which use sharing to support large numbers of small objects efficiently

Problem

An application uses a large number of objects.
Storage costs are high because of the sheer quantity of objects.
Most object state can be made extrinsic [that is, the object state that can be defined outside the object itself.]
Many groups of objects may be replaced by relatively few shared objects once extrinsic state is removed.
Design patterns catalogue

10- Flyweight pattern – Solution


    

Design patterns catalogue

10- Flyweight pattern

Benefits/consequences

+    Reduce number of objects instances at runtime, saving memory.
+    Centralize state for many virtual objects into a single location
-     Once implemented single logical instances of the class will not be able to behave independently from the other instances.
Design patterns catalogue

11- Proxy pattern

Definition:

Provide a surrogate (alternative) or placeholder for another object to control access to it.

Problem

Use the proxy pattern to create a representative object that controls access to another object, which may be remote, expensive to create or in need of securing
Design patterns catalogue

11- Proxy pattern – Solution


    

Design patterns catalogue

11- Proxy pattern – Other kinds of proxy patterns


Remote proxies
Responsible for encoding a request and its arguments and for sending the encoded request to the real subject in a different address space.  (RMI)

Virtual proxies
Controls access to an object that is expensive to instantiate ( wait …loading image)

Protection proxies
Controls access to the methods of an object based on the caller

Other types
 Cashing, synchronization, firewall, copy-on-write proxies.

Design patterns catalogue

11- Proxy pattern


Benefits/consequences

Remote Proxy
Hides fact that object resides in a different address space.
Virtual Proxy
Perform optimizations such as creation on demand.
Protection Proxy
Allow additional housekeeping tasks when object is accessed.


Used in
Distributed systems
Protection proxy pattern used in java: java.lang.reflect package



Design patterns categories



Design patterns catalogue

12- Chain of responsibility pattern

Definition:

Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it.

Problem

Use the chain of responsibility pattern when you want to give more than one object a chance to handle a request
Design patterns catalogue

12- Chain of responsibility pattern – Solution


    

Design patterns catalogue

12- Chain of responsibility pattern – Solution
    

Design patterns catalogue

12- Chain of responsibility pattern

Benefits/consequences

+   Decouple the sender of the request from its receiver
+   Simplifies your object because it doesn’t have to know the chain structure and keep direct references to its members
+   Allow you to add or remove responsibilities dynamically by changing the members or order of the chain
Hard to observe runtime characteristics and debug


Used in

Used in windows systems to handle events like mouse clicks and keyboard events
Design patterns catalogue

13- Command pattern

Definition:

Encapsulate a request as an object , there by letting you parameterize clients with different requests , queue or log requests, and support undoable operations

Problem

Parameterize objects by an action to perform.
Specify, queue, and execute requests at different times
Support undo
Support logging changes so that they can be reapplied in case of a system crash.
Design patterns catalogue

13- Command pattern - Solution

Pattern generic UML [4]
Design patterns catalogue

13- Command pattern – Solution



   
Design patterns catalogue

13- Command pattern – Solution

   
Design patterns catalogue

13- Command pattern


Benefits/consequences
+ Decouples an object, making a request from the one that knows how to perform it (invoker, receiver)
-  The major disadvantage of the pattern is that it results in lots of little Command classes that can increase design complexity


Used in
Logging, transactional systems, Queuing
Design patterns catalogue

14- Interpreter pattern

Definition:

Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language


Problem

You want to build an interpreter for a simple language
Design patterns catalogue

14- Interpreter pattern – Solution


    

Design patterns catalogue

14- Interpreter pattern

Benefits/consequences

+    Representing each grammar rule in a class makes the language easy to implement, extend
+    Centralize state for many virtual objects into a single location
-     It can become cumbersome when the number of grammar rules is large. In these cases a parser/compiler generator may be more appropriate
Design patterns catalogue

15- Iterator pattern

Definition:

Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.

Problem

Require multiple traversal algorithms over an aggregate
Require a uniform traversal interface over different aggregates
When aggregate classes and traversal algorithm must vary independently
Design patterns catalogue

15- Iterator pattern – Solution



    

Design patterns catalogue

15- Iterator pattern

Design principles
Single responsibility: a class should have only one reason to change
It promotes high cohesion
Having more than one responsibility increase the probability that the class will change in the future


Benefits/consequences
+  Flexibility: aggregate and traversal are independent
+  Multiple iterators  multiple traversal algorithms
+  Removed the responsibility of traversal from the aggregate class
-   Additional communication overhead between iterator and aggregate

Used in:
Used in java (Iterator interface and the collections framework)
Design patterns catalogue

16- Mediator pattern

Definition:

Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently

Problem

You want to centralize complex communications and control between related objects
Design patterns catalogue

16- Mediator pattern – Solution

    

Design patterns catalogue

16- Mediator pattern – Solution


Design patterns catalogue

16- Mediator pattern – Solution



Design patterns catalogue

16- Mediator pattern

Benefits/consequences

+   Increase the reusability of the objects supported by the mediator by decoupling them from the system
+   Simplifies maintenance of the system by centralizing control logic
+   Simplifies messages sent between objects in the system
-    Without proper design the mediator itself can become complex

Used in

Used to coordinate related GUI components
Design patterns catalogue


17- Memento pattern

Definition

Meaning: A reminder of the past; a keepsake [dictionary.com]
Without violating encapsulation, capture and externalize an object’s internal state so that the object can be restored to this state later

Problem

You need to be able to return an object to one of it’s previous states (ex: save a game state)
Design patterns catalogue

17- Memento pattern – Solution


Design patterns catalogue

17- Memento pattern – Solution - code



Design patterns catalogue

17- Memento pattern


Benefits/consequences

+   Keeping the saved state external from the key object helps maintain cohesion
+   Keep the key object’s data encapsulated
+   Provide easy to implement recovery capability
-    Saving and restoring can be time consuming

Used in

Used in Game programming
Design patterns catalogue

18- Observer pattern

Definition:

Defines a one-to-many dependency between objects so that when one object changes state, all of its dependency are notified and updated automatically

Problem

When a change to one object requires changing others, and you don't know how many objects need to be changed
Design patterns catalogue

18- Observer pattern  -  Problem


Real world example [34]
Design patterns catalogue

18- Observer pattern   - Solution

     Pattern generic UML [4]
Design patterns catalogue

18- Observer pattern

Design principles
Strive for loosely coupled designs between objects that interact
Change in either parts will not affect the other part

Benefits/consequences
+    Modularity: subject and observers may vary independently
+    Extensibility: can define and add any number of observers
-     High Costs for update: Several consecutive operations may cause several consecutive updates, which may cause extremely high costs for update.

Used in
Java has several implementations of the observable pattern including java.util.Observable implementation
Swing makes heavy use of the observer pattern
MVC uses this pattern
Design patterns catalogue


19- State pattern

Definition:

Allow an object to alter its behavior when it’s internal state changes. The object will appear to change it’s class

Problem

An object’s behavior depends on its state, and it must change its behavior at run-time depending on that state.
Operations have large, multipart conditional statements that depend on the object’s state.
Design patterns catalogue

19- State pattern – Solution




Design patterns catalogue

19- State pattern – Solution




Design patterns catalogue

19- State pattern


Benefits/consequences

+   It localizes state-specific behavior (we localized any change that will be made) and partitions behavior for different states.
+   State objects can be shared among context instances
-    It will result in a greater number of classes in your design
Design patterns catalogue

20- Strategy pattern

Definition: 

The strategy pattern is a particular software design pattern, whereby algorithms can be selected on-the-fly at runtime depending on conditions, like strategies in a war situation.

Problem

When an object should be configurable with one of several algorithms
A class defines many behaviors.
Design patterns catalogue

20- Strategy pattern – Solution




    Pattern generic UML [4]



Design patterns catalogue

20- Strategy pattern

Design principles
Encapsulate what varies
Extendibility and maintainability
Favor composition over inheritance
Extendibility, change at runtime
Program to interfaces, not implementation
Extendibility, change at runtime

Benefits/consequences
+ Greater flexibility, reuse, extendibility
+ Can change algorithms dynamically
-  Strategy creation & communication overhead
-  Increase the number of classes in the design

Design patterns catalogue

21- Template pattern

Definition:

Define the skeleton of an algorithm in an operation, deferring some steps to subclass. Template method lets subclasses refine certain steps of an algorithm without changing the algorithm’s structure

Problem

To implement invariant aspects of an algorithm once and let subclasses define variant parts
To localize common behaviour in a class to increase code reuse
Design patterns catalogue

21- Template pattern – Solution



          Pattern generic UML [4]
Design patterns catalogue

21- Template pattern – Solution






Design patterns catalogue

21- Template pattern

Design principles
Hollywood principle: Don’t call us we will call you (high level say to low level components)
This principle allows low level components to hook themselves into a system, but high level components determine when they are needed and how
Reduce object dependencies in your systems (one call to processOrder)
Insulate the application from the specific underlying implementation
Make your code more portable

Benefits/consequences
+  Leads to inversion of control (“Hollywood principle”: don't call us – we'll call you)
+  Promotes code reuse
+  Lets you enforce overriding rules
-   Problem of verification of the assumptions made by the base class which can be violated by the implementation in a subclass.
Design patterns catalogue



22- Visitor pattern

Definition

Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates

Problem

You want to add capabilities to a composite of objects and encapsulation is not important
Design patterns catalogue

22- Visitor pattern
    – Solution




Design patterns catalogue

22- Visitor pattern


Benefits/consequences

+  Allow you to add operations to a composite structure without changing the structure itself
+  Adding new operations is relatively easy
-   The composite class encapsulation is broken when the visitor  is used




MVC “a compound pattern”

Patterns can be used together
MVC is a compound pattern consisting of the observer (model), Strategy (controller) and Composite pattern (view)

MVC “a compound pattern”




MVC “a compound pattern”



Are these all the patterns we have?


The 23 patterns in this presentation are the fundamental patterns found in GOF book; there are other categories of patterns such as

Domain-specific patterns (real-time and concurrent systems,  j2EE)
Business process patterns
User interface patterns
Organizational patterns ( describe the structure and practiced of human organization )
Application patterns (pattern for creating system level architecture )



    

Are these all the patterns we have?


Should i follow design patterns/principles strictly?

Off course not, Design Patterns and principles are not meant to be laws and rules; they are guidelines that you can alter to fit your needs

Patterns are not set in stone; adapt and tweak them to meet your needs




    

References

http://www.cmcrossroads.com/bradapp/docs/patterns-intro.html
http://hillside.net/patterns/DPBook/GOF.html
http://en.wikipedia.org/wiki/Design_pattern_(computer_science)
http://www.dofactory.com/Patterns/Patterns.aspx
http://home.earthlink.net/~huston2/dp
http://sern.ucalgary.ca/courses/seng/443/f2004/patternNotes/Hanna_Tseng_&_Xing/
http://www.ece.uwaterloo.ca/~talguind/ ece355/project/DPATTERNS-OVERVIEW-EXAMPLES.ppt
http://www.cs.clemson.edu/~malloy/courses/patterns/
http://cs.anu.edu.au/student/comp2110/archive-2002/lectures/lec20/lec20.html
http://weblogs.pontonetpt.com/rjclaro/gallery/image/246.aspx
http://people.cs.uchicago.edu/~mark/51023/presentations/Abstract%20Factory.ppt
http://builder.com.com/5100-6386-1045719.html
http://www.research.umbc.edu/~tarr/dp/lectures/Factory-2pp.pdf
http://www.codeproject.com/csharp/commandpatterndemo.asp
http://cs.anu.edu.au/student/comp2110/archive-2002/lectures/lec19/lec19.html
http://www.macromedia.com/devnet/flashremoting/articles/facades.html
http://csse.usc.edu/classes/cs377_2004/Lecture13.ppt
http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/patterns/tutorial.html
http://bdn.borland.com/borcon2004/article/paper/0,1963,32140,00.html
http://www-sop.inria.fr/axis/cbrtools/usermanual-eng/Patterns/Template.html
http://www.cse.wustl.edu/~cdgill/courses/cse432/Composite_Presentation_1_30.ppt
http://vlib.eitan.ac.il/dp/composite.html
http://www.cs.purdue.edu/homes/apm/slides/uml-slides/sundar-patterns-2.ppt
http://hermanland.com:8000/ouhk/mt356/herman2002/unit3/ar01s08.html
http://www.eli.sdsu.edu/courses/spring98/cs635/notes/proxy/proxy.html
http://www.cse.wustl.edu/~cdgill/courses/ cse432/Proxy_Observer_Presentation.ppt
http://webml.org/webml/page108.do;jsessionid=aZaO9iNGx_x-?dau92.oid=45&UserCtxParam=0&GroupCtxParam=0

http://publib.boulder.ibm.com/infocenter/iadthelp/topic/com.ibm.etools.struts.doc/topics/cstrdoc001.html
http://hermanland.com:8000/ouhk/mt356/herman2002/unit4/ar01s07.html
http://www.caterpillar.onlyfun.net/Gossip/DesignPattern/DesignPattern.htm
http://www.javaworld.com.tw/jute/post/view?bid=25&id=12509&sty=1&tpg=1&age=-1
http://people.cs.uchicago.edu/~matei/TA/CSPP523/memento.ppt
Head First Design Patterns Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy Sierra. 2004.. O'Reilly Media.
Design Patterns: Elements of Reusable Object-Oriented Software”, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides) (GOF), 1994, Addison Wesley




Sunday, April 29, 2012

When does Google Android developer console stats updates

Question

When does Google Android developer console statistics updates ?

Answer

According to my experience:

1-The developer console statistics updates every day somewhere from 5 - 6 AM PDT ( 12-1 PM GMT )

2-The lists ( ex: Top new free list) updates many times in the same day, sometimes i tracked updates every 6 hours and the main update is somewhere between 6 - 8 AM PDT ( 1-3 PM GMT ) and also 6-7 PM GMT

Note: Earlier before i thought that it is once per day, but recently i have initiated a campaign which provided hundreds of new installs/day and i found my app moving down the list many times in the same day

Note: consider daylight saving time changes


Can't login after Ubuntu 12.4 update (password invalid)


Error

Can't login after Ubuntu 12.4 update i got this error after i entered my username/password

Authentication token manipulation error


Solution

I logged in the guest session and then rebooted and finally the error disappeared


Friday, April 27, 2012

Rich dad poor dad book summary

Cash flow diagram
















Mindmapped  summary




Full presentation
Presentation i conducted for IT Guys several years ago

Rich-dad-poor-dad-presentation-web.ppt




Sunday, April 22, 2012

Ubuntu Printer /usr/lib/cups/backend/hp failed



Error

"/usr/lib/cups/backend/hp failed"

While printing test page on an HP printer


Solution

1- Create lpadmin group/add your user to that group

    groupadd lpadmin
    usermod -aG lpadmin 

2- Delete printer from gnome printer settings ( application > Printing )

3- Unplug the printer

4- Restart cups

       sudo service  cups restart

5- Plug the printer back

It worked for me







Saturday, April 21, 2012

Wine 1.4 Errors solved



Error

I gt the following errors after  upgrading to ubuntu 12.4 and installing a software using wine 1.4 and the setup didn't event open

warn:module:load_builtin_dll cannot open .so lib for builtin L"%1.dll"
warn:ntdll:NtQueryAttributesFile L"\\??\\C:\\windows\\system32\\%1.dll" not found (c0000034)
warn:ntdll:NtQueryAttributesFile L"\\??\\C:\\windows\\%1.dll" not found (c0000034)
warn:ntdll:NtQueryAttributesFile L"\\??\\C:\\windows\\system32\\%1.dll" not found (c0000034)
warn:ntdll:NtQueryAttributesFile L"\\??\\C:\\windows\\system\\%1.dll" not found (c0000034)
warn:ntdll:NtQueryAttributesFile L"\\??\\C:\\windows\\%1.dll" not found (c0000034)
warn:ntdll:NtQueryAttributesFile L"\\??\\C:\\windows\\system32\\%1.dll" not found (c0000034)
warn:ntdll:NtQueryAttributesFile L"\\??\\C:\\windows\\%1.dll" not found (c0000034)
warn:ntdll:NtQueryAttributesFile L"\\??\\C:\\windows\\system32\\wbem\\%1.dll" not found (c0000034)


Solution

The problem was due to the old .wine folder contents, so i did the following

1- Open winetricks
2- Choose "select the default winprefix"
3- Choose "delete ALL DATA AND PREFIX INSIDE THE WINEPREFIX"

Then i was able to open/install software


Wednesday, April 18, 2012

Google Analytics : Get old version back

If you HATE the new Analytics version just like me, and you were socked by the removal of the old version link today, don't worry it is still there

Use this link: https://www.google.com/analytics/settings/home


Thursday, April 12, 2012

Remove extra spaces around Android textfield (EditText)

To remove extra spaces (Margins) around TextView wrapped in LinearLayout add the following in the tag properties    android:background="@null"

           <EditText
                android:id="@+id/textView"
                android:layout_width="match_parent"
                android:layout_margin="0px"
                android:background="@null"
                android:layout_weight="1" >
            </EditText>


Wednesday, April 11, 2012

Web page not available while using Android WebView

Error

"Web page not available"

while using Android WebView

Solution

Add the following permission tag in the manifest file, also make sure it is placed directly after the manifest tag not inside Application or Activity tags

<uses-permission android:name="android.permission.INTERNET"></uses-permission>


Tuesday, April 10, 2012

PHP session empty after HEADER redirection (Not resuming)


Error

If you are redirecting between 2 php pages and you have changed the session in page #1 and can't find the changes in page #2 do the following

Solution

Add exit(0) after the header("Location:page2.php")

Possible reasons

- If the header is in the middle of page #1 and no exit after it some parsing happens which may alter your changes before the next  page
- The session is not persisted until the script has ended, which is not the case if there are some code after redirect line, that's why the "exit" is needed


check this relevant post: http://karim-ouda.blogspot.com/2013/01/empty-session-after-php-redirect-using.html

keywords: session_id session_start PHPSESSID session_name