This past summer, I delivered a couple of presentations at a meeting of a regional Db2 users group in the USA. During the lunch break, I shared a table with a member of the Db2 for z/OS support team at a large financial institution. He told me an interesting story. At his site, the Db2 for z/OS team had decided that universal partition-by-range (PBR) would be a better table space type for a large table currently housed in a partition-by-growth table space (PBG). To prove out this assessment, the team created a copy of the table of interest in a PBR table space, and ran some batch jobs that targeted the two variants of the table - the same jobs (some that changed data, others that only read data), accessing data that was identical in a logical sense (i.e., same data records in the tables in the two different table spaces). The performance characteristics of the PBG-accessing and the PBR-accessing jobs were compared.
The findings? The PBG-accessing jobs showed consistently better elapsed and CPU times versus the PBR-accessing jobs. That was not a result I would have expected. I've blogged before about reasons for favoring PBR over PBG for large Db2 tables, and some of those reasons are performance-related. Would I have been surprised by comparative results showing roughly equivalent performance for PBG-accessing and PBR-accessing jobs? Maybe not. But better performance for the PBG-accessing jobs? That had me scratching my head.
I asked the Db2 person at the user group meeting to send me Db2 performance monitor accounting "long" reports capturing activity for the PBR-accessing and PBG-accessing jobs, and he did that not long after getting back to his workplace. Analysis was focused on the package-level accounting data for a particular package that accessed only the table with the PBR and PBG variants (other packages associated with the batch jobs used for comparison accessed the PBR-and-PBG-variant table and several other related tables as well). Sure enough, for the "this table only" package the CPU time was about 6% higher for the PBR-housed table versus the PBG-housed table. Not a huge difference, but statistically significant and, as previously mentioned, unexpectedly favoring the PBG table space.
Was the SEGSIZE specification the same for both table spaces (a larger SEGSIZE value can result in better CPU-efficiency for large-scale page scans)? Yes, same SEGSIZE for both table spaces.
Was the PBR table space in fact universal, as opposed to being a non-universal table-controlled partitioned table space (I wanted to make sure that we were comparing universal to universal)? Yes, the PBR table space was indeed of the universal variety.
Were the PBG-housed and PBR-housed tables clustered by the same key (clustering affects locality of reference for set-level query and update and delete operations)? Yes, both variants of the table had the same clustering key.
Were there indexes defined on the same keys of both tables (obviously, indexes have a lot to do with query access paths, and they affect the CPU cost of insert and delete and some update operations)? For both the PBG-housed and the PBR-housed table, there was only one index, and it was defined on the same key.
Were the PCTFREE and FREEPAGE specifications the same for the one index on the two table variants (a significant difference here could affect index GETPAGE counts)? Yes, for the one index defined on the same key of both table variants, the PCTFREE and FREEPAGE values were identical.
Was the one index on the PBR-housed table a partitioned index or a non-partitioned index (NPI)? It was a partitioned index, and by the way the PBR table space had 318 partitions (me, on getting that piece of information: "Hmmmm").
OK, so what prompted my "Hmmmm" on learning the number of the PBR table space's partitions? That number got me thinking, "318 is a pretty substantial number of data sets. Depending on the number of data sets associated with the PBG table space, that could be an important differentiating factor between the two." Indeed, it turned out that the PBG table space had far fewer data sets versus its PBR cousin. How could that influence CPU time for an application process? In this case, a clue came from a number in the aforementioned Db2 monitor accounting reports: the commit count for the batch process that accessed the table of interest: 204,004 over the 4-hour, 50-minute reporting interval (a little over 700 per minute). What does that have to do with the job's CPU time? Well, when the RELEASE specification for a package is COMMIT (the default), any and all "parent" locks acquired in executing the package will be released every time the application process driving the package's execution issues a commit (the package itself is also released from the application process's thread at each commit). We tend to think of "parent" locks as being table space-level locks, but in fact when a table space is partitioned the parent locks are at the partition level. If the application process's SQL statements are such that a large number of partitions are accessed in each unit of work, that means a lot of partition-level locks are acquired within each unit of work and released at commit time. That parent lock acquisition and release cost can be yet a bit higher in a data sharing environment (and such was the case in the situation I'm describing), because a significant percentage of global locks tend to be of the parent type.
I relayed to the Db2 support person my thinking about the impact that the number of PBR versus PBG partitions might have on the application process's CPU time. He got together with the larger Db2 team at his site, and they decided to repartition the PBR table space in a way that dropped the number of partitions from 318 to 58, and voila - the application process's CPU time dropped to a level that was several percentage points below that seen for the PBG table space. Success!
The bottom-line message here is NOT that you should always go for fewer rather than more partitions for a partitioned table space; rather, it is that the number of a table space's partitions can be a factor that affects CPU efficiency for some applications. A type of application for which this can matter is one that a) uses RELEASE(COMMIT) packages, b) is characterized by many units of work in the life of a thread, and c) accesses a large percentage of a table space's partitions in a typical unit of work. For such an application, CPU efficiency could potentially be improved by going with a smaller rather than a larger number of partitions for the target table space. When significant partition reduction is not an option for a table space, CPU time for an application process such as the one described in this blog entry could potentially be reduced by rebinding the application's Db2 packages with the RELEASE(DEALLOCATE) option.
Db2 for z/OS Global Variables: What is a "Session"?
Global variables have a session scope. Although they are available for use to all sessions that are active at the current server, the value of the global variable is private for each session.
You think to yourself, "OK. That's good to know." And then, "But wait - what's a 'session'?" You scour the Db2 documentation for the definition of "session", and you come up empty. You're left scratching your head. "Is a 'session' a thread? A transaction? Something else?" I am writing today to remove this particular cause of head-scratching (your scalp can thank me later). I will start by giving you the short answer, and then I'll elaborate.
Short answer: the meaning of "session", in a Db2 for z/OS context, depends on the nature of an application's connection to a Db2 server. For "local-to-Db2" applications (meaning, applications that execute in the same z/OS LPAR as the target Db2 system, and are not network-connected to Db2 - examples include CICS transactions and batch jobs), "session" equates to "thread" (referring to the Db2 thread used by the application). For DRDA requesters (applications that access Db2 for z/OS via the Db2 DDF address space, using the DRDA protocol by way of an IBM driver such as the IBM Data Server Driver or Db2 Connect), "session" equates to the logical connection an application has established with the Db2 server. For a REST client (an application interacting with a Db2 system via the REST interface to the DDF address space), "session" equates to transaction.
You may wonder, "Why these differences between local-to-Db2, DRDA requesters and REST clients, with regard to the Db2 meaning of 'session'?" Read on for explanatory information.
Let's start with an easy case: a Db2-accessing batch job (and I'm not talking about a Java batch job that could use a type 4 JDBC driver and therefore be network-connected to Db2, from Db2's perspective). This job will get a Db2 thread at the first issuance of a SQL statement, and that thread will persist until end-of-job. The job might issue multiple COMMITs, but it's always the same thread that's being used for the life of the job. If the batch job involves use of a Db2 global variable, the initial value of the global variable will be its default value (for a user-created Db2 global variable, the default value will be null unless a different default was specified when the variable was created). If the job sets the value of the global variable to X, that will be the global variable's value for the duration of the job, unless it is subsequently changed by the job to some other value. If another, concurrently executing batch job sets the same global variable to value Y, the other batch job sees Y in the global variable, not X, because the two batch jobs are associated with two different Db2 sessions. Pretty simple.
How about a CICS or an IMS transaction? Still simple, absent thread reuse (I'll get to the thread reuse situation momentarily). The transaction, like a batch job, gets a Db2 thread at the first issuance of a SQL statement, and the thread persists until end-of-transaction. If the transaction involves use of a Db2 global variable, the global variable will initially have its default value. If the transaction sets the global variable to some value, that value will persist, unless subsequently changed by the transaction, until the transaction completes processing and its Db2 thread is deallocated. If two concurrently executing transactions set the value of the same Db2 global variable to X and Y, respectively, the one transaction will see the value X in the global variable and the other transaction will see the value Y in the global variable, because the two transactions are associated with two different Db2 sessions. Again, pretty simple.
Things get a little more interesting in the case of thread reuse by CICS or IMS transactions. Thread reuse is good for transaction CPU efficiency (especially when paired with Db2 packages bound with RELEASE(DEALLOCATE)), but it changes the effective meaning of "session" in a Db2 for z/OS context. Why? Because absent thread reuse, there is a one-to-one correspondence between transactions and Db2 threads. In a transactional thread reuse situation, there is a many-to-one relationship between transactions and threads - in other words, multiple transactions reuse the same CICS-Db2 or IMS-Db2 thread (that's the point of thread reuse). What does this mean for a given transaction program? Well, let's say that one transaction sets the value of Db2 global variable GVAR to X. The transaction completes, and another transaction reuses the same Db2 thread. With regard to that second transaction, what will be the initial value of the Db2 global variable GVAR? Will it be GVAR's default value? NO - it will be X, the value placed in GVAR by the transaction that previously used the thread. Why is this so? Because the scope of a Db2 global variable is a session, and for a local-to-Db2 application, "session" equates to "thread", and in a thread reuse situation multiple transactions will use a particular thread. The moral to this story: if you have a transaction program that puts sensitive information in a Db2 global variable, and this is (or could be) a thread reuse situation, you'd better make sure that you re-set the global variable to its default value before end-of-transaction; otherwise, a transaction that subsequently uses the same thread will be able to see the sensitive information your transaction placed in the global variable.
This situation gets really interesting, because the whole application-thread relationship is quite a bit different versus the CICS-Db2 or IMS-Db2 case. A DRDA client application will establish a connection to a Db2 for z/OS server, and very typically the application will stay connected to the Db2 system for a considerable period of time (and it may establish several connections to the Db2 server). Getting more specific, it is the "logical connection" that matters here - the connection that the application perceives that it has with the Db2 server. I say "logical connection" because physical connectivity to the Db2 server involves things like "transports" provided by the IBM Data Server Driver (or Db2 Connect) - something that makes connection pooling possible through the servicing of n logical connections to a Db2 server with fewer-than-n physical connections (connection pooling is good for client-server application scalability and efficiency).
How about threads? Well, a given logical connection between a DRDA client application will likely involve use of any number of Db2 threads. How so? Consider the "regular" DBAT case (DBATs - database access threads - are the kind used for applications accessing Db2 via the DDF address space, and by "regular" I mean DBATs that are not of the high-performance variety). A DRDA client application has established a logical connection to a Db2 server, and a transaction uses that connection. To service the transaction, Db2 takes the application's logical connection from the inactive state (its state when not being used by a transaction) to the active state, and assigns to the now-active connection a DBAT from the DBAT pool. The transaction completes, the DBAT is separated from the connection and goes back to the DBAT pool, and the connection goes back to the inactive state until it's needed for another transaction.
OK, how about the high-performance DBAT case? A high-performance DBAT is instantiated when a Db2 package bound with RELEASE(DEALLOCATE) is allocated to a "regular" DBAT for execution (in other words, the "regular" DBAT becomes a high-performance DBAT in that situation). Once instantiated, the high-performance DBAT will NOT go back into the DBAT pool at end-of-transaction; instead, it will remain dedicated to the connection through which it was instantiated (a connection identified with an application server IP address and an ephemeral port), and will be reused, up to 200 times, by transactions associated with the connection (thus, high-performance DBATs deliver performance benefits similar to those provided by CICS-Db2 protected entry threads and threads between IMS wait-for-input (WFI) and pseudo-WFI regions and a Db2 system).
In a Db2 data sharing system, in which something called Sysplex workload balancing is active (and it's active by default with the IBM Data Server Driver and Db2 Connect), the situation gets even more interesting: a DRDA client application establishes a connection to the Db2 data sharing group (at least it should, versus connecting to an individual group member), and different transactions associated with the same logical connection to the Db2 system end up executing on different members of the data sharing group, using DBATs (regular and/or high-performance) provided by the individual member Db2 subsystems.
I've provided, above, "behind the curtain" information on the workings of Db2 for z/OS as a DRDA server, and now I'll tell you that all this DBAT stuff is essentially irrelevant to the meaning of "session" in a DRDA requester context. The stuff that Db2 for z/OS does with regular and high-performance DBATs, and with active and inactive connections, is invisible to a DRDA client application. It's kind of like the difference between logical and physical database design: a Db2 table looks the same to an application program, regardless of whether it's in a traditional segmented or a universal partition-by-growth or a range-partitioned (universal or otherwise) table space. That's Db2 plumbing. Because a given logical connection to a Db2 server is what it is from the DRDA client application perspective, regardless of the number and/or type of DBATs used to service the transactions associated with the connection, it absolutely would not make sense to equate "session" with "thread" in this case. If a DRDA transaction using a logical connection to a Db2 server sets the value of Db2 global variable GVAR to X, that value will remain X (unless subsequently changed) for the life of the logical connection. In that sense, the situation is similar to the one described above for CICS-Db2 or IMS-Db2 thread reuse: if you do not want the value placed in a global variable by a DRDA transaction to be seen by a subsequent transaction associated with the same logical connection to the Db2 system, reset the value of the global variable before end-of-transaction.
If two transactions associated with two different logical connections between a DRDA client application (or applications) and a Db2 system place the values X and Y, respectively, in the same Db2 global variable, the one transaction will see X in the global variable and the other will see Y, because the scope of a global variable is a session, and two different logical connections to a Db2 server system are two different sessions.
This one's pretty easy: for a client transaction using Db2's native REST interface, "session" equates to transaction. Period. Why so comparatively simple? Because REST is a so-called "stateless" model. Using the REST interface, each and every interaction with Db2 gets a "logical fresh start" on the Db2 side, and that means, among other things, automatic resetting of any global variable set by a REST-using transaction back to its default value at end-of-transaction. If Db2 global variable GVAR is set to X by a REST-using transaction, a subsequent REST-using transaction will not see X in GVAR at transaction start time - it will see GVAR's default value. If two different, concurrently executing REST-using transactions put X and Y, respectively, in the same Db2 global variable, the one transaction will see X in the global variable and the other will see Y, because the scope of a global variable is a session, and each and every REST-using transaction is associated with a different Db2 session.
I hope that this information will be helpful to you, and that you can take "Db2 session" off of your head-scratcher list.
If the REST interface is one path to DDF, what is the other? Why, the SQL path, of course. Hearing that, a Db2 for z/OS DBA or systems programmer might ask, "Oh, you mean the DRDA path?" Yes, that's technically what I mean, but I think that it would be a good idea to use the words "SQL path" instead of "DRDA path," because the latter term is not relevant to a lot of application developers. DRDA - distributed relational database architecture - is Db2's distributed database protocol, but a client-side developer doesn't see DRDA. The developer sees SQL statements, perhaps in JDBC or ODBC form. Those JDBC or ODBC statements are processed by the IBM Data Server Driver (or Db2 Connect), and are in DRDA form when they get to Db2 for z/OS. So, if an application with a TCP/IP connection to a Db2 for z/OS system wants to access Db2-managed data, it can do that by issuing SQL statements (which, again, might be in the form of JDBC or ODBC statements) or by issuing REST calls.
On the topic of the SQL path to DDF, for a long time that path involved going through a Db2 Connect "gateway" server en route to the target Db2 for z/OS system. Over the past several years, we (IBM) have been recommending to Db2 for z/OS-using organizations that they move away from Db2 Connect gateway servers in favor of the IBM Data Server Driver, which runs on the same server as an application program that is utilizing the SQL path (over TCP/IP) to Db2. The IBM Data Server Driver is lighter weight than Db2 Connect, it has the functionality you want (things like connection pooling, Sysplex workload balancing, etc.), and it delivers performance and system management benefits (both largely owing to the fact that the "hop" formerly required to a Db2 Connect gateway server is eliminated - you go straight in to the Db2 for z/OS system from the application server). Note that the IBM Data Server Driver is not licensed as such: your entitlement to use the IBM Data Server Driver is through your Db2 Connect license. If you have, for example, a Db2 Connect Unlimited Edition for System z license for a Db2 for z/OS system, you are entitled to deploy the IBM Data Server Driver in an unlimited fashion for applications that target said Db2 for z/OS system.
Client-side programmers can code more-intuitive REST calls. When going directly to Db2's native REST interface, you have to use the HTTP verb POST in your REST calls. That doesn't limit what you can do, Db2-wise, in response to a REST call, but a client-side developer might want to use GET in a REST call if the requested service is of a data-retrieval nature, or PUT if the call will cause some data values to be persisted at the data server. With z/OS Connect in the picture, all of the HTTP verbs are available for use in REST calls.
Easier creation of RESTful services from SQL statements. Db2's REST interface enables invocation of a single static SQL statement (which could be a data manipulation statement such as SELECT, INSERT, UPDATE or DELETE; or a CALL to a Db2 stored procedure) by way of a REST call. Db2 enables creation of a RESTful service through the Db2 command BIND SERVICE, which can be issued from a batch job, or through DB2ServiceManager, a Db2-provided RESTful service that creates RESTful services from SQL statements. That command and that service certainly work, but creating RESTful services from static SQL statements is even easier using the GUI tooling that comes with z/OS Connect.
Swagger-based service description. Client-side developers like to be able to "discover" the RESTful services that are available from a host system. The RESTful service-creation mechanisms provided by Db2 for z/OS (the aforementioned BIND SERVICE command and the DB2ServiceManager RERSTful service) allow a service-creator to provide a description of a service in the form of a comment (e.g., "This service returns information about a customer based on a provided customer number"). That's helpful, but with z/OS Connect, service information can be provided to client-side developers in Swagger format - Swagger being an industry-standard specification for describing RESTful services.
More-comprehensive capabilities around the management, monitoring, securing, and auditing of RESTful services. Db2 for z/OS provides functionality that addresses all of these areas. z/OS Connect enriches and enhances that functionality.
A single entry point for REST-enablement of all kinds of z/OS-based programmatic assets. With z/OS Connect, not only can you REST-enable Db2 SQL statements (which, again, could be stored procedure calls) - you can also REST-enable CICS transactions, IMS transactions, WebSphere Application Server for z/OS transactions, and batch jobs.
Which path to DDF? The SQL path, or the REST path?
You have client-side developers with a lot of SQL coding experience and expertise, and you want to leverage that capability. In particular, lots and lots of client-side developers know JDBC and/or ODBC (and/or ADO.NET) very well.
You want to take advantage of scalability and/or workload management capabilities provided by the IBM Data Server Driver (or Db2 Connect). These capabilities include connection pooling and Sysplex workload balancing functionality.
You want client-side programs to be able to dynamically form SQL statements that are then sent to Db2 for z/OS for execution. Oftentimes, SQL statements are hard-coded in client-side programs; sometimes, that is not the case. While it would be technically possible to dynamically form a SQL statement and then pass it as input to a REST-enabled Db2 stored procedure for preparation and execution, issuing dynamically formed SQL statements targeting a Db2 for z/OS system is more easily done via the SQL path to DDF.
You need or want client-side control over the scope of transactions. If you want a client-side program to be able to do something like issue SQL | issue SQL | issue SQL | commit, the SQL path is the way to go. When using the REST path, every interaction with the server is, from Db2's perspective, a separate unit of work. That's OK for some applications, not OK for others.
There is no need for Db2 client code on the application requester side. In some cases, it may not be desireable or feasible to have the IBM Data Server Driver (or Db2 Connect) installed on the client-side application server.
There is no need for client-side programmers to know anything about the particulars of a back-end data server. When a client-side programmer codes SQL statements, he or she knows that the back-end data server is a relational database management system (or something that at least looks like a relational DBMS). Maybe the client-side developers for a given application project don't have much in the way of SQL skills; or, maybe they do have SQL skills, but they prefer the high level of back-end system abstraction provided by the REST architectural style (in other words, they like the data-as-a-service programming model).
Next time a development team is getting ready to build a new application that will access Db2 for z/OS-managed data via TCP/IP connections, or when an existing Db2 for z/OS-based application is going to be reengineered along client-server lines, keep in mind that two paths to the Db2 distributed data facility from such applications are available: the SQL path and the REST path. Work with the development team and determine which path would be best for the project at hand.
Almost 5 years ago, I posted to this blog an entry on the question, "How big is big?" in a Db2 for z/OS context. Two areas that I covered in that blog entry are buffer pool configuration size and DDF transaction volume. Quite a lot has changed since October 2013, and it's time for a Db2 "How big is big?" update. In particular, I want to pass on some more-current information regarding buffer pool sizing and DDF activity.
Back in 2013, when I posted the aforementioned blog entry, the largest buffer pool configuration I'd seen (i.e., the aggregate size of all buffer pools allocated for a single Db2 for z/OS subsystem) was 46 GB. That Db2 subsystem ran in a z/OS LPAR with 180 GB of real storage. Fast-forward to August 2018, and my, how z/OS LPAR memory resources - and exploitation of same via large buffer pools - have grown. The biggest buffer pool configuration for a single Db2 subsystem that I've seen to date? How about 879 GB, in a z/OS LPAR that has 1104 GB (almost 1.1 TB) of central storage. A single pool in that configuration has 66,500,000 buffers of 4 KB each - that's over 253 GB of space in one pool. Does that humongous amount of buffer pool space - over 600 GB of which is page-fixed in memory - put undue pressure on the z/OS LPAR's real storage? No. The demand paging rate for that system (a busy data server, processing about 14,000 SQL statements per second during peak times) is a big fat zero. That's because the 225 GB of memory not used for Db2 buffer pools is plenty for the other real storage requirements in the LPAR.
What does the organization with the great big Db2 buffer pool configuration get in return for using lots and lots of memory for data and index page caching? It gets tremendous suppression of disk subsystem read I/Os: I saw that for an hour during which the volume of data access activity on the system was really high, the highest total read I/O rate for any of the buffer pools was 48 per second (very low). During that peak-busy time, two of the other buffer pools had total read I/O rates of 15 and 13 per second (very, very low), five pools had total read I/O rates between 2 and 5 per second (super-low), and the other nine active pools had total read I/O rates of less than 1 per second, or even 0 (super-duper low). And what are the payoffs from tremendous suppression of disk read I/Os? CPU savings (every I/O - synch or asynch - consumes CPU time) and improved transaction and batch job elapsed times (in Db2 monitor accounting-long reports, wait time related to synchronous and asynchronous database reads - the latter is labeled "wait for other read" - becomes a very small percentage of in-Db2 elapsed time).
z/OS LPAR memory sizes are getting larger all the time. If you've got it, use it - and using it for big (maybe really, really big) buffer pools can be a great move on your part. In doing that, don't forget to leverage fixed-in-memory buffer pools, large page frames, and maybe "pinning" pools (the latter are used to cache associated database objects in memory in their entirety, and should be defined with PGSTEAL(NONE)).
I have seen that an ever-growing percentage of overall Db2 for z/OS workloads - and a really big percentage of new Db2-accessing application workloads - involve Db2 access via the distributed data facility. This, combined with the increasing processing capacity delivered by new generations of IBM Z servers, plus DDF-related performance features such as high-performance DBATs and the SMT2 mode in which zIIP engines can operate, add up to substantial growth in DDF transaction volumes at many Db2 for z/OS sites (the organization with the DDF transaction rate in excess of 3000 per second for a Db2 subsystem runs the zIIP engines in the associated z/OS LPAR in SMT2 mode). DDF transaction rates are likely to get a further boost as companies take advantage of Db2's built-in REST interface, since that interface provides a second path to the Db2 distributed data facility (the other path being the SQL path which could also be called the DRDA path - more on that in the next entry I'll post to this blog).
These upward trends, regarding Db2 buffer pool configuration sizes and DDF transaction volumes, are two that I like to see. The former reflects growing recognition that large IBM Z server real storage resources can be very effectively leveraged to turbocharge Db2 application performance, and the latter shows that Db2 for z/OS is an increasingly popular choice as the data server for modern, multi-tiered, client-server applications that access data through standard interfaces (e.g., JDBC, ODBC, ADO.NET, REST). How big will Db2 buffer pool configurations get in the years to come? How high will DDF transaction rates go? We'll see. My take is that big - even really big - is going to get a lot bigger still.
I've posted several entries to this blog on the topic of high-performance DBATs (for example, one from a few years ago covered a MAXDBAT implication related to high-performance DBAT usage). You may well be aware that a "regular" DBAT (a DBAT being a DDF thread) becomes a high-performance DBAT when a package bound with RELEASE(DEALLOCATE) is allocated to the DBAT for execution. How do you get a RELEASE(DEALLOCATE) package allocated to a DBAT? Well, for a DDF-using application that calls Db2 stored procedures, it's easy: bind the packages of frequently-executed stored procedures with RELEASE(DEALLOCATE) and, boom - you get high-performance DBATs when those stored procedures are called. The same goes for packages associated with DDF-using applications that issue static SQL statements from the client side (for example, Java programs that use SQLJ instead of JDBC): bind those packages (the ones that are executed frequently) with RELEASE(DEALLOCATE) and you get high-performance DBATs when the corresponding programs are executed.
Here's the thing, though: there are plenty of DDF-using applications that don't involve execution of static SQL in any form: not in stored procedures, not issued from client-side programs. Can these applications use high-performance DBATs? Sure, they can. Those applications use packages. Which packages? The IBM Data Server Driver packages, of course (these are also referred to as Db2 Connect packages - the Data Server Driver is the more modern version of the Db2 client software). The Data Server Driver packages are bound, by default, into a collection called NULLID. Could they be bound into NULLID with RELEASE(DEALLOCATE)? Yes, but that would NOT be a good idea. Why? Because that would cause all DDF work, by default, to run by way of high-performance DBATs. The optimal set-up is to limit high-performance DBAT usage to your higher-volume DDF-using applications (especially those characterized by transactions that have a low average in-Db2 CPU time - maybe just a few milliseconds). How could that be done, if the NULLID packages are bound with RELEASE(COMMIT)? Easy: you direct the higher-volume DDF applications to a collection, other than NULLID, into which the IBM Data Server Driver packages were bound with RELEASE(DEALLOCATE). And how is that accomplished? Well, for a while the aim was achieved by changing a client-side data source property to point to the alternate Data Server Driver package collection (the one associated with RELEASE(DEALLOCATE) packages) instead of the default NULLID collection. Actually getting the client-side change done? There's the rub: you had to rely on an application server administrator or a client-side programmer to do the deed, and those people were already busy and your change request might not be acted upon - or at least, might not be acted upon in the near future. Oh, for a way to do that Data Server Driver package collection redirect from the Db2 side!
In fact, you can direct a DDF-using application to a collection other than NULLID by way of a Db2-side action, and that Db2-side capability is the crux of this blog entry.
The solution: you cause the value of a special register to be set automatically for a given DDF application. The special register of interest here is CURRENT PACKAGE PATH, and the means of accomplishing, on the Db2 for z/OS server side, the automatic setting of the special register for a particular DDF-using application is a Db2 profile and an associated profile attribute. I'm talking about the Db2 profile tables, SYSIBM.DSN_PROFILE_TABLE and SYSIBM.PROFILE_ATTRIBUTES. First, the profile: by way of a row inserted into SYSIBM.DSN_PROFILE_TABLE, you identify the DDF-using application for which you want high-performance DBATs to be used. That could be done in several ways, such as through the authorization ID the application uses in connecting to the Db2 for z/OS system. Alternatively, you could identify the application using the IP address (or addresses) of the server(s) on which the client application runs. There are other application identifier options, as well - check them out in the Db2 for z/OS Knowledge Center on the Web. Note that wild cards can be used with DSN_PROFILE_TABLE application-identifier values, so that one profile could cover a set of application server IP addresses, or a set of application-utilized authorization IDs that begin with (for example) the characters CRM (so, the value CRM* in the AUTHID column of DSN_PROFILE_TABLE would apply to authorization IDs CRM01, CRM02, CRM03, etc.).
And you're done: the application associated with the profile will use the IBM Data Server Driver (or Db2 Connect) packages in the HIPRFCOLL collection, and so will utilize high-performance DBATs because the packages in HIPRFCOLL are bound with RELEASE(DEALLOCATE). You can read more about setting special registers via profiles in the Db2 for z/OS Knowledge Center.
Now, I've focused on alternate collections (alternate relative to NULLID, that is) as a means of getting high-performance DBAT functionality for DDF applications that don't otherwise use packages because there is a lot of interest in high-performance DBATs these days. Think, though, about other ways in which NULLID-alternative collections could be useful in your DDF application environment. What if you want certain DDF applications to run with ARCHIVESENSITIVE(NO) behavior, instead of the default ARCHIVESENSITIVE(YES)? What if you want certain DDF applications to run with an isolation level other than the default CURSOR STABILITY? What if you want to use statement concentration (i.e., the automatic parameterization by Db2 of queries that contain literal values in predicates) for certain DDF applications (starting with Db2 12, that can be "turned on" by way of the package bind option CONCENTRATESTMT)? By using profiles to direct DDF applications to Data Server Driver (or Db2 Connect) collections holding packages bound with the desired options and specifications, you can get the application behavior you want, without placing on client-side folks (application server administrators or application developers) the burden of using particular data source properties or coding SET statements for various Db2 special registers (and keep in mind that we're talking here about DDF applications that do not rely completely on Db2 stored procedures, as stored procedures provide you with a great deal of server-side control over application behavior, including package bind specifications).
For a long time, we've been accustomed to NULLID being the one and only collection for the IBM Data Server Driver / Db2 Connect packages, but with many DDF-using applications being of the type that use only (or at least primarily) those packages, and with a growing desire and need to establish behaviors for those applications that can be most readily implemented through Db2-side direction of the applications to collections with packages bound with particular option specifications, it will become more and more commonplace for Db2-using organizations to have multiple collections for the Data Server Driver / Db2 Connect packages, with direction of applications to collections accomplished via Db2 profiles as described above. Remember: in all likelihood it would be best for the packages in your NULLID collection to be bound with standard default specifications, so that applications for which specialized functionality is desired can be selectively directed to the Data Server Driver / Db2 Connect collections containing the packages bound with the options and specifications that can enable the desired functionality and behavior. Using the Db2 profile tables to set the CURRENT PACKAGE PATH special register is a great way to implement server-side direction of DDF applications to Data Server Driver / Db2 Connect package collections. Give this some thought and give it a try if you think it would be useful in your Db2 for z/OS environment.
Db2 9 for z/OS became generally available back in 2007. In the years since, most of the features introduced with Db2 9 have been broadly put to use. An interesting exception is the auto-sizing of buffer pools, implemented via the AUTOSIZE(YES) option of the -ALTER BUFFERPOOL command. Based on my experience, it seems that few Db2 for z/OS sites have gone with buffer pool auto-sizing. I find that a bit perplexing. In the Db2 for Linux/UNIX/Windows user community, a feature called self-tuning memory (which applies to buffer pools and more) appears to be quite popular. Why the seeming reluctance to leverage buffer pool auto-sizing in Db2 for z/OS systems?
I'm thinking that we may be seeing a situation not unlike the one that existed back in the 90s and early 2000s vis-a-vis SMS-management of Db2 for z/OS data sets (SMS is short for System-Managed Storage, a capability provided by the z/OS operating system). Db2 management of table space and index data sets, enabled through a specification of USING STOGROUP (instead of USING VCAT) in a CREATE TABLESPACE or CREATE INDEX statement (or in an ALTER of an existing object), had become commonplace, but many Db2 DBAs and systems programmers were reluctant to take the additional step of letting SMS take care of data set placement within a disk subsystem. Folks were fine with Db2 issuing the Access Method Services commands that were needed to create data sets (what you get with USING STOGROUP), but letting the system handle data set placement was another matter. The thought of having VOLUMES('*') in a CREATE STOGROUP statement, which would hand data set placement responsibility over to SMS, made lots of Db2 systems people uneasy - they just didn't trust z/OS to get that done right; so, folks would create STOGROUPs that were associated with particular disk volumes (e.g., CREATE STOGROUP SGPRD01 VOLUMES(ABC123), CREATE STOGROUP SGPRD02 VOLUMES(XYZ139), etc.), and they would then assign individual Db2 data sets to this STOGROUP or that one - in effect, hand-placing the data sets within a disk subsystem - so as to ensure that the data sets in question went on different disk volumes. "I want to make sure that partition 1 of partitioned table space TS1 doesn't go on the same volume as partition 2 of that table space," they'd say; or, "I want to make sure that index IX1 goes on a volume other than the one holding the table on which IX1 is defined."
This very hands-on approach to Db2 data set placement started to become a major burden on DBAs and systems programmers as Db2 databases mushroomed in size and the number of data sets associated with Db2 databases shot up. Something had to give, and so some Db2 systems people - not without trepidation - decided to let SMS do a job that had become too big to handle via the old hand-placement approach. I had recently started work in the IT department of a Db2 for z/OS-using organization, back in 2000 (between my two IBM stints), when our lead z/OS systems programmer told me that she was going to go with SMS-management of Db2 data sets in production. She just hoped that the performance penalty wouldn't be too severe. Guess what? At our site, and at other sites, SMS management of Db2 data sets worked just fine. Performance didn't suffer, and tons of Db2 administrator time got freed up for use in higher-value activities. Within a short time, SMS management of Db2 data sets became the norm. Key to that development: the old approach (hand-placement of Db2 data sets within disk subsystems) became increasingly untenable, and technology advances made old worries concerning the new approach (SMS management of Db2 data sets) largely moot (z/OS and IBM Z and disk storage improvements made contention at the spinning-disk level much less of a concern than it had been in the past).
Today, a Db2 administration practice that ought to be reexamined is micro-management of buffer pools. Historically, people have sliced and diced buffer pool memory usage in a very fine-grained way. With ongoing growth in the size and number of Db2 subsystems that individual organizations use, and with Db2 for z/OS administration teams being, typically, small in terms of headcount, the time needed to effectively manage Db2 buffer pool sizing is, more and more, just not there. Turning that task over to Db2 (and the z/OS Workload Manager) is an increasingly attractive alternative. At the same time, technology changes have made buffer pool micro-management less worthy of major time commitment: IBM Z memory resources are getting to be huge by recent standards, and as z/OS LPAR real storage sizes soar, super-fine tuning of the use of that space for Db2 buffer pools becomes less and less of an imperative. Not only that, but many a Db2 administrator's mind-set, regarding appropriate buffer pool sizing, has fallen behind the reality of the current hardware situation. What I mean by that: a 10-GB buffer pool configuration (aggregate size of all pools allocated for a subsystem) may seem large in a Db2 administrator's eyes, given historical standards, but in an LPAR with 100+ GB of memory (pretty commonplace these days), that 10 GB looks dinky. It's like z/OS is saying to these people, "Hey, there are a lot of gigabytes in this system that are just lying around, doing nothing. I can see them. Give me and Db2 the keys to the buffer pool sizing car, and we'll put those sleeping gigabytes to work, and application performance will be the better for it. And don't worry about my overloading my own memory resource - I'm not going to do that. I know how to manage what I've got. Give me a chance."
Let the workload go for a while, and periodically issue -DISPLAY BUFFERPOOL(BP10) DETAIL to see what's happening with the pool. Even better, have "before" and "after" activity data for the pool, for the same hour of the same day (e.g., 10-11 AM on a Thursday), from either a Db2 monitor-generated statistics report - long or the output of -DISPLAY BUFFERPOOL(BP10) DETAIL (if you go with the command for activity data, and you want data from 10-11 AM, issue the command at 10 AM and again at 11 AM, and you'll have activity data for that 1-hour period in the output of the second issuance of the command). My expectation would be that things will be fine, and some performance metrics might move in a positive direction. And, the system's demand paging rate will likely still be zero. Next, maybe open up auto-sizing for other pools in your system, again with floor and ceiling values with which you're comfortable. And, go back to a pool for which you previously activated auto-sizing, and, if the system-adjusted pool size is larger than its initial size, try another -ALTER BUFFERPOOL with a larger VPSIZE and larger VPSIZEMIN and VPSIZEMAX values, to let the system take the pool size further in the direction that the system has determined is best for overall performance. Over time, you may well become not only comfortable, but happy, with Db2 and z/OS handling sizing for all of a subsystem's buffer pools.
And, just in case you hear a little voice in your head, saying, "Careful, buddy. You spend a pretty good bit of time on buffer pool sizing. If you let the system handle that then you'll be sitting around twiddling your thumbs, and that's not good," tell that voice to shut up. Did you run out of things to do when you let SMS manage Db2 data set placement? Or when you no longer had to manage index page locking because Db2 stopped doing that kind of locking? Or when you could quit managing the package table part of the EDM pool because Db2 quit using EDM pool space for allocating packages to threads? Or when you let Db2 manage secondary disk space allocation for table space and index data sets with MGEXTSZ=YES in ZPARM and Db2's "sliding scale" algorithm? Of course not. In each and every case in which Db2 and/or z/OS took on tasks you used to do (or Db2 stopped doing things that you used to have to work to manage), you ended up staying plenty busy, with a different mix - a higher value mix - of work. System-managed buffer pool sizing offers another opportunity to move your work mix up the value chain. I think the time's right for more people to take that step. Maybe it's your time.


text:
Home Breaking News Demands for Gitmo Closure Grows
Demands for Gitmo Closure Grows
Aug 21, 2015: 1:10 pm
Closing Guantanamo is not something that we should leave for the next president, but Obama is running out of time, said Defense Secretary Ashton Carter. The Pentagon's process of moving the camp to inside US borders is proving to be difficult.
"As long as this detention facility remains open, it will remain a rallying cry for jihadi propaganda," Carter told reporters on Thursday. Obama promised to close the notorious prison, presently holding 116 detainees, at the beginning of his tenure and has been reiterating the pledge through his time in the office.
"Closing the detention facility in Guantanamo is not something, in my judgment, that we should leave to the next president, whether Republican or Democrat," he said, adding that he strongly supports President Obama's plan for bringing a "responsible end" to ending detention at Guantanamo.
"It's expensive for this department and not something the president wants to leave for his successor," he said.
Out of 116 detainees some are eligible for transfer to other countries, and the defense secretary said that he approved the transfer of several detainees and "will continue to do so when appropriate."
The second category of detainee includes those who are not eligible for transfer, and Carter insisted that Guantanamo cannot be closed until a solution for these detainees is found. He said that these detainees should remain held within the "law of war detention" in the interest of national security. Carter said that he therefore wanted to complete a "responsible, realistic and security-focused plan for an alternative detention facility" for this second group of detainees.
The defense secretary added that he made a "concrete step" in the direction of fulfilling this plan by ordering the evaluation of potential sites for relocation in Fort Leavenworth, Kansas and Charleston, South Carolina for the detention of prisoners and that other sites would be examined in coming weeks.
Carter ended his oration by calling on Congress to give the Department of Defense "budget certainty" when they vote on the national budget in September.
While the defense secretary focused on the administration's progress in fulfilling the promise of closing the camp, there is new opposition against the plan to close Guantanamo on the state level.
South Carolina governor Nikki Haley held a news conference to announce her opposition to any plans to bring Guantanamo detainees to her state. The governor mentioned that South Carolina would do whatever it takes to stop the relocating, adding that the transfer "is a violation of federal law."
Kansas lawmakers also voiced their opposition, pushing back against any plan that would use the Fort Leavenworth military prison to house detainees. Kansas Senator Pat Roberts said in a statement that he considers the shutting down of Guantanamo bay an "egregious overstep" by the Obama administration.
He will hold up the nomination for the next secretary of the Army, like he did in 2009, if the administration begins to make plans to bring Guantanamo detainees to Fort Leavenworth.
"I shut down this administration's nominee for secretary of the Army in 2009 to prevent moving any detainees to Kansas and will do it again if necessary," Roberts said. "Not on my watch will any terrorist be placed in Kansas."
The Guantanamo Bay detention camp was opened in 2002 to hold suspected terrorists and is located outside of the US border in a US Navy-controlled part of Cuba. It has faced criticism for the treatment of the detainees, who are held without trial indefinitely and often face torture. Current and former detainees have made allegations of practices such as forced drugging and sexual humiliation. President Barack Obama's promise to close the camp was a part of his 2008 campaign.
Via RT. This piece was reprinted by RINF Alternative News with permission or license.

redpajama_set_name: RedPajamaCommonCrawl


Hi, I'm an expert in networking concepts. I'm sure that I can easily do this work for you. We can have a chat.
Information Technology & Information Security professional, proven Technical & Management Expertise, in a career spanning 28+ Years.
I am a cyber security PhD student, my specialization is network security, then I can help you with your project.
Possess depth knowledge and understanding of the OSI model, protocols and standards in each layer. Have experience carrying out network administrator roles and have the ability to deliver tasks on time.
I have been in the field of networking from last 10 years almost. I believe to provide you the kind of support you are looking forward to.


Men are most comfortable singing in their low voice and yet it seems like all we want to do is sing high notes. Since we spend our lives speaking only in our low voice, we face a lot of challenges to get into our higher voice without a lot of strain and tension build up.
To make matters worse, coaches and creators of online eLearning courses for singers feel added pressure to "deliver the goods". So, they have students begin training with loud, open-mouth exercises so the student feels they are getting value for the money right away.
However, as I discuss in the video, a more tempered approach whereby the singer begins with a heavy dose of closed-mouth and partially closed-mouth exercises to first learn to navigate from the low voice through the middle voice and into the high and very high range of our voice will produce the fastest results.
These groups of exercises are the best thing that I've ever discovered in my own training, and I had to figure it out myself because no one's teaching this other than to do a quick "humming" exercise at the start of a workout before starting into the open-mouth exercises.
When we train with our mouth closed we remove 90% of the activity that causes muscle constriction in the throat when we move toward higher notes. This allows us to replace the old habits of constriction with good habits of a relaxed open throat. We can navigate our full range so much easier. And we can still add compression to our vocal folds to strengthen them.
Once we are able to move through our full range first with closed-mouth exercises, then partially-closed mouth exercises (called "semi-occluded variations"), we then begin to introduce open-mouth variations gradually, but never at the expense of bringing back all the tension.
This doesn't mean that we don't do any open-mouth singing exercises at all. We do them in the range of our voice where we aren't straining and we choose the right vocal scales to work with.
Please watch the video to learn more.


Sue Ellspermann, 56, has been a lot of things in her life: industrial engineer, business consultant, university teacher, state legislator and—from 2013 until earlier this year—Indiana's lieutenant governor.
Now, the southwestern Indiana native has a new gig: president of Ivy Tech Community College of Indiana, which she started July 1. On the first day of the fall semester, Ellspermann talked about what's ahead for the school.
There are really two priorities, and that goes along with our mission as an institution. That is, to have students succeed in post-secondary credentials and degrees, and the second is to align with the needs of the workforce for employees.
I speak a lot about the metric that we ought to be measuring for student success, which is students completing on their expected time frame. There's been criticism of Ivy Tech because of our two-year and four-year graduation rates. My response is that we are a highly nontraditional student base. Certainly, we want them to graduate as quickly as they can.
If they don't come in the door intending to go full-time taking 15 hours, we should be pacing it along the pace. If they say, "I'm going to take two classes a semester," then that ought to set the pace.
We just launched a new data warehouse [in July] called NewT. That is real-time data that combines all of our separate systems across the college into one combined data warehouse from which we can look at real-time data to see how a student is doing. What that showed us is that, within two weeks of the start of school—so, two weeks from now—we will know with 80 percent certainty which of our students will succeed, are likely to succeed.
We know: Did the student go into [educational management system] Blackboard and how are they tracking compared to their peers in that class? If they've only gotten on once and all their peers have gotten on three times a day, we know that probably something's not good. It could be whether they went to the bookstore. It could be any number of things that we can see behaviorally in this algorithm that correlates strongly with which ones succeed.
Why that's important is that we know that real-time. At that two-week mark, we'll be able to know by name … which ones are struggling. We can reach out and we will be reaching out to each one of them to find out what's wrong, what kind of intervention do they need?
We're not going to be 100 percent successful. There will be some students who, for various reasons, are not going to make it. But at least we will know that we have done all the things to help that student succeed. The rest of it is up to them.
It required that the president of Ivy Tech would not only have a provost who is your chief academic officer, but we would also have a VP of workforce at that equal level with the provost. That's unusual for a higher ed institution to think that you would have an academic person and a workforce person.
The second part was that the Department of Workforce Development would be required to develop demand-driven data on the jobs that are out there in our state.
We will be realigning our programs to meet the demand that is out there with our employers.
It was important for me to get what I call the "music" of the institution. I could get reports and I could read about them and I could get on the Ivy Tech website, but what I really wanted to understand was—from a faculty-member standpoint and from a staff-member standpoint—what was their experience? What was important to them? What were their particular concerns going forward? And meeting the faculty and staff across the state, you realize that each region has a little bit different culture and employer base. So they're going to look different in Gary compared to Sellersburg compared to Fort Wayne compared to Terre Haute.
It's both the strength and the challenge of this institution that we are the biggest workforce engine for the state of Indiana, yet each community really wants to own their own Ivy Tech and do their programs differently.


text:
10 Most Powerful Japanese Clans From History
by Elliot | History
The history of Japan is long and bloody, being shaped by countless warlords, Shogun, and Samurai warriors. A key element of feudal Japanese society were clans, large extended families consisting or wealthy and powerful figures. But just like medieval Scotland, not all Japanese clans were equal. Some were relatively small and low down on the pecking order. And just as some were less significant, others were incredibly influential. In this article we look only at the most powerful Japanese clans, though in no particular order since it is hard to rank them definitively.
10: The Minamoto Clan
Like several Japanese clans, this one had it's origin in the Imperial family, specifically with the seventh son of an emperor. Being the seventh born, he had no place in the line of succession to the Imperial throne. But the emperor loved his son and bestowed him with the title of Minamoto. From there the Minamoto Clan slowly grew to political prominence, commanding both wealth and an array of highly qualified warriors. Many famous samurai were Minamoto clan members, and they played a key role in multiple major wars and rebellions from Japanese history. After one especially large rebellion the Minamoto were able establish their own Shogunate, ruling Japan as a military dictatorship for over a century.
9: The Tokugawa Clan
From 1603 to 1867 members of the Tokugawa Clan held absolute political power over Japan, ruling via the Tokugawa Shogunate. They were so powerful it took the emperor himself to rise up and retake power in order for them to lose control. It was they who isolated Japan almost totally, banning most foreigners from stepping foot on Japanese soil. The origins of this clan are a complete mystery, but power was first seized by Tokugawa Ieyasu. The son of a minor lord, it was not obvious he would be prominent in any way. But Ieyasu was a gifted strategist, slowly building up his armed forces and establishing the city of Tokyo. Then in 1592 the Japanese shogun launched a disastrous attempt to conquer Korea. Taking advantage of this, Ieyasu rallied his forces and took power, establishing the great Tokugawa Shogunate.
8: The Ashikaga Clan
The Ashikaga Clan originally began as a branch of the Minamoto clan. But soon became a prominent family in their own right. It was in the early 1300s that they achieved their greatest feat. In 1333 the Japanese emperor retook power, overthrowing a Shogunate with the help of Ashikaga forces. The emperor intended to then rule as the leader of Japan. But seeing an opportunity, the Ashikaga betrayed him, establishing their own shogunate and reducing him once again to a figurehead. From then until 1573 they were the absolute rulers of Japan, cementing themselves as one of the most powerful Japanese clans of all time. Ironically it was during the Ashikaga shogunate that the Minamoto clan died out.
7: The Taira Clan
Medieval Japan was largely dominated by the Taira clan. They were the clan who reduced the Japanese emperor to a figurehead. This is ironic because like several other Japanese clans, the Taira clan was founded by an imperial family member. The clan was founded because the imperial court grew to large and the emperor needed to exclude some family members in order to maintain power. This was how all the great Japanese clans of the era were born. But the Taira were one of just four clans who held massive influence over the emperor. For much of the period the Taira were the most successful family. But eventually a power struggle broke out, which saw the Minamoto forces defeat the Taira in a large naval battle. Realizing defeat was imminent, they commit mass suicide, crippling the Taira clan forever.
6: The Azai Clan
The Azai long ruled as feudal lords from their castle in southern Japan. In the beginning they were buy low ranking lords, made to pay tribute to those more prominent. But in time they would emerge as greater lords themselves. While immensely powerful, their stint at the top was brief. Soon another Japanese clan, and forced once again into submission. Then in 1560 a new head of the clan took over, rallying the samurai and fighting the rival clan for freedom. He achieved this by forging an alliance with the larger Asakura clan and a group of Japanese warrior monks.
But in just a few more years this alliance would drag the Azai into another war, one that would be their downfall. Suffering a heavy defeat in a pitched battle, their castle was soon captured and the end was clearly soon for the clan. So it's leader Azai Nagamasa commit Seppuku and his line came to an end.
5: The Mori Clan
Among the many enemies of the Azai were the Mori. But like the Azai, they were originally lesser vassals of a more powerful plan. Establishing their own naval trade routes made the Mori rich, enabling them to build a strong military force. By the end of their build up the Mori boasted a large army of samurai and an elite naval fleet. This inevitably led to them breaking free of their overlords, becoming a line of great lords themselves. Through military might they came to rule over several provinces of eastern Japan. But this would come to an end during the Tokugawa shogunate, when their entire army was destroyed in battle. Still, they are remembered as one of the most important Japanese clans ever.
4: The Hojo Clan
Native to central Japan, the Hojo clan held the hereditary title of regent of the Shogunate. This might not sound like much compared to the actual title of shogun but believe me when I say it made them incredibly powerful. In fact, they effectively ruled as the shogun, reducing the shogun himself as the powerless figurehead who in turn did the same to the emperor. So for a long time their power was unrivalled. Their success in this area was due mainly to their administrative skill and reform, introducing a new code of laws. Only in 1591 was the clan finally dissolved.
3: The Abe Clan
The Abe are probably the most powerful of all Japanese clans today. Why? Because the most powerful Japanese prime minister of modern times, Shinzo Abe, is a member of the clan. During both the Sengoku and Tokugawa shogunates they held significant influence within the Japanese political system. In fact, chief of the council to the shogun was an Abe leader at the time America forced Japan to open it's borders. The Abe were especially successful at finding their way onto such councils, achieving influence indirectly by winning the trust of shoguns and emperors.
2: The Oda Clan
So many of the most renowned samurai warriors were under the command of the Oda Clan. Claiming to have descended from the Taira clan, the Oda emerged in the 13th century. Two centuries later they would win independence from the successive line of other Japanese clans who ruled over them, slowly gathering territory under their control. They built several large castles and held their newly gained territory by force. This gave the Oda continual access to farming and trading centers, generating great wealth for the clan. Deploying said wealth carefully, the Oda carefully conquered other Japanese clans one by one. Among their vassals were the Azai and Asakura families. With each enemy defeated the Oda clan became ever more powerful, like a corporation merging with it's competitors.
1: The Fujiwara Clan
Fujiwara sounds to me like the most Japanese name ever, and there's a good reason for that. The Fujiwara were undoubtedly the most powerful clan of medieval Japan, predating all others mentioned on this list. Indeed, they were the original dominant clan in Japanese politics, going back to the sixth century. Their founder was an aggressive opponent of Buddhism, gaining power by riding the wave of anti Buddhist sentiment. At the time Buddhism was only just beginning to take hold in Japan, and a lot of people saw it as a threat to the Japanese way of life. While he ultimately failed to prevent the immigration of Buddhism, he gained quite the reputation as a warrior and political leader.
The centuries following his death would see the clan grow stronger than ever before. How did they do this? By being granted key positions within the imperial court, and then using those positions to gain more for Fujiwara clan members. Even as their power waned in future centuries, they were able to keep some important titles and positions within the family until the abolition of the entire shogunate system in 1868.


Robert is a world class trainer, author and founder of AMENTORA INC. Robert's mission is to 'TO GUIDE AND ASSIST INDIVIDUALS IN INDENTIFYING AND LIVING THEIR PURPOSE WITH PASSION'.
With his high energy and heartfelt style, Robert Riopel has been blessed to travel around the world helping over 200,000 people find their passions and financial freedom. He has shared the stage with the Dahli Lama & Sir Richard Branson, and trained notables such as David Woods, Doug Nelson, Colin Sprake, Robert Yates and thousands of other trainers.
From humble beginnings in Calgary, Robert invested in a pizza franchise. Experiencing success early in his life also inflated the poor spending habits he already had which saw him go deep in debt. Only by learning to understand why he spent the way he did and how to dream again, was he able to go from being over $150,000 in debt to retiring financially free in only 9 months. Now he tours the world a few weeks a year as a hired gun for some of the best event producers in the world.


text:
package com.laadadra.fitools.rate;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;

/**
 *
 * @author nabil.laadadra
 */
@RunWith(Suite.class)
@Suite.SuiteClasses(
{
  com.laadadra.fitools.rate.RateToolTest.class
})
public class RateTestSuite
{

  @BeforeClass
  public static void setUpClass() throws Exception
  {
  }

  @AfterClass
  public static void tearDownClass() throws Exception
  {
  }

  @Before
  public void setUp() throws Exception
  {
  }

  @After
  public void tearDown() throws Exception
  {
  }

}

redpajama_set_name: RedPajamaGithub


text:
Q: Is there a different way to call method on variables which have similar notation? Imagine this:
x_1 = "this is my dog"
x_2 = "this is my house"

I know that if you want to get the length of these variables you need to use .length.
I wonder if there is a a different way to achieve that. These two variables have similar notation - only the last character is different.
I want to do something like that:
["1","2"].each do |end|
  puts (x_1 + end).length
end

This is wrong, I know but I think you get what I want to do.
Do you have any idea?

A:
Is there a different way to call method on variables which have similar notation?

You don't call methods on variables. You call methods on objects. That is an extremely important distinction. Variables and objects are fundamentally different, and understanding how and why a thing and the name of a thing are not the same is extremely important, not just in Ruby but in programming (and even life) in general.

I know that If you want to get the length of these variables you need to use '.length'.

You can't get the length of a variable. A variable doesn't have a "length". You can only get the length of an object, not a variable.

I wonder if there is a a different way to achieve that.These two variables have similar notation - only the last character is different.

Yes, it is possible to dereference a variable using a name you dynamically construct using the Binding#local_variable_get method:
b = binding

%w[1 2].each do |suffix|
  puts b.local_variable_get(:"x_#{suffix}").length
end

However, doing something like this is almost always a sign for a wrong design.
If you have a series of variables with consecutive names, that is almost always some sort of sequential data structure wanting to come out, for example:
xs = ['this is my dog', 'this is my house']

xs.each do |string|
  puts string.length
end

A: I'm not sure if I get right what you want but:
["1","2"].each do |number|
  puts binding.local_variable_get("x_#{number}").length
end

It will print next:
14
16

redpajama_set_name: RedPajamaStackExchange


A £25,000 solar-powered portable operating theatre which can be set up within 10 minutes has been unveiled by its Kent inventor.
The "hospital-in-a-box" can also run on pedal power and be used in developing countries and disaster zones.
The CompactOR operating theatre was invented by Alexander Bushell, 45, who is a design engineer from Medway.
"I got the idea... travelling around Kenya and seeing how people lived there," he said.
There is space for two surgeons at a time in the portable theatre, which can be flown into disaster zones by helicopter.
It contains all the equipment found in a normal operating theatre, including a defibrillator, ECG monitoring, suction, an anaesthetic machine, and surgical lighting.
Doctors have flown out to Africa to drum up support for the award-winning invention, where it is due to be launched on 6 December.
Mr Bushell, from Sittingbourne-based Global Medical Systems, created the "pop-up" operating theatre with his partner Dr Seyi Oyesola.
He claims it is the first of its kind in the world.
"Originally I'd spent a lot of time in Kenya and obviously in some of the small rural villages they have absolutely nothing at all - not even a simple defibrillator.
"On many occasions we found that there were emergencies that could have been quite easily dealt with with just a defibrillator on its own - so that's where I really came up with the idea," he said.


AspenRidge Recovery now provides Vivitrol shot services in Colorado. Below you will find information about this treatment option. Please reach out to us if you need more information about this specific part of our program.
Are you living with an active opiate or opioid addiction?
472 people died of opiate-related deaths in Colorado in 2015, almost twice the amount of deaths due to homicide (205). Opiate-related deaths have surpassed homicides every year since 2011.
Although heroin and prescription opioids are not as impactful of an issue in Colorado as they are in other states, the death rate due to overdose continues to rise each year.
As the trend continues, deaths due to opiates could surpass those due to firearms and even diabetes in the state of Colorado.
The entire United States reflects the alarming uptick in opiate-related deaths as well. 33,091 individuals died of a heroin or opioid overdose in 2015, making up more than half of the 52,404 drug overdose deaths in 2015.
Nearly 2.6 million people ages 12 and older live with a substance use disorder involving prescription opioids, heroin, or both. Almost 1 out of every 4 people who try heroin develop an opiate addiction. The rising trend of opiate and opioid addiction shows no sign of stopping soon as rates continue rising every year.
Addiction is not a disease with a cure. Although it can be managed, relapse is common. A reported 40 to 60 percent of addicts relapse at some point in their life, with actual rates likely even higher. Relapse doesn't mean you are a failure but each relapse is dangerous and like playing a game of Russian Roulette. You never know which high could be your last.
As prescription opioid and heroin rates rise each year, solutions for the addiction epidemic become increasingly necessary. Vivitrol shots are one such solution. Vivitrol is a revolutionary medication intended to decrease the chance of relapse.
Are you living with an active opiate or opioid addiction? Could the use of Vivitrol shots help keep you sober during early recovery? Continue on to learn more about Vivitrol and its uses, side effects, using drugs and drinking on Vivitrol, and how to find a doctor to prescribe Vitriol shots near you.
What is Vivitrol and How is it Used to Help You Stay Sober?
Vivitrol is an injectable medication prescribed to recovering addicts, used to manage cravings and block the effects of opiates and opioids. The active ingredient in shots of Vivitrol is Naltrexone, a common drug taken by opiate and opioid addicts in early recovery. Prescription Vivitrol is offered only as an intramuscular shot administered once a month.
Vivitrol shots function by blocking the euphoria and sedation experienced on a heroin or prescription opioid high. By rendering you unable to get "high," they help limit the chance of relapse.
By beginning treatment with the new Vivitrol services offered at AspenRidge Recovery, you can establish a solid foundation of sobriety. You will receive an individualized treatment plan with a combination of medication management and therapy with the support of a qualified and compassionate team.
Vivitrol vs. Suboxone – Are They the Same Thing?
Suboxone is a Buprenorphine and Naltrexone medication used to manage opiate and opioid withdrawal symptoms. Doctors often use it during the detoxification period and wean you off of it due to its high potential for addiction. Suboxone is also an opioid medication and should be used only under your doctor's supervision.
Vitriol shots are used as a longer-term medication to help prevent relapse. It is not a detoxification medication. Vivitrol should be used only after the detox period is complete, at least 7 to 10 days after the last time you use opiates. There is little chance of you becoming addicted to Vivitrol, and much less likely than addiction to Suboxone.
Both Suboxone and Vivitrol are used as long-term medications for opiate and opioid addiction treatment. Suboxone has proved to be more effective when used for the long-term or followed up with a medication like Vitriol. If you only use Suboxone to detox and then nothing afterwards, your chances of relapse are higher.
However, comparing the functioning of Vivitrol vs. Suboxone shows the difference in their operation. Suboxone is an opioid that works by activating the opioid receptors to reduce cravings. Vivitrol is not an opioid and blocks opioid receptors to keep opiates and opioids from working. This is why people become addicted to Suboxone and not Vivitrol; Suboxone is essentially a replacement opioid.
The benefit of Suboxone vs. Vivitrol is the lower cost. A monthly dose of Vivitrol costs between $800 and $1,000 without insurance, almost twice the amount of a month's supply of Suboxone. This makes Suboxone a more accessible method of treatment, but it is important not to miss a dose.
Doctors recommend taking both Suboxone and Vivitrol for around a year. This allows you time to develop proper relapse prevention methods and coping skills necessary for long-term recovery. Without these skills, relapse is inevitable, regardless of your medication treatment. Just like any other disease, you need to actively treat your addiction after the medication portion of treatment is over.
Vivitrol shots can provide incredible benefits to your life, such as giving you time to recover from your addiction. You can develop the skills necessary to succeed while clean and sober. It gives you a time cushion. Vivitrol does not come without its side effects, though.
Vivitrol shots come with more serious side effects, too. One of the most important side effects to keep in mind is the risk of death from overdose. Since Vivitrol functions as an opioid blocker, it prevents you from getting high. Some people try to overcome the blockers by using greater amounts of opiates or opioids which results in serious health complications, coma, or even death.
Vivitrol shots also lower your tolerance to opiates and opioids. A typical dose for you before you got clean has the potential to harm or kill you once you stop taking Vivitrol. You are particularly at risk right before a shot, if you suddenly stop taking the medication, and once your treatment is over. You must remain mindful of the increased risk involved when taking Vivitrol.
If any of these signs appear and last for two weeks or more, talk to your doctor.
Vitriol shots can sometimes cause a depressed mood, leading to suicide, suicidal thoughts, or suicidal behavior.
Taking Vivitrol shots near you can also treat alcohol dependence so drinking on Vivitrol is highly discouraged. You should never use drugs while on Vivitrol, especially opiates or opioids.
Vivitrol costs a lot, especially without insurance. If you are part of an inpatient program like that at AspenRidge Recovery, though, oftentimes the cost of Vivitrol shots is included with your treatment. Inpatient treatment is a great opportunity to begin Vivitrol treatment and allow your body the opportunity to adjust to the medication.
If you do not attend inpatient drug and alcohol rehab, you can receive a prescription for Vivitrol from your doctor. Any doctor who can prescribe medication can be a Vivitrol doctor. You will report back monthly to the doctor's office to receive your intramuscular Vivitrol shot.
Are you wondering, "How can I get a Vivitrol shot near me?" begin by making an appointment with your primary care physician. They will determine the best course of action and either develop a treatment plan or refer you to another facility.
Receiving Vivitrol shots near you is possible regardless of where you are. Any doctor who can prescribe medication can prescribe you Vivitrol. The best way to receive treatment, though, is through a qualified addiction rehabilitation facility. When you attend inpatient treatment at AspenRidge Recovery, our staff will determine the best course of care for your situation.
How Can You Find a Vivitrol Shot Near You?
The first step to find out about Vivitrol treatment is to consult with your primary care physician. Your doctor can either prescribe the medication or direct you to a specialist who can.
Remember, you need to be completely detoxified from opiates or opioids before starting. The Vivitrol website suggests at least 7 to 14 days clean. Attending a detox facility can help you get clean from the opiates in order to begin Vivitrol treatment.
The best way to receive Vivitrol shot treatment is through a specialized addiction treatment facility. When you attend inpatient rehab at AspenRidge Recovery, Vivitrol is included as part of your individualized treatment program. Those who receive injections must also actively meet with their psychiatrist to work on their mental health and learn appropriate behaviors to avoid relapse.
Attending an addiction rehab center provides well-rounded care both through medication and therapy services. With the help of addiction treatment you will learn to manage life sober during individual and group therapy.
Vivitrol shots help relieve cravings and block the effects of opioids and opiates, but Vivitrol alone will not keep you sober. Although it keeps you from getting high, you can stop the treatment at any time and get loaded again. The only way to achieve long-term sobriety, with or without Vivitrol, is to develop the proper habits to keep you sober.
Vivitrol shots work best when used in combination with one-on-one counseling, group therapy, or 12-step meeting participation. No drug can keep you sober on its own, especially if you do not put in the work on your end. It takes practice to learn to live life without drugs when they have been your go-to coping mechanism for years. Without replacing that coping mechanism with a healthy one, relapse is inevitable.
Through the therapeutic support provided with your Vivitrol treatment at AspenRidge Recovery, you develop a community of people to hold you accountable. From your treatment team to your peers in group, everyone involved with your recovery has your sobriety in mind. Since you receive the best results with Vivitrol when they're combined with therapy and counseling, attending treatment at AspenRidge Recovery simplifies the process.
The most important thing to remember is that you should never use drugs or drink while on Vivitrol. Mixing alcohol and drugs with the medication can cause serious complications. Be aware of any side effects of the Vivitrol shots and inform your doctor if they arise.
To ensure the best chance of success with your Vitriol treatment, continue to attend counseling, group therapy, or a 12-step program.
These programs will provide the groundwork for you to learn how to live life clean and sober. Without the help of your fellows in recovery, staying sober will prove difficult. Keep in close contact with your counselor or group during your Vivitrol treatment to make sure you receive the best outcome possible.
Our admissions coordinators are here to help you get the right detox services in a timely manner. We can verify your insurance and meet your transportation needs as well.


text:
WANT YOUR BANK TO KEEP A SECRET? SPEAK UP NOW
Todd Pack, Sentinel Staff WriterTHE ORLANDO SENTINEL
Bank of America says it doesn't share your secrets with advertisers.
But financial giant J.P. Morgan Chase & Co. does. It sometimes guesses your interests based on your credit-card use so it can share your name with people selling everything from magazines to dental work.
Until now, it hasn't been easy to find out how credit-card companies, insurers and other financial-services companies use personal details such as your credit history and shopping preferences. But a federal law gives them until July 1 to 'fess up about whether they share your secrets and, if they do, give you a chance to stop it.
This is the first time corporations have had to disclose such practices, but consumer groups say they aren't entirely pleased with the process.
"It's a small step," but it places the burden of protecting people's privacy on consumers, not on the companies using their personal details, said Tena Friery, research director for the Privacy Rights Clearinghouse in San Diego.
Some households will get a dozen or more notices by the deadline. Companies may include them in their monthly bills, among the special-offer fliers and other pieces of supplementary information.
Considering the blizzard of unwanted mail that arrives on a typical day, the privacy notices may be easy for people to dismiss, Friery said. In most cases you have to call a toll-free phone number, check an opt-out box on a form or write a letter to the company.
MORE PAPERWORK
"I just threw it out," said Chip Coward, 43, of Winter Park, who received a privacy notice with his Bank of America credit-card statement.
Why didn't he read it? "I figured the company was trying to get some necessary paperwork out of the way," he said.
In a way, he's right.
Companies are now obliged to disclose their marketing practices under the Gramm-Leach-Bliley Financial Services Modernization Act, passed by Congress two years ago.
The law eliminated barriers that had kept commercial banks from moving into investment banking, real estate and other financial services -- but it also gave the companies until July 1, 2001, to get customers' permission before sharing details about them with unaffiliated businesses.
Companies may give customers as little as 30 days to reply, though they don't have to set a deadline. The law requires them to make an opt-out offer at least once a year or whenever they change their privacy policy.
Besides banks and insurers, the rules apply to real-estate appraisers, automobile-leasing companies, travel agencies run in connection with financial services and retailers stores with their own credit cards.
The rules do not apply to direct marketers and other businesses that gather personal details from sources such as catalog purchases and warranty cards, unless those businesses also offer financial services.
WHO SHARES INFORMATION?
Bank of America, the bank with the largest operation in Florida, says it "does not sell or otherwise share any customer information with marketers outside the Bank of America family," though it may send customers offers on other companies' behalf.
SunTrust, on the other hand, says it sometimes makes "limited customer information available to other companies that we believe can offer . . . a helpful financial service."
That customer information "may include your name, address, phone number and other identifying information you've provided us on applications or other forms." Company officials didn't return calls Tuesday.
Chase, meanwhile, says in its privacy statement that it shares mailing lists with outside marketers based on customers' credit-card purchases. The lists are used for offers "which we believe will be of interest to you . . . such as travel programs, magazine subscriptions, dental or legal services, or gardening, sewing and pet clubs."
Chase said it doesn't disclose account information but provides marketers with customer names, addresses and telephone numbers.
REPLIES ARE FEW
So far, few people are opting out.
U.S. banks are expected to send out about a half-million privacy notices by July 1, but fewer than 1 percent of all customers have opted out so far, said Charlotte Birch, spokeswoman with the American Bankers Association in Washington, D.C.
First Union spokeswoman Mary Eshet said the response may be low because "people trust us."
CRITICS FAULT LAW
Friery disagrees, blaming the low response rates on the fact that people have to take action to avoid having personal details sold to marketers. Consumer groups wanted the law to state that businesses couldn't share information unless customers took action to opt in.
Without such a provision, "the burden is on you to protect your financial privacy," the Privacy Rights Clearinghouse warns in a message on its Web site.


Marjory Stoneman Douglas by Sharon Aron Baron.
Marjory Stoneman Douglas High School will be holding A Day of Service and Love on February 14 as a day to give back to the community in honor of the school's 17 fallen eagles who were killed one year ago.
School hours will be from 7:40 a.m. until noon, during which time students can take part in service projects including serving breakfast to local first responders and packing meals for undernourished children.
According to Broward Schools, at 10:17 a.m., the entire district, the community-at-large, and everyone in Broward County and beyond will be asked to observe a moment of silence to honor those whose lives were lost and recognize those injured during the Marjory Stoneman Douglas High School massacre.


text:
import React from 'react'
import R from 'ramda'
import combine from '../lib/combine-string-lists'

const { propOr } = R

const Table = props => {
  return (
    <div
      aria-role={props['aria-role'] || 'table'}
      className={combine('flex flex-column', props.className)}
      style={props.style}
    >
      {props.children}
    </div>
  )
}

Table.Row = props => {
  if (props.hoverColor) {
    props.className =
      propOr('', 'className', props) + ' pointer hover-bg-' + props.hoverColor
  }
  return (
    <div
      aria-role={props['aria-role'] || 'row'}
      onClick={props.onClick}
      className={combine(
        'flex bb justify-around items-center',
        props.className,
        'b--silver'
      )}
      style={props.style}
    >
      {props.children}
    </div>
  )
}

Table.Cell = props => {
  return (
    <span
      aria-role={props['aria-role'] || 'cell'}
      onClick={props.onClick}
      style={props.style}
      className={props.className}
    >
      {props.children}
    </span>
  )
}

export default Table


What is the context of your program?
How does your program deal with facilitating both competence and the building of community?
What are the challenges and how has your program dealt with them?
This executive report summarizes the impacts of learning teams, particularly in science, technology, engineering, and mathematics content areas, on teacher practice.
This report describes a comprehensive knowledge synthesis of professional learning communities and their impact on science, technology, engineering, and mathematics teaching and learning in K-12 education.


← Easter Dinner: Take One!
Every table had a teapot vase (that matched the China plate settings for the meal) with a custom arrangement of purple, white and yellow flowers and table number flags, twelve tea lights, two streamers with pendants made out of copies of "Great is Thy Faithfulness" sheet music, and folded linen napkins.
Helpers male and female, young and old, came together to make this event a success and a blessing to many! And we had a blast serving together!
The meal was delicious and accompanied by soft, live piano music while a slideshow of quotes from Amy Carmichael's writings played on a screen above the front stage. The evening concluded with some humorous skits, sacred special music, and a brief challenge, incorporating the life and testimony of Amy Carmichael. Praise God for His Faithfulness in Amy's life and each of ours!
This entry was posted in Event Planning, Hospitality, Random and tagged banquet, decorations, God's faithfulness, heritage bible church, menu, mercy ministry. Bookmark the permalink.
Wow I am super-impressed with the table settings!! It looked like it came together really well. And what a great service that your church provides through that Ministry!
oh that menu looks wonderful!


text:
New Jersey Focuses On Truck Inspections As First Line Defense Against Opioid Crisis
Trucks traveling on Interstate 78 between New Jersey and Pennsylvania are getting more thorough inspections as part of New Jersey's first line of defense against the state's opioid drug epidemic. A simple problem with a driver's logbook or any suspicion by the officer is enough to lead to a deeper inspection.
While only a fraction of the truck inspections conducted by the state police's mobile safe freight unit each year turn up drugs, officials say it's still a major part of cutting into the supply side of a drug epidemic that claimed more than 1,500 lives in 2015. One highway weigh station at the Greenwich Township stop has already taken more than 100 kilograms of heroin out of drug distribution networks last year and confiscated 27 kilograms of cocaine and 1,054 pounds of pot. Police estimate the drugs' total value was more than $21 million and that it's more than six times the amount seized in the previous four years combined.
"This is the supply side of the distribution chain and it's very important that we act as a deterrent for what comes into this state in the illicit drug trade. We're talking about the integrity of the trucking industry here and rooting out those individuals that are using the trucking industry to engage in the illicit narcotics trade," says Col. Rick Fuentes, the head of the state police. The Drug Enforcement Administration says the country's interstate highway system plays a major role in getting drugs from Mexico to urban centers and the trucks stopped on I-78 are often headed to drug houses in New York to be repacked for sale on the street.
State Trooper James Agens has been awarded for making two of the busts at the Greenwich Township weigh station last year. He explains how during one stop he became suspicious when he noticed the driver had two cellphones and that one wouldn't stop ringing. Then he noticed log book discrepancies, which further prompted him to search the truck. Him and his partner found four boxes that didn't match the rest of the cargo and sure enough the boxes contained 64 kilograms of powdered heroin and another 10 kilograms of cocaine. "I am sure for every one that we get there are probably 20 plus that go by us," says Agens.
New Jersey Attorney General Christopher Porrino says the job being done by state police is one of the answers to stop the drug supply coming into the community and destroying lives. "When you look at an operation like this, you say it's really searching for a needle in a haystack, but because it's connected to the rest of our operations, there's intelligence that flows through this stop as well," he says.
"The truckers need to know that we're inspecting with the most aggressive means possible. And we're making a lot of stops and a lot of arrests."
Paul Recklein
They need to focus on parking areas ... They have very minimal...With the amount of freight that goes to the north east via there fine state ...That should be THE MAIN CONCERN ..I GET IT THAT YOUR DOING YOUR JOBS but we also are trying to do ours
Mike Brinson
They don't give a shit if we have parking.
Jeff Funk
It's all about money
Grizzly Siemietkowski
Glad to be retired after 44 years OTR all this bs going on getting into the pockets that feed them it's all about money 💰 should be more concerned about all the idiots the big companies are unleashing on the hwys steering wheel holders are not Truckers! Real truckers are safe reliable self thinking there lawyers mechanics salesmen and are allways professional
Tarver R Mcknight Jr
Not TRUE...SO NOT TRUE!!!
Charles Watkins
And that's why I don't go to new York or new jersey. All they care about is raping all drivers .not the bad ones all of them. Let me starve
Chris Sawyer
If they could only convince the New Jersey truck drivers that after the sun rises, that they don't have to plug up the center lane and drop below the speed limit and stay there irregardless of the availability of the right lane( the granny lane in the other 49 states) to drag their ass in....would be very helpful..also, lane monsters aren't real...
Juan Aguirre
A whole bunch of NJ truck drivers don't care...they're down right rude...and aggressive...bad combo...
James Canady
That isn't just a nj thing...
Gail Daugherty
Staying totally in the right lane (granny lane) can actually be more dangerous then hogging up the middle or 2nd lane. When that ramp traffic forgets they DON'T have the right of way and just come on out into the flow of traffic whether it's clear or not....well I think you get the picture
Dave Gubala
What school did they teach you that Gail?
Bill Fields
Dave, she is totally correct.
Ira Jaffe
That's exactly what the insurance companies are teaching through the Smith System. It's called the path of least resistance.
Kenny Edinger
They are mostly immigrants with fake licenses that pull cans out of the ports up north
Kenny Edinger Containertards??say it ain't so...
Al Reigert
Notice they aren't stopping the junk pulling containers
Cause they know they won't get no money out of them cause they got none
Bobby Shane Eustice
Well i can tell half you dummy didn't read article it about stopping drug trafficker. Unless you mad because your doing it.
Bobby Hall
Just remember this is not about safety. All about the money.
When I say I stay in the 2nd lane....that's only thru cities that have 3 or more lanes. I'm not fighting 4 wheelers and truckers who think it's my job to let them on the interstate and ignore the fact that that Yield sign is for them..not us. Now if there c are only 2 lanes...well I suckered it up since chances are pretty good I can't stay with the flow of traffic in the passing lane
Chris Petty
I don't know what having two cell phones has to do with anything. I have two. One personal and one for business.
You are an exception. ... it is a proven fact that most drug dealers carry more then one phone. I've had a drug dealer or 2 in my family and they had more then 2....for multiple drug deals and then the personal one that wife, husband or kids could call on ;-)
Gail Daugherty I suppose that makes sense
M Scott Helms
Y'all have fun with that... I won't set foot, or tire, in NJ or NY...
Joelyne Schenk-Boardman
So, now they are profiling truckers? I agree trucks have been and are a means of transporting drugs around the country. Not all of us truckers are dumb enough to do this. Remember, it's not just trucks. Cars, pickups, vans, motorcycles, and buses are transporting also.
Dave Brendel
But let the overweight tri axles run up down the highway wrecking everyday
Gerald Richards
If only this was about safety and not about making money for lawenforcement. It would be great.
Charlie Downs
Fuck you NJ starve
Denzlo Hagerty
All about revenue.
Just excuses yet they won't target busses
Dean P Contreras
Like we need another reason to Hate NJ !
Jeffrey Smith
We serve to collect! Not to protect!!
Well I am glad I don't go that far East I got 2 phones
James G McCreight
Kill your local heroin dealer
Jim Rigney
Screw nj
Patrick Porter
Let's not drive there...Starve bitch!!
Eric Romain
Dont give a shit i dont go there anymore.
Jeff Yoder
Big bad Po Po!! Im scared. Fuck off!
Harry Douglas Price
Cool Swift drivers beware !!! Lol
Immigrants are where the mules are ....
Bruce Kallenbach
Keep up the good work you guys!
Joda Nesmith
Need good news Karen Williams Kelly
Davey Sanders
Ricky Crews