text:
Real-time Java, Part 1
Using Java code to program real-time systems
Content series:
This content is part # of # in the series: Real-time Java, Part 1
This content is part of the series:Real-time Java, Part 1
Stay tuned for additional content in this series.
Use of the Java language in real-time systems isn't widespread for a number of significant reasons. These include the nondeterministic performance effects inherent in the Java language's design, such as dynamic class loading, and in the Java Runtime Environment (JRE) itself, such as the garbage collector and native code compilation. The Real-time Specification for Java (RTSJ) is an open specification that augments the Java language to open the door more widely to using the language to build real-time systems (see Related topics). Implementing the RTSJ requires support in the operating system, the JRE, and the Java Class Library (JCL). This article explores the challenges to using the Java language to implement real-time systems and introduces a development kit and runtime environment that tackles those challenges. Subsequent articles in this series will cover in greater depth the concepts and technologies that this article introduces.
Real-time requirements
Real-time (RT) is a broad term used to describe applications that have real-world timing requirements. For example, a sluggish user interface doesn't satisfy an average user's generic RT requirements. This type of application is often described as a soft RT application. The same requirement might be more explicitly phrased as "the application should not take more than 0.1 seconds to respond to a mouse click." If the requirement isn't met, it's a soft failure: the application can continue, and the user, though unhappy, can still use it. In contrast, applications that must strictly meet real-world timing requirements are typically called hard RT applications. An application controlling the rudder of an airplane, for example, must not be delayed for any reason because the result could be catastrophic. What it means to be an RT application depends in large part on how tolerant the application can be to faults in the form of missed timing requirements.
Another key aspect of RT requirements is response time. It's critical for programmers writing hard or soft RT applications to understand the response-time constraint. The techniques required to meet a hard 1-microsecond response are significantly different from those required to meet a hard 100-millisecond response. In practice, achieving response times below tens of microseconds requires a combination of custom hardware and software, possibly with no -- or a very thin -- operating-system layer.
Finally, designers of robust RT applications typically need some quantifiable level of deterministic performance characteristics in order to architect an application to meet the response-time requirements. Unpredictable performance effects large enough to impact a system's ability to meet an application's response-time requirements make it difficult and maybe even impossible to architect that application properly. The designers of most RT execution environments devote considerable effort to reducing nondeterministic performance effects to meet the response-time needs of the broadest possible spectrum of RT applications.
Challenges for RT Java applications
Standard Java applications running on a general-purpose JVM on a general-purpose operating system can only hope to meet soft RT requirements at the level of hundreds of milliseconds. Several fundamental aspects of the language are responsible: thread management, class loading, Just-in-time (JIT) compiler activity, and garbage collection (GC). Some of these issues can be mitigated by application designers, but only with significant work.
Thread management
Standard Java provides no guarantees for thread scheduling or thread priorities. An application that must respond to events in a well-defined time has no way to ensure that another low-priority thread won't get scheduled in front of a high-priority thread. To compensate, a programmer would need to partition an application into a set of applications that the operating system can then run at different priorities. This partitioning would increase the overhead of these events and make communication between the events far more challenging.
Class loading
A Java-conformant JVM must delay loading a class until it's first referenced by a program. Loading a class can take a variable amount of time depending on the speed of the medium (disk or other) the class is loaded from, the class's size, and the overhead incurred by the class loaders themselves. The delay to load a class can commonly be as high as 10 milliseconds. If tens or hundreds of classes need to be loaded, the loading time itself can cause a significant and possibly unexpected delay. Careful application design can be used to load all classes at application start-up, but this must be done manually because the Java language specification doesn't let the JVM perform this step early.
Garbage collection
The benefits of GC to application development -- including pointer safety, leak avoidance, and freeing developers from needing to write custom memory-management tooling -- are well documented. However, GC is another source of frustration for hard RT programmers using the Java language. Garbage collects occur automatically when the Java heap has been exhausted to the point that an allocation request can't be satisfied. The application itself can also trigger a collection.
On the one hand, GC is a great thing for Java programmers. Errors introduced by the need to manage memory explicitly in languages such as C and C++ are some of the most difficult problems to diagnose. Proving the absence of such errors when an application is deployed is also a fundamental challenge. One of the Java programming model's major strengths is that the JVM, not the application, performs memory management, which eliminates this burden for the application programmer.
On the other hand, traditional garbage collectors can introduce long delays at times that are virtually impossible for the application programmer to predict. Delays of several hundred milliseconds are not unusual. The only way to solve this problem at the application level is to prevent GC by creating a set of objects that are reused, thereby ensuring that the Java heap memory is never exhausted. In other words, programmers solve this problem by throwing away the benefits of the managed memory by explicitly managing memory themselves. In practice, this approach generally fails because it prevents programmers from using many of the class libraries provided in the JDK and by other class vendors, which likely create many temporary objects that eventually fill up the heap.
Compiling Java code to native code introduces a similar problem to class loading. Most modern JVMs initially interpret Java methods and, for only those methods that execute frequently, later compile to native code. Delayed compiling results in fast start-up and reduces the amount of compilation performed during an application's execution. But performing a task with interpreted code and performing it with compiled code can take significantly different amounts of time. For a hard RT application, the inability to predict when the compilation will occur introduces too much nondeterminism to make it possible to plan the application's activities effectively. As with class loading, this problem can be mitigated by using the
Compiler class to compile methods programmatically at application start-up, but maintaining such a list of methods is tedious and error prone.
The Real-time Specification for Java
The RTSJ was created to address some of the limitations of the Java language that prevent its widespread use in RT execution environments. The RTSJ addresses several problematic areas, including scheduling, memory management, threading, synchronization, time, clocks, and asynchronous event handling.
RT systems need to control strictly how threads are scheduled and guarantee that they're scheduled deterministically: that is, that threads are scheduled the same way given the same set of conditions. Although the JCL defines the concept of thread priority, a traditional JVM is not required to enforce priorities. Also, non-RT Java implementations typically use a round-robin preemptive scheduling approach with unpredictable scheduling order. With the RTSJ, true priorities and a fixed-priority preemptive scheduler with priority-inheritance support is required for RT threads. This scheduling approach ensures that the highest-priority active thread will always be executing and it continues to execute until it voluntarily releases the CPU or is preempted by a higher-priority thread. Priority inheritance ensures that priority inversion is avoided when a higher-priority thread needs a resource held by a lower-priority thread. Priority inversion is a significant problem for RT systems, as we'll describe in more detail in RT Linux®.
Memory management
Although some RT systems can tolerate delays resulting from the garbage collector, in many cases these delays are unacceptable. To support tasks that cannot tolerate GC interruptions, the RTSJ defines immortal and scoped memory areas to supplement the standard Java heap. These areas allow tasks to use memory without being required to block if the garbage collector needs to free memory in the heap. Objects allocated in the immortal memory area are accessible to all threads and are never collected. Because it is never collected, immortal memory is a limited resource that must be used carefully. Scope memory areas can be created and destroyed under programmer control. Each scope memory area is allocated with a maximum size and can be used for object allocation. To ensure the integrity of references between objects, the RTSJ defines rules that govern how objects in one memory area (heap, immortal, or scope) can refer to objects in other memory areas. More rules define when the objects in a scope memory are finalized and when the memory area can be reused. Because of these complexities, the recommended use of immortal and scoped memory is limited to components that cannot tolerate GC pauses.
The RTSJ adds support for two new thread classes that provide the basis for executing tasks with RT behaviour:
RealtimeThread and
NoHeapRealtimeThread (NHRT). These classes provide support for priorities, periodic behaviour, deadlines with handlers that can be triggered when the deadline is exceeded, and the use of memory areas other than the heap. NHRTs cannot access the heap and so, unlike other types of threads, NHRTs are mostly not interrupted or preempted by GC. RT systems typically use NHRTs with high priorities for tasks with the tightest latency requirements,
RealtimeThreads for tasks with latency requirements that can be accommodated by a garbage collector, and regular Java threads for everything else. Because NHRTs cannot access the heap, using these threads requires a high degree of care. For example, even the use of container classes from the standard JCL must be carefully managed so that the container class doesn't unintentionally create temporary or internal objects on the heap.
Synchronization must be carefully managed within a RT system to prevent high-priority threads from waiting for lower-priority threads. The RTSJ includes priority-inheritance support to manage synchronization when it occurs, and it provides the ability for threads to communicate without synchronization via wait-free read and write queues.
Time and clocks
RT systems need higher-resolution clocks than those provided by standard Java code. The new
HighResolutionTime and
Clock classes encapsulate these time services.
Asynchronous event handling
RT systems often manage and respond to asynchronous events. The RTSJ includes support for handling asynchronous events triggered by a number of sources including timers, operating-system signals, missed deadlines, and other application-defined events.
IBM WebSphere Real Time
Implementing the RTSJ requires broad support from the underlying operating system as well as components of the JRE. IBM® WebSphere® Real Time, released in August 2006 (see Related topics), includes full RTSJ compliance as well as several new technologies aimed at improving RT systems' runtime behaviour and facilitating the work application designers must do to create RT systems. Figure 1 shows a simplified representation of WebSphere Real Time's components:
Figure 1. Overview of WebSphere Real Time
WebSphere Real Time is based upon IBM's cross-platform J9 technology. Open source RT patches applied to the Linux operating system provide the fundamental RT services required to support RT behaviours, particularly those mandated by the RTSJ. Significantly enhanced GC technology supports 1-millisecond pause times. JIT compilation can be used for softer RT scenarios where compilation can occur when no higher priority work needs to be done. A new Ahead-of-time (AOT) compilation technology (not shown in Figure 1) has also been introduced to provide harder RT performance in systems where JIT compilation is inappropriate. The following sections introduce each of these technologies; later articles in this series will give more details on how each technology works.
RT Linux
WebSphere Real Time runs on a customized, fully open source version of Linux. Several changes were applied to create an environment for RT Java. These changes provide a fully preemptible kernel, threaded interrupt handlers, high-resolution timers, priority inheritance, and robust mutexes.
Fully preemptible kernel
RT Java threads are implemented with fixed priority scheduling, also known as static priority scheduling, with a first-in-first-out scheduling policy. A standard Linux kernel provides soft RT behaviour, and although there's no guaranteed upper bound on how long a higher-priority thread waits to preempt a lower-priority thread, the time can be roughly approximated as tens of microseconds. In RT Linux, almost every kernel activity is made preemptible, thereby reducing the time required for a lower-priority thread to be preempted and allow a higher-priority one to run. Remaining critical sections that cannot be preempted are short and perform deterministically. RT scheduling latencies have been improved by three orders of magnitude and can now be measured roughly in tens of microseconds.
Threaded interrupt handlers for reduced latency
Almost all interrupt handlers are converted to kernel threads that run in process context. Latency is lower and more deterministic because handlers become user-configurable, schedulable entities that can be preempted and prioritized just like any other process.
High-resolution timers
High-resolution time and timers provide increased resolution and accuracy. RT Java uses these features for high-resolution sleep and timed waits. Linux high-resolution timers are implemented with a high-precision, 64-bit data type. Unlike traditional Linux, where time and timers depend on the low-resolution system tick -- which limits the granularity of timer events -- RT Linux uses independently programmable high-resolution timer events that can be made to expire within microseconds of each other.
Priority inheritance
Priority inheritance is a technique for avoiding the classic priority inversion problem. One of the simplest examples of priority inversion, illustrated in the top diagram in Figure 2, involves three threads: one high (H), one medium (M), and one low (L) priority thread. Imagine H and M are initially dormant waiting for events to be triggered and that L is active and holds a lock. If H wakes up to handle an event, it will preempt L and begin to execute. Consider what happens if H blocks on the lock held by L. Because H cannot make progress until L releases the lock, H blocks and L begins executing again. If M is now triggered by an event, M will preempt L and execute for as long as it needs to. This situation is called priority inversion because M can starve H even though H has higher priority than M.
Figure 2. Example of priority inversion and priority inheritance
RT Linux prevents priority inversion through a policy known as priority inheritance (also known as priority lending), illustrated in Figure 2's bottom diagram. When H blocks on the lock held by L, H gives its priority to L, which guarantees that no task of lower priority than H can preempt L before it releases the lock needed by H. As soon as the lock is released, L's priority reverts to its original value so that H can make progress without waiting further on L. The application designer should still strive to avoid situations where a higher-priority thread requires a resource held by a lower-priority thread, but this priority-inheritance mechanism increases robustness so that priority inversion is prevented.
Robust mutexes and rt-mutexes
Linux pthread mutexes are supported by fast user-space mutexes, known as futexes. Futexes optimize the time to obtain an uncontested lock without relying on the kernel; kernel intervention is required only for contested locks. Robust mutexes solve the problem of cleaning up locks properly after an application holding locks crashes. Also, rt-mutexes extend the priority-inheritance protocol to robust mutexes, which allows the RT JVM to rely on priority-inheritance behaviour via the pthread library.
Deterministic garbage collection
Given an RT operating system, such as RT Linux, that provides the basis for RT behaviours, other major pieces of the JVM can be built to also exhibit RT behaviour. GC is one of the larger sources of nondeterministic behaviour in a JVM, but this nondeterminism can be mitigated through careful design and reliance on the features of RT Linux.
The nondeterministic effects of GC pauses wreak havoc on an RT application's ability to complete tasks under specific deadlines (see Garbage collection). Most GC implementations interfere with an RT application's latency goals to the point where only tasks with larger scale and loose timing requirements can afford to rely on GC technology. The RTSJ's solution to this problem is the introduction of programmer-managed memory allocation via immortal and scope memory areas and NHRTs, but this solution can become a huge headache for Java application designers.
WebSphere Real Time lets programmers rely on the RTSJ memory areas if they desire, but this approach is recommended only for tasks with extremely tight latency requirements. For tasks able to tolerate GC pause times on the order of 1 millisecond, IBM has created deterministic GC technology that lets programmers benefit from the ease of programming with automatic memory management and manage tasks with predictable performance.
IBM's deterministic GC technology is based on two simple premises:
- No single GC pause exceeds some maximum upper bound.
- GC will consume no more than some percentage of any given time window by controlling the number of pauses during that window.
Managing GC activities with these two premises in mind dramatically increases the likelihood that an application can achieve its RT goals.
Metronome GC
WebSphere Real Time uses the Metronome GC to achieve deterministic low-pause-time GC behavior in the JVM (see Related topics). The Metronome GC uses a time-based method of scheduling, which interleaves the collector and the application (known in GC parlance as the mutator because, from the garbage collector's point of view, the application acts to change the graph of live objects over time) on a fixed schedule.
The reason for scheduling against time instead of allocation rate is that allocation is often uneven during an application's execution. By completing GC work as a tax against allocation, it's possible to have uneven distribution of GC pauses and as such reduce the level of determinism in the GC behaviour. By using time-based scheduling, the Metronome GC can achieve consistent, deterministic, bounded pause times. Further, because no language extensions or modifications to existing code are required, regular Java applications can make use of Metronome transparently and benefit from its deterministic characteristics.
Metronome divides time into a series of discrete quanta, approximately 500 microseconds but no more than 1 millisecond in length, that are devoted to either GC work or application work. Although quanta are very short, if several quanta were devoted to GC work, the application could still experience a longer pause time that might jeopardize RT deadlines. To better support RT deadlines, Metronome distributes quanta devoted to GC work so that the application should receive some minimum percentage of time. This percentage is known as utilization, a parameter the user supplies. Over any time interval, the number of quanta devoted to the application should be no fewer than the specified utilization. By default, the utilization is 70%: in any 10-millisecond time window, at least 7 milliseconds will be devoted solely to the application.
The user can set the utilization at program start-up. Figure 3 shows an example of application utilization over a longer time period. Note the periodic dips corresponding to time quanta where the garbage collector is active. Across the entire time window shown in Figure 3, the application utilization remains at or above the specified 70% (0.7).
Figure 3. Sample utilization graph
Figure 4 demonstrates how deterministic GC pause times are with the Metronome technology. Only a small fraction of pauses exceeds 500 microseconds.
Figure 4. GC pause-time histogram
To keep individual GC pauses short, Metronome uses write barriers within the heap and associated metastructures to track live and potentially dead objects. Tracing live objects requires a series of GC quanta to determine which objects should be kept alive and which should be reclaimed. Because this tracing work is interleaved with program execution, the GC can lose track of certain objects that the application can "hide" through executing loads and stores.
This hiding of live objects is not necessarily the result of malicious application code. It's more commonly because the application is unaware of the garbage collector's activities. To ensure no objects are missed by the collector, the GC and VM cooperate by tracking the links between objects as they are created and broken via store operations that the application executes. A write barrier executed before the application performs a store operation does this tracking. The write barrier's purpose is simply to record the change to how objects are linked together if this store could cause a live object to become hidden. These write barriers represent both a performance and memory-footprint overhead that balance the need for deterministic behaviour.
The allocation of large objects can be troublesome for many GC strategies. In many cases, the heap is too fragmented to accommodate a single large object, such as an array. Consequently, it must incur a long pause to defragment, or compact, the heap to coalesce many smaller free memory areas into larger free memory areas to satisfy a large allocation request. Metronome uses a new two-level object model for arrays called arraylets. Arraylets break up large arrays into smaller pieces to make large array allocations easier to satisfy without defragmenting the heap. The arraylet object's first level, known as the spine, contains a list of pointers to the array's smaller pieces, known as leaves. Each leaf is the same size, which simplifies the calculation to find any particular element of the array and also makes it easier for the collector to find a suitable free space to allocate each leaf. Breaking arrays up into smaller noncontiguous pieces lets arrays be allocated within the many smaller free areas that typically occur on a heap, without needing to compact.
Unlike traditional STW garbage collector implementations that have the concept of a GC cycle to represent the start and end of a garbage collect, Metronome performs GC as a continuous process throughout the application's lifetime. Application utilization is guaranteed over the application's lifetime, with potentially higher utilization than the minimum in situations where not much GC work is needed. Free memory fluctuates upward and downward as the collector finds free memory to return to the application.
Native code compilation for RT
Most modern JVMs use a combination of interpretation and compiled code execution. To eliminate interpretation's high performance cost, a JIT compiler selects frequently executed code to be translated directly to the CPU's native instructions. The Java language's dynamic characteristics typically cause this compiler to operate as the program executes rather than as a step that occurs before the program is run (as is the case for languages like C++ or Fortran). The JIT compiler is selective about which code it compiles so that the time it takes to do the compilation is likely to be made up by the improvements to the code's performance. On top of this dynamic compilation behaviour, traditional JIT compilers employ a variety of speculative optimizations that exploit dynamic characteristics of the running program that might be true at one point during one particular program's execution but might not remain true for the duration of execution. Such optimizations can be "undone" if the assumption about this characteristic later becomes false.
In a traditional non-RT environment, compiling code while the program executes works well because the compiler's actions are mostly transparent to the application's performance. In an RT environment, however, the JIT compiler introduces an unpredictable run-time behaviour that wreaks havoc on worst-case execution time analysis. But the performance benefit of compiled code is still important in this environment because it enables more-complex tasks to complete in shorter periods of time.
WebSphere Real Time introduces two solutions to balance these two requirements at different trade-off points. The first solution is to employ a JIT compiler, operating at a low non-RT priority, that has been modified to perform fewer aggressively speculative optimizations. Operation at a non-RT priority lets the operating system guarantee that the compiler will never interfere with the execution of a RT task. Nonetheless, the fact that the code performance will change over time is a nondeterministic effect that makes this solution more appropriate for softer RT environments rather than hard RT environments.
For harder RT environments, WebSphere Real Time introduces AOT compilation for application programs. Java class files stored in JAR files can be precompiled through a simple command line into Java eXEcutable (JXE) files. By specifying these JXE files, rather than the original JAR files, on the application classpath, the application can be invoked so that the AOT-compiled code is executed -- rather than bytecodes being interpreted or native code being compiled by a JIT compiler. In the first WebSphere Real Time release, using AOT code means that no JIT compiler is present, which has two primary advantages: lower memory consumption and no dynamic performance impact from either the JIT compilation thread or the sampling thread that identifies frequently executing code.
Figure 5 shows how Java code executes in WebSphere Real Time when AOT code is being used:
Figure 5. How AOT code is used
Starting at the upper left of Figure 5, the developer compiles Java source code to class files as in any Java development project. Class files are bundled into JAR files, which are then AOT compiled using the
jxeinajar tool. This tool can either compile all the methods in all the classes in the JAR files, or it can selectively compile some of the methods based on output generated by a sample JIT-based execution of the program that identifies the most important methods to compile. The
jxeinajar tool compiles the methods in a JAR file and constructs a JXE file that contains both the contents of the original JAR file and the native code generated by the AOT compiler. The JXE files can be directly substituted for JAR files when the program is executed. If the JVM is invoked with the
-Xnojit option, then the AOT-compiled code in JXE files on the classpath is loaded (according to the rules of the Java language). During program execution, methods loaded from JAR files or uncompiled methods loaded from JXE files are interpreted. Compiled methods loaded from JXEs execute as native code. In Figure 5, the
-Xrealtime command-line option is also necessary to specify that the RT VM should be invoked. This command-line option is only available in WebSphere Real Time.
Disadvantages of AOT code
Although AOT code enables more-deterministic performance, it also has some disadvantages. The JXEs used to store AOT code are generally much larger than the JAR files that hold the class files because native code is generally less dense than the bytecodes stored in class files. Native code execution also requires a variety of supplementary data to describe how the code needs to be bound into a JVM and how to catch exceptions, for example, so that the code can be executed. A second disadvantage is that AOT-compiled code, though faster than interpreted code, can be substantially slower than JIT-compiled code. Finally, the time to transition between an interpreted method and a compiled method, or vice versa, is higher than the time to call an interpreted method from another interpreted method or to call a compiled method from a compiled method. In a JVM with an active JIT compiler, this cost is eventually eliminated by compiling "around the edges" of the compiled code until the number of transitions is too small to impact performance. In a JVM with AOT-compiled code but no JIT compiler, the number of transitions is determined by the set of methods that were compiled into the JXEs. For this reason, we typically recommend AOT compiling the entire application as well as the Java library classes on which the application depends. Expanding the number of compiled methods, as we mentioned above, has a footprint impact although the benefit to performance is usually more critical than the footprint increase.
The reason AOT code is generally slower than JIT code is because of the nature of the Java language itself. The Java language requires that classes be resolved the first time the executing program references them. By compiling before the program executes, the AOT compiler must be conservative about classes, fields, and methods referenced by the code it compiles. AOT-compiled code is often slower than JIT-compiled code because the JIT has the advantage that it is performing compilation after the executing program has resolved many of these references. However, the JIT compiler must also carefully balance the time it takes to compile a program because that time adds to the program's execution time. For this reason, JIT compilers do not compile all code with the same degree of optimization. The AOT compiler does not have this limitation, so it can afford to apply more-aggressive compilation techniques that sometimes yield better performance than JIT-compiled code. Moreover, more methods can be AOT compiled than a JIT compiler might decide to compile, which can also result in better performance with AOT compilation than JIT compilation. Nonetheless, the common case is that AOT-compiled code is slower than JIT-compiled code.
To avoid nondeterministic performance effects, neither the JIT compiler nor the AOT compiler provided in WebSphere Real Time applies the aggressively speculative optimizations generally applied by modern JIT compilers. These optimizations are generally performed because they can produce substantial performance improvements, but they are not appropriate in a RT system. Furthermore, supporting the various aspects of the RTSJ and the Metronome garbage collector introduces some overheads into compiled code that traditional compilers need not perform. For these reasons, code compiled for RT environments is typically slower than the code compiled for non-RT environments.
Future directions
More can be done to make an RT Java environment faster, in terms of both predictable performance and raw throughput. We see two key areas of advancement that must occur for the Java language to succeed in the RT application space:
- Provide RT technology to users who want better predictability while running on traditional operating systems.
- Make it much easier to use this technology.
Toward soft RT
Many features of WebSphere Real Time are useful to programmers targeting a traditional operating system. Incremental GC and priority-based threads would clearly be useful in many applications, even if hard RT guarantees could not be met and only soft RT performance could be provided. An application server providing predictable performance without unpredictable GC delays, for example, is an attractive idea to many developers. Similarly, enabling applications to run high-priority Java health-monitoring threads with reasonable scheduling targets would simplify Java server development.
Making RT easier
Simply bringing the advantages of using the Java language to the process of creating RT systems is a tremendous benefit to developers. But there's always room for improvement, and we are constantly evaluating new features that could simplify RT programming even further. You can go to our IBM alphaWorks site to try out our expedited real-time threads research technology that lets developers manage extremely high-frequency events with very little tolerance for variance or delay (see Related topics). The tooling achieves highly deterministic behaviour by preloading, preinitializing, and precompiling the code to handle events and then running the code independently of the garbage collector with fewer and less onerous restrictions than the NHRTs in the RTSJ. You'll also find tooling called TuningFork, which traces paths from the operating system through the JVM and into applications, making it easier to perform detailed performance analysis.
Downloadable resources
Related topics
- Real-time Java series: Read the other parts in this series.
- "A real-time garbage collector with low overhead and consistent utilization" (David F. Bacon, Perry Cheng, and V.T. Rajan, Proceedings of the 30th Annual ACM SIGPLAN/SIGACT Symposium on Principles of Programming Languages, 2003): This paper presents a dynamically defragmenting collector that overcomes the limitations of applying GC to hard RT systems.
- JSR 1: Real-time Specification for Java: You'll find the RTSJ at the Java Community Process site.
- "IBM WebSphere Real Time V1.0 delivers predictable response times using Java standards": Read the product announcement for Real Time.
- The Real-time Linux Wiki: A self-described "Wiki Web for the CONFIG_PREEMPT_RT community, and real-time Linux in general."
- WebSphere Real Time: WebSphere Real Time lets applications dependent on a precise response times take advantage of standard Java technology without sacrificing determinism.
- Real-time Java technology: Visit the authors' IBM alphaWorks research site to find cutting-edge technologies for real-time Java.
- Java SE Real-Time: Sun Microsystems' commercial RTSJ-comformant implementation.
- Metronome: Learn more about Metronome, the GC technology incorporated in WebSphere Real Time.


text:
Please call or visit the school office as soon as possible to inform us as to the reason why your child is absent. Absence must also be followed up with a signed letter.
If your child has been physically sick, it is advisable to keep your child at home for 24 hours just in case he/she has an infection that could spread to other children.
Absence for any reason other than sickness or medical appointments must be authorised by the Headteacher beforehand.
Absence for holidays in term time will not be authorised by the Headteacher.
Fixed penalty notices will be issued by the Local Authority to parents who take their children on holiday during term time.
If you take your child out of school without previously speaking to the Headteacher, the absence will be recorded as unauthorised.
Unauthorised absences will be investigated by the Barnet Educational Welfare Officer attached to the school.
Thank you for your support in ensuring your child has the best possible education.

subset: commoncrawl


text:
I've been in procrastination mode lately, and I was falling behind on the new book. So, early to bed, early to rise, early to the page . . .
The writing day did not start out well. in fact, by the time I'd been at it an hour, I had about 100 words. Oh dear. Then came lunch--my favorite meal of the day. Finished reading the paper while I chowed down on curried black beans and rice and then showed up at the lap top once more.
And played about ten games of Solitaire. And felt guilty because I wasn't working.
Then I lost my Internet signal. For about half an hour. PANIC! PANIC! I must know what's going on in my tiny world. I must not miss one email. I must be able to access Facebook at all moments of the day!!!
After messing around with the router, I got it back again. Whew. Dodged a bullet.
Back to work. This time, I exited the Solitaire game. For good. (Well, for the day.)
Wrote a sentence. Checked my email. Wrote a sentence. Checked facebook. Wrote a sentence, did a piece of research. Wrote a sentence. Ripped some hair from my head.
The problem is/was -- I had no fresh ideas. I had to get Tricia and Angelica from one scene to the next. Scenes A and C were written. I just had to connect them.
So I tossed in something unexpected. Whoa! That worked like a charm.
Bottom line: the first 750 words of the day took five hours to write. The next 1100 words took half an hour to write.
Why can't I have more half hours like that one?


text:
guarding the potatoes
VIP Subscribing Member
VIP Contributor
Diamond VIP Contributor
- Joined
- Aug 9, 2004
- Messages
- 54,039
- Reaction score
- 79,365
- Location
- Mt. Pleasant, SC
Sticky Post
After the "frostbite" issue turned out to be a non-issue, he now says he wants his "old helmet" back.
Oakland Raiders wide receiver Antonio Brown has reportedly filed a grievance against the NFL for banning a helmet he wore throughout his time with the Pittsburgh Steelers since it's no longer certified by the National Operating Committee on Standards for Athletic Equipment (NOCSAE).


text:
With more and more consumers venturing online to do their banking and shopping, as well as participate in other e-commerce activities that rely heavily on personal information shared with secure sites, little wonder that Americans might cringe with every report of a data breach. It happens more than we think. According to TransUnion, one of three national credit agencies in the U.S., there are no fewer than 19 consumers falling victim to identity theft every minute of the day. What's more, according to the bureau it costs on average $500 and takes about 30 hours to resolve each incident of identity theft.
"Part of the problem," according to Chester Wisniewski, senior security advisor with Sophos, an international cyber security company, "is that sites billed as secure — or sites that consumers assume to be secure — are not secure at all, or at the very least not immune to hackers" — who can easily get beyond anything but the latest and most sophisticated security measures. "There are so many insecure sites," Wisniewski told LawyersandSettlements.com writer Brenda Craig. "You could find thousands of them every day if you went looking for them."
And hackers do just that: Wisniewski relates the story of Drake International, a human resources company based in Toronto which, according to Wisniewski, "became the victim to hackers in 2011 and then again in 2013. The personal records of some 35,000 Drake clients were copied, and then removed from Drake's database. The hackers offered to return the information for a ransom of $50,000."** Drake was being extorted. "The company's data had essentially been kidnapped for ransom," says Wisniewski. "Drake called the RCMP and reported the kidnapping. They didn't hide, they refused to play ball. They also ended up having to pay for credit monitoring for all the people whose data was stolen," Wisniewski told LawyersandSettlement.com's Brenda Craig.
Wisniewski said he is "aware of some data hack situations in which the company paid the ransom to have the data returned," but he declined to divulge names.
"It's coordinated opportunism," Wisniewski continues. "They look for places where people have 'left the door open.' They are looking for the juiciest one. The ones they are looking for are ones they can make money from. When they find unlocked doors, they go back and search the domain names to see which ones have information they can profit from in some way," says Wisniewski.
One law professor and cyber security expert speaking to LawyersandSettlements.com noted that in his view there is little reason to believe that a consumer suffers economic harm when criminals hack into databases. "If it is financial data or credit card data, mostly it is banks or companies that are harmed, not the individual," says Fred Cate, who spoke from his office at the Center for Applied Cybersecurity at the Indiana University.
Wisniewski, however, takes a different view. "I simply don't accept that there are no victims here," Wisniewski continues. "In the U.S., the bank owns the credit card fraud. But in Canada, the UK, Europe, Australia and New Zealand with chip and pin credit cards, the fraud is on the consumer. They are the ones who pay because the assumption is that they gave someone their pin number.
"Identity theft is a perpetual nightmare," Wisniewski concludes. "You can't get a new birthday and [it] is extremely rare that you would be given a new social security number in the US. You never know when it is going to be over."


text:
Cannabis and Cthulhu: Dr. Sanjay Gupta wakes the Old Ones with his marijuana metanoia
Over the last year, I have been working on a new documentary called "Weed." The title "Weed" may sound cavalier, but the content is not. I traveled around the world to interview medical leaders, experts, growers and patients. I spoke candidly to them, asking tough questions. What I found was stunning. Long before I began this project, I had steadily reviewed the scientific literature on medical marijuana from the United States and thought it was fairly unimpressive.
Well, I am here to apologize. I apologize because I didn't look hard enough, until now. I didn't look far enough. I didn't review papers from smaller labs in other countries doing some remarkable research, and I was too dismissive of the loud chorus of legitimate patients whose symptoms improved on cannabis. Instead, I lumped them with the high-visibility malingerers, just looking to get high. I mistakenly believed the Drug Enforcement Agency listed marijuana as a schedule 1 substance because of sound scientific proof. Surely, they must have quality reasoning as to why marijuana is in the category of the most dangerous drugs that have "no accepted medicinal use and a high potential for abuse."
They didn't have the science to support that claim, and I now know that when it comes to marijuana neither of those things are true. It doesn't have a high potential for abuse, and there are very legitimate medical applications. In fact, sometimes marijuana is the only thing that works.
[. . .] I have. . . come to the realization that it is irresponsible not to provide the best care we can as a medical community, care that could involve marijuana. We have been terribly and systematically misled for nearly 70 years in the United States, and I apologize for my own role in that.
— "Dr. Sanjay Gupta: Why I changed my mind on marijuana," CNN, August 9, 2013
Also see Gupta's appearance on a recent CNN program devoted to the question of medicine, marijuana, and the legal restrictions on certain substances:
Did you hear all of that? And did you really listen and consider its implications? Methinks this development could prove to represent an authentic sea change in the marijuana legalization wars. When a person of Gupta's public status and visibility puts himself and his reputation on the line over something like this, the ramifications are immense.
Nor are they limited to the matter of medicine and marijuana as such. Notice that a statement like Gupta's carries implications far exceeding its nominal topic. We in America have been "systematically" lied to by our government, he says. As in, deliberately and strategically. This naturally leads to further questions.
Such as, most obviously: By whom, pray tell? Who exactly has been doing the deceiving? And what for? Which powerful people and interests have been lying to us, and what has motivated them to do so, especially in an area like this, whose impact encompasses not just physical health but mental health, and also — what's most pointedly important — the accessing of states of consciousness outside the "official" norm of the mainstream mindset? Are the reasons for this official (mis)management of the body and psyche economic? Are they political? Are they psychological? Are they some combination of all these and more?
Is there maybe something really substantial and valid to the claim, which goes at least as far back as the 1960s, that our government has, or thinks it has, a vested interest in legislating access to substances that have an impact not just on physical health but on states of consciousness among the general populace? Is there something inherently threatening about marijuana — and, by extension, about other psychedelic, i.e., mind-manifesting, substances — to current systems of political, economic, and other types of power?
The tone I've invested in these questions makes my own suspicions clear. This can of worms is huge. And to draw the point out even further, I think the worms themselves may well be more than just worms. I think they may be a nest of tentacular appendages writhing on the face and around the ravening maw of a great Old One that has been beaming transformative dreams into the collective unconscious of the human race, and that is now beginning to wake from its sleep of aeons to send ripples of seismic-apocalyptic transformation and redemptive catastrophe across the cultural landscape.
Or at least, you know, that's my Lovecraft-inspired suspicion, which I toss off perhaps too loosely, and which is perhaps influenced by Palmer Eldritch's recent and lovely two-part essay on the way the works of Lovecraft and Clark Ashton Smith and Co. anticipated the psychedelic revolution:
- "Towards the Visionary Antipodes of the Human Psyche: Clark Ashton Smith and H.P. Lovecraft Anticipate the Psychedelic Experience"
- "Towards the Visionary Antipodes of the Human Psyche Part 2: H.P. Lovecraft and the Door in the Wall"
(That's from the blog A Few Years in the Absolute Elsewhere, by the way — formerly known as The 2012 Diaries — which has been one of my absolute favorites for five years now, and which I heartily endorse and commend to your attention.)
So what do you think about all this? And if you do, in fact, choose think about it, I urge you to remain cognizant of the fact that your very ability and motivation to consider it at all may well be subject to attempted management, manipulation, misdirection, and sharp limitation by the worldly Powers That Be, which either want you to ignore it entirely or else to think along clearly defined lines.
Posted on August 14, 2013, in Government & Politics, Health & Medicine, Psychology & Consciousness and tagged dr. sanjay gupta, h. p. lovecraft, mariuana, psychedelics. Bookmark the permalink. 5 Comments.
Brilliant, Matt.
Why Drugs Are Illegal – Terence McKenna:
Full circle, ha !
Cannabis use in a Swiss male prison: Qualitative study exploring detainees' and staffs' perspectives
Detainees estimated the current use of cannabis use to be as high as 80%, and staff 50%. Participants showed similar opinions on effects of cannabis use that were described both at individual and institutional levels: analgesic, calming, self-help to go through the prison experience, relieve stress, facilitate sleep, prevent violence, and social pacifier.
Brilliant indeed. I came looking for a little funny business, but this essay is seriously superb. In the immortal words of The Kids In The Hall (probably paraphrased): "The Man doesn't want the weed on the streets because the weed promotes peace."
I'm not a marijuana user nor am I against it but I think all this talk about it in the news in the U.S. recently might be a campaign to litmus test americans on the issue following the revelation that guaranteed Canadians will elect Justin Trudeau and he has been campaigning on legalizing marijuana, taxing and regulating it. When I heard the announcement I strongly suspected that the U.S. would be pressured to likely follow suit. Thank Canada for this I think.
I have a good friend who was an Air Force, let's say, cyber-spy. He was commissioned to research the effects of the drug wars and present his findings to top brass and the White House. He traveled all over, interviewed the relevant people (cartels, military, users, dealers, police, economists, policy makers, etc.), spent tons of time and money, and wrote an "inconvenient" report. His conclusion: The drug war benefits two groups of people – cartels and the military. It has increased the crime rate and drained untold resources, etc. His proposal was some form of legalization. His report was not well received.


text:
Icon bar?
Editor for AutoHotkey written completely in AutoHotkey.
Moderator: maestrith
5 posts • Page 1 of 1
Icon bar?
Just downloaded and installed AHK Studio. Very nice, I think I'll get used to it quickly. Some of the tutorial videos depict an icon bar, which I would like to implement. Possible?
Re: Icon bar?
Right click within your editing area and select 'Split Control' -> 'Above' -> 'Toolbar'. Within the newly created toolbar, right click and select 'Edit Menu' to customize it.
Re: Icon bar?
Here's the right click. No Split Control visible. Wrong version? (3.0.06.01)
- Attachments
- Split.jpg (58.29 KiB) Viewed 3632 times
Re: Icon bar?
Yeah; the screenshot is from SciTE4AutoHotkey, and your question is for AHK Studio.
Re: Icon bar?
Oops! Sorry.
5 posts • Page 1 of 1
Who is online
Users browsing this forum: No registered users and 13 guests


text:
Too many reader emails to do them all justice, so here is a sampling of some of the best ones from the past month.
Email #1
LD writes:
I imagine that hypergamy and neoteny are joined by perversity in the triangle of female darkness. Can you write about the history of mothers paedophiling their own daughters? It's where things are heading now: I see it all around…at what point does slut culture and female sexual darkness manifest as the ultimate taboo for which women always blame men but for which they show stronger tendencies?
The Dark Triad of male psychological traits — narcissism, psychopathy, Machiavellianism — that are especially alluring to women has its equivalent in a female Dark Triad, which would include narcissism (hypergamy), caprice (emotional manipulation), and, like the reader says, perversity (alpha seed vs beta resource internal conflict). Female sexual and romantic innocence is the greatest trick the Cosmic Hamster has ever played on man.
When unleashed by social forces, the female sexual impulse is wilder, more dangerous and more perverse than the male sexual impulse. It is wilder because women have less experience than men controlling their horniness once it is activated. It is more dangerous because the wreckage a cheating whore leaves in her wake is much more extensive than that left behind by a cheating man (think cuckoldry). It is more perverse because women, being ultimately creatures of the body, at once enslaved by and enraptured by the rhythms of their physical sexuality and life-making force, are above no sexual or psychological degradation to a man of sufficient dominance, nor are they above participating in the transference of their sexuality to other women, even their own young daughters. The phenomenon of aging mothers whoring out their little daughters in pedophiliac beauty pageants is testament to the crass perversity that animates the female sexual psyche. Only strong social controls, taboos and shame can keep the dark nature of women in check.
The female Dark Triad is not particularly alluring to men, but the women who possess these traits are very good at manipulating men's weaknesses for maximum resource extraction. A man would be wise to recognize the warning signs and avoid these kinds of women, or give them no more of himself but his detached penetration. Unfortunately, many female Dark Triads are also very pretty, and that makes it tough for inexperienced men, especially betas who aren't used to sleeping with good-looking women, to keep them at a psychological arm's length.
As for Western culture… well, yes. It is getting sluttier, crasser, more perverse, more uninhibited, and more pedophiliac, in spirit if not in action. And, feminists no doubt will be surprised by this, the pedo pushing is mostly done by women. From tot beauty pageants to schoolteachers having orgies with their alpha students, we are getting a glimpse of how woman appears when all constraints on the full expression of her id have been removed, and there is no leadership from an overarching patriarchal authority. Quite a sight to behold.
Email #2
A reader just wonders:
just wondering … im new to the game and once i read that we should make girls think we pick up a lot of chicks…not exactly but we should act as if losing her doesnt matter..
Anyways on to the point…as a part of game…you should be selling yourself to chicks as the guy who gets laid a lot…and what if you use some sort of nickname to pass that kind of feel onto them..
Friends always call me stallone for a reason…and he's a fucking badass of a guy….i was wondering if relying onto that nickname to to be known would be a good idea…or if it would make me look like a kid with lack of personality
Making a girl think you are good with women (preselection) is different than making her think you can live without her (alpha scarcity). You should be instilling both feelings in the women you meet. Nicknames can be useful, but I wouldn't lean on them too much, because a nick can easily cross the line to goofiness. Nicknames shouldn't be try-hard; that is, they shouldn't sound like you're conspicuously trying to puff out your chest. "Smash Master Jam" is right out. So is "Pussy Slayer". Also, it's always better if a girl hears your nickname from your friends rather than from yourself. Third party vouchsafing beats first party self-promotion.
Some experimental nicks you could try on for size: Boss, CEO, Casanova, Death Row, The Way (as in "he has a way with women"), Jacques or Pierre (don't ask me why, but these French names evoke visions of pure romance in a lot of American women), Stone, Pace Car (good nicks are enigmatic and impel the girl to ask how you got it), Massive Furry Ballsack.
I'd also suggest you go around telling girls you only have a first name, and were adopted as an orphan by a hippie family.
Email #3
Reader asks:
I'm a 33 year old guy, completely average in every way and i can't stand the dull uninspired drudgery my life has become, I recently started reading the site and you guys seem to have fun picking up girls so i thought maybe i would give it a try.
I scored a -3 on your test for men so the level i am starting off at is pretty low, I am not fat but not in the best shape either, I'm just under 6ft tall and about a 6 – 6.5 on the attactiveness scale but i'm probably not the best judge of that. My IQ is 150+ and I'm making just over £80,000 a year in a boring job that I am indifferent to.
I've never really had much luck with women, I don't have much patience for the hoops they make you jump through, They don't tend to notice my much anyway and to be perfectly honest i am not the best at socialising. I get easily bored with conversation and find it hard to pretend i am still interested. I don't like smalltalk and i tend to fidget a lot.
I am highly critical of others and have a hard time keeping it to myself, I am often accused of being an arrogant arsehole.
So what can i do to turn my life around, to start enjoying socialising more and to have more success with women. Is there a definitive guide to game that will take me through the whole process or should i just give up and just continue paying hookers?
First, you need to reframe how you see yourself. You're all negative, and there's no need for you to perceive yourself that way. Try this spin instead:
"Things are pretty good for me. I'm tall, decent looking, and make good money. I demand more from women so I tend to get bored easily. Women can sense my high standards and they chase me to win me over. Things have been slow lately, but I expect it to pick up once I focus on getting out and meeting more women than I currently do."
Say the above out loud to yourself. You should be feeling better within seconds. See how easy that was? The reframe is not only a powerful tool for leading women to your bedroom, it's a great self-motivational technique. Inner game is not just mumbo-jumbo; you really can achieve more with the right mindset. Women will intuitively sense your positivity and they will gravitate to you, with little effort on your part.
As for guides, read the archives here. There are a slew of pickup books and website forums that you can read, too many to list here. Start with the Mystery Method to get grounded in the science and the art of seduction. STOP going to hookers. The act of paying for sex is feeding your negativity. You're better off fapping, if you really need immediate sexual relief. The best alternative is to let your balls fill up with juice so that you have the inspiration to get out of the house and interact with women. Finally, I suggest hitting up a social event organized by a corporate entity, something like a cooking class. You have been out of the game for a while, and clubs might intimidate you at first. Ease into the scene by going to low-key, lower energy venues, and working your way up to venues with more energy (and more hot women).
Email #4
"Nate" writes:
Hey, thought I would share with you something about the mouth, and perhaps how it relates to women's pleasure when giving 'deep throat' blow jobs.
Interestingly, babies are very good at this, and often try to continue doing this for a very specific reason.
Simply put your tongue against the roof of your mouth, and swallow. This will pull on your uvula in a very specific way. If you continue to do this, you will soon feel a very specific sexual pleasure in your pants. It is my thought that having a penis rammed up against the uvula gives a similar effect for the recipient of the cock.
News you can use, folks.
PS Tried it, achieved nothing but cotton mouth. However, I do think women get pleasure from throat jamming, but the reason has more to do with the good feelings that they experience by being orally degraded.
Email #5
The D.R.G. writes:
Mine is a niche market, created in part by following CH-principles…
Can the esteemed custodians of the Chateau and its commentariat offer any advice for dealing with (read: managing) pregnant girlfriends? Specifically, mid-20s Eastern European pregnant girlfriends who have never set foot in the U.S. (thank God) and whose beauty falls on the far right side of the bell curve.
The solid game, aloofness and jealousy-inspiring deeds that got me here are now described as "insensitive." Declarations of my caring intentions and loyalty are being kindly requested on a daily basis.
It appears that 99% of what is covered in this venerable blog focuses on initial attraction and LTR game, but what of pregnant, hyperactive hormone, HB9, young EE game? The goal is to transition from cad to dad (a mighty challenge in and of itself!) and maintain the relationship without straying into minefield of betatude and loosing the alpha edge that got me to where I am today.
Details for consideration:
She is 7 years my junior, university-educated, a professional model (though not or much longer), New Age-ish, of middle-class origins, and very traditional regarding gender roles.
I am American, university-educated, work abroad nine months out of the year (willing to change but will take a huge pay cut if I do), currently make five times as much as her, and am also very traditional regarding gender roles.
I'm not fully informed on the science involved in this specific circumstance, but I'd guess your pregnant girlfriend was experiencing a flush of the "beta male reassessment" hormone oxytocin. This hormone is responsible for coaxing women to appreciate the particular benefits that a stable, reliable, provider beta male brings to the table. When a baby is about to land in her lap, the last thing she can afford is abandonment by a sexy cad who suddenly finds her unfuckable.
While this blog focuses on cad game because it is the type of game that most men don't understand and fail to execute properly, "dad" game, aka "vulnerability game", is just as vital to impressing yourself on women that you are a seductive, well-rounded, high quality man. After all, women only ovulate one week out of the month. The rest of the time, they are open to the (limited) charms of the emotionally rich man who can connect with them on a level beyond intriguing aloofness.
So I'm not surprised your girlfriend is with insecurity as much as she is with child. You probably won her with alpha charm, and now she needs some more signs of beta attachment. She is, on a very primal level, worried that you might leave her at the critical moment. So give her those signs. Backrubs, occasional compliments (pregnant women love reassurances that they are still sexy, even though most men are disgusted by the thought of fucking a woman with a giant bloated belly full of baby), and timely comparisons to other women that favor her are all perfectly acceptable "beta male" game tactics that will put her mind at ease and grow the love. If you are a natural alpha male, this kind of stuff might come to you with some difficulty, so you will have to make a concentrated, deliberate effort to soften your jagged edges and play the doting herb once in a while.
Just don't go overboard. A little bit of beta goes a LOOOOOOONG way. And don't give her the declarations of commitment when she expects them, like immediately after she has mewled for attention. Chicks HATE HATE HATE when their demands are promptly met. It's one of the universe's great paradoxes. Better to shrug her off teasingly after she has a spell of neediness, and accost her later with a warm hug and sweet nothing when she doesn't expect it.


text:
Look of the Day
Snapped at the St. Regis in New York City, the British model and DJ wore a leopard-print jacket and a tote bag specially created for the iconic hotel, by Jason Wu.
British socialite Alexa Chung was photographed in the lobby of the St Regis hotel in New York City sporting a lace mini skirt and a white blouse which she pared with an on-trend leopard-print jacket. She accessorized her look with a bicolor Jason Wu Grand Tourista tote, specially created by the designer for the legendary Big Apple hotel, and swapped her staple flats for an eye-catching pair of embellished booties. Alexa Chung opted for a natural beauty look, leaving her wavy hair loose.
Read also on Vogue.fr in English:
Lou Doillon goes tomboy
Kate Moss in Marc Jacobs
Liv Tyler in Proenza Schouler


text:
Season 2 has begun! My intention is to write an "Insta-Reaction" post for each episode right after viewing, to share some initial thoughts, questions, reactions — you name it.
I may be talking about events from this episode, other episodes, and/or the book series… so if you'd rather not know, now's your chance to walk away!
Outlander, episode 207: "Faith"
The official synopsis (via Starz):
Claire is brought to L'Hopital des Anges where doctors try to save her life and that of her unborn baby. King Louis asks Claire to judge two men accused of practicing the dark arts — one an enemy, one a friend.
My take:
Major plot points:
- Claire's baby is stillborn — a girl, whom Mother Hildegarde baptizes with the name Faith.
- Jamie is being held in the Bastille for dueling, a crime which could leave him locked up indefinitely.
- Claire's only option for saving Jamie is to appeal directly to the King, which comes with its own cost.
- Claire learns that the reason that Jamie broke his promise and went ahead with the duel is because Randall attacked and raped Fergus at the brothel.
- Jamie and Claire visit Faith's grave before leaving France to return to Scotland.
There's a little fake-out at the beginning of the episode, when we see Claire with a red-haired girl in Boston in 1954. So non-book readers maybe breathed a sigh of relief that Jamie and Claire's baby was healthy after all and all that blood last time was just a scare?
Not so fast.
It's a heartbreaker, plain and simple.
Claire's baby daughter is born dead, and the scenes of Claire discovering the fate of her baby are simply wrenching to watch. The raw pain on her face is intense, and the entire episode focuses on Claire's suffering.
The scenes at Versailles are painful to watch for other reasons. It's all so very cut and dried and business-like. First, Claire must identify the black arts practitioner for the King, which ends with the Comte St. Germain's death by poison, thanks to Master Raymond's sleight of hand. Then there's the matter of Claire's payment to the King in exchange for Jamie's freedom — the most transactional sexual encounter we've ever seen on this show. It's awful in its matter-of-factness.
And then there's the Fergus scene. I didn't think the show would go there — I assume BJR's rape of Fergus would be implied and left off-screen. Wrong. While no body parts are shown, it's quite clear what's going on, and it's gut-churning. I'm shocked, in a way, that the little actor playing Fergus was put into those scenes, and can't imagine how Tobias Menzies managed to carry out BJR's part either. Just horrifying.
I'm keeping my insta-reaction brief. What can I say about such an upsetting and tragic episode? Claire suffers the torments of hell in losing her baby, and the scene of her rocking and singing to the dead infant is both beautiful and horrible.
Claire and Jamie's reunion was painful as well. The hurt, the fear, the pain between them — it's so brutal and brittle and emotionally raw. I'm glad that they joined hands at Faith's grave at the end. Despite their loss and deep pain, despite the betrayals and tragedies, they'll remain together and find a way forward.
Insta-reaction wrap-up:
This is the end of the Paris portion of the season, and I'm glad! It's been well-done, and full of gorgeous eye candy, but the heart of Outlander is in Scotland, and I'm glad they're going back.
And furthermore…
The only momentary break in the tension for me during this episode was when we see Jamie's face when he returns home from the Bastille. I get it, he was there for… weeks? months? Long enough to grow a scraggly, bushy beard that looks like a stick-on out of a Halloween costume kit. It was totally distracting — it did not look real at all, and kind of made me laugh before getting re-absorbed by the interactions on the screen.
But other than that — a powerful, memorable, painful episode.


text:
Tuesday, July 24, 2007
The Non-Volunteer State
Though not debating the blog entry, this Militant, who was raised with a volunteer ethic, and the majority of his circle of friends as well as operatives, have been known to volunteer for various causes or activities.
The Militant will give the real reason.
In short, people come to California, or most specifically Los Angeles, to take, not to give. This is a place where people come "out here" to "reinvent themselves" (run away from their past) and "make it big" or "be a star" (eyes rolling). Most of them have no interest in improving the quality of life "out here" (that seemingly innocuous phrase immediately communicates disownership), since it's not their hometown anyway?
The Militant will throw out the big analogy here. Los Angeles is like a tree. No, not a palm tree, but an orange tree, if you will. People have come from all over the country and all over the world to this tree to pick and savor the sweet fruit it bears, for its fruit is unlike that of any other tree. But after picking its fruit, the people soon discovered the fruit had become bitter, malformed, and the tree was no longer healthy. Seeing this, they left the tree alone and went for another tree to pick at its fruit.
What the people failed to realize was that the tree had started to deteriorate -- because no one bothered to care for it. No one watered it, no one helped make the soil fertile, no one helped clear the tree of pests and parasites.
What you get out of the tree is what you put into it. What you get out of Los Angeles is what you give to it. Ask not what your city can do for you, oh you know the rest.
The Militant knows many out there are laughing and will continue to whine and complain, only to move to where life will be more convenient for them. Good riddance, I say. Revitalization begins from within. In the meantime, I'll be training some more militants for our revolution...
8 comments:
Yes, please give back to Los Angeles. It deserves better than 22%. Viva la revolucion!!!
- July 24, 2007 at 9:46 AM
- Miles said...
I think that's a pretty negative view of people who move here. I'll you have to do is look at a fellow blogger -- the Atwater Newbie -- to see that people can move here and contribute to the community.
That said, I think one of the reasons people may give back less in L.A. is because they're more isolated. They're isolated in their cars and in their homes. Come on, people, get out of your cars and walk in your neighborhoods. Get to know the neighbors. Feel connected.
Next thing you know, people will begin contributing.
- July 24, 2007 at 10:25 AM
- Militant Angeleno said...
"look at a fellow blogger -- the Atwater Newbie -- to see that people can move here and contribute to the community"
And that blogger is part of that 22%. The other 78%? Come here with preconceived notions fed to them by the East-Coast Controlled Mainstream media (all of your major media companies are based in NYC - look into it! They contol our image at their will!) -- that people are "fake," "superficial" and "unreliable," so they prefer isolation based on that, never knowing that the fake, superficial and unreliable person might very well be looking at them in the mirror.
The Militant exists because in nearly every city, the locals show the way and the rest follow. Unfortunately in Los Angeles, because of race, economics and East Coast Colonialism, the locals are stifled and silenced. But not this Militant!
The Militant speaks the truth, and the truth is almost always uncomfortable to those who hear it.
- July 24, 2007 at 11:03 AM
- Militant Angeleno said...
valleypinoy: viva and salamat!
- July 24, 2007 at 11:46 AM
- Miles said...
What about the natives? Do they contribute more? Where's the evidence? It doesn't make sense to single out the people who move here.
- July 24, 2007 at 12:33 PM
- Militant Angeleno said...
Miles: As I mentioned, the natives have been silenced. The mainstream media makes it a point not to give us a voice, to render us invisible, therefore, despite anything we have done, you'd never hear it. Your ignorance of the natives is not your fault, as you have been led to believe they either do not exist or are not contributing. But this is why the Militant exists.
Take it from this native, who contributes in more ways than you could ever imagine.
- July 24, 2007 at 12:44 PM
- LA Bus Girl said...
Well, they do the same thing to the young, who according to stats and reports, volunteer less than older folk.
Done volunteer work and community service all my life--and I can't recall ever being asked about it or taking some kind of survey.
Stats can be made to say anything, really. What kind of sample group are they asking?
- July 24, 2007 at 1:24 PM
- Militant Angeleno said...
Very good point, LABG!
- July 24, 2007 at 2:22 PM


text:
Wiki Spaces
Get Help from Others
Q&A: Ask OpenMRS
Discussion: OpenMRS Talk
Real-Time: IRC Chat | Slack
Topic: Reporting Sprint
Product Owner: Mike Seaton
Developer Lead: Rafal Korytkowski
Known Developers Assigned (amount of effort in hrs dedicated to this work if possible):
Date: 1/9 to 1/23
How To Participate
Add your name to the list on this wiki page (with any comments about your availability). If you want to join after the sprint has started just join the IRC channel mentioned above and say hello.
The general process:
There are 3 primary goals we would like to accomplish during this sprint:
There is also a significant backlog of tickets, of all levels of complexity, suitable for new and experience developers to contribute.
Must Have:
Should Have:
Could Have:
Won't Have:
Kickoff meeting Date: 2012/01/09 after the scrum meeting
(Meeting setup with known developers after the final design meeting, but prior to the start date):
Kickoff Meeting Checklist
These are a combination of parent tickets with child tickets underneath to break up the work or tickets needed for completion of the work. These tickets should be made in as much detail as possible going into the design calls through use of the mailgroups and small group design meetings. Larger design calls will be used to answer questions these groups cannot or for the community to resolve.
All tickets should have in their description a DOD (Definition of Done) or what it should have accomplished
Tickets involved: https://tickets.openmrs.org/secure/RapidBoard.jspa?rapidView=15
There should be multiple design meetings. The first starts off with a small group working with the leader to determine the high level scope of the project and then to break down into smaller pieces to eventually place as tickets. Once those meetings havehappened use of the community design meeting time should be used to refine the tickets and if possible assign them to who will be doing the work.
Risks (these should be resolved prior to or during the design meetings):
Enter anything that is still questionable or worrisome that has not been answered: (open issues, potential concerns) Once a decision is made make sure that a summarized answer is included.
Example: Q. How will we handle issues with conflicting userID's? A. All ID's will have an added identifier that is unique.
Effort Accounted For: (At the end of the design call all tickets should have an estimated effort and that total should be balanced against the known available effort of the developers assigned) (Yes/No)
If not in balance in favor of success why and the action plan for remaining items
via IRC on the #openmrs channel on freenode.
Use this channel for ALL debugging and random questions having to do with the sprint. Please avoid direct messaging to personal contacts. If you have a question, someone else most likely does too, and our geographically distributed community benefitsfrom public group discussion.
Add notes, comments, concerns, that occurred during the sprint that should be noted to help in the retrospective.
Did we complete tickets to a 100% DOD? (Yes/No) if no, have those tickets been assessed and placed for future work if needed?
What did we do well?
What could we do better?
What should we not do again?


text:
Review by Judith Robinson
The Charity That Began At Home at the Shaw Festival is a rollicking satire on upper-class philanthropy. It makes fun of the reasons why the rich are kind to the poor and emphasizes the profound differences between the social classes in a manner only the British can do. But this is not John Clease. Although Fawlty Towers makes me roll in the aisles, St John Hankin's play from 1906, doesn't. Photo courtesy of David Cooper The opening scenes are a snore, and while it does wake up from there, it never quite hits the right tone. It's not the fault of the actors. All the lines are delivered on cue and Christopher Newton's directing, as always, is superb. There's something not quite right about the play. It feels as if the audience is sitting through a philosophical debate at Oxford – not participating in a drama. This play has no punch – emotional or dramatic.
This is the theatre of ideas and the ideas fail to stimulate. They are neither funny nor enlightening. Hankin makes the same points Oscar Wilde made a few years previously—upper class British women are too moral and often hypocritical—and the men are only interested in pleasure and amusement. But Wilde had wit, clever plotting and stimulating and evolving characters. Not much happens in this script. The story takes place in one living room—and the whole drama seems like one unending conversation. Very little changes occur from beginning to end. The basic premise, of an Edwardian lady inviting house guests she doesn't like out to her estate in order to be charitable, doesn't quite work. The audience doesn't like them either….so why bother watching?
There were a few moments that managed to rise above the tedium. Laurie Paton, as Mrs. Eversleigh, never failed to bring the stage to life, whenever she was present, (all too infrequently) with bold emotional honesty and intensity. Sherry Flett's Miss Triggs was priggish enough to bring a smile to the face. And the young lovers – Margery Denison, played by Julia Course, and Hugh Verreker, played by Martin Happer, had a couple of scenes that roused the spirit.
Also William Schmuk's set design was stunning—contrasting subtle beige undertones with touches of chartreuse in the curtains and furnishings, underlying the touches of passion lurking underneath the polite bantering. Louise Guinand's creative lighting with candles, and flickering overhead electricity, effectively displayed the eccentricity of the guests.
This play disappeared from the stage from 1917 until 2002. While Hankin's earlier plays, Return of the Prodigal (produced by the Shaw in 2001-2002) and The Cassilis Engagement (produced in 2007) richly deserved to be resurrected, this one did not.
The Charity That Began at Home is playing at the Court House Theatre until Oct. 11th.


text:
The topic of website rankings is probably the single most written about subject for online marketers. With so much content readily available online discussing tips on how to rank your site better, I still find 9 out 10 small businesses are left wondering why their competitors are outranking them in search. Almost always it is because they are ignoring the 5 most fundamental elements of getting their sites to rank.
If your a small business or launching a brand new site you will want to pay attention to these most commonly overlooked elements that contribute to your competitors to outranking you.
#1) You Aren't Publishing New Content on a Regular Basis
You can't expect Google to boost your site's ranking unless you are publishing fresh, relevant content on a regular basis. Google has said that high-quality content is the single most important element on a website, attesting to its positive impact. By publishing new content, you'll have more pages in Google's index, which means more visitors and higher search rankings.
#2) Your Website Isn't Mobile-Friendly
Mobile-friendly is the word of the year – well, it should be at least. As smartphones and cell service becomes faster, more and more people are using their mobile devices to access the Internet as opposed to bulky desktop computers. Webmasters should take advantage of this trend by offering a fully functional experience for mobile users. If mobile users encounter broken elements on your site, they will likely leave and take their business elsewhere, which could hurt your rankings in the process.
#3) You Aren't Performing Basic on-Page SEO
There are two primary components of search engine optimization: on-page and off-page. Unfortunately, many webmasters overlook basic on-page SEO, assuming it yields little-to-no value. But things like proper Title usage, Meta description, interlinking, etc. will go a long ways in encouraging higher search rankings.
For more detailed examples for creating solid on-page optimization check out the Source of the infographic shown above:On-Page SEO: Anatomy of a Perfectly Optimized Page – Infographic
#4) You Aren't Building Links
Equally if not more important as on-page SEO is off-page SEO, such as link building. Google, Bing, Yahoo and even the smaller second-tiered search engines all use backlinks to determine where and how websites should rank. If you don't have enough backlinks – or if your backlinks are low-quality/spammy – you won't be able to achieve a top search ranking. It's just that simple.
#5) Your Website Has Broken Elements
When was the last time that you performed a usability test on your website? Even if the homepage loads and functions just fine, other pages may have broken elements. Take a couple minutes (or longer) to go through your website and test the buttons, links and other elements to ensure they are functioning as intended. Something as otherwise harmless as a broken button could prevent users from going through the checkout process, and when this happens, Google may lower your site's ranking as a result.
The more you read about seo the more complicated and mysterious it can become. Keep it simple with these 5 basic guidelines and you'll be on your way to building your audience and rankings.


text:
Belarusian finalist have been announced for the December 7, 2012 final. Last year's first winner Alena Lanskaya made the cut as well as other national final veterans Uzari and Nuteki Band. These are the singers and these are the songs. Who wins and who goes to Malmö 2013 and with which song, remains to be seen :-). Last year Alena was left home and Litesound, the runner ups were sent to Baku instead. Not that I minded, it was much better choice!
Max Lawrence - I love your charming eyes
Alena Lanskaya – Rhythm in love
Alexei Gross – One way love
Daria – Catch me again
Nuteki Band – Save me
Satsura – Get out of my way
Uzari – Secret
Яnkey – Letter to mother
Vitaly Voronko – I wonder how you
Beaver Band – Incredible girl


text:
Elizabeth Meyers, 88
Elizabeth Meyers, 88, of rural Green Ridge, Missouri, died Thursday morning, June 19, 2014, at the Lincoln Community Care Center in Lincoln, Mo.
She was born August 30, 1925, in Kansas City, Mo., the daughter of John Russell Way and Bessie Fairy (Friedly) Way. On February 17, 1944, at the Olathe Naval Base in Kansas City, Kansas, she married Wallace Windle Meyers, and he preceded her in death on March 20, 2007.
Mrs. Meyers was a homemaker and farm wife. She worked at Vendo Company in Kansas City, Mo., the Windsor International Shoe Factory for 10 years, and at Interstate Studios, in Sedalia, Mo., for 14 years before her retirement. Elizabeth was a member of the Windsor United Methodist Church. She attended, with her husband Wallace, and was active in the Antioch Baptist Church, Manila, where she taught Sunday School and Vacation Bible School for many years.
Survivors include a son, John Wallace "Johnny" Meyers and his wife Sharon, Green Ridge, Mo.; 2 daughters, Joyce Elaine Elliott and her husband, Charles, Ionia, Mo.; Janice Sue Mahin and her husband Thomas, LaMonte, Mo.; 7 grandchildren; and 12 great-grandchildren.
Burial will be in the Antioch Cemetery, Manila, 3:30 p.m., Saturday, June 21, 2014 followed by a Celebration of Life service at 4:00 p.m., at the Antioch Baptist Church, Manila, with Rev. Mark Abney officiating. Friends may call Friday from 5:00 to 8:00 p.m., at the Hadley Funeral Home, Windsor. The family suggests contributions to the Antioch Cemetery Fund or to the donor's choice and these contributions may be left in care of the funeral home. Condolences may be left online at www.hadleyfuneralhome.com


text:
There's always a worry in finally being able to watch something you've been waiting ages to see.
Regardless of whether it be a film or a TV series, there's a fear that it won't meet expectations that have had plenty of time to grow.
So when I discovered the box set of Boardwalk Empire was on Now TV at long last, you can imagine my apprehension.
Well, I am over the moon to be able to say that it met every one of my expectations. I was so contented with the Prohibition-era set crime saga that I was kind of gutted when it came to an end. You know something? I can say I've watched plenty of good TV shows with multiple seasons, but I don't remember any of them being as consistently good as this one. From the very first episode right up until the very last, it was rock solid. I would struggle to say the same about any show I've watched over the last few years.
One of the main things owing to the show's consistent appeal was the eclectic mix of characters that were all brilliant in their own ways. And of course, where you find fantastic characters, you also find even greater performances. There's too many for me to cover them all in this review of the full series, but I'll cover some of the most honourable mentions.
Steve Buscemi is the ideal person to play some like Nucky Thompson. He's played some right greaseballs during his career, and I think his turn as Nucky might be a beautiful culmination of them all. Buscemi probably isn't the first man who comes to mind when trying to create a notorious gangster, but he absolutely owned the role and it's hard to think that there would ever been a point where anyone else was in contention.
A truly star-studded cast stood alongside Buscemi here. Kelly MacDonald played Nucky's wife Margaret. She underwent quite the transformation over the five seasons. Michael Kenneth Williams, a favourite of mine from The Wire, played businessman Chalky White and was as charismatic as ever. However, if I was to nail down any of the main performances for the sake of this review, I'd have to cover those put in by Stephen Graham and Michael Shannon.
Graham played the infamous Al Capone as he rose through the ranks to become a made guy. It was a very interesting performance, and certainly an entertaining one too. His Capone was a scrappy little terrier of a man, and he had the power to completely change the dynamics of a scene in seconds.
It is Michael Shannon's performance that will stick in my mind for the longest though. That man can fucking act. Shannon was on another level entirely as Prohibition agent Nelson Van Alden. He was exciting watch, and every time I thought he'd peaked he just smashed through the glass ceiling. Every. Single. Time.
Storylines across the five seasons were fantastic, each one throwing up surprises that kept everything interesting. The writing constantly introduced us to new characters who were determined to topple Nucky's empire one way or another. If I had to isolate one season though, I would have to go with season 3. The balance struck between all the different elements of the show was just a tiny bit more perfect on this occasion than it had been on all the others. That being said, all the others knocked it out of the park – even season 5 where I must admit I started out sceptical due to the massive amount of change that had clearly taken place between it and the one before it. I kept the faith though and was rewarded for doing so, is it went of to be one of the greatest final seasons and final episodes I've seen.
Written aspects aside, a 1920s drama wouldn't be the same without all the costumes and the music – two things that define a period I think. The show always looked the part, and I think the attention to detail that the costume department possessed really shone through. There was never any disputing when in history this was all taking place because of it.
I really, really enjoyed Boardwalk Empire. There was nothing that I didn't like about it if I'm being honest. The great mix of brilliantly well-written characters and the ways their stories intertwined, plus the flair of the roaring 1920s made for a barrage of viewing that made me feel like my life was missing something when it was over. For a history nut like myself, this was a real treat, but trust me when I say an interest in the past is not essential to fully engage with this one. An appreciation for good TV will suffice well enough.


text:
XE Currency BlogTopics7137 Posts7182
The Dollar has remained buoyant, printing fresh highs against some currencies, still benefitting from the strong U.S. January jobs report and other perky releases. EUR-USD carved out a six-day low at 1.1411, and Cable printed a 13-day low at 1.3002, aided lower by a spell of Sterling selling following a miss in the UK's January services PMI report, which at 50.1 showed the dominant UK sector to be in virtual stagnation. Eurozone data were net positive, though this had little impact on the Euro. The Eurozone composite PMI was unexpectedly revised higher as was the services PMI and while December retail sales disappointed, the quarterly rate actually showed a marked improvement in Q4 last year. The Australian Dollar rallied after the RBA refrained from aping the Fed's dovish turn following its policy meeting today, where it left the cash rate at the record low 1.50%, as widely anticipated. AUD-USD had been under pressure ahead of the RBA's announcement, making a one-week low at 0.7194, which followed weaker than expected retail sales data out of Australia. But widespread market expectations for a dovish shift -- hinged on the view that the central bank would want to offset the Fed's move given the 3%-odd year-to-date rally the Aussie Dollar vs the U.S. Dollar, and given the weakening housing market -- failed to materialise. The RBA instead clung to the view that its policy targets are being "gradually" achieved, and also sounded upbeat on the "strong" labour market. AUD-USD rallied by over a net 0.5% in making a high of 0.7264. Elsewhere, USD-JPY held little more than a 25 pip range, printing an intraday high at 110.04 before ebbing back under 110.0, leaving yesterday's five-week high at 110.16 unchallenged. Global equity markets and oil prices remained buoyant.
EUR-USD has drifted to the lower 1.1400s, putting in some extra distance from the three-week high seen last week at 1.1514. Recent daily lows in the 1.1390 to 1.1406 range form a support zone. The latest phase of EUR-USD's ebb has in part been driven by broader Euro declines. Brexit uncertainty, and PMI evidence this week that it is having a material impact on economic activity, has been weighing. In EUR-USD's case, this juxtaposes a recent run of strong data (including employment, ISM and construction reports, among other items). We expect EUR-USD to see further downside. Resistance at 1.1430-32, and support at 1.1390-95.
USD-JPY has posted a narrow range so far today, holding little more than a 25 pip range, printing an intraday high at 110.04 before ebbing back under 110.0, leaving yesterday's five-week high at 110.16 unchallenged. Global equity markets have remained buoyant, though markets in China, Taiwan, South Korea, Singapore and Indonesia have all been closed for the Lunar New Year. Japan's Nikkei hit a seven-week high before closing with a fractional 0.2% loss. Australia's ASX index closed with a 2% gain. The MSCI World Index has scaled to a two-month high having gained 13% from the near two-year nadir that was seen in late December. Oil prices are up over 20% year-to-date. The risk-on backdrop has seen the Yen trade lower against most other currencies, reflecting an unwinding in the currency's safe haven premium.
Sterling came under pressure in the wake of the UK services PMI miss, which has pushed Her Majesty's currency to 13-day lows versus the Dollar and into two-day low territory against both the Euro and Yen. Cable printed a low at 1.3002. The UK's January services PMI dove to 50.1, down from 51.2 in December and indicating near stagnation in the UK's big service sector. The outcome is the weakest since July 2016 and the second weakest since December 2012. New orders contracted for the first time in two-and-a-half years, and employment fell for the first time since December 2012. Respondents overwhelming linked the slowdown in business activity to heighted Brexit-related political uncertainty. The composite PMI reading fell to 50.3, showing a significant deceleration in economic activity. The data also flag risk of there being negative growth in the UK over the coming months. On the Brexit front, the government's newly created Alternative Arrangements Working Group is meeting for a second day to brainstorm an alternative solution to the Irish backstop, but this looks like a forlorn effort with the EU's chief negotiator, Barnier, has restated that the withdrawal agreement "cannot be reopened." We retain a near-term bearish view of the pound, though see scope for a potentially strong rally should a no-deal Brexit be concretely ruled out (which we expect, although it may be a while yet time in coming).
EUR-CHF has settled near the 1.1400 level, holding below last week's 11-week high at 1.1429. The cross has been going through phase of relatively high volatility, which has produced several bouts of pronounced underperformance in the Swiss franc, often accompanied by talk/suspicions of SNB intervention. SNB Chairman Jordan said recently that "current monetary policy is the right one and we will continue to with it for some time." He said that for 2019 the biggest concerns are "political mistakes," pointing to the U.S.-China trade war and "Brexit and the European situation." Jordan also expressed concern about further safe-haven driven franc appreciation, "especially" in a no-deal Brexit scenario. SNB vice president, Zurbruegg, also said last month that the franc "remains highly valued" and the situation on foreign currency markets is "still fragile" and that the SNB's two pillar strategy of negative interest rates and ad-hoc currency interventions, or threat thereof, "remains appropriate."
USD-CAD has lodged to a consolidation of recent losses in the lower 1.3100s. The pair printed a three-month low at 1.3068 on Friday. The Canadian Dollar has gained nearly 4% versus its U.S. counterpart on the year-to-date, benefitting from recent strong gains in oil prices, with crude prices having rallied over 20% on the year so far. This is a boon to Canada's terms of trade. USD-CAD has resistance at 1.3148-50, and support at 1.3065-67.


text:
Can't remember what you signed up for? Print your registration form & personal schedule.
Follow these easy steps!
Follow this link and choose Modify Registration
Enter in the email address you registered with and the reference number you received.
NOTE– If you've misplaced the number don't panic, you can request it be resent to you via email
If you aren't brought directly to your Registration record, scroll down to the bottom of each page and click continue.
Click Print record to get a copy of your chosen activities!


text:
Does composting smell?
Compost piles only emit odor when the process is improperly managed. Bad odor usually indicates that the compost pile is not getting enough oxygen. Microorganisms that thrive in environments with no oxygen (anaerobic) tend to generate bad odors, while those that exist in oxygen rich environments (aerobic) do not. A properly run composting operation that turns its compost piles regularly will consistently maintain high levels of oxygen throughout the compost pile, thus eliminating any potential odor issues.
How do you keep compost piles aerobic and free from any odor issues?
Compost piles will stay aerobic by turning them regularly with a high-quality compost turner. Additionally, regular turning will also accelerate decomposition and transform the raw materials into compost sooner. Many less sophisticated composting operations simply let compost sit in an untouched pile.
A compost turner is a very important piece of equipment as it ensures that the composting process stays aerobic. The equipment drum design turns the materials outside in and inside out. This completely blends the composting materials and has the maximum aeration and CO2 release. We will be turning the compost piles daily for the first three to five days and then about twice a week until it is cured.
What does compost look like?
Compost closely resembles soil and is dark, crumbly and odor-free.
Is all compost the same?
No. Compost can come from many different sources; and any of these sources, if properly managed, can end up as a beneficial soil amendment. High quality, predictable compost can be achieved through a disciplined recipe (properly proportioning the materials composted). We are conducting on-site testing and monitoring as well as teaming with certified research laboratories to perform scientific tests as to the quality and consistency of our finished compost.