text:
CLICK and Sign up for my free WEEKLY recipes and table setting ideas!
Re- post from 2012 because its such a fabulous Purim party recipe!!!!
If you don't already a copy of Robin Jemal's new cookbook, then you are indeed missing out on one of the best gourmet kosher cookbooks that you could ever own. Robin's hot off the press cookbook is chock full of easy to follow, brand new twists on our traditional but sometimes boring routine recipes. Recipes such as Rosemary Lemon Cornish Hens, Sliced Steak Pizza with Arugula Truffle Oil and Oven Dried Tomatoes, Panko Crusted Zucchinni Rollups with Eggplant Tomato Sauce, and Butternut Squash Ravioli are just some of the mouth watering recipes in this fabulous collection of soon to be your families' favorites.
This past Shabbat Lunch I served my family these pulled brick roast sandwiches on homemade challah rolls, and I can't tell you the excitement on the table as everyone gobbled them up.
Although I am not such a meat eater, I couldn't help but snatch a couple of bites of this tender sandwich. It was delicious! I would suggest adding this recipe to your Purim menu, along with Robin's recipe for Deboned Chicken and Baked French Fries. Sorry -You will have to buy the book for the chicken recipe! Click here to purchase Dare to be Different! Its worth every penny!
For more info, contact Lorraine- CLICK HERE.
Juicy Pulled Brick Roast Sandwiches:
Seasoning for Roast:
- 3 ½ pound brick roast
- Olive oil
- Salt
- Pepper
Sauce for Brick or French Roast:
- 2 Vidalia onions
- Salt
- Pepper
- 2 tablespoons olive oil
- 8 cloves garlic, crushed
- Paprika
- 1 cup apricot preserves
- ½ cup brown sugar
- 1 cup ketchup
- ½ teaspoon cayenne pepper
- 2 teaspoons apple cider vinegar
- ½ cup water
Pat brick roast dry and sprinkle it with salt and pepper. In a roaster, add olive oil and let it heat up. Sear roast on both sides until nicely browned.
Sauce: In a large skillet, fry onions in oil for 6-8 minutes over medium heat, and season with salt and pepper. Add garlic and paprika. (Do not let garlic brown). Stir in apricot preserves, brown sugar, ketchup, cayenne pepper and let it come to a boil. Lower fire to a simmer and stir in vinegar and water. Cook 3-5 minutes and allow ingredients to integrate.
Pour sauce over brick roast and cook in a roaster, in the oven, covered at 300°F for 4 hours. Add more water if needed.
Remove brick roast from oven and coarsely shred the meat with two forks. Skim any excess fat off barbeque sauce and return meat back into sauce. Serve on mini slider rolls.
CLICK and Sign up for my free WEEKLY recipes and table setting ideas!
Related articles
- "Dare to Be Different" Recipe for Zuchini Pasta with Mushrooms and Oven Dried Tomatoes (thejewishhostess.com)
- "Dare to Be Different" Recipe for Zuchini Pasta with Mushrooms and Oven Dried Tomatoes (thejewishhostess.com)


text:
This chapter describes the architecture and key functionality of Oracle Application Development Framework (Oracle ADF) when used to build a Fusion web application that uses ADF Business Components, ADF Model, ADF Controller, and ADF Faces rich client, along with high-level development practices.
This chapter includes the following sections:
Section 1.3, "Overview of Building an Application with Oracle ADF"
Section 1.6, "Generation of Complete Web Tier Using Oracle JHeadstart"
The Oracle Application Development Framework (Oracle ADF) is an end-to-end application framework that builds on Java Platform, Enterprise Edition (Java EE) standards and open-source technologies. You can use Oracle ADF to implement enterprise solutions that search, display, create, modify, and validate data using web, wireless, desktop, or web services interfaces. Because of its declarative nature, Oracle ADF simplifies and accelerates development by allowing users to focus on the logic of application creation rather than coding details. Used in tandem, Oracle JDeveloper and Oracle ADF give you an environment that covers the full development lifecycle from design to deployment, with drag and drop data binding, visual UI design, and team development features built in.
As a companion to this guide, you can download and view the Fusion Order demo application, which helps to illustrate the concepts and procedures in this guide (and other Oracle Fusion Middleware developer guides). The StoreFront module of this application is built using the Fusion web application technology stack, which includes ADF Business Components, ADF Model, ADF Controller, and JavaServer Faces pages with ADF Faces rich client components. Screenshots and code samples from this module are used throughout this guide to provide you with real-world examples of using the Oracle ADF technologies in an application that uses the Fusion web technology stack. For more information about downloading and using the StoreFront module of the Fusion Order Demo application, see Chapter 2, "Introduction to the ADF Sample Application."
In line with community best practices, applications you build using the Fusion web technology stack achieve a clean separation of business logic, page navigation, and user interface by adhering to a model-view-controller architecture. As shown in Figure 1-1, in an MVC architecture:
The model layer represents the data values related to the current page
The view layer contains the UI pages used to view or modify that data
The controller layer processes user input and determines page navigation
The business service layer handles data access and encapsulates business logic
Figure 1-2 illustrates where each ADF module fits in the Fusion web application architecture. The core module in the framework is ADF Model, a data binding facility. The ADF Model layer enables a unified approach to bind any user interface to any business service, without the need to write code. The other modules that make up a Fusion web application technology stack are:
ADF Business Components, which simplifies building business services.
ADF Faces rich client, which offers a rich library of ajax-enabled UI components for web applications built with JavaServer Faces (JSF).
ADF Controller, which integrates JSF with ADF Model. ADF Controller extends the standard JSF controller by providing additional functionality, such as reusable task flows that pass control not only between JSF pages, but also between other activities, for instance method calls or other task flows.
In addition to ADF Faces, Oracle ADF also supports using the Swing, JSP, and standard JSF view technologies. For more information about these technologies, see the Oracle Fusion Middleware User's Guide for Oracle JDeveloper. Oracle ADF also provides support for using Microsoft Excel as a view layer for your application. For more information, see the Oracle Fusion Middleware Desktop Integration Developer's Guide for Oracle Application Development Framework.
When building service-oriented Java EE applications, you implement your core business logic as one or more business services. These backend services provide clients with a way to query, insert, update, and delete business data as required while enforcing appropriate business rules. ADF Business Components are prebuilt application objects that accelerate the job of delivering and maintaining high-performance, richly functional, database-centric services. They provide you with a ready-to-use implementation of Java EE design patterns and best practices.
As illustrated in Figure 1-3, Oracle ADF provides the following key components to simplify building database-centric business services:
Entity object
An entity object represents a row in a database table and simplifies modifying its data by handling all data manipulation language (DML) operations for you. It can encapsulate business logic to ensure that your business rules are consistently enforced. You associate an entity object with others to reflect relationships in the underlying database schema to create a layer of business domain objects to reuse in multiple applications.
View object
A view object represents a SQL query and simplifies working with its results. You use the SQL language to join, filter, sort, and aggregate data into the shape required by the end-user task being represented in the user interface. This includes the ability to link a view object with other view objects to create master-detail hierarchies of any complexity. When end users modify data in the user interface, your view objects collaborate with entity objects to consistently validate and save the changes.
Application module
An application module is the transactional component that UI clients use to work with application data. It defines an updateable data model along with top-level procedures and functions (called service methods) related to a logical unit of work related to an end-user task.
If you have previously worked with Oracle Forms, note that this combined functionality is the same set of data-centric features provided by the form, data blocks, record manager, and form-level procedures or functions. The key difference in Oracle ADF is that the user interface is cleanly separated from data access and validation functionality. For more information, see Appendix G, "Performing Common Oracle Forms Tasks in Oracle ADF."
The ADF model abstracts the business service implementation, providing a single programming interface for different types of services. Data controls provide this interface by using standard metadata interfaces to describe the service's operations and data collections, including information about the properties, methods, and types involved. In JDeveloper, the functionality and attributes exposed by a business service are indicated by icons in the Data Controls panel. You can drag and drop onto a page to create UI components. JDeveloper automatically creates the bindings from the page and the UI components to the services. At runtime, the ADF Model layer reads the information describing your data controls and data bindings from appropriate XML files and implements the two-way connection between your user interface and your business service.
Oracle ADF provides out-of-the-box data control implementations for the most common business service technologies. Using JDeveloper and Oracle ADF together provides you with a drag and drop data binding experience as you build your user interfaces. Along with support for ADF application modules, ADF Model also provides support for the following service technologies:
Enterprise JavaBeans (EJB) session beans and JPA entities
Web services
CSV files
In the controller layer, where handling page flow of your web applications is a key concern, ADF Controller provides an enhanced navigation and state management model on top of JSF. JDeveloper allows you to declaratively create task flows where you can pass application control between different types of activities, such as pages, methods on managed beans, case statements, or calls to other task flows.
These task flows can be reused, and can also be nested, both within themselves and within pages. Task flows nested in pages become regions that contain their own set of navigable pages, allowing users to view a number of different pages and functionality without leaving the main page.
ADF Faces rich client (ADF Faces for short), is a set of standard JSF components that include built-in AJAX functionality. AJAX is a combination of asynchronous JavaScript, dynamic HTML (DHTML), XML, and
ADF Faces provides over 150 rich components, including hierarchical data tables, tree menus, in-page dialogs, accordions, dividers, and sortable tables. ADF Faces also provides ADF Data Visualization components, which are Flash- and PNG-enabled components capable of rendering dynamic charts, graphs, gauges, and other graphics that can provide a real-time view of underlying data. Each component also supports customization and skinning, along with internationalization and accessibility.
ADF Faces can also be used in an application that uses the Facelets library. Facelets is a JSF-centric XML view definition technology that provides an alternative to using the JSP engine. For more information about ADF Faces, including the architecture and detailed information about each of the components, see the Oracle Fusion Middleware Web User Interface Developer's Guide for Oracle Application Development Framework.
Along with ADF Faces, Oracle ADF also supports the following view technologies:
Apache MyFaces Trinidad: This is the open source code donation from Oracle to the Apache Software Foundation. ADF Faces components are based on these Trinidad components.
Java Swing and ADF Swing: ADF Swing is the development environment for building Java Swing applications that use the ADF Model layer.
ADF Mobile: This is a framework that extends Oracle ADF to support mobile users, allowing the development of mobile browser-based applications that run on mobile devices.
Microsoft Excel: You can create spreadsheets that are bound to data using the same binding principals as do other view technologies. For more information, see the Oracle Fusion Middleware Desktop Integration Developer's Guide for Oracle Application Development Framework.
Oracle ADF emphasizes the use of the declarative programming paradigm throughout the development process to allow users to focus on the logic of application creation without having to get into implementation details. Using JDeveloper with Oracle ADF, you benefit from a high-productivity environment that automatically manages your application's declarative metadata for data access, validation, page control and navigation, user interface design, and data binding.
At a high level, the development process for a Fusion web application usually involves the following:
Creating an application workspace: Using a wizard, JDeveloper automatically adds the libraries and configuration needed for the technologies you select, and structures your application into projects with packages and directories.
Modeling the database objects: You can create an offline replica of any database, and use JDeveloper editors and diagrammers to edit definitions and update schemas.
Creating use cases: Using the UML modeler, you can create use cases for your application.
Designing application control and navigation: You use diagrammers to visually determine the flow of application control and navigation. JDeveloper creates the underlying XML for you.
Identifying shared resources: You use a resource library that allows you to view and use imported libraries by simply dragging and dropping them into your application.
Creating business components to access data: From your database tables, you create entity objects using wizards or dialogs. From those entity objects, you create the view objects used by the pages in your application. You can implement validation rules and other types of business logic using editors.
Implementing the user interface with JSF: The Data Controls panel in JDeveloper contains a representation of the view objects in your application. Creating a user interface is as simple as dragging an object onto a page and selecting the UI component you want to display the underlying data. For UI components that are not databound, you use the Component Palette to drag and drop components. JDeveloper creates all the page code for you.
Binding UI components to data using the ADF Model layer: When you drag an object from the Data Controls panel, JDeveloper automatically creates the bindings between the page and the data model.
Incorporating validation and error handling: Once your application is created, you use editors to add additional validation and to define error handling.
Securing the application: You use editors to create roles and populate these with test users. You then use a flat file editor to define security policies for these roles and assign them to specific resources in your application.
Testing and debugging: JDeveloper includes an integrated application server that allows you to fully test your application without needing to package it up and deploy it. JDeveloper also includes the ADF Declarative Debugger, a tool that allows you to set breakpoints and examine the data.
Deploying the application: You use wizards and editors to create and edit deployment descriptors, JAR files, and application server connections.
The first step in building a new application is to assign it a name and to specify the directory where its source files will be saved. When you create an application using the application templates provided by JDeveloper, it organizes your workspace into projects and creates and organizes many of the configuration files required by the type of application you are creating.
One of these templates is the Fusion Web Application (ADF) template, which provides the correctly configured set of projects you need to create a web application that uses ADF Faces for the view, ADF Controller for the page flow, and ADF Business Components for business services. When you create an application workspace using this template, JDeveloper automatically creates the JSF and ADF configuration files needed for the application.
One part of the application overview is the Fusion Web Application Quick Start Checklist. This checklist provides you with the basic steps for creating a Fusion web application. Included are links to pertinent documentation, prerequisites, and the ability to keep track of status for each step in the checklist, as shown in Figure 1-4.
JDeveloper also creates a project named
Model that will contain all the source files related to the business services in your application, and a project named
ViewController that will contain all the source files for your ADF Faces view layer, including files for the controller.
JDeveloper adds the following libraries to the data model project:
ADF Model Runtime
BC4J Oracle Domains
BC4J Runtime
BC4J Security
MDS Runtime
MDS Runtime Dependencies
Oracle JDBC
JDeveloper also adds the following libraries to the view project:
JSP Runtime
ADF Page Flow Runtime
ADF Controller Runtime
ADF Controller Schema
ADF Faces Runtime 11
ADF Common Runtime
ADF Web Runtime
MDS Runtime
MDS Runtime Dependencies
Commons Beautils 1.6
Commons Logging 1.0.4
Commons Collections 3.1
ADF DVT Faces Runtime
ADF DVT Faces Databinding Runtime
ADF DVT Faces Databinding MDS Runtime
Once you add a JSF page, JDeveloper adds the Oracle JEWT library.
Once the projects are created for you, you can rename them as you need. You can then use JDeveloper to create additional projects, and add the packages and files needed for your application.
If you plan to reuse artifacts in your application (for example, task flows), then you should follow the naming guidelines presented in Chapter 38, "Reusing Application Components" in order to prevent naming conflicts.
You can edit the default values used in application templates, as well as create your own templates. To do so, choose Application > Manage Templates.
Figure 1-5 shows the different projects, packages, directories, and files for the
StoreFrontModule application, as displayed in the Application Navigator.
For more information, see "Managing Applications and Projects" section of the Oracle Fusion Middleware User's Guide for Oracle JDeveloper.
When you work with your files, you use mostly the editor window, the Structure window, and the Property Inspector, as shown in Figure 1-6. The editor window allows you to view many of your files in a WYSIWYG environment, or you can view a file in an overview editor where you can declaratively make changes, or you can view the source code for the file. The Structure window shows the structure of the currently selected file. You can select objects in this window and then edit the properties for the selection in the Property Inspector.
In JDeveloper, after you create your application workspace, you can copy database objects from a database schema to an offline database or project where they become available as offline database objects, saved as
.xml files. You can then create and edit database object definitions within a project using the same editors that you use to create and edit database objects on live database connections. You can also compare your offline database objects with other offline or live database schemas and generate SQL statements (including
REPLACE, and
For example, you can drag a table from a database connection that your application defines onto a database diagram and JDeveloper will give you the choice to model the database object live or offline (to create the
.xml file representation of the object). Modeling database definitions, such as tables and foreign keys, visually captures the essential information about a schema. You can use the diagram to drag and drop columns and keys to duplicate, move, and create foreign key relationships. Working in offline mode, whenever you model a node on a diagram, JDeveloper creates the underlying offline object and lists it in the Application Navigator. Working with a live schema, JDeveloper updates the live database object as you amend the diagram. You can create multiple diagrams from the same offline database objects and spread your offline database across multiple projects.
Using a database diagram like the one shown in Figure 1-7 you can visualize the following:
Tables and their columns
Foreign key relationships between tables
Offline sequences and synonyms
In addition to using the diagram directly to create and edit database objects, you can work with specific database object editors. After you have finished working with the offline database objects, you can generate new and updated database definitions to online database schemas.
When you work with the database diagram you can customize the diagram to change the layout, change how objects are represented and grouped, add diagram annotations to specify dependencies or links (such as URLs), and change visual properties, such as color and font of diagram elements.
Specifically, the following customizations were made to the database diagram shown in Figure 1-7:
DISCOUNT_TRANSLATIONS element show the table with constraints not displayed.
DISCOUNTS_BASE element shows the table with some column definitions hidden (such as
CREATION_DATE, and
LASTUPDATED_BY) plus the diagram element has been sized to fit within the overall diagram (thus truncating some of the detail).
DISCOUNT_TRANSLATIONS_SEQ element shows a sequence displayed in compact view in contrast to
DISCOUNTS_SEQ which shows the sequence properties.
COUPON_USAGES and
ELIGIBLE_DISCOUNTS elements use different colors both in compact view and each identifies their database schema (
DISCOUNTS element is a view displayed. The element identifies the tables that comprise the view in compact mode and the JOIN type (INNER JOIN). It also identifies the usage relationships on tables with a dotted line.
DISCOUNTS_BASE and
DISCOUNT_TRANSLATIONS elements show a foreign key relationship.
DISCOUNT_SEQ element uses an annotation (dashed arrow) to represent the dependency with
DISCOUNTS_BASE table.
Payments Grouping element uses HTML link annotations (for example,
Customer Memberships) to display other diagrams from the project.
Payments Grouping element nests elements with group shapes (
Click to Access).
For more information about modeling database definitions with database diagrams, see "Creating, Editing, and Dropping Database Objects" in the Oracle Fusion Middleware User's Guide for Oracle JDeveloper.
After creating an application workspace, you may decide to begin the development process by doing use case modeling to capture and communicate end-user requirements for the application to be built. Figure 1-8 shows a simple diagram created using the UML modeler in JDeveloper. The diagram represents an end user viewing a list of his orders and then drilling down to view the details of an order. Using diagram annotations, you can capture particular requirements about what end users might need to see on the screens that will implement the use case. For example, in this use case, it is noted that the user will select order details for each order listed.
For more information about creating use case diagrams, see the "Getting Started With Application Modeling Using Diagrams" chapter of the Oracle Fusion Middleware User's Guide for Oracle JDeveloper.
By modeling the use cases, you begin to understand the kinds of user interface pages that will be required to implement end-user requirements. At this point, you can begin to design the flow of your application. In a Fusion web application, you use ADF task flows instead of standard JSF navigation flows. Task flows provide a more modular and transaction-aware approach to navigation and application control. Like standard JSF navigation flows, task flows contain mostly viewable pages. However, instead of describing navigation between pages, task flows facilitate transitions between activities. Aside from navigation, task flows can also have nonvisual activities that can be chained together to affect the page flow and application behavior. For example, these nonvisual activities can call methods on managed beans, evaluate an EL expression, or call another task flow. This facilitates reuse, as business logic can be invoked independently of the page being displayed.
Figure 1-9 shows the
checkout-task-flow task flow from the StoreFront module of the Fusion Order Demo application. In this task flow,
order and
orderSummary are view activities that represent pages, while
reconcileShoppingCart is a method call activity. When the user enters this flow, the
reconcileShoppingCart activity is invoked (because it is the entry point for the flow, as denoted by the green circle) and the corresponding method is called. From there, the flow continues to the
order page. From the
order page, control can be passed to the
orderSummary page, or to the
continueShopping return activity that is the exit point of the flow and passes control back to the home page.
ADF Controller provides a mechanism to define navigation using control flow rules. The control flow rule information, along with other information regarding the flow, is saved in a configuration file. Figure 1-10 shows the Structure window for the
checkout-task-flow task flow. This window shows each of the items configured in the flow, such as the control flow rules. The Property Inspector (by default, located at the bottom right) allows you to set values for the different elements in the flow.
Aside from pages, task flows can also coordinate page fragments. Page fragments are JSF JSP documents that are rendered as content in other JSF pages. You can create page fragments and the control between them in a bounded task flow as you would create pages, and then insert the entire task flow into another page as a region. Because it is simply another task flow, the region can independently execute methods, evaluate expressions, and display content, while the remaining content on the containing page remains the same. For example, before registering a new user, the application needs to determine what kind of user needs to be created. All the logic to do this is handled in the
user-registration-task-flow task flow, which is used as a region in the
registerUser page.
Regions also facilitate reuse. You can create a task flow as a region, determine the pieces of information required by a task and the pieces of information it might return, define those as parameters and return values of the region, then drop the region on any page in an application. Depending on the value of the parameter, a different view can display.
The chapters in Part IV, "Creating ADF Task Flows" contain information about using task flows. For general information about task flows and creating them, see Chapter 18, "Getting Started with ADF Task Flows." For information about task flow activities, see Chapter 19, "Working with Task Flow Activities." If you need to pass parameters into or out of task flows, see Chapter 20, "Using Parameters in Task Flows." For more information about regions, see Chapter 21, "Using Task Flows as Regions." For information about advanced functionality that task flows can provide, such as transactional capabilities and creating mandatory sequences of pages (known as trains), see Chapter 22, "Creating Complex Task Flows." For information about using task flows to create dialogs, see Chapter 23, "Using Dialogs in Your Application."
You may find that some aspects of your application can be reused throughout the application. For example, you might have one developer that creates the business components, and another that creates the web interface. The business component developer can then save the project and package it as a library. The library can be sent to other developers who can add it to their resource catalog, from which they can drag and drop it onto any page where it's needed. Figure 1-11 shows the Resource Palette in JDeveloper.
When designing the application, be sure to note all the tasks that can possibly become candidates for reuse. Chapter 38, "Reusing Application Components" provides more information about the ADF artifacts that can be packaged and reused as an ADF library, along with procedures both for creating and using the libraries.
Typically, when you implement business logic as ADF Business Components, you do the following:
Create entity objects to represent tables that you expect your application to perform a transaction against. Add validation and business rules as needed.
Create view objects that work with the entity objects to query and update the database. These view objects will be used to make the data available for display at your view layer. You can also create read-only view objects, which you might use to display static lists.
Create the application module, which provides the interface to the business services that a consumer of those services (such as the UI layer of your application) will use. This application module contains view object instances in its data model along with any custom methods that users will interact with through the application's web pages.
If needed, publish your services as web services for remote invocation.
The chapters contained in Part II, "Building Your Business Services" provide information on creating each of these artifacts. The chapters in Part VII, "Advanced Topics" provide additional information, such as extending business objects, tuning, and state management.
Once you have an understanding of the data that will be presented and manipulated in your application, if you haven't already done so, you can build your database (for more information, see the "Designing Databases Within Oracle JDeveloper" chapter of the Oracle Fusion Middleware User's Guide for Oracle JDeveloper). Once the database tables are in place, you can create a set of entity objects that represents them and simplifies modifying the data they contain. When you use entity objects to encapsulate data access and validation related to the tables, any pages you build today or in the future that work with these tables are consistently validated. As you work, JDeveloper automatically configures your project to reference any necessary Oracle ADF runtime libraries your application will need at runtime.
For example, the
StoreFrontService project of the
StoreFrontModule application contains the business services needed by the application. Figure 1-12 shows two of the entity objects that represent the database tables in that application.
To create the business layer, you first create the entity objects based on your database tables. Any relationships between the tables will be reflected as associations between the corresponding entity objects.
Once the entity objects are created, you can define control and attribute hints that simplify the display of the entities in the UI, and you can also add behaviors to the objects. For more information, see Chapter 4, "Creating a Business Domain Layer Using Entity Objects."
Once the reusable layer of business objects is created, you can implement the application module's data model and service methods with which a UI client can work.
The application module's data model is composed of instances of the view object components you create that encapsulate the necessary queries. View objects can join, project, filter, sort, and aggregate data into the shape required by the end-user task being represented in the user interface. When the end user needs to update the data, your view objects reference entity objects in your reusable business domain layer. View objects are reusable and can be used in multiple application modules.
When you want the data to display in a consistent manner across all view pages that access that data, you can configure metadata on the view object to determine display properties. The metadata allows you to set display properties in one place and then change them as needed, so that you make the change only in one place instead of on all pages that display the data. Conversely, you can also have the query controlled by the data the page requires. All display functionality is handled by the page. For more information, see Chapter 5, "Defining SQL Queries Using View Objects."
For example, the
StoreFrontService project contains the
oracle.fodemo.storefront.store.queries package, which contains many of the queries needed by the
StoreFrontModule application, as shown in Figure 1-13.
Additionally, you may find that you need to expose functionality to external applications. You can do this by exposing this functionality through a service interface. For example, the
StoreServiceAM application module is exposed as a web service. This web service exposes the
CustomerInfo and
OrderInfo view instances, as shown in Figure 1-14. For more information, see Chapter 11, "Integrating Service-Enabled Application Modules."
While you develop your application, you can iteratively test your business services using the Oracle ADF Model Tester. The tester allows you to test the queries, business logic, and validation of your business services without having to use or create a user interface or other client to test your services. Using the tester allows you to test out the latest queries or business rules you've added, and can save you time when you're trying to diagnose problems. For more information about developing and testing application modules, see Chapter 9, "Implementing Business Services with Application Modules."
The tester also interacts with the ADF Declarative Debugger to allow debug your business services. You can set breakpoints on any custom methods you create. For more information, see Section 36.7, "Using the Oracle ADF Model Tester for Testing and Debugging."
From the page flows you created during the planning stages, you can double-click the page icons to create the actual JSP files. When you create a JSP for an ADF Faces application, you can choose to create an XML-based JSP document (which uses the extension
*.jspx) rather than a
*.jsp file.
Best Practice:
Using an XML-based document has the following advantages:
Simplifies treating your page as a well-formed tree of UI component tags.
Discourages you from mixing Java code and component tags.
Allows you to easily parse the page to create documentation or audit reports.
If you want to use Facelets instead of JSP in your application, you can instead create XHTML files. Facelets is a JSF-centric XML view definition technology that provides an alternative to using the JSP engine.
While Facelet pages can use any well formed XML file, including
.jspx, when you create a Facelet page in JDeveloper, it is created as an XHTML file.
Best Practice:
Use Facelets to take advantage of the following:
The Facelets layer was created specifically for JSF, which results in reduced overhead and improved performance during tag compilation and execution.
Facelets is considered the primary view definition technology in JSF 2.0.
Some future performance enhancements will only be available with Facelets
ADF Faces provides a number of components that you can use to define the overall layout of the page. JDeveloper contains predefined quick start layouts that use these components to provide you with an efficient way to correctly determine the layout of your pages. You can choose from one-, two-, or three-column layouts, and then determine how you want the columns to behave. You can also choose to apply themes to the layouts, which adds color to some of the components for you. For more information see the "Using Quick Start Layouts" section of the Oracle Fusion Middleware Web User Interface Developer's Guide for Oracle Application Development Framework.
Oracle ADF also allows you to create and use your own page templates. When creating templates, a developer can determine the layout of the page (either using one of the quick layout templates or creating the layout manually), provide static content that must appear on all pages, and create placeholder attributes that can be replaced with valid values for each page. Each time the template is changed, for example if the layout changes, any page that uses the template will reflect the update.
Most pages in the
StoreFrontModule application use the
StoreFrontTemplate template, which provides an area for branding and navigation, a main content area divided into three panes, and a footer area. If the template designer decides to switch the location of the branding and the navigation, all pages that use the template will automatically reflect that change at runtime.
The chapters in Part V, "Creating a Databound Web User Interface" provide information on creating different types of UI functionality, from basic forms to more complex search capabilities.
In JSF, you use a simple expression language (called EL) to bind to the information you want to present and/or modify (for more information, see
http://www.oracle.com/technetwork/java/unifiedel-139263.html). Example expressions look like
#{userInfoBean.principalName} to reference a particular user's name, or
#{userInfoBean.principalName eq 'SKING'} to evaluate whether a user's name is SKING or not. At runtime, a generic expression evaluator returns the
String and
boolean value of these respective expressions, automating access to the individual objects and their properties without requiring code.
At runtime, the value of certain JSF UI components is determined by the
value attribute. While a component can have static text as its value, typically the
value attribute will contain a binding that is an EL expression that the runtime infrastructure evaluates to determine what data to display. For example, an
outputText component that displays the name of the currently logged-in user might have its
value attribute set to the expression
#{userInfoBean.principalName}. Since any attribute of a component can be assigned a value using an EL expression, it's easy to build dynamic, data-driven user interfaces. For example, you could hide a component when a user is not logged in by using a boolean-valued expression like
#{userInfoBean.prinicpalName !=null} in the UI component's
rendered attribute. If there is no principal name in the current instantiation of the
userInfoBean, the
rendered attribute evaluates to
false and the component disappears from the page.
In a typical JSF application, you would create objects like the
userInfoBean object as a managed bean. The JSF runtime manages instantiating these beans on demand when any EL expression references them for the first time. However, in an application that uses the ADF Model layer, instead of binding the UI component attributes to properties or methods on managed beans, JDeveloper automatically binds the UI component attributes to the ADF Model layer, which uses XML configuration files that drive generic data binding features. It implements concepts that enable decoupling the user interface technology from the business service implementation: data controls and declarative bindings.
Data controls use XML configuration files to describe a service. At design time, visual tools like JDeveloper can leverage that metadata to allow you to declaratively bind UI components to any data control operation or data collection, creating bindings. For example, Figure 1-15 shows the
StoreServiceAMDataControl data control as it appears in the Data Controls panel of JDeveloper.
Note that the collections that display in the panel represent the set of rows returned by the query in each view object instance contained in the
StoreServiceAM application module. For example, the
CustomerRegistration data collection in the Data Controls panel represents the
CustomerRegistrationVO view object instance in the
StoreServiceAM's data model. The
CustomerAddress data collection appears as a child, reflecting the master-detail relationship set up while building the business service. The attributes available in each row of the respective data collections appear as child nodes. The data collection level Operations node contains the built-in operations that the ADF Model layer supports on data collections, such as
last, and so on.
If you create other kinds of data controls for working with web services, XML data retrieved from a URL, JavaBeans, or EJBs, these would also appear in the Data Controls panel with an appropriate display. When you create one of these data controls in a project, JDeveloper creates metadata files that contain configuration information. These additional files do not need to be explicitly created when you are working with Oracle ADF application modules, because application modules are already metadata-driven components, and so contain all the information necessary to be exposed automatically as data controls.
Using the Data Controls panel, you can drag and drop a data collection onto a page in the visual editor, and JDeveloper creates the necessary bindings for you. Figure 1-16 shows the
CustomerRegistration collection from the
StoreServiceAMDataControl data control being dragged from the Data Controls panel, and dropped as a form onto a JSF page.
The first time you drop a databound component from the Data Controls panel on a page, JDeveloper creates an associated page definition file. This XML file describes the group of bindings supporting the UI components on a page. The ADF Model uses this file at runtime to instantiate the page's bindings. These bindings are held in a request-scoped map called the binding container. Each time you add components to the page using the Data Controls panel, JDeveloper adds appropriate binding entries into this page definition file. Additionally, as you perform drag and drop data binding operations, JDeveloper creates the required tags representing the JSF UI components on the JSF page. For more information about using the Data Controls panel, see Chapter 13, "Using ADF Model in a Fusion Web Application."
You can use dynamic UI components that create the bindings at runtime instead of design time. To use dynamic components, you set control hints on your view objects that determine how the data is to be displayed each time the view object is accessed by a page. This ensures that data is displayed consistently across pages, and also allows you to change in a single location, how the data is displayed instead of having to update each individual page. For more information, see Section 26.7, "Using a Dynamic Form to Determine Data to Display at Runtime."
Figure 1-17 illustrates the architecture of a JSF application when you leverage ADF Model for declarative data binding. By combining ADF Model with JSF, you avoid having to write a lot of the typical managed bean code that would be required for real-world applications.
Aside from forms and tables that display or update data, you can also create search forms, and databound charts and graphs. For more information about using data controls to create different types of pages, see the chapters contained in Part V, "Creating a Databound Web User Interface". For more information about the Data Controls panel and how to use it to create any UI data bound component, see Chapter 13, "Using ADF Model in a Fusion Web Application."
You can add validation to your business objects declaratively using the overview editors for entity and view objects. Figure 1-18 shows the Business Rules page of the overview editor for the
AddressEO entity object.
Along with providing the validation rules, you also set the error messages to display when validation fails. To supplement this declarative validation, you can also use Groovy-scripted expressions. For more information about creating validation at the service level, see Chapter 7, "Defining Validation and Business Rules Declaratively."
Additionally, ADF Faces input components have built-in validation capabilities. You set one or more validators on a component either by setting the
required attribute or by using the prebuilt ADF Faces validators. You can also create your own custom validators to suit your business needs. For more information, see the "Validating and Converting Input" chapter of the Oracle Fusion Middleware Web User Interface Developer's Guide for Oracle Application Development Framework.
You can create a custom error handler to report errors that occur during execution of an ADF application. Once you create the error handler, you only need to register the handler in one of the application's configuration files.
Oracle ADF provides a security implementation that is based on Java Authentication and Authorization Service (JAAS). JAAS is a standard security Application Programming Interface (API) that is added to the Java language through the Java Community Process. It enables applications to authenticate users and enforce authorization. The Oracle ADF implementation of JAAS is permission-based. You define these permissions and then grant them on application roles that you associate with users of the application. For more information about securing your application, see Chapter 35, "Enabling ADF Security in a Fusion Web Application."
Testing an Oracle ADF web application is similar to testing and debugging any other Java EE application. Most errors result from simple and easy-to-fix problems in the declarative information that the application defines or in the EL expressions that access the runtime objects of the page's ADF binding container. In many cases, examination of the declarative files and EL expressions resolve most problems.
For errors not caused by the declarative files or EL expressions, JDeveloper includes the ADF Logger, which captures runtime trace messages from the ADF Model layer API. The trace includes runtime messages that may help you to quickly identify the origin of an application error. You can also search the log output for specific errors.
JDeveloper also includes the ADF Declarative Debugger, a tool that allows you to set breakpoints on declarative aspects of Oracle ADF, such as the binding layer, taskflows and more. When a breakpoint is reached, the execution of the application is paused and you can examine the data that the ADF binding container has to work with, and compare it to what you expect the data to be. Chapter 36, "Testing and Debugging ADF Components" contains useful information and tips on how to successfully debug a Fusion web application.
For testing purposes, JDeveloper provides integration with JUnit. You use a wizard to generate regression test cases. For more information, see Section 36.11, "Regression Testing with JUnit."
Using JDeveloper, you can easily rename or move the different components in your application. For example, you may find that you need to change the name of your view objects after you have already created them. JDeveloper allows you to easily do this and then propagates the change to all affected metadata XML files. For more information, see Chapter 37, "Refactoring a Fusion Web Application."
You can deploy a Fusion web application to either the integrated WebLogic server within JDeveloper or to a standalone instance. For more information about deployment, see Chapter 41, "Deploying Fusion Web Applications."
You can integrate your Fusion web application with any existing or new applications using service-oriented architecture (SOA) principals provided by Oracle SOA Suite. Oracle SOA Suite includes declarative development tools that allow you to easily integrate multiple applications using services, events, business rules, business process flows, and other SOA technologies.
You can build your Fusion web application so that it can easily integrate with other applications. You can publish your application modules as services.You can also create events that can be used for example, to initiate business processes. For more information, see Chapter 11, "Integrating Service-Enabled Application Modules." Your application modules can also call other web services directly. For more information, see Section 9.12, "Calling a Web Service from an Application Module." You can also integrate your application using task flows. For example, a task flow can be used to initiate a business process flow.
For more information about Oracle SOA Suite, see Oracle Fusion Middleware Developer's Guide for Oracle SOA Suite.
Often, applications are built in a team development environment. While a team-based development process follows the development cycle outlined in Section 1.3, "Overview of Building an Application with Oracle ADF,"many times developers are creating the different parts of the application simultaneously. Working productively means team members divide the work, understand how to enforce standards, and manage source files with a source control system, in order to ensure efficient application development.
Before beginning development on any large application, a design phase is typically required to assess use cases, plan task flows and screens, and identify resources that can be shared.
The following list shows how the work for a typical Fusion web application might be broken up once an initial design is in place:
An administrator creates Ant scripts (or other script files) for building and deploying the finished application. SQL scripts are developed to create the database schema used by the application.
Entity objects
In a large development environment, a separate development group builds all entity objects for the application. Because the rest of the application depends on these objects, entity objects should be one of the first steps completed in development of the application.
Once the entity objects are finished, they can be shared with other teams using Oracle ADF libraries (see Section 38.3, "Packaging a Reusable ADF Component into an ADF Library" for more information). The other teams then access the objects by adding to them to a catalog in the Resource Palette. In your own application development process, you may choose not to divide the work this way. In many applications, entity objects and view objects might be developed by the same team (or even one person) and would be stored within one project.
View objects
After the entity objects are created and provided either in a library or within the project itself, view objects can be created as needed to display data (in the case of building the UI) or supply service data objects (when data is needed by other applications in a SOA infrastructure).
When building the Fusion Order Demo application, each developer of a particular page or service was in charge of creating the view objects for that page or service. This was needed because of the tight integration between the view object and its use by a page in the Fusion Order demo; the team who built the UI also built the corresponding view objects.
During development, you may find that two or more view objects are providing the same functionality. In some cases, these view objects can be easily combined by altering the query in one of the objects so that it meets the needs of each developer's page or service.
Once the view objects are in place, you can create the application module, data controls, and add any needed custom methods. The process of creating view objects, reviewing for redundancy, and then adding them to the application module can be an iterative one.
User interface (UI) creation
With a UI design in place, the view objects in place and the data controls created, the UI can be built either by the team that created the view objects (as described in the previous bullet point) or by a separate team. You can also develop using a UI-first strategy, which would allow UI designers to create pages before the data controls are in place. Oracle ADF provides placeholder data controls that UI designers can use early in the development cycle. For more information, see Chapter 17, "Designing a Page Using Placeholder Data Controls."
Because numerous individuals divided into separate teams will be developing the application, you should enforce a number of standards before development begins to ensure that all components of the application will work together efficiently. The following are areas within an application where it is important to have standardization in place when working in a team environment:
Code layout style
So that more than one person can work efficiently in the code, it helps to follow specific code styles. JDeveloper allows you to choose how the built-in code editor behaves. While many of the settings affect how the user interacts with the code editor (such as display settings), others affect how the code is formatted. For example, you can select a code style that determines things like the placement of opening brackets and the size of indents. You can also import any existing code styles you may have, or you can create your own and export them for use by the team. For more information, see "How to Set Preferences for the Source Editor" in the Oracle Fusion Middleware User's Guide for Oracle JDeveloper.
Package naming conventions
You should determine not only how packages should be named, but also the granularity of how many and what kinds of objects will go into each package. For example, all managed beans in the StoreFront module are in the
view.managed package. All beans that contain helper-type methods accessed by other beans are in
util packages (one for Oracle ADF and one for JSF). All property files are in the
common package.
You can create templates to be used by all developers working on the UI, as described in Section 1.3.7, "Implementing the User Interface with JSF." This not only ensures that all pages will have the same look and feel, but also allows you to make a change in the template and have the change appear on all pages that use it. For more information, see Section 24.2, "Using Page Templates."
Aside from using templates, you should also devise a naming standard for pages. For example, you may want to have names reflect where the page is used in the application. To achieve this goal, you can create subdirectories to provide a further layer of organization.
Connection names: Unlike most JDeveloper and Oracle ADF objects that are created only once per project and by definition have the same name regardless of who sees or uses them, database connection names might be created by individual team members, even though they map to the same connection details. Naming discrepancies may cause unnecessary conflicts. Team members should agree in advance on common, case-sensitive connection names that should be used by every member of the team.
When working in a team environment, you will need to use a source control system. By default, JDeveloper provides support for the Subversion source control system, and others (such as CVS) are available through extensions. You can also create an extension that allows you to work with another system in JDeveloper. For information about using these systems within JDeveloper, see the "Versioning Applications with Source Control" chapter of the Oracle Fusion Middleware User's Guide for Oracle JDeveloper.
Following are suggestions for using source control with a Fusion web application:
Checking out files
Using JDeveloper, you can create a connection to the source control server and use the source control window to check out the source. When you work locally in the files, the pending changes window notifies you of any changed files. You can create a script using Apache Ant (which is integrated into JDeveloper). You can then use the script to build all application workspaces locally. This can ensure that the source files compile before you check the changed files into the source control repository. To find out how to use Apache Ant to create scripts, see the "Building With Apache Ant" section of the Oracle Fusion Middleware User's Guide for Oracle JDeveloper.
Automating builds
Consider running a continuous integration tool. Once files are checked into the source server, the tool can be used to recognize either that files have changed or to check for changed files at determined intervals. At that point, the tool can run an Ant script on the server that copies the full source (note that this should be a copy, and not a checkout), compiles those files, and if the compilation is successful, creates a zip file for consumers (not developers) of the application to use. The script should then clean up the source directory. Running a continuous integration tool will improve confidence in the quality of the code in the repository, encourage developers to update more often, and lead to smaller updates and fewer conflicts. Hudson (
http://hudson-ci.org/) is one example of a continuous integration tool.
Updating and committing files
When working with Subversion, updates and commits should be done at the Working Copy level, not on individual files. If you attempt to commit and update an individual file, there is a chance you will miss a supporting metadata file and thereby corrupt the committed copy of the application.
Resolving merge conflicts
When you add or remove business components in a data model project with ADF Business Components, JDeveloper reflects it in the project file (
.jpr). When you create (or refactor) a component into a new package, JDeveloper reflects that in the project file and in the ADF Business Components project configuration file (
.jpx). Although the XML format of these project control files has been optimized to reduce occurrences of merge conflicts, merge conflicts may still arise and you will need to resolve them in JDeveloper using the Resolve Conflicts option on the context menu of each affected file.
After resolving merge conflicts in any ADF Business Components XML component descriptor files, the project file (
.jpr) for a data model project, or the corresponding ADF Business Components project configuration file (
.jpx), close and reopen the project to ensure that you're working with latest version of the component definitions. To do this, select the project in the Application Navigator, choose File > Close from the JDeveloper main menu, and then expand the project again in the Application Navigator.
In addition to this developers guide, Oracle also offers the following resources to help you learn how you can best use Oracle ADF in your applications:
Cue Cards in JDeveloper: JDeveloper cue cards provide step-by-step support for the application development process using Oracle ADF. They are designed to be used either with the included examples and a sample schema, or with your own data. Cue cards also include topics that provide more detailed background information, viewlets that demonstrate how to complete the steps in the card, and code samples. Cue cards provide a fast, easy way to become familiar with the basic features of Oracle ADF, and to work through a simple end-to-end task.
Tutorials, technical papers, samples, and more on Oracle Technology Network.
Oracle Press publishes a number of books on JDeveloper and Oracle ADF.
Other developer guides for supporting Oracle ADF technology: Oracle provides developer guides for ADF Faces, Oracle ADF Desktop Integration, and Oracle Mobile Browser, to name a few. For more information about related guides, see Related Documents, in this book's Preface.
As you'll learn throughout the rest of this guide, JDeveloper and Oracle ADF give you a productive, visual environment for building richly functional, database-centric Java EE applications with a maximally declarative development experience. However, if you are used to working with tools like Oracle Designer that offer complete user interface generation based on a higher-level application structure definition, you may be looking for a similar facility for your Java EE development. If so, then the Oracle JHeadstart application generator may be of interest to you. It is an additional extension for JDeveloper that uses Oracle ADF's built-in features to offer complete web-tier generation for your application modules. Starting with the data model you've designed for your ADF business service, you use the integrated editors that JHeadstart adds to the JDeveloper environment to iteratively refine a higher-level application structure definition. These editors controls the functionality and organization of the view objects' information in your generated web user interface. By checking boxes and choosing various options from dropdown lists, you describe a logical hierarchy of pages that can include multiple styles of search regions, list of values (LOVs) with validation, shuttle controls, nested tables, and other features. These declarative choices use terminology familiar to Oracle Forms and Designer users, further simplifying web development. Based on the application structure definition, you generate a complete web application that automatically implements the best practices described in this guide, easily leveraging the most sophisticated features that Oracle ADF and JSF have to offer.
Whenever you run the JHeadstart application generator, rather than generating code, it creates (or regenerates) all of the declarative view and controller layer artifacts of your Oracle ADF-based web application. These artifacts use the ADF Model layer and work with your ADF application module as their business service. The generated files are the same kinds you produce when using the JDeveloper built-in visual editors. The key difference is that JHeadstart creates them in bulk, based on a higher-level definition that you can iteratively refine until the generated pages match your end users' requirements as closely as possible. The generated files include:
JSF Pages with databound ADF Faces UI components
ADF Model page definition XML files describing each page's data bindings
JSF navigation rules to handle page flow
Resource files containing localizable UI strings
Once you've generated a maximal amount of your application's web user interface, you can spend your time using the productive environment of JDeveloper to tailor the results or to concentrate your effort on additional showcase pages that need special attention. Once you've modified a generated page, you can adjust a setting to avoid regenerating that page on subsequent runs of the application generator. Of course, since both the generated pages and your custom designed ones leverage the same ADF Faces UI components, all of your pages automatically inherit a consistent look and feel. For more information on how to get a fully functional trial of JHeadstart for evaluation, including details on pricing, support, and additional services, see the JHeadstart page on the Oracle Technology Network at

subset: commoncrawl


text:
Filipinas Fair Trade Ventures
Filipinas Fair Trade Ventures seeks to gain market access for community-based enterprises in the Philippines, and to help sustain them until they reach their full potential. As they describe themselves, "[We are] a young and dynamic organization…made up of committed and competent people who have come together… in revitalizing the craft industry [in the Philippines]." Filipinas organizes artisans according to a variety of products, including tableware, linens, handmade paper, jewelry, accessories and small furniture. Some 900 artisans are organized within 90 workshops. Many work from home.
Filipinas started in 2002 as the marketing arm of Advocate of Philippines Fair Trade Inc., or APTI, a development nongovernmental organization dedicated to alleviating poverty by providing training and technical assistance to micro-enterprises.
Ten Thousand Villages sells tableware from Filipinas Fair Trade Ventures. Ten Thousand Villages began purchasing from Filipinas in 2009.


text:
The financial markets are usually right. Not always, but usually. Today Apple stock is trading higher, following the iPhone 5 launch. It's only 2 percent higher, but it tells you that most people were quite happy with what Apple announced, from a financial perspective.
Apple already revolutionized the smartphone market. They've revolutionized a few markets in their time on this planet. First they brought us the GUI and mouse. Then they created the iPod and iTunes. Now they've brought multitouch mobile computing to the masses. Let's not debate who invented each particular item. In the end, execution is what matters. Apple is creative, smart, and executes well.
How many commentaries have you read about the iPhone 5? If you're the average tech geek, probably a bunch. Most of them focus on the same points - that it, Apple only incrementally improved its product. In a few minutes you can be swimming in a blogosphere full of disappointed tech geeks.
Here's what people need to keep in mind: Apple doesn't revolutionize the Mac product line anymore either. Sure, they drop some awesome stuff on us such as the initial Macbook Air, the unibody MacBook Pro or the latest, Retina Macbook Pro. But none of that is truly disruptive like the iPod or iPhone (and iPad) were. They're incremental improvements, and they should be expected in markets where we've either seen product maturity or product leadership. And in Apple's case - a mix of both.
OS X and the Macbook Pro line is fairly mature. Yet it still grows faster than any PC player out there, taking market share every quarter. And with so many iOS devices dropping into consumer's hands, the halo effect is even stronger now.
This demonstrates what should be an obvious point: Revolutions are rare. For Apple stock to be a strong performer they don't need a yearly revolution. They just need to avoid missing the next revolution, whenever that is.
Just look at Samsung and RIM. Samsung caught the revolution. They rely on Google for an OS, but they've gone on to become the world's largest smartphone vendor (at least for now). You'll never hear people say "revolution" and "Samsung" in the same sentence. And RIM? They were revolutionary, and they are fighting hard to come back with BlackBerry 10. But they completely missed the revolution that Apple created, and they're suffering as a result.
Apple is in great shape. People talk about Samsung having great vertical integration but that's only from a component standpoint. Apple has better integration when you include components along with apps, cloud, content and retail distribution.
We won't know what the next revolution is until it hits us in the face.
Until then, folks, enjoy the evolution.
Get the Aviary Twitter app for just $1.99, today only!
You haven't lived until you've used a third-party Twitter app like Aviary. You want to live, don't you?
Apple's Black Friday iPhone SE sale essentially makes the price $290
The iPhone SE is already an incredible price, even without any discounts, but with Apple's Black Friday sale, you can get one for a song.
Which AirPods should you buy on Black Friday?
Thinking of buying AirPods for Black Friday but can't decide which ones you should get? I've got some advice that should help you decide.
These are the best wireless mouse choices for your Mac
Cut the cord, the mouse cord that is, with the best wireless mouse for your Mac! Here are some of our favorites.


text:
Alaska Airlines unveiled its new aircraft on Wednesday with a special patriotic theme.
The Boeing 737-900ER features a paint theme called "Honoring Those Who Serve." It was the work of a small group of Alaska maintenance technicians who initially wrote their ideas down on a napkin.
In a news release, Alaska said the plane is "dedicated to the brave men and women of the U.S. military, as well as veterans of the armed forces and their families."
Key elements of the plane's design include:
- A red stripe and blue body
- The phrase "Honoring Those Who Serve" painted on the side
- A crest for the Alaska Airlines Fallen Soldier Program
- An "Alaska Airlines Salutes" medallion that includes five stars representing the five branches of the U.S. Armed Forces: Air Force, Army, Navy, Marine Corps and Coast Guard.
- A President Calvin Coolidge quote that reads, "No person was ever honored for what they received. Honor is the reward for what they gave."
Alaska Airlines military plane unveiling
The special plane was created in partnership with Boeing.
The new "Honoring Those Who Serve" plane enters service on Friday.
In the days leading up to Veterans Day, Alaska plans to fly to cities near military bases, including Anchorage, Fairbanks, San Diego, and Washington D.C.
Alaska Airlines and Boeing shared this video of the plane getting its paint job:


text:
The Big Bang Theory got the New Year off with a real bang last week with its biggest numbers ever on TBS. The show scored a whopping 4.3 million viewers Tuesday night at 9:30 p.m., making it basic cable's #1 comedy telecast for the week.
Overall, The Big Bang Theory on TBS accounted for all 20 of the week's top sitcom telecasts on basic cable with viewers, adults 18-34 and adults 18-49, with 15 of them drawing 3 million or more viewers.
With The Big Bang Theory firing on all cylinders, TBS ranked as basic cable's #1 entertainment network in primetime among adults 18-34 and adults 18-49.
After scoring its biggest year ever among young adults and men in 2011, truTV continues to show tremendous momentum in 2012. For the first week of the year, truTV ranked among basic cable's Top 10 networks in primetime delivery of adults 18-49, men 18-34 and men 18-49, with solid growth across the board.
For the second consecutive week, truTV's hit show Hardcore Pawn set a new record for truTV's most-watched series telecast ever, with 3 million viewers and 1.5 million adults 18-49. The show scored Top 5 rankings among ad-supported cable programs in its Tuesday 9 p.m. timeslot with viewers and key demos and helped truTV deliver its most-watched Tuesday ever.
truTV's Full Throttle Saloon continues to build steam, bringing in a remarkable 2.3 million viewers and 1.4 million adults 18-49, making it ad-supported cable's #1 entertainment program in the timeslot. The show also took its place behind the previous night's Hardcore Pawn with truTV's second biggest delivery of adults 18-49 ever.
Friday night at 10 p.m., Wipeout scored 1.5 million viewers, its biggest audience since joining the truTV lineup. The show ranked among ad-supported cable's Top 5 programs in the timeslot with key adult and male demos, which also scored the best deliveries for the series on truTV.
truTV also enjoyed solid performances from Lizard Lick Towing (2 million viewers Monday at 10 p.m.; Storage Hunters (2.3 million viewers Tuesday at 9:30); Black Gold (1.4 million viewers Wednesday at 10 p.m.); and new hit Impractical Jokers (1.3 million viewers Thursday at 10 p.m.). All four shows ranked among ad-supported cable's Top 5 programs with key demos in their respective timeslots.
TNT's blockbuster dramas The Closer and Rizzoli & Isles finished their winter runs with outstanding numbers last Monday, ranking as basic cable's most-watched entertainment programs for the week. The two shows combined with the first week of TNT's regular-season NBA coverage to rank TNT as basic cable's #1 entertainment network in total viewers for the week, with close second-places finishes (behind TBS) with key adult demos.
The winter finale of The Closer chalked up 7.9 million viewers in Live + 3 (6.2 million Live + Same Day), with 2.6 million adults 25-54 (1.8 million L+SD). The season two finale of Rizzoli & Isles built on that lead with an exceptional 8.1 million viewers in Live + 3 (5.8 million L+SD) and 2.9 million adults 25-54 (1.8 million L+SD).
In time-shifted viewing, The Closer's Dec. 12 episode scored a final tally of 7.3 million viewers and 2.1 million adults 25-54 in Live + 7, while the Dec. 12 episode of Rizzoli & Isles delivered 7.7 million viewers and 2.7 million adults 25-54.
On Sunday, a new episode of TNT's caper series Leverage brought in 2.3 million viewers in Live + Same Day, up a remarkable 14% over the prior week. The episode also averaged 1.1 million adults 25-54, up 18%. Meanwhile, time-shifted viewing has lifted the series' Dec. 18 episode to 3.3 million viewers and 1.6 million adults 25-54 in Live + 7.
Turner Sports
Through the first week of the 2011-12 NBA season vs. the first week of the 2010-11 NBA season, TNT experienced a +127% increase with Total Viewers (3,957,000 vs. 1,743,000) , +127% US HH Rtg (2.5 rating vs. 1.1 rating ) and +116% HH (2,843,000 vs. 1,317,000).
Additionally, TNT also had large triple-digit increases with key adult and male demographics:
A18-34: 1,338,000 vs. 487,000 (+175%)
A18-49: 2,245,000 vs. 865,000 (+160%)
A25-54: 2,007,000 vs. 843,000 (+138%)
M18-34: 930,000 vs. 327,000 (+184%)
M18-49: 1,527,000 vs. 560,000 (+173%)
M25-54: 1,319,000 vs. 540,000 (+144%)
Source: Nielsen Media Research, Star Trak. Based on Live + Same Day data stream for NBA Regular Season on TNT game dates (2011-2012 NBA Regular Season 12/25/11 through 12/29/11 - 5 games vs. 2010-11 NBA Regular Season 12/26/2010 through 12/30/2010).
NBA TV's first week of the 2011-2012 regular season performed with stronger ratings than the comparable period during the 2010-2011 regular season. For the first six games of the 2011-2012 regular season, the network averaged 456,000 total viewers, up 112% from last year (The 2010-11 NBA TV regular season Q1-to-date averaged 162,000 homes). NBA TV also averaged 333,000 households for the first six games, up 106% from last year (The 2010-11 NBA TV regular season Q1to-date averaged 215,000 total viewers).
Adult Swim
Despite several premiere sporting events across the first week of January 2012, Adult Swim still ranked #1 on basic cable for Total Day Delivery of adults 18-34, adults 18-24 and men 18-24.
Adult Swim programming - including Family Guy and American Dad - accounted for 13 of the top 50 telecasts for the week on basic cable among adults 18-34 (more than any other network), and 16 of the top 50 among men 18-34, both more than any other network.
Cartoon Network
Cartoon Network's early evening primetime (M-Su, 7-9 p.m.) posted solid double-digit gains across kids 6-11 & 2-11 vs. the same time period last year - average kids 6-11 delivery (504,000) increased by 13% and kids 2-11 (748,000) by 11%. Total Day delivery also grew by double digits across all kids demos - average kids 6-11 (393,000) grew by 10%, kids 2-11 (608,000) by 14% and kids 9-14 (300,000) by 14%.
Monday night comedies (7-9 p.m.) ranked as the #1 destination on all broadcast & cable television among all boys 6-11, 2-11 and 9-14, earning double-digit gains across all kids and boys demos. Compared to the previous year's time period, average kids 6-11 delivery (546,000) grew by 35%, kids 2-11 (805,000) by 18%, kids 9-14 (349,000) by 26%, boys 6-11 (385,000) by 43%, boys 2-11 (523,000) by 18% and boys 9-14 (273,000) by 41%.
Four original animated series on Monday night also scored as the #1 telecasts in their respective time periods among all boy demos: The Amazing World of Gumball (7:30 p.m.), Adventure Time (8 p.m.), Regular Show (8:15 p.m.) and MAD (8:30 p.m.).
Tuesday night (7-9 p.m.) also scored for Cartoon Network, earning double and triple-digit delivery gains across kids and boys 6-11 & 2-11 - average kids 6-11 delivery (560,000) improved by 96%, kids 2-11 (766,000) by 69%, boys 6-11 (393,000) by 106% and boys 2-11 (482,000) by 63%.
With encore airings of Monday night's comedy line-up, Wednesday night earned Cartoon Network the #1 television destination, broadcast and cable, for boys 6-11 & 2-11.


text:
Connect with a PractitionerOur products are intended for use under the direction and supervision of a healthcare practitioner.
Science-based Products
Lifestyle Medicine Programs
Breakthrough Research
Unsurpassed Quality
Practitioner Partnership
A healthy immune system is essential to overall health. Our formulas have been created to help support the immune system in a wide-variety of ways.


text:
My friend John Gonzalez, the Philadelphia Inquirer's first Mexicanish sports writer, actually entourage'd this year at the 17th annual WIP Wing Bowl in Philadelphia. Gonz was the cut man for his buddy, Wax, whose clever wing-eating moniker was "Gluteus Waximus."
He shared some of these tidbits from his lonnnng day in the hot sauce-soaked pit of death.
• Waximus finished 8th, even though Morganti put his odds at 50/1. He ate 79 in the first 14 minutes.
• One guy named "Obi Wing" made the final 10. Crazy dude who carries a light saber with him everywhere — in real life, not just in the competition. Seriously, he goes down the shore with it. The Sea Isle lifeguards can't stand him. He qualified by eating a whole pineapple, including the hard-ass shell. Completely off his nut. In the second round, he was the first to puke.
•....Which was awesome, because he was next to Wax. At which point Wax stood up and called it quits. He didn't want to eat wings with vomit all around him. Pussy.
• The guys who won best entourage built a mini-Spectrum and towed it into the arena with a golf cart they made up to look like a Zamboni. They won a trip for 12. Fuckers.
• Our Wingette was ridiculously hot. We got lucky. Some of the others were rough looking. High hair. Completely Emaciated. Yellowed Teeth. It was like a White Snake concert in there. But people still screamed "show us your tits." It was not a choosy crowd.
Wing Bowl!
Anyway, fun week this week. Here's some stuff that went kaplooey:
• Second-to-last Jamboroo of the year
• Little diddy about Kurtis The Stockboy
• Jason Whitlock has a lap that sprawls for miles
Tomorrow I'm going to try to drag my buzzsaw'd ass out of bed at a reasonable hour and do some blogging for you people. Sunday is Dash followed by Matt Sussman's Super Bowl Live Blog Explosion, featuring Fergie, Mos Def, Barbara Mandrell, Overkill, Hot Hot Heat, and,very special guest, Lainie Kazan. Be sure to bring your 3-D glasses and your Spuds McKenzie party packs.
Thank you for your continued support of Deadspin.
Photos: Philly.com and Comcast.net


text:
Texas Black Foot Soldiers condemned Thursday's execution of warrior Kenneth Mosely but praised Mosely's refusal to apologize to the family of racist Garland police regime terrorist Michael David Moore.
"Brother Mosely demonstrated the demeanor God wants us to have against the devil when we suffer for righteousness' sake until the end," Houston Black Foot Soldier Masontae Limbrick said. "He is a role model and man of God who will be forever recognized in black history and our historic struggle against the regime of global white terrorists that continue to plague the earth."
According to the State of Texas: On February 15, 1997, Mosley murdered a white male police officer while attempting to rob a bank in Garland. Employees called police after noticing Mosley inside the bank acting suspicious. As one of the first officers to arrive at the scene, the victim entered the bank in full uniform and approached Mosley, noticing that the would-be bandit had his hand stuck in his waistband. When the officer told Mosley to show him his hands, a struggle ensued and the two crashed through a glass window. Witnesses heard several shots fired before Mosley re-entered the bank through the broken window and was shot in the wrist after flashing his pistol at a second police officer. The victim died the afternoon of the shooting. He suffered at least four bullet wounds to the torso.


text:
Quinden - Dresser
Warm dark brown vintage finish over replicated oak grain and authentic touch. Side roller glides for smooth operating drawers. Large scaled rustic contemporary bedroom collection features case pilasters. Poster bed offers optional footboard storage. Slim profile dual USB charger located on the back of the night stand tops. Framed panels with horizontal slat details are used in the beds. The (49) includes an adjustable shelf that can be replaced by the W100-01,02 LED Fireplace Insert. Queen (57) and king (58) panel headboards can attach to a bolt on metal bed B100-31 or B100-66 respectively. Large drawers provide ample storage space. Headboard legs have 4 height options for optimal relationship to bedding height. Queen (64S) and king (66S) storage footboards feature ready to assemble (RTA) construction.
Quinden - Dresser
|16 Inches
|43 Inches
|61 Inches


text:
One of Rossland's Best Kept Secrets
About Us
Idgie's is casual but elegant dining and has been one of Rossland's favourites since 1999. We provide "Good food and lots of it."
Take a look at our appetizers and entrees on our menu page.
We offer a wide variety of daily and monthly specials. Visit our specials page for more info!


text:
Collection items
- Art (5)
- Art and Illumination (3)
- Buddhism (4)
- Christian Religion and Belief (9)
- Christianity (3)
- Devotional texts (1)
- Faith and religion (2)
- Gender and sexuality (1)
- Heroes and heroines (1)
- History and learning (5)
- Illuminated texts (5)
- Islam (2)
- Judaism (1)
- Language and voice (2)
- Living Texts (1)
- Making manuscripts (4)
- Medieval manuscript collections today (1)
- Myths monsters and the imagination (1)
- Papyri (1)
- Pilgrimage text and place (2)
- Religion (6)
- Sacred texts (5)
- Scholarship (5)
- Science and nature (2)
- The Greek World (4)
- The makers of Greek manuscripts (8)
- Baanes (scribe) (1)
- Gregory of Nazianzus (author) (2)
- Hierocles (author) (1)
- Hrabanus Maurus (1)
- Isidore of Seville (1)
- Kokkinobaphos Master (illustrator) (1)
- Leo Magister (author) (1)
- Lucian of Samosata (author) (1)
- Nonnus of Panopolis (author) (1)
- Prudentius (1)
- Pseudo Dionysius the Areopagite (author) (1)
- St Augustine of Hippo (1)
- Wulfstan of Winchester (1)
Showing 28 results
10th-century copy of Isidore of Seville's Etymolog...Manuscript
The Etymologies by Isidore of Seville (b. c. 560, d. 636) became one of the most widely consulted encyclopaedic works in...
10th-century Gospel-book, produced in MetzManuscript
This opulent copy of the Gospels was perhaps made as a gift from the bishop, Thierry I (r. 965-984) to the cathedral of...
10th-century Qur'anManuscript
Probably copied in Egypt, this 10th-century Qur'an is written in Eastern kufic script on vellum. The manuscript The desi...
A Tantric Ritual ManualManuscript
This Tibetan Buddhist manuscript provides instructions for tantric meditation practice. These practices include visuali...
Biography on the CompanionsManuscript
This manuscript contains information about the Companions of the Prophet Muhammad and their successors by Abu Ja'far Muh...
Booklet of the Avalokitesvara SutraBooklet, Manuscript
This booklet is one of the thousands of copies of the Lotus Sūtra that were found in Dunhuang. The scripture, which is o...
Burney GospelsManuscript
This beautifully illuminated copy of the Greek Gospels was created in two stages. The text was copied out in the 2nd hal...
Cappadocian Gospel lectionaryManuscript
The bishop Stephanos commissioned this Gospel lectionary. It was written in 980 at Ciscissa in Cappadocia. It is laid ou...
Carolingian Greek GrammarManuscript
A range of different resources were used by Latin scholars in the 8th and 9th centuries to learn Greek. Examples of some...
Chinese Buddhist sutra on indigo-dyed paperScroll, Manuscript
This fragment of the Mahāparinirvāṇa-sūtra is an early example of the tradition of writing fine manuscripts in metallic...
Decorated volume of St Augustine's writingsManuscript
This collection of three works by the leading theologian of the early Church, St Augustine of Hippo (b. 354, d. 430), wa...
Decorative copy of the Heart Sutra in ChineseScroll, Manuscript
This Perfection of Wisdom sūtra, commonly called the Heart Sūtra, expounds the fundamental emptiness of all things. It i...
Earliest manuscript of LucianManuscript
This is the earliest extant manuscript of the Greek author Lucian of Samosata (c. 125-180). It is from the early 10th ce...
Ecgberht PontificalManuscript
During the Middle Ages as now, there were a number of liturgical books that were designed to be used by specific ranks o...
Fécamp GospelsManuscript
The Fécamp Gospel-book was produced in the 10th century in Winchester, a royal centre in the Anglo-Saxon kingdom ...


text:
Northwestward, ho!
I've decided to accept a job at Laika for the position of 2D Animation Director. It will be for Laika/House -- the commerical division. (Laika/Entertainment is the feature film division.) Laika, as some of you may already know, is based out of Portland, Oregon. That's over 2,600 miles away from Atlanta, Georgia. Quite a move for me and my family. But after many months of thinking and praying about it (and many more weeks spent in deep discussion with Andrea), we decided that this would be the best thing for our family. It's going to be a major change -- I've lived in Atlanta almost my entire life and the majority of my family calls it home, including my parents. I've only known the Atlanta animation industry for my entire animation career. Working with individuals so far removed from the insular network of this Southern city will be quite a shock, but I'm ready and willing to face the change. Looking forward to it, actually.
Naturally, I will miss my immediate family, my fellow Primates, and all my animator and artist buddies here in Atlanta. My last day at Primal Screen will be March 16th, so Andrea and I are currently knee-deep in moving and packing plans. We definitely have our work cut out for us before we tackle the Big Move. And for kicks and giggles, we're planning on driving across the country the following week. I know -- crazy isn't it? Maybe we'll be in your neck of the woods, you never know.
This is such a huge step for my career and creatively? Extremely impressed with the amount of talent I saw housed within Laika's walls. Such an honor to become the newest member of Laika's creative family.
So, there you go -- I'm leaving Primal. (Boy, so odd to actually type that.) I can't complain, though-- The past six years have been very good to me. Many Primal jobs have showcased my personal style and how many people can lay claim to that? A spot is now available, of course, so Primal Screen is starting their search to fill that spot. If you are an experienced animation director with a strong sense of design, contact Jeff at: jeff [at] primalscreen [dot] com. If you have a website or blog featuring your work, please include links. Jeff will thank you.
If you're ever in Portland after March of this year, would love to say hello. Please contact me here via my blog and let's do lunch. Also, I'd like to add that the Platform International Animation Festival will take place in Portland, June 25-30. A great excuse to come up (or down or over) to see me.
34 comments:
WOW! What a wonderfully big adventure that will be. Congratulations, and I wish you the very best. I hope to see you at Platform.ReplyDelete
- AnonymousFebruary 13, 2007 9:11 PM
Hey Ward,ReplyDelete
Congratulations! You deserve all the best!
Having moved across country just a few years ago, I know that it can be quite difficult. We also are far away from our families, but we've made a great life for ourselves here and I'm sure you'll find a great new life. It will take a while, but the great thing is that to your friends on the internet there won't be a change at all. That gave me some stability and continuity with our move.
Wow! Portland?!?! I can say from my experience as a kid from the South who once moved to the Northwest, it was one of the best things I ever did. You'll dig it.ReplyDelete
Big congrats and good luck with the move, bruddah! I wanna visit.
WOW...congratulations, Ward! I checked out Laika's site and it's very impressive. I'm excited for you. I know you'll do great things.ReplyDelete
What the?!!!! CONGRATULATIONS, WARD!! Now we'll finally be in the same time zone!ReplyDelete
Say hello to Mr. Sorenson for me...
- AnonymousFebruary 14, 2007 12:48 AM
Wow! Congratulations, Ward! I have a bunch of friends at Laika. They are completely awesome people. You'll be in excellent company. Portland's a great town-- people know how to have fun there without getting all stressed out, and it seems like everyone is in a band and/or building something for Burning Man.ReplyDelete
I'll definitely look you up next time I'm up there (my Mom lives there too!)
Hooray!! Congratulations Ward, Laika is an awesome place to work at from what I hear. I've got a friend up there (in the CG feature division) and he likes it a lot. Good luck with your move and adjusting to a more northern climate.ReplyDelete
Ward, I barely knew ye. No, really, I barely got to friggin' know ya and you're leaving ATL? Congrats to you and your family! What an opportunity. Thanks for helping to make the Atlanta animation scene what it is today.ReplyDelete
Congratulations on your new job! I'm sure it'll be hard leaving Atlanta but hooray for you good fortune.ReplyDelete
BTW, didn't you just move last summer? You must like moving.
"A man's reach should exceed his grasp, or what's a heaven for?"ReplyDelete
Go get 'em, tiger.
You know, unlike everyone else I'm gonan give yah a hard time about this...Why you gotta leave us Ward?ReplyDelete
Did we say something to offend?
We can change. you're worth it to us.
Hope Portland treats you and your's well, but it'll never love yah like we did.
Alright, this moved from mildly funny to just weird. Keep it awesome Jenkins.
- AnonymousFebruary 14, 2007 8:02 AM
YEEAAHHH!!! I was hoping you guys would decide to go. I have place in my heart for the ATL, but I really wanted you guys to have a change. YEAH! Congrats and I am praying that you get paid every cent you are worth for your mounds and mounds of talent!ReplyDelete
I am also praying that the kids and Andrea have a blast with the wonderful temps (and schools, I hear)west coast life etc...
- AnonymousFebruary 14, 2007 10:41 AM
WOOHOO! how exciting for you and Andrea and the kids. She will find MANY a photo begging to be taken... I moved to Seattle from Vermont in October, leaving my design job to work with special needs kids. And while I am super homesick at times, every time I go outside, or see the city at night- I get tingly and go "OOGH THIS IS SO COOL"ReplyDelete
I wish you and your beautiful family the very best!
- AnonymousFebruary 14, 2007 10:44 AM
My husband and I moved three kids, a cat, a dog and two plants across 3,000 miles from New York to Northern California ten months ago. It was a great trip! Filled with problems (expect to spend a lot more than you actually expect) but it was fun and exciting.ReplyDelete
To save money on moving a lot of ten-year-old furniture we did not take a van but shipped some things ahead and drove two packed cars. We started over with new furniture here -- we're still working on that though and spent a couple of months in camping chairs.
Take my advice - if you ship things UPS, use SMALL boxes. They refused to give us the insurance money (that was supposedly guaranteed) when a significant portion of what we shipped was broken due to the ginormous and clumsy UPS elephant that very clearly stomped on our boxes.
Oh, and if you ship, number the boxes and keep an inventory list!
Much luck to you and the whole famn damily.
Congrats, man! Laika's chock full of good people; You'll have a good time.ReplyDelete
- AnonymousFebruary 14, 2007 11:47 AM
Hey Ward,ReplyDelete
Congrats on the big move, the great new opportunity and the adventure that awaits! Each of my (many, many) moves has yielded challenges aplenty, but treasures and friendships that outwight them all. God bless!
Congratulations. Welcome to Rip City, Bridge City, Jewel of the West, and whatever other name they've given themselves since I left. I grew up in Portland and lived there through college. From what I can tell you'll fit in wonderfully.ReplyDelete
If you can find a great home near Laika's studio, all the better. But with Portland's built out mass transit system, you could even live deep in Northeast Portland (although I wouldn't go much further than the Hollywood district) and still commute with ease.
If you haven't already, look up the folks from pantsketch.livejournal.com they can put you in touch with some great resources in the Portland area.
I'd be happy to answer any other questions you might have.
Thanks, everyone, for all your supportive comments. Some good stuff to check out -- Laika has established a relocating agent to help us with the move, but there's plenty of work that still needs to be done on our part. But Laika has been very cool in helping us out with this big change.ReplyDelete
And have you all seen the great work that those guys do? I'm very excited to be a part of all that.
Congrats on the news, Ward! I think you, Andrea and the kids will love West Coast living! Good things are coming!ReplyDelete
Congratulations! I am so excited for you, Andrea and the kids!ReplyDelete
i look forward to meeting you. I am the ringleader of the Platform Animation Festival Portland team. Call me when you get into town! 503-226-2172. Cheers! Marilyn ZornadoReplyDelete
- AnonymousFebruary 15, 2007 10:32 AM
Congratulations! I read your blog and hulaseventy all the time, and enjoyed knowing that you were right here in Atlanta, even though we've never met. I think you will love Portland and it will awaken all sorts of new creative nerves in both of you. Good luck!ReplyDelete
dont go. no, really, DOONNT GOOOO!ReplyDelete
we will miss you sorely. you are irreplaceable. you are our FAMILY.
we are happy for you and, well, wish you the best. there, i said it. now go. get outta here.
This IS a surprise. yet, it is undoubtedly for the best as you can't keep growing forever from one station. I'd imagine even Doug, the miser that has horded your skills for all these years, is supportive of your decision. Its an astute career move. Congratulations and I look forward to the updates - and by updates, i mean bitching about all the rain....
Wow! this is great news! - definitely a new chapter in the book for you. Christin and I did a similar thing a couple of years ago when we left Florida and drove across the country to California. Your drive however will be a bit longer! Enjoy it though and take your time. Breathe in Ameri-kuh. Portland is awesome! Congratulations and Good Luck!ReplyDelete
Congratulations Ward and family! The NW is a beautiful place to raise a family. Good luck at Laika, they seem to be doing some great work for sure. If you ever come up to Seattle it'd be nice to shake your hand. :DReplyDelete
Congratulations and Best wishes out there!ReplyDelete
Congrats and good luck! I'm sure many wonderful and good things will come out of it!ReplyDelete
Congratulations! I love reading your blog and checking out your amazing work (and your wife's too). Lots of luck to you, the missus and those gorgeous little ones of yours. Can't wait to read all about the cross country drive.ReplyDelete
Wow! Fantastic news Ward! A big congratulations!ReplyDelete
Having just accepted a new job myself (though it is only a for a few months) in Banff, I can understand what a transition it can be.
I was a little skeptical about Laika after the Vinton thing, but they sound as if they really are putting their absolute best effort into things there. You'll no doubt make an absolutely brilliant addition to the team and be able to learn a ton of new stuff as well.
Several years ago, I almost accepted a job in Portland, really incredible pay, however it was working on one website most of the time. Otherwise, I may have taken it. The only bad thing I heard about the area was the rain, everything else seemed to be pretty darn positive.
Good luck to you all during the move!
- AnonymousFebruary 18, 2007 5:15 PM
You'll do great, Ward. Enjoy those beautiful Portland summers while I'm suffering here in Phoenix!!ReplyDelete
Well, I told you before, but I'll tell you again. Once you get out here, you tell us where and when and we'll be there with bells on to do all of the heavy lifting.ReplyDelete
Well, maybe not the "heavy" lifting per se, but we'll help!
Looking forward to getting you guys out here for this new chapter of your life.
- AnonymousFebruary 20, 2007 1:54 PM
Portland is fab - you'll have a swell time Ward (even if it is a bit damp). Congratulations on this next exciting stage of your life!ReplyDelete
- AnonymousFebruary 23, 2007 10:00 PM
things you will love about portland from someone whos lived in the area for over 20 years.ReplyDelete
1. first thursday
3. Powells book store
4. voodoo donuts
5. nickel arcades
6. chinese garden
7. saturday market
8. every street corner has either a a thrift store, adult bookstore, or art gallery on it. two of three isnt bad.
9. no matter if you drive east or west, in two hours you either have mountains or beach.
10. Forest Park
11. the pearl
12. saint cupcake and all the other hips trendy stores in NW.
13. a zoo you can roam, not a pathway you have to follow.
14. ice skate ring in mall
15. last thursday
i remember eric carros telling me stories about your daughter and when i found your blog, i was pleasantly surprized to find out your whole family is adorable.
good luck on the move.