text:
Friday Dec 04, 2015
Monday Dec 22, 2014
Getting Started with the REST Adapter in OEP 12c
By Ricardo Ferreira-Oracle on Dec 22, 2014
Just published in the A-Team Chronicles web site an article that discover the implementation details about the new 12c REST adapter available in Oracle Event Processing.
Tuesday Aug 12, 2014
Threading Best Practices for Custom OEP Adapters
By Ricardo Ferreira-Oracle on Aug 12, 2014
Saturday Jan 18, 2014
Capturing Business Events for Future Playback through Oracle Event Processing Platform
By Ricardo Ferreira-Oracle on Jan 18, 2014
In the heart of OEP application development there is the understanding of the business events anatomy, the knowledge about its structure, frequency about when they happen, its relationship with other types of events and of course, its volume. Business events play a critical role in event-driven applications because they are the input for the problem that you are trying to solve. Without the business events, an event-driven application would be like a car engine without fuel.
When you are designing an EPN (Event Processing Network) of an OEP application, you are actually expressing the way about how the business events will be received, processed and perhaps transformed in some kind of output. Like any other technology, the behavior of this output depends heavily of which data you have used as input. For one specific volume, the EPN could work, for another volume, maybe not. For one specific ordering, the EPN could work, with another ordering, it could not. It will only work when the right set of events is being used.
Its very common the situation when you deploy the first version of your OEP application and after a while users start complaining about undesired results. This happens because no matter how many times you tested your application, you will never get close to the mass of events present in the customer environment. The ordering, volume, size, encoding and frequency of the events found in the customer environment is always different of that mass of events that you used during functional testing. If this situation happens to you, its time to think in a way to record those events and bring them back to the development environment to figure out what is wrong.
This article aims to explore the record and playback feature of Oracle Event Processing Platform. Through the examples shown here, you will be able to record and replay a mass of business events to simulate some behavior that maybe you have forgot to capture at your EPN. This feature is also pretty cool for prototyping scenarios. Instead of bringing with a you a simulator of events, you can just replay a recorded set of events and present your OEP application.
Configuring the OEP Default Provider
In order to the record and playback features work, OEP needs to relies in a repository in which events will be stored. To make the developer work easier, OEP brings out-of-the-box an default provider for this repository based on the Berkeley DB technology. Located inside of every OEP domain, there is an instance of Berkeley DB (aka "BDB") which can be adjusted through the configuration file of the domain. In most cases, you don't need to change anything before start using the record and playback features, but there is one catch that you should be aware of.
BDB stores each recorded event as an entry in this repository. Each entry has a default size of 1KB (1000 bytes) pre-defined in the moment that you create the domain. The information about the size of each entry is important in terms of performance and how BDB will growth its storage. So if you know the average size of your events, it is a good idea to inform the size of each entry in the domain configuration file. For instance, suppose that we are dealing with a mass of events with 32KB of average size for each event. You can adjust BDB editing the domain configuration file located in <DOMAIN_HOME>/<SERVER_NAME>/config/config.xml:
As you can see in the example above, you need to adjust the cache-size property of the bdb-config section. This property is measured in terms of bytes. The value of this property represents the amount of memory that BDB need to allocate for each entry.
Recording the Events
In order to record events, you need to access the OEP Visualizer Console of your domain. Log in onto the console and navigate to the EPN of the OEP application that you want to record events.
In the EPN of your OEP application, you can right-click any of the elements inside, no matter if it is an adapter, channel, processor or an cache. But make totally sense to record the events from the adapters perspective. They are the genesis of your EPN, and all the events that will flow through it will come from the adapters. Right-click the input adapter of your EPN and choose the "Record Event" option:
You will open the record tab of the adapter. In the bottom of the page, in a section named "Change Recording Schedule", you will find an button named "Add". Click on it.
Adding a new record configuration scheme enables the UI for full-filling some fields. Enter in the "DataSet Name" field the name of this recording session. This field will be used to construct the physical repository of BDB. You are also required to set the "Selected Event Type List" field. You need to describe in this field which incoming events you are expecting to record. After this you can click in the "Save" button.
We are all set to start recording. Double-check if there are events being sent to your OEP application and click in the "Start" button. Doing this will start a recording session and all events received by the adapter will be recorded. At any point of time, you can click in the "Stop" button to stop the recording session.
Playing Back the Events
To start the playback of any recorded session, you need to go back to the EPN screen and right-click the channel that will receive the events. This will bring you to the playback tab of the selected channel. Just like the recording session, you need to add one playback configuration scheme clicking in the "Add" button.
The group of fields to be full-filled is almost the same. Pay attemption that in the "DataSet Name" field you need to inform the exactly name that you informed in the recording session. Since you can have multiple recording sessions under different names, when you playback you need to tell OEP which session you would like to playback. As such, you need to inform which events you would like to playback, filling the "Selected Event Type List" field.
Optionally, you can set some additional parameters related to the behavior of the playback. In the "Change Playback Schedule Parameters" you can find fields to define which interval of time you want to playback. This is useful when you recorded hours/days of event streaming and you would like to reproduce just one piece of it. You can also define the speed in which events will be injected into the channel, useful to test how your EPN behave in a high speed velocity situation. Finally, you can set if the playback will be repeated forever. Since the recording session is finite, you can playback it as many times you want, or can just set the "Repeat" field as true to automatically restart from the beginning when the recorded streaming ends.
When you are done, save the playback configuration scheme and click in the "Start" button to start the playback session according your settings. An "Playing..." message will be flipping in the screen during the playback session. At any time, you can stop the playback clicking in the "Stop" button.
All the configuration you made so far is stored in the OEP domain along with your application so don't be shy to restart the OEP server and potentially lose your job: all the settings will remain there when the server come back to life. This statement is true as long you don't undeploy your application from the OEP domain. If you undeploy your application, all the settings will be lost. If you want make those settings permanent, you can set those into your application. Access this link to learn how to configure a component to record events, and this link to learn how to configure a component to playback events.
Tuesday Mar 19, 2013
Creating Scalable Fast Data Applications using Oracle Event Processing Platform (Setting Up an Active-Active Oracle CEP Domain)
By Ricardo Ferreira-Oracle on Mar 19, 2013
This article will discover some technical aspects that should be considered if you are involved in serious implementations of Oracle CEP, the technical foundation of the Oracle's strategy for Fast Data called Oracle Event Processing Platform. It is expected that you have some basic knowledge about Oracle CEP, JMS and some knowledge about programming using Java.
Fast Data and the Concern with Scalability
There is no such thing of application not meant to grow. Every application, even the simpler ones should expect some growth across the months or years during the time they are up and running. Growing is a consequence of a lot of things such as organizational growth, application maturity which in turn gives users more confidence to use it, an marketing campaign that worked and brought much more clients than expected, more front-ends enabling people to interact with your application through other types of devices, exponential generation of data from social networks that your application is configured to listen to, an market opportunity that demands more of your software or perhaps just natural growth of the users installed base.
It doesn't matter the source of growing, your application need to be ready to scale up. And this is true no matter which architectural style you're considering it as your strategy. Of course, there are some architectural styles that suggests a moderated growth like the client-server style or maybe the monolithic style. But take for instance the SOA ("Service-Oriented Architecture") style. The basic concept behind this architectural style is the reuse of services, which are the building blocks of the functional architecture, representing the business knowledge (standards, culture, procedures, routines) of an organization in a form of reusable functions. As much the reuse growths, more scalable your SOA foundation must be. You virtually can't predict the level of reuse of your services, but the key thing is, you should design your services to really scale up.
Another great example of architectural style that need to be designed to scale up is EDA ("Event-Driven Architecture"), which basically deals with processing of heterogeneous events coming from different sources, with different message formats and more importantly, with event channels that could potentially generate a number of events with different throughput's, frequencies and volumes. In the SOA architectural style this could happens too of course, but the scariest thing about EDA is that you don't necessarily deals with fixed message schemas, neither with well known message contracts. The previous knowledge about message contracts and schemas gives you the ability to predict the message size that the hardware infrastructure must deal with, an important requirement when you are sizing an infrastructure based on reasonable levels of reuse, like in the case of SOA.
As mentioned earlier, in the EDA architectural style you cannot predict the message schema or contract of yours events. It can be virtually any message format containing both structured and/or unstructured content. An good event-driven solution must be able to deal with this kind of situation, making the task of sizing an ideal hardware infrastructure really tough. Sizing an ideal hardware for an event-driven solution is a combination of both science and imagination. There are a lot of things to consider, a lot of scenarios to evaluate, a lot of hardware and/or software failures to predict and a huge number of situations that could potentially stops your application to run due hardware resources limitation, even in the first five hours running in production. Believe me, it is really tough.
Designing an event-driven solution that are ready to scale up demands more from the regular architect role that we found nowadays. It requires deep knowledge of the problem domain, deep knowledge of distributed systems, deep knowledge of servers systems (and perhaps engineered systems), deep knowledge of enterprise integration patterns and deep knowledge of the software's stacks used to build the solution, regardless if it is a proprietary, open-source or a combination of both.
Why do you need to worry about scalability? Because ten years ago the market demanded for event-driven solutions prepared to handle hundred of events per second. Today is the time of building event-driven solutions that should handle thousands of events per second. Fast Data, one of the new buzzwords of IT, demands for event-driven solutions that should handle millions of thousands events per second. My advice for any architect responsible for an event-driven solution should be, thinking in scalability as a huge main goal just like the problem domain to be solved.
Business Scenario for Scalability Study on Oracle CEP
Let's start our study of applying scalability in EDA considering a business scenario. Imagine that you are designing a EDA solution that combines technologies like CEP, BAM and JMS to deliver near real-time business monitoring of KPIs ("Key Performance Indicators") for an financial services company. All the information needed to process the KPIs came from a JMS channel that must be listened by an specialized adapter. Those JMS messages will be the business events. Inside every business event, there are information about payment transactions, containing some data like the total amount paid, the credit card brand, etc. The idea here is to process those payment transactions as they happens, in order to generate valuable KPIs that could be monitored through a near real-time monitoring solution like a BAM. For simplicity reasons, let's consider only one KPI for instance, and concentrate our focus on the CEP layer that is responsible for the KPIs compilation and aggregation. The example KPI will be the total count of payment transactions per second.
In order to compute this KPI, the CEP layer must execute the count aggregation function onto the stream of events, considering only those events of the last second. This means that this KPI will be compiled and aggregated on every one second (1000 milliseconds of time window) and the output should be also generated on every one second. The EPN ("Event Processing Network") of this business scenario should be something simpler like this:
Reading this EPN is not that complicated. You must basically read the flow from the left to the right. The basic idea behind this EPN is: listen the business events from an JMS adapter, put those events sequentially based on their temporal order into a event channel, compute the KPI based on the stream of events using an processor, send the generated output event (the KPI itself) to an new event channel and finally, present the KPI into the server output console using a custom adapter.
The event model of this EPN is composed by two simple event types. The first event type is the concept of the payment transaction, which acts in the EPN as event source. This event type contains three fields: an dateTime field that tells you the exactly moment that the payment transaction occurred, an amount field that reveals the amount paid for a product and/or service, and an brand field that tells you which credit card type was used in the payment transaction. The second event type would be the transactions per second KPI, which acts in this EPN as complex event. The only field that this event type has is the totalCountTPS, which represents the computed value of this KPI. The following UML class diagram summarizes this event model.
All the payment transactions are received through an built-in JMS adapter called in the EPN of paymentTransactionsJMSAdapter. This adapter is configured to listen to an JMS destination through an dedicated connection factory. The listing below is the configuration file for this JMS adapter.
<?xml version="1.0" encoding="UTF-8"?> <wlevs:config xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"> <jms-adapter> <name>paymentTransactionsJMSAdapter</name> <event-type>PaymentTransaction</event-type> <jndi-provider-url>t3://localhost:7001</jndi-provider-url> <connection-jndi-name>jmsConnectionFactory</connection-jndi-name> <destination-jndi-name>distributedQueue</destination-jndi-name> <concurrent-consumers>24</concurrent-consumers> </jms-adapter> </wlevs:config>
The processor that will compute the KPI is also very simple. It basically counts the events coming from the event channel, filtering only those events that make part of one whole second. It also filters those events that has some meaningful values in the amount and brand fields, to prevent the computation of the KPI based on dirty events. The following CQL ("Continuous Query Language") statement are used to compute the KPI:
SELECT COUNT(dateTime) AS totalCountTPS FROM paymentTransactionsChannel [RANGE 1 SECOND SLIDE 1 SECOND] WHERE ammount > 0 AND brand IS NOT NULL
Finally, let's take a look in the last part of the EPN, which is the custom adapter created to print the results of the TransactionsPerSecondKPI event type in the server output console. As I mentioned earlier, for simplicity reasons I will not show how this event will be monitored in a BAM. Instead, I have created a custom adapter using the Oracle CEP adapters API to print in the server output console the content of the totalCountTPS field present in the TransactionsPerSecondKPI event type. The listing below is the implementation in Java of this custom console adapter.
package com.oracle.cep.examples.ha; import com.bea.wlevs.ede.api.EventProperty; import com.bea.wlevs.ede.api.EventRejectedException; import com.bea.wlevs.ede.api.EventType; import com.bea.wlevs.ede.api.EventTypeRepository; import com.bea.wlevs.ede.api.StreamSink; import com.bea.wlevs.util.Service; public class ConsoleAdapter implements StreamSink { private EventTypeRepository eventTypeRepository; @Override public void onInsertEvent(Object event) throws EventRejectedException { EventType eventType = eventTypeRepository.getEventType("TransactionsPerSecondKPI"); EventProperty eventProperty = eventType.getProperty("totalCountTPS"); System.out.println(" ---> [Console] Total Count of TPS: " + eventProperty.getValue(event)); } @Service public void setEventTypeRepository(EventTypeRepository eventTypeRepository) { this.eventTypeRepository = eventTypeRepository; } }
As you can see in the code, this custom adapter doesn't make anything special. It just access the totalCountTPS field from the TransactionsPerSecondKPI event type and print the value in the server output console. The idea here is just to monitor in near real-time the computation of the KPIs, in order to test the behavior of Oracle CEP when is running in a single JVM or when its running in clustered on multiple JVMs.
Creating a Testing Environment to Simulate the Payment Transactions
Now that we are all set regarding the business scenario, we can start the tests. You need to create a simple Oracle CEP domain to test this application. You will also need an JMS provider to host the JMS destination. I would recommend you to use Oracle WebLogic as the JMS provider, but feel free to use any JMS provider compliant with JMS 1.1. Setup your JMS provider and create an queue to be used in the tests, and setup your Oracle CEP JMS adapter to listen this queue. Later in this article I will discuss more about the difference of using queues and topics, but for now let's just focus on the functional testing.
Implement the following Java program in your development environment. The program is just an example about how to send the JMS messages to an queue, and it considers that you are connecting to an WebLogic JMS domain. If you prefer using another JMS provider, you should adapt this program to correctly connect to your host system.
package com.oracle.cep.examples.ha; import java.util.Hashtable; import java.util.Random; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.MapMessage; import javax.jms.MessageProducer; import javax.jms.Queue; import javax.jms.Session; import javax.naming.InitialContext; public class EventsGenerator { public static void main(String[] args) { final String[] brands = {"Visa", "Mastercard", "Dinners", "American Express"}; final Random random = new Random(); InitialContext jndi = null; Hashtable<String, String> params = null; ConnectionFactory jmsConnectionFactory = null; Queue distributedQueue = null; Connection jmsConn = null; Session session = null; MessageProducer msgProd = null; MapMessage message = null; try { params = new Hashtable<String, String>(); params.put(InitialContext.PROVIDER_URL, "t3://localhost:7001"); params.put(InitialContext.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); jndi = new InitialContext(params); jmsConnectionFactory = (ConnectionFactory) jndi.lookup("jmsConnectionFactory"); distributedQueue = (Queue) jndi.lookup("distributedQueue"); jmsConn = jmsConnectionFactory.createConnection(); session = jmsConn.createSession(false, Session.AUTO_ACKNOWLEDGE); msgProd = session.createProducer(distributedQueue); long startTime, endTime = 0; long elapsedTime = 0; for (;;) { startTime = System.currentTimeMillis(); for (int i = 0; i < 10; i++) { message = session.createMapMessage(); message.setLong("dateTime", System.currentTimeMillis()); message.setDouble("ammount", random.nextInt(1000)); message.setString("brand", brands[random.nextInt(brands.length)]); msgProd.send(message); } endTime = System.currentTimeMillis(); elapsedTime = endTime - startTime; if (elapsedTime < 1000) { Thread.sleep(1000 - elapsedTime); } System.out.println("Tick..."); } } catch (Exception ex) { ex.printStackTrace(); } finally { try { if (msgProd != null) { msgProd.close(); } if (session != null) { session.close(); } if (jmsConn != null) { jmsConn.close(); } } catch (Exception ex) { ex.printStackTrace(); } } } }
What this program does is continuously send ten messages to the specified JMS queue. As you can see in the code, after sending the messages, it takes a pause of one second, considering the elapsed time taken to send the messages to the JMS queue. This program never ends, unless of course that the user terminate the JVM created.
Starting the Functional Tests with one Single Oracle CEP JVM
Make sure that all your development environment are up and running, including your JMS provider and an fully operational Oracle CEP domain. Deploy the Oracle CEP application into this domain and run the client JMS application. An recorded result of this functional test is published on Youtube, so you can check it out the results of this test.
In the following sections, it will be discovered two different approaches for applying scalability. These approaches will be applied in the scenario of near real-time business monitoring of KPIs, transforming it into a more scalable solution that could handle the growing of the number of events just adding more Oracle CEP JVMs across the same and/or multiple server systems.
The Simpler Scalability Approach Ever: Using JMS Queues
Being you just designing an application that should deal with asynchronous calls or, just worried about delivery guarantees of messages, use JMS queues is always a good choice. Consumer applications connected into a JMS queue works hard for the reading of the most recent message, in a FIFO style. This means that each consumer will enter in a race condition along with other consumers to compete about which one gets the maximum number of messages possible. For the application consumer perspective, this could be a hard problem since there are no guarantees that an specific message will be consumed by an specific consumer, but for the JMS queue perspective, this is a really powerful scalability technique. The reason for that is because each consumer application will work hard to provide maximum throughput for the consumption of messages.
Imagine for instance an consumer application connected to an JMS queue, running on a server system with 24 cores of CPU, being two hardware chips with 6 cores each, using the Hyper-Threading Intel technology. If we realize that this consumer application running on this type of hardware gives us an average throughput of 3,000 TPS ("Transactions per Second"), we can certainly assume that putting another copy of the same consumer application, running on another server system with the same hardware configuration will give us an average throughput of 6,000 TPS. This is what we call horizontally scalability, when you increase the throughput of an software based application adding more server systems that will engage its hardware resources to an specific software goal, which in this case is consume as fast as possible the messages from an JMS queue.
This type of scalability technique delivers another important advantage: when you increase the total count of server systems running the consumer applications, you minimize the number of messages that each server system will need to handle. This seems to be a little bit contradictory isn't it, since in theory should be "a good thing" that each server system handle more messages as possible. Well, it is a good thing, but like anything else in software architecture, there are trade-offs. Consider for instance each consumer application running on the same hardware configuration. In this scenario, is reasonable to think that each server system will handle the same number of messages in average, because each server system are putting its hardware resources to work equally, and due the nature of the JMS queues (FIFO style consumption), the total number of messages of the queue will be divided to the number of server systems available.
The problem here is the memory footprint of each JVM running the consumer application. If you are consuming messages from the JMS queue with fewer server systems, the total number of messages that each server system will need to handle will be higher. Since each received message is allocated in the heap memory of the JVM, the total size of the heap will increase. Did you know that an javax.jms.MapMessage with an payload of 256 bytes allocates more than 400 bytes in the heap space? Imagine all those messages being received by your consumer application in the same time. You could reach the maximum size of your heap in a question of seconds. And the problem of reaching the maximum size of an JVM is the inevitable execution of the garbage collector. When the JVM detects that the heap memory are full (or almost full depending of the algorithm used) or to much fragmented, it engages the garbage collector threads to reclaim the allocated memory and/or rearrange the heap layout space. Depending of the situation of the heap memory, the JVM could use almost all the CPU cores of the server system to accomplish this task, and that's when your consumer application starts to be slower than usual, presenting performance issues and becoming a system bottleneck.
Let's consider the usage of JMS queues in our business scenario of near real-time business monitoring of KPIs. Each Oracle CEP JVM would be connected to an JMS queue that would maintain the messages of payment transactions. Each Oracle CEP JVM would act as an consumer application through its JMS adapter. Considering that each Oracle CEP JVM (or a group of it) would be running on separated server system, we could assume that the increasing of the number of server systems will increase the average throughput of message consumption from the JMS queue, and also that each Oracle CEP JVM would handle a reasonable number of messages on its JVM heap. Enough of theory, let's in see in practice how this scalability approach could be applied in our business scenario.
The first thing to do is transform your Oracle CEP domain in a multi-server and clustered domain. You can find a comprehensive set of information in the product documentation to help you doing this, but I will highlight the main steps for you here.
In the root directory of your Oracle CEP domain, you will find a sub-directory called "defaultserver". As the name suggests, this is your default server that are created automatically during the domain creation. For development and staging environments, this server is more than enough. But if you want to expand your domain, will will need to change that. Rename the default server directory from "defaultserver" to "server1". After that, make two copies of this directory, and call these newly created directories of "server2" and "server3" respectively.
Now you have to setup up some aspects of the cluster. Open the configuration file of the server1 in a text editor. The configuration file of the server1 can be found in the following location: <DOMAIN_HOME>/server1/config/config.xml. With the configuration file opened in the text editor, you will have to change the "netio" and "cluster" tags. Change the port value of the "NetIO" component to "9001", and the port value of the element "sslNetIo" component to "9011".
In the cluster tag you will have to define how the server1 will behave together with other members. Edit the cluster tag according to the listing below:
<cluster> <server-name>server1</server-name> <multicast-address>18.104.22.168</multicast-address> <groups>clusteredServers</groups> <enabled>true</enabled> </cluster>
That's it. This is what have to be done to transform a simple server in a clustered-aware member. Repeat the same steps to the server2 and to the server3. Just keep and mind that if you plan to execute those servers in the same server system, will need to define different ports for each server. Also remember that the tag "server-name" must match with the server name you gave, which would be the name of the directory of the server.
One of the advantages of using JMS queues as your scalability approach is that you don't need to change anything at your Oracle CEP application. Just deploy the same application in all the new servers and start the tests again. Start the servers server1 and server2 and run the client JMS application. You will see in the servers output that each server will be generating the totalCountTPS KPI based on the number of events that it could receive from the JMS queue, which would be the division of the total count of events (ten events per second) by the total count of servers, which in this case is two. This will result in five events per server in average. If you start the server3 during the processing of events, you will see that the total number of events that each server is handling will decrease, which is an evidence that the scalability is really working due the fact that the servers partitioned the load of events.
An recorded result of this second test are also available on Youtube. Watch out the video below for how using JMS queues affects the scalability of your Oracle CEP applications.
So far, it seems that using JMS queues as your scalability approach is the right thing to do right? In fact, for the most demanding scenarios, this approach should be enough. But you should be aware of one catch: in-flight events can be missed during failures. I mean "in-flight" for all those events that had been received by the JMS adapter and an acknowledge of this receiving has been sent back to the JMS provider. On that moment, the message are not longer in the JMS queue, and more importantly, no other Oracle CEP JVM is aware of this event. This means that there are no recovery of events during failures in this approach. If you cannot tolerate missing events, using JMS queues for scalability is not the most reliable approach. But if your scenario can tolerate missing events, don't think twice and choose this approach once is simpler and does not implies in changing the Oracle CEP application.
Reliability Really Matters: Complicating Things Just a Little Bit with JMS Topics
OK, so you realized that you cannot tolerate missing events, and you need to improve as much as possible the reliability of your Oracle CEP application. The road to achieve this is quite more longer than just using JMS queues. There are some challenges that you need to surpass in order to conquer this level of reliability when no missing events can be tolerated without of course putting scalability aside. The challenges that you will need to surpass are:
- Provide guarantees that all of the JVMs are aware of all events
- Equally distribute the load of events across all of the JVMs
- Ensure that even in-flight events are completely synchronized
- Provide backups for every cluster member to ensure HA
The good news is, all those challenges can be easily surpassed, and the Oracle CEP product provides native support for all that stuff. But the bad news is, compared to the previous approach, the final solution starts looking like more complicated in terms of design and in terms of product configuration. Let's learn how apply this type of scalability approach (with the highest level of reliability that exists) in our near real-time business monitoring of KPIs scenario.
The situation has now changed. You need to make the solution available in two different data centers, working in a active-active schema and with high availability assured, in case of failure of the primary servers. There is no chance that any event be missed since the operational people from the financial services company must rely with the KPIs to take important decisions.
The two data centers are located in the state of California, but are geographically separated. The first one is based in Redwood, and the other one is based on Palo Alto. These data centers are connected through a fiber optical cable with an 10 GB/s of high bandwidth.
There are some changes that need to take place both in the Oracle CEP application and at the Oracle CEP domain. Let's start with the Oracle CEP application changes. First, you need to modify the EPN assembly descriptor file to include an instance of the following Oracle CEP component: com.oracle.cep.cluster.hagroups.ActiveActiveGroupBean. This special component dynamically manages the group subscriptions available to partition the incoming events between the cluster members.
Secondly, you need to synchronize all the events with all members that belongs to the cluster, including in-flight events. This can be explicitly done using special HA adapters that Oracle CEP make available. Change your EPN flow to include just after of your input adapter an instance of an HA adapter. This adapter need to be aware about which property of your event type carries the information about its age. In that case, you need to configure in this HA adapter the "timeProperty" property. This is necessary to provides guarantees that even in case of failure of one cluster member, the ordering of the events won't be affected. You will also need to create an instance of an HA correlating adapter, just before your output adapter. After this changes, your EPN assembly descriptor should include the following components:
<wlevs:adapter id="haInboundAdapter" provider="ha-inbound"> <wlevs:listener ref="paymentTransactionsChannel" /> <wlevs:instance-property name="timeProperty" value="dateTime" /> </wlevs:adapter> <wlevs:adapter id="haCorrelatingAdapter" provider="ha-correlating"> <wlevs:listener ref="consoleAdapter" /> <wlevs:instance-property name="failOverDelay" value="2000" /> </wlevs:adapter> <bean id="clusterAdapter" class="com.oracle.cep.cluster.hagroups.ActiveActiveGroupBean" />
Now here comes the most important change of this approach, which is change the JMS destination from an queue to an topic. This change should be executed both at your JMS provider (because you need to explicitly create an topic endpoint) and at your JMS adapter configuration file. Using JMS topics provides guarantees that all of the JVMs are aware of all events. You will also need to define a events partition criteria at your JMS adapter configuration file. Since topic consumers acts more like subscribers instead of just consumers, every consumer application will receive a copy of all events sent to the topic endpoint. This means that an automatic partition of the events won't happen, but this need to occur in order to provide real scalability.
Thanks to the JMS technology, there is one way of provide some criteria during the messages consumption, which is using selectors. Selectors gives you the possibility to apply the Content Based Router EAI pattern based on existing header/property values. Change the JMS adapter configuration file to include selectors criteria to the message consumption:
<?xml version="1.0" encoding="UTF-8"?> <wlevs:config xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"> <jms-adapter> <name>paymentTransactionsJMSAdapter</name> <event-type>PaymentTransaction</event-type> <jndi-provider-url>t3://localhost:7001</jndi-provider-url> <connection-jndi-name>jmsConnectionFactory</connection-jndi-name> <destination-jndi-name>distributedTopic</destination-jndi-name> <message-selector>${CONDITION}</message-selector> <bindings> <group-binding group-id="ActiveActiveGroupBean_Redwood"> <param id="CONDITION">site = 'rw'</param> </group-binding> <group-binding group-id="ActiveActiveGroupBean_PaloAlto"> <param id="CONDITION">site = 'pa'</param> </group-binding> </bindings> </jms-adapter> </wlevs:config>
Let's understand the changes. The group bindings entries provided tells the JMS adapter which events listen to. The first group binding tells that messages containing "rw" in the site property should be listened only by the Redwood site. The second group binding tells that messages containing "pa" in the site property should be listened only by the Palo Alto site. Each group binding is associated with a group id, which reveals what servers will be able to receive those events. For instance, in the case of the first group binding, only servers associated with the group "ActiveActiveGroupBean_Redwood" will be able to receive events that belongs to the Redwood site. This configuration will ensure that the load of events will be equally distributed across all the JVMs. Let's start the configuration of the Oracle CEP domain.
In the root directory of your Oracle CEP domain, create four copies from one of your current servers, naming them "rw1", "rw2", "pa1" and "pa2" respectively. Since the solution must be available in two different data centers, one in Redwood and another in Palo Alto, these four servers will sustain this topology. The rw1 and rw2 servers will be the Redwood servers, being rw1 the primary and rw2 its backup. The pa1 and pa2 servers will be the Palo Alto servers, being pa1 the primary and pa2 its backup. The idea here is to provide an active-active load balancing between servers rw1 and pa1, each one having its backups on each site. Those backups will ensure high availability for every cluster member. The final topology should be something similar to this:
You need to the change the server's configuration file in order make this topology works. Servers rw1 and rw2 should be part of the "ActiveActiveGroupBean_Redwood" group, and servers pa1 and pa2 should be part of the "ActiveActiveGroupBean_PaloAlto" group. Apply the configuration below on each server's file configuration of the Oracle CEP domain:
Don't forget to change the ports of the "NetIO" and "sslNetIo" components if you plan to execute all those servers in the same server system. In terms of Oracle CEP domain, this is all the configuration necessary, so we are all set in terms of infrastructure. Before starting the tests, we need to adapt the client JMS application in order to provide two things. First, to send the messages to an topic instead to an queue. Second, to provide the "site" property on each message, in order to sustain the message criteria provided in the JMS adapter configuration file. Implement the client JMS application according to the listing below.
package com.oracle.cep.examples.ha; import java.util.Hashtable; import java.util.Random; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.MapMessage; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.Topic; import javax.naming.InitialContext; public class EventsGenerator { private static final int REDWOOD_SITE = 1; private static final int PALOALTO_SITE = 2; private static final String REDWOOD = "rw"; private static final String PALOALTO = "pa"; public static void main(String[] args) { final String[] brands = {"Visa", "Mastercard", "Dinners", "American Express"}; final Random random = new Random(); InitialContext jndi = null; Hashtable<String, String> params = null; ConnectionFactory jmsConnectionFactory = null; Topic distributedTopic = null; Connection jmsConn = null; Session session = null; MessageProducer msgProd = null; MapMessage message = null; int siteId = REDWOOD_SITE; try { params = new Hashtable<String, String>(); params.put(InitialContext.PROVIDER_URL, "t3://localhost:7001"); params.put(InitialContext.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); jndi = new InitialContext(params); jmsConnectionFactory = (ConnectionFactory) jndi.lookup("jmsConnectionFactory"); distributedTopic = (Topic) jndi.lookup("distributedTopic"); jmsConn = jmsConnectionFactory.createConnection(); session = jmsConn.createSession(false, Session.AUTO_ACKNOWLEDGE); msgProd = session.createProducer(distributedTopic); long startTime, endTime = 0; long elapsedTime = 0; for (;;) { startTime = System.currentTimeMillis(); for (int i = 0; i < 10; i++) { message = session.createMapMessage(); switch (siteId) { case REDWOOD_SITE: message.setStringProperty("site", REDWOOD); siteId = PALOALTO_SITE; break; case PALOALTO_SITE: message.setStringProperty("site", PALOALTO); siteId = REDWOOD_SITE; break; default: break; } message.setLong("dateTime", System.currentTimeMillis()); message.setDouble("ammount", random.nextInt(1000)); message.setString("brand", brands[random.nextInt(brands.length)]); msgProd.send(message); } endTime = System.currentTimeMillis(); elapsedTime = endTime - startTime; if (elapsedTime < 1000) { Thread.sleep(1000 - elapsedTime); } System.out.println("Tick..."); } } catch (Exception ex) { ex.printStackTrace(); } finally { try { if (msgProd != null) { msgProd.close(); } if (session != null) { session.close(); } if (jmsConn != null) { jmsConn.close(); } } catch (Exception ex) { ex.printStackTrace(); } } } }
This version of the client JMS application didn't change so much compared to its original version using queues, except from the usage of the message property called site. This message property will be used by the selectors as criteria to load-balance the incoming events across all the servers. In the real world, this type of message enrichment is commonly applied by an architectural mechanism that is situated before of the Oracle CEP JVMs, which could be an ESB, an application server or an corporate load balancer. Regardless which mechanism implementation will intend to use, in terms of architecture, it is responsibility of this mechanism to provide this message enrichment, another EAI pattern that must be part of your final solution.
Now we can start the tests. Deploy this new version of the Oracle CEP application into the servers (rw1, rw2, pa1 and pa2) and run again the client JMS application. An recorded result of this third and last test are also available on Youtube. Watch out the video below for how using JMS topics affects the scalability of your Oracle CEP applications.
Today more than ever, solution architects and developers should be aware about what kind of techniques can be applied in their solutions in order to provide real scalability. Trends like Fast Data are biggest motivators for that. This article discussed the importance of scalability, specially when necessary in event-driven solutions. The article, through an didactic business scenario, showed how to apply scalability in Oracle CEP applications, discovering the pros and cons of two different approaches. Finally, the article showed in details how to implement the two approaches in the Oracle CEP example application.
Sunday Jul 08, 2012
The Developers Conference 2012: Presentation about CEP & BAM
By Ricardo Ferreira-Oracle on Jul 08, 2012
This year I had the pleasure again of being one of the speakers in the TDC ("The Developers Conference") event. I have spoken in this event for three years from now. This year, the main theme of the SOA track was EDA ("Event-Driven Architecture") and I decided to delivery a comprehensive presentation about one of my preferred personal subjects: Real-time using Complex Event Processing. The theme of the presentation was "Business Intelligence in Real-time using CEP & BAM" and I would like to share here the presentation that I have done. The material is in Portuguese since was an Brazilian event that happened in São Paulo.
Once my presentation has a lot of videos, I decided to share the material as a Youtube video, so you can pause, rewind and play again how many times you want it. I strongly recommend you that before starting watching the video, you change the video quality settings to 1080p in High Definition.
Wednesday Feb 22, 2012
Oracle Coherence: First Steps Using Clusters and Basic API Usage
By Ricardo Ferreira-Oracle on Feb 22, 2012
When we talk about distributed data grids, elastic caching platforms and in-memory caching technologies, Oracle Coherence is the first option that came in our minds. This happens because Oracle Coherence is the oldest and most mature implementation of data grids, creating successful histories across the world. It is Oracle Coherence the implementation with the bigger number of use cases in the world. Since it's aquisition by Oracle in 2007, the product has been enhanced with powerful enterprise features to remain it's position of the "better of the world" against it's competitors.
This article will help you given your first steps with Oracle Coherence. I have prepared a sequence of three videos that will guide you in the process of creating a data grid cluster, managing data using both Java API and CohQL ("Coherence Query Language") to finally test the reliability and fail over features of the product.
Oracle allows you to download and use any of your products for free, if you are interested in learning or testing the technology. Different of other vendors that put you first in contact with a sales representative or simply not put their software available for download, Oracle encourages you to use the technology so you gain confidence with it. You can download Oracle Coherence at this link. If you don't possess a credential in the OTN ("Oracle Technology Network"), you will be asked to create one.
If you have a powerful computer and a fastest internet bandwidth, change the video quality settings to 1080p HD ("High Definition"). It will improve considerably the quality of your viewing.
Saturday Sep 24, 2011
Welcome to the Middleware Place
By Ricardo Ferreira-Oracle on Sep 24, 2011
Welcome to my blog. The purpose of this blog is to provide vital information for you and your team about Oracle Fusion Middleware technologies, turning success a common word in the vocabulary of your projects. I will try to create regular entries at this blog about subjects like tips, architectural guidance, best practices and examples from real world experience with Oracle Fusion Middleware technologies like Tuxedo, Coherence, Application Grid, Web Center, SOA, BPM, EDA and Exalogic.
I little bit about myself. I started my career in 1997 as software engineer, and software development using distributed objects, EAI and enterprise middleware became my passion since. I always been curious about how technologies could be used and combined to create an architectural foundation for software intensive systems and I have got specialized in this subject. After more than a decade working in consulting firms and system integrators as software engineer, developer, architect and team leader, I started to work in software vendors like JBoss, by Red Hat, Progress Software, and currently at Oracle Corporation, definitely one of the most biggest middleware vendors of the world, IMHO, the biggest.
Ricardo Ferreira is just a regular person passionate for technology, traveling, movies and his family. He works for Oracle, member of the Cloud Architects Team, otherwise known as "The A-Team"
Recent Posts
- Have you heard about the Oracle A-Team Chronicles?
- Intelligent Devices with Oracle Edge Analytics & MQTT
- Custom Transports in Oracle Service Bus 12.2.1
- Oracle Service Bus Transport for Apache Kafka (Part 2)
- Oracle Service Bus Transport for Apache Kafka (Part 1)
- Introduction to the Oracle Stream Explorer White Paper
- Getting Started with the REST Adapter in OEP 12c
- Caching in OSB 12c without Out-Of-Process Coherence Servers
- Threading Best Practices for Custom OEP Adapters
- Interoperability between Microsoft and SOA Suite 12c


text:
by Holly K on January 8, 2016
One of the most popular things on our site has been our free dishcloth patterns. For two years, each week, we featured a new dishcloth that so many people used to practice new stitches, develop their skills, and of course, wash their dishes! These free patterns will always be on our site, but for 2016, we're changing it up a bit. Every first Thursday of the month, we're releasing a home set ebook - patterns for your kitchen or your bathroom, or anywhere else you'd like display or use these lovely items! We're calling the series "Keeping Home", and January's set, called "Not Your Granny's Kitchen" is just so sweet!
Category Archives: free patterns
by Stacey on December 31, 2015
Well, this is it - our last 52 Weeks of Dishcloth pattern! Check out the very fun Vadstena Dishcloth by Allyson Dykhuizen.
by Stacey on December 24, 2015
Appropriately enough for this week, our newest free dishcloth pattern features something all winter lovers can get behind - snow! Check out the lovely Snowbank Spa Cloth by Alison Griffith.
by Stacey on December 18, 2015
It's the time of the year most of us forget to take care of ourselves - too busy rushing to & from holiday parties, family dinners, shopping malls and everywhere in between. So we think you should take a few minutes, whip out your crochet hooks and Shine Sport and crochet this little spa cloth to sooth your harried soul. Check out our newest free pattern - Glacial Spa Cloth by Beth Major!
by Hannah on December 16, 2015
Well folks, we made it! Welcome to our very last installment in our free pattern series: Twelve Weeks of Gifting. The grand finale and proverbial icing on the cake is our very favorite, ever popular Dish Towel Set pattern! So simple and wonderfully giftable, this is a great pattern for any knitter. I love seeing these projects knit up, tied with a pretty ribbon and gifted with a piece of handmade soap for a perfect mother's gift, birthday or baby shower gift. Plus, this pattern calls for Dishie, a super-rugged cotton yarn perfect for cleaning up tough messes or super exfoliation! Make sure to pop over and pick up your copy of the Dish Towel Set through Tuesday and get crafting in the last few days before Christmas.
by Stacey on December 11, 2015
This week's free dishcloth pattern is very timely - I was just noticing last weekend all the folks going out to get their Christmas trees! Check out the adorable Tree Hunting Dishcloth by Chelsea Berkompas!
by Hannah on December 9, 2015
Say "hello!" to the Line by Line Mittens, the penultimate pattern in our Twelve Weeks of Gifting series of free patterns!
by Stacey on December 4, 2015
It's hard to believe that 52 Weeks of Dishcloths is nearly over - only 4 more weeks of 2015! This week's free dishcloth pattern is the lovely Seaweed Dishcloth.
by Hannah on December 2, 2015
Hooray! We've made it to week TEN in our Twelve Weeks of Gifting series of free patterns! This week we're featuring Fancy Feet, quick and oh-so-cute anklets designed to use one of our 50 gram balls of sock yarn. There are seven patterns (one for each day of the week!) with lovely lace and eyelet textures for added interest.
by Stacey on November 30, 2015
When we released Mighty Stitch earlier this year, it proved to be so popular that we sold out of many of colors of this fabulous acrylic/wool yarn! But now, all colors are back in stock, just in time for holiday gift knitting and crocheting.

subset: commoncrawl


text:
Scott Belsky, founder of creative community Behance (bought by Adobe last year), and author of Making Ideas Happen, in this video talks about how technology is shaping how we create and collaborate. Belsky is going to be speaking at our RoadMap 2013 conference on November 5 and 6 in San Francisco.
[protected-iframe id="45ad89a45df7bc5ac0c190b8e96a5fd5-14960843-458564″ info="//player.vimeo.com/video/43857646″ width="500″ height="281″ frameborder="0″ webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""]


text:
7. A pool hall
Pick a quiet night and take your lady there for a few casual drinks, a bowl of pretzels and a bash at the pool table. Place bets on the outcomes of each game, and then retire back to the car or your house to claim any winnings owed to you.
More Like This
Sponsored Ad ContentRead More


text:
Free personalized radio that
plays the music you love
Danza De Los Negros (The Dance Of The Blacks) (live)
Features of This Trackmajor key tonality
simple harmonic progressions
acoustic instrumentation
Peruvian roots
African influences
a horn ensemble
stick-drum percussion
These are just a few of the hundreds of attributes cataloged for this track by the Music Genome Project.show more
Similar Tracks
Don't have a Pandora account? Sign up
Already have a Pandora account? Log In


text:
City buildings still for saleStaff Report | February 13,2013The Dana and Watkins buildings are still on the market.
Tuesday night, the Rutland City School Board extended the purchase-and-sale agreement for the Watkins Building to Aug. 31. The district signed an agreement to sell the building for $100,000 to the Housing Trust of Rutland County, with a closing date of Dec. 1.
In November, the Housing Trust received a zoning variance to create 14 senior living apartments, three shy of the 17 units requested.
The board also voted to extend the listing for the Dana Building to April 30. Board member Hurley Cavacas, Jr., who serves on the Building Committee, said there might be a buyer for the property.MORE IN This Just In
MIDDLEBURY — Middlebury Police arrested Ronald Bean, 52, on two counts of... Full StoryHUBBARDTON Vermont State Police said a fallen tree struck and killed a man on the north end of... Full StoryMore than 26,000 people were without power when severe thunderstorms rolled through the state in... Full Story
- Most Popular
- Most Emailed


text:
Moooi Shade Shade 95 Suspension Light Online Price A guideline to consider is to make sure that the fixture is 7" to 13" smaller than the narrowest side of the table. Tropico Ellipse Suspension Lamp Online Sale Pre-lit umbrellas have the lights already installed for your convenience. Flos Romeo Babe Pendant Lamp
There are various types of light that are often used for indoor hydroponic applications. Guns Lamp by Flos Online Price It could be an energy saving lamp but might fail to give the brightness you want.
You can control the sunlight and the surface glare problem by several means. Flos Romeo Babe Pendant Lamp Another advantage of this light is that it will not warm up the room. Gallery S.Bensimon Lights Store
Miconos Ceiling Lamp by Artemide Online Sale There are also photocell transformers that routinely turn on and off the deck lights after dusk and dawn. Alma Light Stone Table Light Store
Forget the single pendant in the center of the room. Gubi Light fixtures Price Like Morocco itself, the lamps represent the sum of diverse cultures and religions-- European, Christian, African, Muslim-- each distinct yet absolutely integral to the design of the lanterns.
Flos Romeo Babe Pendant Lamp Penny's all have ocean themed bedding. Atollo Table Light Online Sale If the person has long hair, then the plastic works well in untangling the hair before using a metal comb.
Miconos Ceiling Lamp by Artemide Online Sale There are some significant advantages of using dimmers and this subsequently resulted in their popularity among the consumers. I was afraid to put a lock on the doors due to the ridiculous State regulations that effectively prevent us from doing ordinary things in our home.
But, the situation gets far more frustrating when one needs to work in a very dim light reading, playing video games, or watching television that can cause eyes to strain due to constant use. Tropico Ellipse Suspension Lamp Online Sale Chandeliers are available in an assortment of designs and even colors; from crystals to colored acrylics; you are sure to find a chandelier to suit your taste and budget.
Light bulbs should be placed in areas wherein it should be untouched by water. outdoor lights fixtures Accent lighting is used mainly to highlight specific garden areas or objects, picking them out from the rest.
Miconos Ceiling Lamp by Artemide Online Sale Here again.
Gubi Light fixtures Price Spice your futons up with some colorful throw pillows and the room will take on a whole new appearance.
Wholesale Brand van Egmond Solar operated spotlights are easy to install and require no wiring. Tropico Ellipse Suspension Lamp Online Sale ?Auxiliary Motorcycle 3000 Lumen LED Lights by Cree Aka "Komy Lights"Flos Romeo Babe Pendant Lamp
Light travels as electromagnetic waves, similar to the waves on the sea, with peaks and troughs. Estiluz Infiore Table Lamp Shop On the street, he tapped with his cane and began to whistle.
Avid gardeners often feel at a loss during the harsh winter months. Flos Romeo Babe Pendant Lamp Light strips of multiple LEDs that are often intended to replace coloured fluorescent bulbs and neon lamps can often be wired in to take advantage of the power sockets used by the fixtures being replaced. Deluxe 35 Pendant Lamp by Leucos Online Price
Miconos Ceiling Lamp by Artemide Online Sale This means handing over the source code and the right to use the program source code for free under the license. ic recessed lighting
For example, you can buy a dancing penguin pendulum clock, buffalo wall art or elk lamp shades and of course, there are numerous items that have designs of dogs, cats and horses on them. Gubi Light fixtures Price Making your dark room look calm and inviting is of paramount importance.
Flos Romeo Babe Pendant Lamp So do not be selfish while playing this game with power up, but keep in mind to also utilize it at the correct time. Oluce Atollo Lamp Store There are a number of unusual table lamps available to let you step outside the box in terms of your design, creating a focal point in the room that is welcome.
Miconos Ceiling Lamp by Artemide Online Sale In addition to this versatility in use, CFLs also produce a warm inviting light as they use rare earth phosphors for color and warmth. Sports lamps and touch lamps provide glowing light while allowing you to show off your teams' spirit for teams now a day or forever.
But, if the light placement is bad or poorly done, you will think about the kitchen lighting every time you have to work in the kitchen after the sunlight is gone. Tropico Ellipse Suspension Lamp Online Sale Decorate Your Home StrategicallyYou could even hang a single Moroccan lantern at the front of your house.
T5 lighting is one of the most efficient ways to light a home or business. Stone Pendant Lamp by Josep If you keep them in the crib, make sure that they are well out of the child's reach from the outside.
Miconos Ceiling Lamp by Artemide Online Sale Driving at night with you LED car lights on will give you much more confidence and security. This makes the halogen bulbs ideal for around the pool area, and there is very little chance of electrocution.
The lights should be able to illuminate the entire staircase. Tropico Ellipse Suspension Lamp Online Sale With years of experience in the lighting industry, Kichler knows what customers want.
They also include a wall mount from where the main unit or lamp could be hung. Puck 5460 Wall Sconce by Jordi Vilardell LED lighting offers a very low heat output and consumes very little electricity.
Miconos Ceiling Lamp by Artemide Online Sale The intensity of the colour of the smoked lens changes in accordance with the speed of the bike.
Gubi Light fixtures Price There is one exception when you are evaluating color graphics in the office, you should use the color temperature of the location where the art will be displayed; outdoors 5000K or make sure you get real daylight.
Buy Soscik 72 Suspension ?Arco Lamps Have Become a Classic Tropico Ellipse Suspension Lamp Online Sale Incandescent light bulbs are basically heaters that produces visible light, and the socket it is screwed into is designed to protect the lamp base and wiring from that heat. Flos Romeo Babe Pendant Lamp
The angle or its direction can bring plenty of shadows or remove them. ideas for decorating living room If there is a feature chandelier in the room, the main light will come from down lights and up lights distributed subtly throughout the room.
00 and claims to reduce the risk of burglary by up to 83%. Flos Romeo Babe Pendant Lamp The saving could be in the thousands of dollars in your utility bills and maintenance repair costs. Clasica Table Shop
Miconos Ceiling Lamp by Artemide Online Sale Solar LED landscape lighting is a good choice for fountains because they are less expensive than traditional lights and come in a variety of designs, sizes, and colors. Morocco Suspension Lamp by FontanaArte Replica
Before these were universally available, I used to use full spectrum natural color fluorescent lights. Gubi Light fixtures Price They have the advantage of being cool and also very energy efficient.
Flos Romeo Babe Pendant Lamp With a combination of wavelengths at 184. Coral Suspension by Lagranja Online Sale Hence the need for humidifiers, which heat water until boiling point and allow it to evaporate and enter the air as vapor.
Miconos Ceiling Lamp by Artemide Online Sale Some are ideal choices for your bedroom,some fabric shades come with characters of cartoons which are great choices to decorate kid's rooms. For an example, their durability is that a two-watt LED bulb would last nearly 60,000 hours that is really amazing for all.
All of these technologies also have dimmable options which can used in conjunction with lighting controls for more flexibility in your lighting and also to reduce power usage further. Tropico Ellipse Suspension Lamp Online Sale But truth be told we do live in a market economy where competition is respected and it was only a matter of time before a competitor to Minx Nails came up, and so one did.
Xenon lamps come in different wattage and can be operated in the vertical or horizontal position. Labware cylinder table lamp Replica ?Home Lighting - Making Your Home Bright And Beautiful
Miconos Ceiling Lamp by Artemide Online Sale Secure the skylight in place by adding solid flashing into its sides.
Artemide Kalias Wall Lamp Shop ?Have You Seen the New Wrangler Models for 2007? Tropico Ellipse Suspension Lamp Online Sale Again, do not touch the bulb surface with your bare hands at any time. Flos Romeo Babe Pendant Lamp
Accent Lights:Are used to show off a certain feature wall art, plants or certain areas. Micron Sale Consult with your vet about any drug being used is a great suggest to reduce any health issues.
You can benefit from eye-catching cast iron lampposts while in the significantly more practical aluminium, (aluminium us light it takes the paint and lacquer easily and gives many years of rust free enjoyment); the same magnificence as the originals but created with safety as the primary goal and priced reasonably. Flos Romeo Babe Pendant Lamp During the turning of a few mushrooms the skills of cutting to a diameter, lines, beads and coves are considered in various forms and styles. Afra Floor Light Online Sale
Miconos Ceiling Lamp by Artemide Online Sale Nelly 60 Wall Store
Choosing the right bathroom vanity light fixtures will transform an interior space providing a pleasing atmosphere and enough illumination to make the room functional. Gubi Light fixtures Price We all want the best for ourselves and the people we love so we search for what we think are the best products to fit our expectations.
Flos Romeo Babe Pendant Lamp Wreck diving, as it is aptly called, has become more and more popular these days thanks to the advanced technology of diving equipments. Soscik 145 Suspension Online Sale With an old lamp it takes twice as long to get the desired tan.
Miconos Ceiling Lamp by Artemide Online Sale
Unlike the CFL (those swirly miniature fluorescent things) LED lamps offer instant full brightness, no warm up period and contain NO Mercury to pollute our groundwater when they eventually reach our landfill sites. The significance of the lights of the menorah has greatly to do with how the "Maccabees successfully rebelled against Antiochus IV Epiphanes.
You do realize that without light, nothing is visible don't you? Knowing that, how can you place anything above them in importance? Since lights are so important, why not invest in the very best kind to make your home look the best that it possibly can? Many people are not against excellent illumination, but rather they simply overlook these important fixtures. Tropico Ellipse Suspension Lamp Online Sale It is a non-invasive, natural therapy without the side affects of drugs normally used to treat these ailments, such as corticoids or steroids.
Path lights should also be installed so that accidental trips will be avoided when you host special celebrations outdoors. Ayers 19 Table Online Price For example it is known that emeralds are cooling and calming and reduces inflammation and sapphires are used to treat pain.
Miconos Ceiling Lamp by Artemide Online Sale For around ?0 there is another DNA Property marking kit, this one boasts he UK Secured By Design accreditation, not easy to get and very important.
Nemo Crown Suspension Shop,
Vibia Plus 0605 Light Replica,
Muffins Suspension Light Store,
Form Cone Suspension Online Sale,
Northern Lighting Diva Pendant Light Online Price,
Clavius Desk Light Online Sale,
Buy Guau by Rosario Hurtado,
Dioscuri Tavolo 35 Lamp Online,
Buy Vibia Fold Wall Light,
Koony Pendant Lamp by Catherine Grandidier Online Price,
Vibia Link Light Shop,
Prandina Abc S3 Pendant Online Price,
lamp designs,
Niche Modern Oculo Suspension Light Store,
Mercury Mini Suspension Light by Ross Lovegrove Online Price,
Artemide Nestore Terra Light,
Buy Ukiyo Wall by Manuel Vivian,
Miconos Pendant by Ernesto Gismondi Online Price,
Buy Lumina Zelig Desk Light,
Buy Emmanuel Babled Digit Pendant Light,
Masiero Ola Floor Lamp Online Sale,
Joy Ceiling Lamp by Paolo de Lucchi Replica,
modern bedroom lighting,
victorian bathroom light,
PXL Light,
Liquid Table Lamp,
Anta Leuchten Drop Pendant Light,
bottle chandelier,
Mos Suspension Light


text:
Electrical problem
1993 Lexus SC 300 6 cyl Two Wheel Drive Automatic 150000 miles
I bought this car for my personal use in order to repair it. The back lights were working perfectly but a few days ago they don't turn on when I turn on the lights at night. They do work though when I use the brakes.
Sunday, January 3rd, 2010 AT 9:11 AM


text:
Click on a thumbnail to go to Google Books.
VALIS (original 1981; edition 2011)
by Philip K. Dick
Work details
Valis by Philip K. Dick (1981)
No current Talk conversations about this book.
Very confusing and somewhat annoying at first since the author seemed to keep repeating himself on many points. As the story developed though, I realized that it was all a very well-planned storytelling device. By the time I finished this book, I realized how thoroughly it had pulled me onto the crazy edge that the author was dancing on while writing the story. Very, very clever Mr. Dick!
The main character in VALIS is Horselover Fat, an author surrogate. "Horselover" echoes the Greek etymology of the name Philip, while in German, Dick's surname means "fat".
Dick, as narrator, states early in the book that the creation of the character "Horselover Fat" is to allow him some "much needed objectivity." In this particular work the narrator is also a fictional character provided as a cool, pragmatic counter-point to Horselover's slow disintegration.
Even though the book is written in the first-person-autobiographical, for most of the book Dick treats himself and Fat as two separate characters; he describes conversations and arguments with Fat, and harshly if sympathetically criticizes his opinions and writings. The major subject of these dialogues is spirituality, as Dick/Fat is/are ostensibly obsessed with several religions and philosophies, including Christianity, Taoism, Gnosticism and even Jungian psychoanalysis, in the search for a cure for what he believes is simultaneously a personal and a cosmic wound. Near the end of the book the messianic figure, incarnated by the child Sophia (a name associated with Wisdom in many Gnostic texts, literally meaning "wisdom" in Greek [ Σοφία]), temporarily cures him, and the narrator describes his surprise that Horselover Fat has suddenly disappeared from his side.
Bizarre story that kept evolving in increasingly stranger ways. I did enjoy the elements from Buddhism, Hinduism, Taoism, and Gnostic Christianity.
If this had been my first Philip K. Duck novel, I would have never read another. I didn't find it funny or a joy to read. It was a chore.
I honestly don't know much about the author, but this book was just as insane as several of the characters in it.
If you're going to pick up a PKD novel, start with something like A Scanner Darkly.
Is contained in
References to this work on external resources.
Wikipedia in English (4)
Amazon.com Amazon.com Review (ISBN 0679734465, Paperback)The first of Dick's three final novels (the others are Divine Invasion and The Transmigration of Timothy Archer). Known as science fiction only for lack of a better category, "Valis" takes place in our world and may even be semi-autobiographical.
The proponent of the novel, Horselover Fat, is thrust into a theological quest when he receives communion in a burst of pink laser light. From the cancer ward of a bay area hospital to the ranch of a fraudulent charismatic religious figure who turns out to have a direct com link with God, Dick leads us down the twisted paths of Gnostic belief, mixed with his own bizarre and compelling philosophy. Truly an eye opening look at the nature of consciousness and divinity.
(retrieved from Amazon Thu, 12 Mar 2015 18:24:38 -0400)
Horselover Fat begins receiving what he considers to be divine revelations that imply extraterrestrial forces are interfering in the affairs of the Earth.
(summary from another edition)
Amazon Kindle (4 editions)
Audible (5 editions)
CD Audiobook (6 editions)
Project Gutenberg (0 editions)
Google Books — Loading...
Popular covers
5 editions of this book were published by Audible.com.
Is this you?
Become a LibraryThing Author.


text:
A group of 28 airline passengers has filed a lawsuit in San Francisco alleging that the proposed merger between Northwest Airlines and Delta Air Lines would result in "higher ticket prices and diminished service" if approved. The passengers' lawsuit alleges that the resulting airline would control nearly a quarter of all domestic flights, giving it a monopolistic grip on the sector.
Full Story:USA Today


text:
Conquer Your Cravings
Dr. Oz gives you the tools you need to stack your diet in your favor to keep you fuller, longer while helping you shed extra pounds faster and easier.
More than 1 in 4 women die from America's #1 killer: Heart disease. Learn the brand new risk factors for women. Hear the shocking reasons complications during pregnancy may raise your risk for heart disease.
Click here to learn the message Star Jones has for women everywhere.
Click here to learn more about women and heart disease.
Click here to watch Part 2.
Click here to watch Part 3.


text:
Mix it with locals and travellers and feel the buzz of arts, crafts and music. This is your chance to really find out what makes the Top End tick.
Slideshow controls have visual effect only.
Sit back and relax with a stress-relieving massage followed by a relaxing Sunday brunch and a lazy morning stroll through Darwin's oldest market.
Unwind in the ambience of the Nightcliff Markets every Sunday, unearthing unusual bargains and unique gifts, and indulging in some personal wellbeing.
Come along and join the locals for breakfast or maybe grab an early lunch.The Berry Springs Community Market has stalls ranging from fresh locally ...
Whether you make art, buy art or appreciate artful things, Territory Made is for you. Celebrating what is made, designed and created in the NT.
Soak up the twilight atmosphere as you shop for fruit and veg, explore the art and crafts stalls or indulge in a delicious multicultural dinner.
Browse the markets for a bargain every Friday night in the dry season, sampling exotic foods, jewellery, arts and craft, to the tune of local buskers.
Celebrate our thriving and successful multicultural community by joining the picnic atmosphere at the Darwin Waterfront.There will be food ...
The Darwin Fringe Festival is a vibrant ten-day festival held during the beautiful Darwin dry season.
Visit Pesona Indonesia at Darwin Waterfront where a vibrant program of live traditional and contemporary music and dancing performances from Darwin's local Indonesian Community.
Fill your Christmas with extra special gifts, buying handmade goods from the people that make them, in the stunning Darwin Waterfront Precinct.
Get amongst the carnival atmosphere of the Mindil Beach Sunset Markets, Thursday and Sunday nights between May and October.
These links display recommendations about the current location. this information has been stored under tabs.
The first tab contains the recommendated places to go.
The second tab contains the recommendated things to do.
The third tab contains the recommendated tours.
The fourth tab contains the events.
The fifth tab contains the accomodation.
Darwin Wave Lagoon - Darwin & Surrounds
Shady Camp - Darwin & Surrounds
George Brown Darwin Botanic Gardens - Darwin & Surrounds
Indo Pacific Marine - Darwin & Surrounds
Poolside Restaurant and Bar - Darwin & Surrounds
Department of Arts and Museums - Darwin & Surrounds
Dirt Bike Tour 2 to 3 days - Darwin & Surrounds
The Darwin History and Wartime Experience Tour - Darwin & Surrounds
DAR02 Darwin Coastline - Darwin & Surrounds
Cruise 45 - Darwin & Surrounds
Tour Tub Darwin City Sights Tour - Darwin & Surrounds
3 Day 4WD Kakadu Litchfield Explorer - Darwin & Surrounds
Darwin Waterfront Harmony Day Soiree - Darwin & Surrounds
Pesona Indonesia 2016 - Darwin & Surrounds
BASSINTHEGRASS Music Festival - Darwin & Surrounds
Carols By Candlelight - Darwin & Surrounds
Darwin Life and Home Expo - Darwin & Surrounds
Bynoe Harbour Camp-Out Fishing and Crabbing Competition - Darwin & Surrounds
Chillis Backpackers - Darwin & Surrounds
Beach Views Holiday Villa - Darwin & Surrounds
Ramada Suites Zen Quarter, Darwin - Darwin & Surrounds
Crab Claw Island Resort - Darwin & Surrounds
The Cavenagh Hotel - Darwin & Surrounds
Darwin Executive Suites - Darwin & Surrounds


text:
A Linux Success Story: Optelian Migrates to Linux
The Linux Foundation announced that Optelian, a company that designs and manufactures optical transport systems that send data across optical fiber, successfully migrated to Linux.
In the announcement, Amanda McPherson, Vice President of Marketing and Developer Programs for the Linux Foundation, writes about end users, such as Optelian, who are deploying Linux in their products.
In the case study released last week, McPherson looks at how Optelian is using Linux, how the company selected the Linux Foundation's training courses, and why it decided to migrate to Linux.
Issue 26: Linux Shell Handbook 7th Ed./Special Editions
Buy this issue as a PDF
Mirantis to Refactor OpenStack Fuel for Kubernetes
The company is collaborating with Google and Intel to use Kubernetes as an engine for Fuel
Canonical Joins Document Foundation Advisory Board
The upcoming release of LibreOffice will be available as a snap package
SUSE Joins the Microsoft Test Drive Program
Customers can take a free test drive of SLES for HPC on the Azure Cloud
SiFive Launches a Line of Open Source Chips
San Francisco-based chip company announces their first fully open source chip platform.
Fedora 24 Released
The whole distro gets rebuilt on glibc 2.3
Canonical Announces Cross-Distro Support for Snaps
Ubuntu Vendor tries to solve app packaging and distribution problem across distributions.
ownCloud Forked
Founder of ownCloud launches the Nextcloud project.
HP Enterprise Unveils a Futuristic Computer
Will The Machine change the way future programmers think about memory?
CoreOS Announces Distributed Storage System
The new Torus distributed storage system is available under an open source license on GitHub
Google Beats Oracle in the Android Lawsuit
Juries decides Google's use of Java APIs Was Fair Use


text:
Flowers [send lovely roses, sunflowers or tulips]
By Just2Me
Open iTunes to buy and download apps.
Flowers streams random photos on the Internet with the theme "flower". It is a photography app to appreciating beautiful natural flora.
If you see a rose, a sunflower or a bouquet that you like, you could download the photo to the phone's album, or even send them to your love ones!
The receiver of your flower would receive an email to view the flower.
Flowers is a simple to use application. It has these features:
• Send a flower
• Download a flower
• Thumbs up a flower
• No other features
Send a flower a day, keeps the heartache away..
There is also a FREE version available!
Search "Flowers~" or "Just2me"
*whisper in soft: there are 4 x free promo code voucher at just2us.com (10 Aug)
What's New in Version 1.1.0
Fixed crash bug
iPhone Screenshots
- Category: Photo & Video
- Updated: 12 November 2010
- Version: 1.1.0
- Size: 1.7 MB
- Language: English
- Seller: Junda Ong
- © 2009 Just2me
Compatibility: Requires iOS 3.0 or later. Compatible with iPhone, iPad, and iPod touch.


text:
This phone has 3 years of being released, and is still the best GSM phone sporting a qwerty keyboard IMO. This is my backup phone, running Kit Kat. Smooth as butter, it even runs heavy games as GTA San Andreas & Nova with no effort. If it wasnt for my shiny G2, this would still be my main phone!
Brown, 25 Jun 2014I have this puppy and it is very good. Running 4.4.3 android with CM11... :) I want to upgraded android version 4.4
davecrown, 15 Nov 2014please can this phone be connected to 'tv'.yes you can connect it using hdmi port
Ive been using this phone for just a couple of months, and I love it, it is amazing, fast, complete, I cant ask for more.
Great phone. Just it doesnt work on older GSM network in Europe. So make sure you have 3G signal :)Other from that great phone, no need to unlock it, really fast internet, great camera, hdmi port, hd video recording and really bright flash which comes handy at night as flashlight :)
Istvan, 08 Oct 2014Hi, where have I to buy this phone, to be fully compatible with GSM Romania? I just heard a so... moreI am using this on GSM in Czech Republic without problem.
Istvan, 08 Oct 2014Hi, where have I to buy this phone, to be fully compatible with GSM Romania? I just heard a so... moredon't worry it works 100%.
mo0n_sniper, 06 Oct 2014I also got this phone and works in Romania 3g+. Best keyboard phone ever.Hi, where have I to buy this phone, to be fully compatible with GSM Romania? I just heard a some situations that people took this phone from ebay, and it couldn't run with Orange Romania GSM because of this Verizon thing...Can anyone help me?
I also got this phone and works in Romania 3g+.
Best keyboard phone ever.
ferd111, 21 Sep 2014this phone can be use gsm and data work outside usa :)yes and yes. I use Droid4 in Romania
This is a fantastic phone. It does everything I need it to do to run my business while I am traveling or at the office. I stay in touch with my emails, and text messages, as well as my Linkedin Network, and Facebook friends.
I especially like the slide out keypad. It makes it much easier for texting, and answering emails as well as searching the web.
I am considering switching providers, but have not done so yet waiting to see if I can unlock the phone. I like the phone enough that if I can't unlock it to switch carriers, I will probably stay put rather than switch to another phone.
I want a new phone.
Now I own Nokia N900 - old, without new aplications etc ... Is this phone good for replace it?
How it is with battery (on internet, or is possible to replace it)? Where you bought it, I'm from Europe - ebay?
Live in Ontario -- stock JB works fine with full service and everything on Virgin mobile. Recently upgraded to CM11, also works fine, but you NEED to install the Verizon CDMA Patch (just google that, you'll find Internauta37's patch on his blog)


text:
Specialists in this kind of industry think vaping to be able to be most likely enormously advantageous to open public health, along with we've also been dismayed to be able to see the idea take some sort of pretty strict beating within the general public arena. This kind of, along together with the FDA's recent taking over in favor of rigid regulation and also all associated with the numerous laws going crazy, have encouraged individuals to act. Is actually little ponder why vaping acceptance offers exploded in to a $2.4 billion market… Because unless of course you move out associated with your approach to always be informed, probabilities are you have been revealed to much more misinformation compared to truth with regards to what typically the media telephone calls "e-cigs" as well as what almost all others phone "vaping." Is this a healthier alternative to smoking?
Any time most individuals think regarding an digital cigarette, these people think associated with the item pictured over on the actual far remaining. They appear like normal smokes, you purchase them in a propane station, as well as (if an individual buy Blu or Vuze, the 2 most famous brands) these people are built by smoking cigarettes companies. The particular cartridges within these arrive pre-filled, and also must always be replaced together with new carts and catomizers. They get very minimal flavor models, and are usually ostensibly some sort of simple – maybe better – substitute for cigs. Just click here for several ways to quit smoking. Yet inspite of their outstanding sales quantities, the great majority involving those who also permanently give up smoking inside favor regarding vaping perform not utilize them. Our store does not even bring them. The truth is, simply no vape stores do-just gasoline stations along with convenience retailers.


text:
These Ultra Plush Changing Pad Covers are a perfect accent to any nursery and a convenient way to extend the life of your changing pad. Each of the covers in this 2-pk. is made of soft, comfy velboa material; this fabric is stain-resistant, machine-washable and colorfast for long-lasting use. The covers fit over most standard-sized changing pads.
Changing pad cover made with some of the softest fabric, plush velboa
Made of stain-resistant fabric
Fits standard changing pads 16x32"
Accommodates most changing pad safety straps
Machine washable
Package Quantity: 2
Features: Fits Most Changing Pads
Material: Polyester
Dimensions: 17.000 W x 32.000 L
Suggested Age: Newborn and Up
Care and Cleaning: Machine Wash
other Info.
- Online Item #: 719088
- Store Item Number (DPCI): 030-04-4343
- Imported


text:
| By Woody Leonhard
It's been a hellacious week for security admins all over the world: the polymorphic worm known as Downadup, Conficker, and Kido has infected millions of computers.
Fortunately, you can scan, scour, and secure your systems by following four relatively simple steps.
Remember the patch that Microsoft released suddenly — "out of cycle" in the parlance — back in October 2008? Windows Secrets followed suit with an out-of-cycle news bulletin about the patch on Oct. 24. Susan Bradley recommended that readers immediately install the update described in MS08-067 (KB article 958644) to protect against "a remote-code attack that could spread wildly across the Internet."
Just as Susan predicted, the remote-code attacks started appearing shortly thereafter. On Oct. 26, Christopher Budd of the Microsoft Security Response Center posted the following in the MSRC blog:
"We are aware that people are working to develop reliable public exploit code for the vulnerability. We are aware of discussion about code posted on a public site, but our analysis has shown that code always results in a denial of service, to demonstrate the vulnerability. So far, we've not seen evidence of public, reliable exploit code showing code execution."
By mid-November, the Microsoft Malware Protection Center (MMPC) said in a blog posting that it had collected "over 50 distinct exploits of this vulnerability." However, MMPC said the instances were very limited: "We're getting a very small number of customer reports for these attacks."
Get our unique weekly Newsletter with tips and techniques, how to's and critical updates on Windows 10, Windows 8, Windows 7, Firefox, Internet Explorer, Google, etc. Join our 460,000 subscribers!
Subscribe and get our monthly bonuses - free!
The Windows 7 Guide, Volume 3: Advanced maintenance and troubleshooting provides advanced tools for keeping Microsoft's premier operating system up and running smoothly. Get this excerpt and other 4 bonuses if you subscribe FREE now!


text: I usually wait until after holiday cards have gone out to post a family's gallery and I think plenty of time has gone by considering it's now March! Here's a look back at a warm day last November when this busy family gathered for their annual photos. Such a gorgeous family and of course, it wouldn't be a Betsy King Photography shoot without a precious pup in the pics!


text:
Learn more
Sideways Arithmetic/Wayside Paperback – Jun 1989
Amazon Price
|New from
|Used from
Library Binding
"Please retry"
"Please retry"
Mass Market Paperback
"Please retry"
Customers Who Bought This Item Also Bought
No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
Getting the download link through email is temporarily not available. Please check back later.
To get the free app, enter your mobile phone number.
I'd like to read this book on Kindle
Don't have a Kindle? Get your Kindle here, or download a FREE Kindle Reading App.
Product Details
Would you like to update product info, give feedback on images, or tell us about a lower price?
Product Description
Praise for Louis Sachar: 'One of the few masters of American fiction' Independent on Sunday Praise for 'Sideways Stories from Wayside School': 'Thirty clever, fast-moving stories that describe the bizarre events at Wayside School ... each story is refreshingly different' Guardian Praise for 'Holes': 'An exceptionally good novel' Sunday Times --This text refers to an alternate Paperback edition.
About the Author
Childhood Memories
As writer of books for elementary school students, Louis Sachar tries to recall what it felt like for him to be that age. Despite the notion that times have changed, he thinks that kids in grade school are basically the same as they were when he was young.
For example, in East Meadow, New York, where Sachar was born, he remembers having to keep away from the woods across the street to avoid the older, tough kids who played there. Looking back now, he thinks those tough kids were probably only eleven or twelve years old! When Sachar turned nine, his family moved to Orange County in California, which, at the time, was mostly orange groves. He cut through the orange groves on the way to school, and had orange fights on the way home.
The Path to Becoming an Author
It wasn't until high school that Sachar began to love reading. In college, he developed a particular interest in Russian literature and somehow got the ridiculous ambitious notion to learn the language and read his favorite Russian authors in the original language. After taking over a year of Russian, he realized it was still Greek to him. Sachar dropped out of Russian class and tried to figure out what class he should take instead. As he wandered across the campus, he saw an elementary school girl handing out pieces of paper. He took one from her. It read: 'Help. We need teachers' aides at our school. Earn three units of credit.'
Prior to that time, Sachar had no interest whatsoever in kids. However, he signed up to be a teacher's aide because he needed to take something other than Russian, and it sounded easy. It turned out to be not only his favorite class, but also the most important class Sachar took during his college career. After he was at the school for a while, he was asked to be the 'Noon Time Supervisor.' It was his job to watch over the kids during lunch. Sachar played games with the kids who all called him 'Louis, the Yard Teacher.'
The Story Behind Sideways Stories
Around that time Sachar came upon In Our Town by Damon Runyon, a book of very short stories about different characters in a town. It gave him the idea for Sideways Stories from Wayside School, which is a book of short stories about different kids in a school. All the kids are named after kids he knew at the school where he worked. 'Louis the Yard Teacher, ' is also a character. Sachar says he had more fun writing that book than any of his others, because it was just a hobby then, and he never truly expected to be published.
A Career Choice
Sideways Stories from Wayside School was published just as Sachar began law school. For six years he struggled over trying to decide between being an author or a lawyer. During the time that he finished law school and took a job as a lawyer, Sachar wrote three more children's books. His decision had been made. Sachar has been an attorney since 1981, but has chosen to devote his time to writing children's books.
--This text refers to the Mass Market Paperback edition.


text:
The Forgotten BrideShe comes to clubs to take someone home.
The Four HorsemenAssignment: we all have missions to fulfill.
The FreedomA mother and daughter contract The Freedom.
The Girl Next DoorYoung man's life is turned upside down with new neighbor.
- Parts:
The Haunted House ClubWith vampires, girls can lose more than their panties.
The Haven StoriesAndre finds Haven & makes her one of his kind.
The Horror BeneathJessica & her mother are taken by tentacles.
- Parts:
The King in YellowHave you found the Yellow Sign?


text: American Culture The War and the Silver Screen -- "Five Came Back: A Story of Hollywood and the Second World War" By Rich Fisher • Mar 24, 2015 Our guest is the film historian and journalist Mark Harris, who's written for Entertainment Weekly, Grantland, New York Magazine, The New York Times, The Washington Post, and other publications. A Free Lecture at TU -- "Public Selves/Private Selves: From James Joyce to David Foster Wallace" By Rich Fisher • Mar 23, 2015 Our guest today on StudioTulsa is D.T. Max, a staff writer at The New Yorker magazine who's also the author of "Every Love Story is a Ghost Story: A Life of David Foster Wallace," a highly regarded literary biography which first appeared a few years ago. J.C. Hallman's "B & Me" -- The Writer as Reader (and Fan, and Critic, and Commentator, Etc.) By Rich Fisher • Mar 11, 2015 On this edition of ST, we speak with the writer J.C. Hallman, who was raised in Southern California, studied at the University of Pittsburgh and the Iowa Writers' Workshop, and now teaches at Oklahoma State University. At Gilcrease Museum This Weekend, on Saturday and Sunday, a "John Ford Film Festival" By Rich Fisher • Mar 5, 2015 On this edition of ST, we speak by phone with Joseph Malham, a Chicago-based writer and iconographer, who will soon appear here in Tulsa at the Gilcrease Museum. Malham is the author of "John Ford: Poet in the Desert," and he'll speak about the life and work of the legendary filmmaker Ford (1894-1973) tomorrow, Friday the 6th, at noon at the museum. "Selected Letters of Langston Hughes" By Rich Fisher • Feb 27, 2015 On this penultimate day of Black History Month, we're talking about the life and work of one of our greatest African American writers, Langston Hughes (1902-1967), the prolific and influential poet, activist, novelist, memoirist, playwright, and newspaper columnist. Our guest on ST is David Roessel, one of the editors of the recently published "Selected Letters of Langston Hughes" (Knopf). "The Burglary: The Discovery of J. Edgar Hoover's Secret FBI" (Encore presentation.) By Person: Rich Fisher • Feb 19, 2015 (Note: This show originally aired in November.) Our guest is Betty Medsger, an author and former journalist whose latest book, "The Burglary: The Discovery of J. Edgar Hoover's Secret FBI," is now out in paperback. As a critic for The Wall Street Journal has noted, this is "an important work, the definitive treatment of an unprecedented and largely forgotten 'act of resistance' that revealed shocking official criminality in postwar America. One need not endorse break-ins as a form of protest to welcome this deeply researched account of the burglary at Media, Penn. Ms. Historian Laura Auricchio Offers "The Marquis: Lafayette Reconsidered" (Encore presentation.) By Rich Fisher • Feb 17, 2015 (Note: This show originally aired in October of last year.) On this installment of ST, an interesting chat with Laura Auricchio, a specialist in eighteenth-century French history and art who's received fellowships from the Fulbright Foundation, the Whiting Foundation, and Columbia University -- and who's also Dean of the School of Undergraduate Studies at The New School in NYC. Auricchio speaks about her new book, "The Marquis: Lafayette Reconsidered," which was called "a sharp and moving biography" in a starred review in Kirkus. "Enchanted Objects: Design, Human Desire, and the Internet of Things" (Encore presentation.) By Rich Fisher • Feb 16, 2015 (Please note: This program originally aired in September of last year.) On this edition of ST, an in-depth discussion with David Rose, an award-winning entrepreneur and instructor at the MIT Media Lab who specializes in how digital information interfaces with the physical environment. Rose also founded Ambient Devices, which pioneered the technology used to embed Internet information in everyday objects like lamps, mirrors, and umbrellas. Now at Philbrook -- "Masterworks of American Modernism from the Vilcek Foundation Collection" By Rich Fisher • Feb 10, 2015 On today's ST, we are pleased to once again welcome Catherine Whitney, the Chief Curator and Curator of American Art at the Philbrook Museum of Art here in Tulsa, who tells us about a fantastic new show on view at that museum called "New York to New Mexico: Masterworks of American Modernism from the Vilcek Foundation Collection." This show will run through May 3rd; more info can be accessed at the museum's website. The Rev. Dr. John M. Buchanan Will Give the 28th Annual Knippa Interfaith / Ecumenical Lecture By Rich Fisher • Jan 20, 2015 On Sunday the 25th -- at Grace Lutheran Church (2331 East 5th Place) in Tulsa -- the 28th Annual Knippa Interfaith / Ecumenical Lecture will be given. It is free to the public, it starts at 7pm, and it will feature the Rev. Dr. John M. Buchanan, Pastor Emeritus of the Fourth Presbyterian Church of Chicago (where he served for more than 25 years). Buchanan is also the editor and publisher of The Christian Century magazine; he has received numerous doctorates and honors for his scholarship, and he's written three books. Pages« first ‹ previous … 2 3 4 5 6 7 8 9 10 … next › last »