text:
I don't know for sure when I decided that the kayakers behind us were in trouble. Our minds were occupied by the chaos around us, and the situation kind of snuck up on us. Barton Creek was in flood, and it was pounding furiously. We'd left with 10 paddlers, but needed to keep a safe distance. We divided into groups of three so that each group could keep an eye on the others. The day had already started badly; a fireman in an unrelated party had died on this same stretch of creek. An expert boater had been foolishly paddling alone. Now, we had problems of our own.
After we'd paddled for about an hour, we pulled over into a huge eddy to get the group together and plan our assault on the next dangerous stretch of river. In truth, the banks were very dangerous, with trees that could trap you like a kitchen strainer while the water piled up and poured over you, but the main lines were pretty straightforward. I'd flipped once, but rolled back up easily. But we'd passed a few places that could have given you trouble, had you been unlucky enough to blunder into them, or too cocky to skirt the danger. The last party of three was missing, and we had no way of getting back up the river. We waited for two hours, but the last group of three failed to join us. We waited until there was little daylight left, and then we headed down the river. Eventually, we discovered that one in the trailing party had tried to punch a hole that none of us was brave or stupid enough to run, and had to be rescued by helicopter. I've never run Barton Creek again with water that high.
I've developed a good instinct for trouble on the river, and at work. In this profession, I generally know when a technology smells wrong, or dangerous, and I guide my customers away. I'm sensing that danger around Java right now. It's getting too difficult to manage, and both evolutionary and revolutionary steps to remedy the problem are failing us. In this chapter, I'll introduce some of the basic problems.
So far, I've tried to make the case that Java's always been a generalized programming language, with the syntax and core community coming from the C++ systems language. Also, I've suggested that most early Java applications focused on the user interface. You could download Java and get something running very quickly.
Once Java moved to the server side, it became the core server-side development language. Java carries an increasing load in enterprise development, from object-relational mapping with distributed transactions to messaging with XML binding for service-oriented architectures. So the job that we use Java to do is ever changing. The language is remarkably flexible, so it's lived up to the challenge so far.
But all of the extra power comes with added complexity. Where does that leave people who need to learn a language quickly, or the Java programmer who wants to solve a simple problem, or companies like start-ups that value productivity over all else? As competitive pressures force us to meet shorter and shorter schedules, a generalized Java is just not enough anymore. At some point, Java will prove inadequate. Let's look in detail at what we're asking Java to do.
If Java dies, I think it will be replaced one niche at a time. Java's popular in several niches. It's floundering in some and thriving in others:
Java's become indispensable for writing middleware , the systems software that fits between an application and an operating system. Java's many libraries, performance, portability, and ubiquity make it a good fit for middleware, and that's likely to continue.
For servlets and web programming in general, Java needs a faster feedback cycle, and needs to get better at managing strings. PHP is far more productive for this environment. Java's not the only reason: web programming is a mess for many reasons. But Java just isn't very good for the simplest and most typical applications.
For XML processing, better alternatives exist. I'd argue that Java's over-reliance on XML is part of the problem, but let me point out that Java is not a particularly good language at handling XML either. XML requires excellent string parsing and manipulation, and Java is just too verbose in this space. Already, the Ruby XML processing libraries, for example, are friendlier than the Java versions, and nearly as fast, for most jobs. Some other languages have excellent XML support. They will only get better over time.
For large enterprise projects requiring things like distributed transactions across multiple resources, heavy legacy integration, and code that relies on niche libraries , Java's large libraries and the availability of Java developers make it a natural fit. It will continue to find a role here for quite some time. Be careful, though. Most projects in the enterprise are smaller projects that could benefit from a more productive language.
Instead of looking at the entire Java landscape, let's narrow it down a bit and consider the requirements for the most typical Java job. I'll go out on a limb and suggest that the most common Java job is to take a big, fat relational database and baby-sit it with a web-based user interface. As a consultant, I see variations of this job more often than any other.
I realize that I'm painting Java into a smaller niche than it's currently occupying. I do think there's cause to do so. From the beginning, Java has been a converted systems language. The impressive list of libraries expands that scope, and the broad and deep pool of programmers makes it compelling for large enterprise applications. But Java never really has been a general-purpose applications language, though that's the place that most of us use it today.
If you're concentrating on putting a web-based frontend on a relational database, Java framework designers have solved this problem repeatedly for eight years. I've got to admit, Java hasn't gotten much better at this job since the invention of JSP. Take a look at one of the earliest servlet APIs in action:
public class HiMom extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { response.getWriter().println("<HTML>\nHi, Mom\n</HTML>"); } }
True, this programming style leads to ugly code with nearly impossible maintenance. It couples view logic much too tightly to business logic. But it is very easy to understand. With the first release of Tomcat, after a few minutes of setup and less than 10 lines of code, you could write a "Hello, World" servlet.
Now the same application involves more effort. With the latest release of Tomcat, you can't just write a servlet anymore. You also need to code up a deployment descriptor and package it all up in a standard WAR file. That means you've got to learn more about Tomcat , more about the servlet specification, and more about XML. As a consequence, the getting-started documentation for Tomcat has grown from a couple of pages to dozens of pages.
You might not think that substantial increases in the learning curve for Tomcat matter much. You might be willing to make such an investment in Tomcat, because it's such a core technology. The problem is that it doesn't stop with the servlet API. You need much more to build a typical Java application today than you needed five years ago:
You'll likely need to understand Ant , the typical tool that most of us use to build and deploy web applications.
Then, you'll need to understand Tapestry , or Struts , or some other web MVC framework, to help you organize your user interface code base.
Most of us try also to learn an object relational mapper, like Hibernate . While it does relieve some of your persistence burdens, it also imposes a steep learning curve.
You'll probably want a framework like Spring to organize your application resources and make this whole strategy testable.
You'll need some education on how to use these tools to integrate them and use them together effectively.
My clients that move to Java from another language just shudder when they see my recommendation of five weeks of education, which lets them cover only the fundamentals. Java is no longer an approachable language for them.
True, Java has improved some aspects of this problem. If you've got a highly normalized relational database that doesn't lend itself to an object model very well, you can map it better today than you could then, because of the emergence of object relational mappers like Hibernate and JDO . You can better separate the business logic from the view logic, with Struts and better emerging alternatives like Tapestry. You can attach services like security and distributed transactions to any Java object with frameworks like Spring.
But if you really come back to the core problem, a web-based user interface on a relational database, you have to learn much more to do the job today than you had to learn five years ago. And you have to work harder to achieve the same results. Most of the added value deals with corner cases, or noncentral problems. When all is said and done, these advanced frameworks will drive the Java language away from the base that made it so popular. When that happens, Java will be a niche language for large-scale enterprise development.
While the requirements for the typical Java application have remained relatively static, radical changes are transforming the typical process that you might use to build it. While not many Java programmers would say they use agile methods like SCRUM or Extreme Programming , more and more of them are using the core techniques from agile processes :
Agile methods suggest that you should use the simplest thing that will work. Simpler frameworks like Spring now displace complex frameworks like EJBs with increasing regularity.
We are in the midst of a testing renaissance, and the JUnit framework and agile processes light the way. At conferences I attend, classes like test-first development garner ever-increasing attendance, and polls to the audience indicate that testing is much more common than it has been.
Shorter schedules and the need for better integration of customer feedback shorten product development cycles, and also the smaller iterations within those cycles.
Java's community and tools provide excellent support for agile development, but there's a catch. Java is not such a good language for agile development. Java is not the simplest of languages. Nor is it friendly to very short iterations. If these two ideas are not clear to you now, they will be clear by the time you finish this book. Other languages let you move from one change to the next without a cumbersome compile/deploy cycle. Other languages have a more expressive syntax, and other frameworks take you to a higher, more productive level of abstraction.
Even as we begin to understand that Java is not the most agile language, those using other dynamic languages are using agile techniques like automated testing to shield them from the problems related to programmer-friendly type and exception strategies. Java's founders believed that it's always better to catch potential bugs at compile time. They did not consider that features like static typing and a heavy emphasis on checked exceptions come at a cost.
If we were to choose a language based on the development methods that we value today, Java would almost certainly not be our language of choice. As the principles promoted by agile developers become prominent, the Java language will experience increasing pressure.
I've painted a picture of the average project. The average team builds or ports applications that will deliver a web-based frontend on a relational database, potentially with other less meaningful services. The team probably uses increasingly agile principles, and likely wants to do unit testing. The team typically works under short schedules and great pressures. And given more dynamic alternatives, Java is not at all the language that I'd usually choose for such a project, in such an environment:
The many frameworks designed to simplify the Java development experience do make experienced Java developers more productive, but make the learning curve too steep for those new to Java.
Compile-time checking of exception and types adds safety, but comes at a cost of additional time and syntax.
Java's inability to express structured data leads to an over-reliance on XML, with the corresponding additional complexity and bloat.
Java's many compromises, like primitives, make Java harder to learn and more complex to write.
Java is more dynamic than C++, but is nowhere near as dynamic as languages like Smalltalk and Ruby. Java developers are finding metaprogramming, but they're not able to execute on those ideas fast enough.
Java's long compile/deploy cycle is much longer than interpreted, dynamic alternatives.
Taken alone, none of these issues hurts enough to matter. Taken together, Java becomes much less productive for most developers.
One of the most fiercely debated topics in programming languages is the benefit of strong, static typing strategies. Java's strategy opts for as much compile-time checking as possible. Let's take a quick overview of programming language design, in layman's terms. Then, you can put Java into context. When building a language, a designer needs to answer two typing questions relatively early in the design process.
Strong versus weak typing decides how a type is enforced, or interpreted. In a weakly typed language (like C), variables can be coerced easily, or interpreted as something else. A strongly typed language strictly enforces compatible types across operations. It probably doesn't surprise you that Java is a strongly typed language.
Ruby, Smalltalk, and Python also enforce strong typing, which might surprise you. Many developers believe Smalltalk, Python, and Ruby are so productive because they are weakly typed. They are misinformed. Consider this brief Ruby example:
i=1=> 1 irb(main):004:0> puts
"Value of i:" + iTypeError: cannot convert Fixnum into String from (irb):4:in '+' from (irb):4
In the first line, the undeclared variable
i takes on the value of
1. At this time, Ruby decides that
i is a
Fixnum. When Ruby interprets the third line, it sees the
+ operator after the string, and tries to concatenate
i. Of course, Ruby doesn't know how to concatenate an integer to a string, so it throws an error. That's clearly an example of strong typing. (Actually, I've oversimplified things a little. You can dynamically change the definition of Ruby classes and objects at runtime, and this weakens the typing somewhat. Still, on a continuum from strong to weak typing, Ruby would lean slightly to the strong side.)
In a similar situation, a language with weaker typing may instead coerce types to a compatible form, as in C. Consider this example:
int a = 5; float b = a;
In the second line, C coerces the value of the integer to
float. Other examples are even worse. In C++, the
() cast operator does not yield type safety, so you could say, for example:
Cat *cat; Dog *dog = (Dog *)cat;
These are legal C++ statements. Instead of reporting an error, C++ will happily go on stomping through memory. Languages with very weak typing simply do not capture typing errors, so the behavior of certain operations is undefined. Weaker typing is sometimes convenient, and less predictable. As you've seen, typing is not always black and white. It's also a highly contentious issue among language experts. Strong versus weak typing is on a continuum. Some strongly typed languages like Java allow loopholes by letting the user cast objects to another type. Languages with the strongest possible typing allow no loopholes. Weaker typing allows, and may even require, coercions. The weakest possible typing doesn't do type checking at all at compile time or runtime, like Assembly language, for example.
The more interesting question by far is when typing is enforced. Static typing binds a type to an object, and language constructs like variables and parameters. Dynamic typing binds a type to an object at runtime. Dynamic typing doesn't say anything about a variable's container, or anything that a variable passes through. The type is bound to the object. Therefore, the type of containers can change. An imperfect rule of thumb is that static languages force you to declare variables, but dynamic languages don't.
Ironically, most dynamic languages also tend to be strongly typed. Most weakly typed languages tend to be static. Said another way, strong typing can be dynamic or weak, but weak typing is usually also static. You don't find many weakly and dynamically typed languages, beyond Assembly language. Figure 4-1 places programming languages on two axes. Java has strong, static typing. You know this, because you get type mismatch errors when you make certain kinds of mistakes. Compiling this:
class TypeTest { public static void main(String args[ ]) { i = 4; // Nope!!! Static typing int j; j = 4.2; // Nyet!!! Strong typing } }
...gives you this result:
TypeTest.java:3: cannot resolve symbol symbol : variable i location: class TypeTest i = 4; TypeTest.java:5: possible loss of precision found : double required: int j = 4.2;
Sometimes, that's good. After all, a bug that gets caught at compile time takes much less time than a bug that gets solved much later. In general, though, the dynamic programmers that I interviewed said static typing simply mauls productivity.
Initially, you immediately can see that Java's syntax forces you to do more work. You have to declare and type all of your variables and parameters. You also need to cast objects that are compatible but different, and convert objects that aren't. The extra syntax provides value—the compiler has more information to catch bugs earlier. There's a cost, too. Static typing makes you work harder to enter equivalent code to dynamically typed languages, but you also have more lines of code to understand, maintain, or enhance. It's very difficult to prove or disprove the notion that static typing makes you more or less productive in terms of hours at the keyboard, but you can show that static typing leads to more characters, and more code to read and maintain.
Raw code count is not definitive; if it were, Perl, with all of the two- or three-character shortcuts, would be the most productive language of all time. Still, it's suggestive. Java's syntax wouldn't be such a problem if you could limit the extra code to a few lines of code at the top or bottom of a program, but you can't. You need to declare types for parameters. You need a cast every time you take something out of a collection. This syntax only gets more invasive with generics.
Some of the costs related to typing are hidden costs . I believe that one such cost is related to high-level, conceptual work versus finishing work. It's usually preferable to do conceptual work first and finishing work later, because much of your code will be thrown away, especially at early stages. As your program takes shape, you can do more and more detailed work. You make the expected case work, and then you work through noncritical path issues.
Java forces you to work the opposite way: to make things compile, you must deal comprehensively with typing, which involves dominantly finishing issues. Also, many of the compiler errors in Java might not even be problems at all in a dynamically typed language.
Dynamic typing comes into play especially when you need to experiment. Remember, you must declare variables in statically typed languages. In Java, that means you need to start each application with a class definition, and it snowballs. You can't just jump in and evaluate a single line of code—the compiler just doesn't have enough information. Instead of just simply evaluating statements, you need to blow out a class, type everything, compile, and execute. In Smalltalk, Lisp, Basic, and Ruby, you can just start typing. For simple experimentation on an initial cut at a Fibonacci sequence, here's the Java version:
class Fib { public static void main (String args[ ]) { int x1 = 0; int x2 = 1; int total = 1; for (int i=0; i<10; i++) { System.out.println(total); total = x1+x2; x1 = x2; x2 = total; } } }
It's 13 lines; 41 words; 226 characters. Keep in mind that Java forces you to declare the class to explore, and that's what we're measuring here. On the command line, you need to save, compile, and run. The Ruby counterpart looks like this:
x1 = 0 x2 = 1 100.times do puts x2 x1, x2 = x2, x1+x2 end
It's 6 lines; 16 words; 57 characters. Notice how the code just flows better. Read it in English. But the biggest impact is on experimentation. You just type and go. You can cut and paste right on the console screen. You'll use command retrieval to repeat the lines that you need. And these advantages come into play in IDEs as well. Further, if you need 100 iterations, the Java version breaks because an int is not big enough. Ruby still works fine.
This is a trivial example, and probably not completely fair. After all, the Java version packages up a full class and the Ruby version doesn't need to. But you'll find that as we go on, the examples get more and more compelling, especially for the dynamic, reflective style of programming that leading Java developers seek today.
As you add the Web and other deployment steps, the case for dynamic languages gets more compelling, because you can make changes and immediately see the results, instead of having to compile and deploy, and maybe even bounce your servlet engine. Web-based programming gets very easy. Just make a change, and hit Reload.
From my small forays into Basic (where I made my spending money in high school by writing games) and Smalltalk (where I did marketing demos), I miss the rapid feedback cycle afforded by dynamic typing and an interpreter the most.
If you've been coding in Java for most of your career, you probably don't know that you have to jump through so many hoops just to support static typing, but you do. One of the greatest typing costs comes into play when you refactor. Think of the impact of a simple type change for a member variable. You've got to change the property, the getters and setters, every type cast, and every parameter usage. Dynamically typed languages delay the binding of a type to a variable or a parameter, so you often don't need to make any change at all to support a simple type change. For Smalltalk, for example, you can change a type easily. If the new type supports all of the messages of the old type, you will likely limit the changes to one place in your code.
The Java architects have traditionally gone to great lengths to ensure type safety, but there's been one particular case that's troubled them. When you take an object from a collection, you need to cast the object:
ArrayList animals = new ArrayList(); animals.add("elephant"); String cat = (String)animals.get(0);
The compiler has just lost the ability to provide compile-time type safety. You could call the array element anything you want. To fix this, Java introduces an ugly implementation of a feature called generics . Here's what the usage looks like:
ArrayList<String> animals = new ArrayList<String>(); animals.add("elephant"); String elephant=animals.get(0);
Comparing the preceding code with its nongeneric equivalent, you may think that you avoided casting, but you really did not. Java introduced an ugly implementation of generics, called type erasure. Under the hood, in the modified version, the
ArrayList still maintains a collection of
Objects and not a collection of
Strings. Of course, any library that you need to strongly type with user-defined types must enable the code for generics. Enabling generics gets a little ugly. Here's the
List declaration from within the Java collections package:
public interface List<E> { void add(E x); Iterator<E> iterator(); }public interface Iterator<E> { E next(); boolean hasNext(); }
If you're not a fan of statically typed languages, you don't like the extra type checks that place yet an additional burden on you. Even if you like the idea of generics, you probably don't like the implementation. Generics offer only syntactic sugar and not real runtime protection, because the JVM has no concept of generics. In an article series on agiledeveloper.com,[*] Venkat Subramaniam lays out the problems in gory detail:
You lose type safety when you mix nongenerics with generics. For example,
List notGeneric = genericList; type safety would not flow into
notGeneric, even though it's bound to the same list as
genericList in memory.
You can't use primitive types as parametric type or static fields of generic type.
Instances of different parameterized types (like
ArrayList<String> and
ArrayList<Book>) belong to the same type
Since the JVM has no notion of generics, other classes won't be able to take advantage of generics via reflection.
So, if you're protected at only a superficial level, and if new languages can't participate in the solution, the syntax only serves to further burden users with details and inconsistencies, prompting the question, are generics a solution begging for a problem? When I ask my students how many class cast exceptions they get from collections, very few say this is a significant problem.
In some ways, Java's typing problems are exacerbated by another limitation described as a feature: method overloading . Taken alone, overloading is not a huge problem, but Java developers use overloading to enable an API that supports multiple types. You've got a surefire recipe for API bloat.
Need an example? Take the
java.util.Array interface. Please. For convenience, you get more than 70 methods. Peel back the onion, and you see they cover only 10 or so pieces of actual, distinct functionality. With a smarter method declaration, you'd be able to specify parameters with keywords, and default unused parameters to an intelligent value, like
0 or
When you decide to type everything, it's a slippery slope. When you need to pull back from Java's typing system, you can't always do so. You're starting to see many examples of Java libraries working around the typing in unusual ways. Study the JMX
interface for an excellent example. Does it use strong typing? It appears that way, at first. Then you dig in a little and find what only can be conceptually described as an embedded type system—a mini-language, embedded in a
String parameter called
ObjectID, with a complete language description in the JavaDoc and syntax completely opaque to compilers and interface generators and processors. Java's type system failed here. JMX architects bypassed the type system, building metadata into strings and other objects. If you look around, you'll find other examples of this as well. Most often, Java hides weaker types, or dynamic types, as strings.
After reading about all of the negatives, you're probably wondering why anyone would ever opt for strong, static typing. There are at least two compelling reasons to do so. Static typing reduces certain types of errors (like misspelled variable names), and provides more information for your IDE and other tools. (Most security-related typing arguments refer to weak typing, not dynamic typing.)
Take the following application. Java will catch this error at compile time:
int consumer; if (conusmer = = 0) return consumer; //spelling error
It's hard to imagine a dynamic language, with rigorous unit testing, letting an error like this through, though. The IDE problem is a little bit more obscure. Many of the features that Java developers have come to depend on, like method completion, rely on information in a variable's type. You can't always get the same contextual information out of a Ruby or Smalltalk IDE.
The Java founders most often cite the ability to catch type mismatch errors at compile time rather than runtime. That's interesting to me, because of all the Smalltalk and Ruby developers I interviewed, few have ever had significant problems with type mismatch errors. Of course, most of them lean pretty heavily on automated unit testing, as we all should. You need to unit test code regardless of whether you use dynamic typing. No compiler can guess your intent perfectly. Even if you like the generics implementation, you've got to be concerned with an implementation that's little more than syntactic sugar, with no JVM implementation behind it.
With the heavy use of test-driven development, the argument for reduced bugs is much less compelling. In fact, Java's type safety is not as encompassing as the founders would lead you to believe. At any given time, most of the objects in a typical Java application reside in collections. Any time you remove one of these objects from its collection, you need to cast up from
Object. You're effectively retyping an object. If you cast it incorrectly, glass will break in the form of a class cast exception, at runtime. At the same time, improved tools and emphasis on automated unit testing make it much easier to catch type problems in dynamic languages long before they ever reach production. My experience tells me that Java's type safety is not as important and comprehensive as most programmers think it is, and the typing in more dynamic languages, with unit testing, is not as limiting.
The IDE code completion problems presented by dynamic typing will probably get solved by a combination of better browsers and smarter context. Unit testing will make type safety less useful from a program correctness standpoint. In the end, for application programming, more dynamic typing will prevail. The productivity gains due to dynamic typing are too compelling to ignore.
From the very beginning, Java designers consciously made decisions to attract the C++ community, and favor performance over other considerations. The biggest compromise was the inclusion of primitive types. This addition means Java is not fully object-oriented, and presents several significant challenges. Those who came from the C++ community don't always see a problem, but developers from other programming languages often see primitives
as an ugly kludge. Primitive types do not descend from
Object, so Java is more of a hybrid language than a true object-oriented language. But that's all academic. There's a real cost associated with the theory.
Java primitives limit you because they don't descend from a common Java object. One of the nice things about most object-oriented languages is polymorphism: you can deal with specific objects in a general way. In Java, that's not quite true, because primitives do not descend from
Object. You can't, for example, say
6.clone(), or
If you've ever built an XML emitter or an object relational mapper, you know about the headaches related to primitive support. In Java, you can't treat all types the same, and you don't have the benefit of natural methods on the primitive types. You have to build in explicit support for objects, primitives, and arrays.
Since most of us don't build XML emitters or persistence frameworks, we shouldn't care about those costs, right? It's not that easy. You still have to deal with complications in the language, such as inconsistent APIs and added breadth of the frameworks that you do support. Reflection is probably the worst. To get the value of a field, you first have to determine the type. You then get the value, with one of
getLong, or
getShort. Of course, if it's an array, all bets are off. Arrays can contain primitives or objects, so they can't even treat their contents generically. You basically have to go through the whole process again.
Reflection in pure object-oriented languages is much simpler. To get a field's value, you use a single API to query a field, and get an object back. You can then query the object to find the defining class. If you want to deal with it as a top-level object, you don't even have to do that.
Of course, you need to be able to do some things to a primitive that the primitive itself can't do. Java solves this problem by providing type wrappers. Primitives are so awkward because sometimes you use the primitive and sometimes you use the wrapper. It's very difficult to be consistent with usage.
When you add the additional wrappers and casts, you find that primitives don't help make Java cleaner, and they make it only marginally faster. Since you have both types and wrappers, you often need to convert between the two, forcing unnecessary syntax, and often unpredictable behaviors (such as several strange behaviors in the autoboxing in Java 1.5).
All in all, primitives were important in one sense: supporting them let Java aggressively attract C++ developers, because the idea and syntax were similar. In retrospect, though, it's created some significant problems, in terms of language clarity, productivity, and readability.
In retrospect, we're paying for the early compromises that it took to draw away the C++ community. That's a fair trade, in my book. Don't underestimate the cost, though. Primitives complicate the code base, lead to inconsistencies, and bloat the language. The next popular programming language will probably not be a hybrid language, with both objects and primitives. C++ started the transition to object-oriented programming and Java finished it. We don't need a crutch anymore.
Of course, you could write a whole book about the strengths and weaknesses of Java alone. I don't think that's productive. I won't rehash the "EJBs stink" message that's been presented prominently in my last three books. I also don't want to launch into a debate about the meaning of whitespace, Java's commenting styles, or the relative benefits or evils of byte code enhancement. Still, there are more things to cover. Exceptions and strings play a huge role in most Java applications.
Sun is not the company that it once was, placing Java's future in doubt. I'm not saying that Java will disappear, but Sun might. It has lots of cash in the bank, but where is it going to make money? It's being squeezed on the low end by companies like Intel, Dell, and AMD. IBM is squeezing Sun from above. Sun's software and services businesses have never really taken off. I think Sun is a ripe acquisition target.
If Sun does have major problems, what happens to Java? I fear that an IBM acquisition would put too much emphasis on the hardest enterprise problems, moving Java further away from its base. Open sourcing Java could effectively splinter the language. Other potential suitors, like Oracle and BEA, could lead to a conflict of interest that could stymie new standards.
IBM may be getting nervous. It has begun to hedge its Java position in several ways:
IBM is aligning closely with BEA on standards like SDO, and it is increasingly at odds with the JCP. IBM may well be positioning itself to challenge the JCP, or establish standards outside of the JCP.
IBM looks like it may embrace PHP more closely, to take advantage of that swelling marketplace. PHP would be an effective hedge for smaller and intermediate businesses.
IBM continues to invest in XML technologies with Microsoft.
In any event, Sun's ultimate health, or lack thereof, casts doubt on the shape of Java's future. If you're trying to maintain market dominance, uncertainty is not the best place to start.
Like static typing, Java's emphasis on checked exceptions seems like it's on unshakable footing. The argument goes something like this: if a typical developer doesn't have to deal with an exception explicitly, he probably won't deal with it at all. For me, and for many of my customers, checked exceptions tend to hurt more than they help, for many reasons:
The exception syntax is incredibly invasive. Exceptions easily dominate a typical method, even at very low levels, when you can't do anything about them.
Most of the time, you can't deal with an exception, so you can only throw it up the chain anyway. You shouldn't have to do a job explicitly that the compiler can do for you.
Having so much exception syntax deadens you to the few lines of exception code that actually do something important. Said another way, it's hard to see the diamond through all the mud.
Recently, Java frameworks like Spring and AspectJ have begun to recognize the power of unchecked exceptions. Hibernate founder Gavin King has often said that he would have built Hibernate on an unchecked exception model if he had a chance to do it over again. Hibernate converted to unchecked exceptions at Version 3.
Programming and data go hand in hand. In most other languages, structured data becomes a natural part of an application. Part of Java's over-reliance on XML comes from its limited ability to express structured data. In Ruby, I can quickly declare a hash map of arrays, for example. Such structures dramatically ease configuration and allow natural metaprogramming.
If you look at Perl , you can quickly understand what it's designed to do. It's a turbo-charged text manipulation engine. Though it's very complicated in other ways, Perl has been so popular because it does what it's designed to do.
By contrast, if you look at Java, you don't have the same convenient, high-powered text manipulation. That's surprising, especially when you look at the core job that we ask Java to do. Servlets, XML, JSP, HTML, and many other constructs are strings. In fact, I probably work with strings in some form more often than I do anything else. It's amazing to me that Java's not any better than it is when it comes to strings. Its pattern-matching support is second class, and the major string APIs are at an extremely low level.
Java's already a good language for big, hard-core enterprise programming projects. It's getting better at solving that problem. And Java's never been good at tiny applications that you might write for a small business in Visual Basic . There's a huge middle ground between these two problems. Java stepped into this gap with a vengeance and ripped the heart out of Microsoft's enterprise programming community. But Figure 4-2 shows Java is leaving that community behind rapidly.
Figure 4-2. Java has controlled the gap between enterprise projects and small ones, but is now leaving that community behind
In my past three books, I've made the case that Java has to get simpler to thrive. That's not happening. Java's power structure is entrenched firmly in the enterprise space. In the past three Java One conferences, Sun has paid lip service to the need to simplify the Java API, but we're seeing only limited focus on richer user interfaces. The big vendors claim a drive to simplification, but the ultimate answer is EJB 3.0 , generics , and Java Server Faces (JSF) .
In fact, Java is moving away from its base. Remember, huge numbers of us are waiting for better, simpler ways to baby-sit a relational database with a web frontend. Instead, we're seeing more XML, more configuration, more layers of abstraction, and a steady drift away from the user interface and the end user. Java takes longer to learn and is no longer approachable.
One of the symptoms to this problem is Java's over-reliance on tools. We Java developers love our IDEs. The truth is that we can't live without them. In the not-too-distant past, I did some research for a major application server vendor. I found that the most productive developers liked the command line better. You can always find a command line, and an editor. If you're comfortable with these tools, you can go anywhere.
But in the past three years, we reached a tipping point of sorts. The smartest developers are moving toward IDEs, because the language has become too complex to manage without them. You simply need an IDE to do any real degree of refactoring. Other languages have IDEs, and also good programmers who are very comfortable without them.
You might argue that we need to fix Java, not scrap it. That would be easy if you could pinpoint the problems. If you thought the problems were in the language itself, you could just do some major surgery and offer a new version of Java. That's easier said than done. Sun has been very careful to preserve backward compatibility at all costs. If you look at the lack of commercial acceptance for Visual Basic .NET, it's easier to respect Sun's point of view. Microsoft made some radical changes to the language and libraries , and they weren't well received. Regardless of whether it's a good idea, Sun will continue to be conservative to protect customers.
Still, even if you look at relatively aggressive changes, most experts that I interviewed tend to think Sun is even now moving in the wrong direction. Instead of making Java more nimble and dynamic at the foundation, the changes, for the most part, amount to additional type safety—syntactic sugar hacks built into the syntax rather than the JVM that often lead to inconsistent behavior.
It's clear that libraries are problems, too. Sun has launched several belated simplification movements. So, if it's Java's libraries that are broken, and not the language itself, couldn't we just scrap a few libraries and start over on a more simplified foundation? That's the approach we suggested in Better, Faster, Lighter Java. For Java's most important and basic job, a web-based user interface on a relational database, I don't think Java's frameworks are moving in a healthy direction at all. Most frameworks are moving to add more compelling features rapidly, instead of simplifying what's already out there.
One bad library might point to a few local mistakes. Java's problems are more global. They target very complex problems at the expense of the easy problems that most Java developers need to solve. The problem is clear. The Java leadership is abandoning its base willingly and rapidly. It's a cultural problem, inherent in the Java community, vendors, programmers, and leadership. Java has become strictly a language for hard-core enterprise development of large-scale problems.
Over the next five years or so, the question in play will be this: are the Java community and expansive code library base worth sacrificing the productivity that other alternatives will bring to bear? So far, the answer has been a resounding "Yes." But we're nearing a point of no return. Java needs radical changes if it wants to continue to be all things to all people, but the community, culture, and leadership behind Java have never produced the kind of structural, sweeping changes that we need. Sun has always treated Java conservatively. The community process has always built the kind of software you'd imagine a community process would build: bloated compromises that please no one in the end. The Java community has always tolerated too much architecture, too much XML, and too many layers.
In the second half of this book, I make the case that a clean, dynamic language could gain footing easily in the gap between Visual Basic and enterprise Java. Once entrenched, it could take the same path Java did, into the enterprise. After all, the lion's share of Java development, even in the enterprise, is not full of distributed transaction and backbreaking loads. Five years ago, most developers that I talked to on a regular basis wanted a good way to baby-sit a big, fat relational database with a web-based user interface. Five years later, they want the same thing.
So far, I've shown you how Java is drifting away from its base. In the next chapter, you'll see the rules of the game for the next major successful language. In the next half of the book, I'll explore what alternative languages have to offer, and whether that will be enough to take you beyond Java.
[*] Venkat Subramaniam. Generics in Java, parts 1-3 (June 2005); http://www.agiledeveloper.com/articles/GenericsInJavaPartI.pdf, ...GenericsInJavaPartII.pdf, GenericsInJavaPartI.pdf.
No credit card required


text:
There are certain instances in time that a man never forgets…
They're locked into his head as "man moments" for all eternity. He'll fondly recall them often and without prompting, over and over again for the duration of his lifetime, likely expecting his feats to be carried down as oral legends on through to future generations.
Over two thousand years ago, these moments would have been something akin to Alexander the Great breaking the back of the Persian Empire at Gaugamela. Now, they're more likely to be finding a quick route to a party around massive fourth of July fireworks traffic (WHICH I totally did in 2002 by parking across the Sea Bright bridge in the Holy Cross parking lot, walking across the bridge to the fireworks on the beach, catching them, hiking back over the bridge, hopping in the car and taking the back route via Seven Bridges Road to get to my friend's party in Long Branch in 20 minutes instead of the TWO HOURS it took anyone else to make it to the party. IT WAS TOTALLY AWESOME!!!!!!).
I bring this up because I'm currently being put to my greatest man challenge of all time. The wife, having existed in the world of Japan for most of her life, is now trying to adapt to life in the States. I'm constantly posed with problems that require on-the-spot man solutions.
Perhaps my crowning achievement was my solution to the air conditioning problem yesterday. In our transitional period, we're staying with my 'rents, who love a constant stream of cold air at a temperature that would kill most Japanese people.
The wife was slowly dying, so we taped the vent shut, closed the door, and opened the windows to the hot and humid world outside, allowing her to live like a shut-in hikikomori in relative comfort, packing on Mt. Everest expedition winter gear for journeys to kitchen and bathroom.
But alas, the tape was no solution. Condensation was gathering on the tape and dripping down the paint, an event that would drive my mother, a member of the Martha Stewart Army of Perfect Household Percetion, completely insane.
What were we to do?
Like the great Alexander, it was time to put up or shut up. While my dad unscrewed the vent and peered at it in desperation, wondering how equilibrium could be achieved between two womens' warring viewpoints, we were starring at defeat without a single solution to save us.
That was when I saw it…
Recently unpacked and laying on the ground, was my magical soccer ball, sitting there, waiting for its epic glory, a perfect sphere. The vent was cylindrical. Like two pieces of something important, I looked to the circular vent hole and back at the spherical soccer ball. Then, like a two-year old sticking cylinder shapes in the cylinder holes and triangle shapes in the triangle holes, I quickly (and without a lot of practical thought) picked up the soccer ball and jammed it in the vent.
I struck a pose like Napoleon standing upon a mountain of victory.
Due to the beauty of physics and scientific shit, we later kinda guessed that the air in the ball was the perfect buffer between the warm, humid air and the cold air coming from the vent. I can't say I really thought about that at the time, but I will say I'd thought of it in future re-tellings of this tale (Hint: Eventually the vent will be a tiger's mouth).
The wife is now marginally surviving her borderline hikikomori life, the mother is kind of, somewhat able to deal with the vent not being on the wall, and Alexander the Great can eat a dick, cause I'm fucking amazing!!!!
I'll certainly be telling this story when I'm an 85-year old Alzheimer's patient to a male nurse named Eduardo in a rest home somewhere in Florida or Arizona. He'll nod in feigned-approval, knowing it's best to just let me release some steam, and at at least it's not the fucking fireworks story for the 1,000th time or telling him they're secretly poisoning my soup again. It's best never to get involved in affairs regarding old people and soup. It never really ends well….

subset: commoncrawl


text: Ask a Librarian - Adult Services Welcome to Oswego, ILLINOIS online assistance. This form is designed to answer questions/requests that do not require extensive research. Replies to clarify your request will be sent to your e-mail address. Please be as specific as possible in your initial inquiry. We strive to respond within 48 hours. However, our first priorities are to patrons in the library and phone inquiries. For urgent research matters, please visit us at the library or call adult services at: 630-978-1024 Fill out the form below for assistance or requests. When you are finished, please click on "Submit." Your Name Library Card Number Your Email Address Telephone (with area code) day evening Subject of your message choose one question or suggestion Interlibrary loan request Genealogy Type your adult services question or request below. Please be specific. Pickup location Oswego Montgomery


text:
The Five-Cross Files
Added: June 17, 2009 09:37:54 PM | Views: 2 |
The Five-Cross Files looks at topics that concern Thoroughbred breeders and pedigree enthusiasts. We examine the bloodlines of successful race horses and test the tools that are available to bloodstock professionals. Some of the material we cover is data-intensive and "serious" research; some is just for fun.
Regular followers of The Five-Cross Files will, I hope, be introduced to fresh approaches in the study of Thoroughbred pedigrees and bloodlines. We'll look at new tools that claim to improve the chances of success. And occasionally, we'll delve into novel concepts and ideas that lead to new avenues of research and understanding.
More listings in this category:
News & Blogs: Blogs: Breeding Blogs
Search this site in Google


text:
Mark Ronson has always been a tiptop fashion star and this year has been awash with his sartorial influence. From the stripes and Mod look of early 2008 to the sharp tailoring in kooky fabrics. From the 50s rock-star (read: Elvis) to the fur-clad aristo-geek.
Now, Ronson is taking it upon himself to lead the way with the trapper-hat wearer, 'Lightspeed Champion,' look as first established by our (soon to depart-) Jason Dike.


text:
WASHINGTON (AP) — First there was a two-year pay freeze. Now furloughs loom, as federal agencies make personnel costs a prime target for across-the-board budget cuts that went into effect last week. The result: anxiety and low morale in a workforce often envied for its job security.
"It would certainly put a strain on things," said Jonathan Schweizer, 61, an environmental engineer at the Environmental Protection Agency in Chicago who could be forced to take up to 13 days of unpaid leave this year. "I'd probably have to run up some credit card debt or defer maintenance on my home that I'd otherwise consider important."
Government agencies vary widely in how they are dealing with the "sequester," as the automatic cuts are called, according to labor unions that represent federal workers. Federal workers could face seven days of furloughs at the Housing and Urban Development Department, while Homeland Security personnel might see twice that number.
More than half of the nation's 2.1 million federal workers could be furloughed over the next six months. The federal government is the country's single largest employer, with its employees making up about 1.2 percent of the nation's work force.
"A lot of people think federal employees are fat-cat bureaucrats in Washington, but they don't realize more than 85 percent of these workers live outside of D.C.," said Tim Kauffman, spokesman for the American Federation of Government Employees. "A lot of them are not highly paid folks, like VA nurses and emergency response workers."
AFGE, which represents more than 600,000 federal workers, is trying to keep track of all the different furlough plans as their members face the prospect of lost wages during mandatory time off without pay and growing frustration about getting work done.
It seems the federal workforce is under constant attack these days, particularly from Republican lawmakers who want to shrink government and contend federal employees are overpaid with more generous benefits compared to the private sector. Even President Barack Obama supported the pay freeze, though he has issued an executive order that will give workers a 0.5 percent cost-of-living raise set for April. Still, Congress could take action that prevents the raise from happening.
The latest unemployment numbers offered even more bad news for government workers as federal employment, excluding the U.S. Postal Service, shrank by 4,200 jobs last month. That's the fifth straight month of cuts, which may reflect a trend towards greater belt-tightening.
Schweizer conceded that working for the federal government remains a lot more stable than other industries, but he said the comfort level has changed.
"We've definitely been squeezed financially," he said. "People have left and haven't been replaced. That puts more pressure on us as far as getting the job done and it certainly hurts morale in my office."
Some agencies, including the Justice Department, already have sent out formal furlough notices to workers indicating furloughs of up to 14 days could begin as soon as April. All furloughs are subject to 30-day notices and to bargaining with unions representing government workers.
While the unions can't stop the furloughs, they can try to ease the pain for employees by negotiating different times, allowing employees to swap days, or other changes. Unions are also trying to persuade agencies to make other cuts that don't affect worker pay, such as cutting government contracts with private companies.
The Social Security Administration, for example, says it hopes to avoid furloughs altogether, instead saving money by terminating more than 1,500 temporary and other workers and losing more than 5,000 other positions through attrition.
"In some cases, the agencies can figure out ways to slow down federal contracts instead of taking it out of federal personnel," said Patrick Lester, director of fiscal policy for the Center for Effective Government.
But there are limits on flexibility. "If they are largely personnel-driven, there's no way to avoid personnel-related cuts," Lester said.
Meat and poultry inspectors at the Agriculture Department initially were told they might be furloughed for 11 consecutive days between June and July, possibly leading to a meat supply shortage and higher prices. But Agriculture Secretary Tom Vilsack backed away from that at a House hearing this week, telling lawmakers that the furloughs would not be consecutive after all.
"Furloughs are going to cause disruption," department spokeswoman Courtney Rowe said Wednesday. "We're looking to do it in ways that cause the minimum impact."
At the EPA, officials are planning up to 13 furlough days, with the first four coming between April and June 1, said John O'Grady, president of AFGE local 704. There also would be mandatory furlough days on May 24, July 5 and Aug. 30 — coming around the Memorial Day, July Fourth and Labor Day holidays — that would shut the agency entirely, he said.
Some of the longest furloughs are expected at the Defense Department, where about 800,000 civilian employees face up to 22 unpaid days off over the next several months. The agency has not yet specified when those will happen, but some agencies may try to put off furloughs for several months in hopes that Congress will come up with a budget fix.
More flexibility could be coming soon. A House measure passed Wednesday that prevents a shutdown of federal agencies on March 27 also would grant the Pentagon greater latitude in implementing its share of short-term spending cuts. Senate Democrats could try to expand that flexibility to other agencies, potentially reducing the number of workers who are furloughed.
Sen. Roy Blunt, R-Mo., said he plans to introduce legislation that would allow the Obama administration to exempt from furloughs essential federal employees, such as those who perform food inspections and other urgent functions, so the consequences of the budget cuts would not harm the economy or public safety.
Border Patrol agents at the Homeland Security Department, for example, face up to 14 days of furloughs and a moratorium on regular overtime pay, which could mean a 35 percent decline in wages for the rest of the fiscal year. Union officials warn that could mean trouble for border security, as agents aren't used to stopping work just because their shifts end, especially if they are chasing drug or gun smugglers.
Follow Sam Hananel on Twitter: http://twitter.com/SamHananelAP
Associated Press Writer Christopher S. Rugaber contributed to this report.


text:
Parkin Archeological State Park in eastern Arkansas at Parkin preserves and interprets the Parkin site on the St. Francis River where a 17-acre Mississippi Period, American Indian village was located from A.D. 1000 to 1600. A large platform mound on the river bank remains. The site is important for understanding the history and prehistory of northeast Arkansas. There were once many archeological sites similar to Parkin throughout this region, but they did not survive as eastern Arkansas was settled.
Many scholars believe the Parkin site is the American Indian village of Casqui visited by the expedition of Hernando de Soto in 1541, and written about in his chronicles.
Arkansas State Parks and the Arkansas Archeological Survey manage this National Historic Landmark. In conjunction with the founding of the state park, a research station was established at Parkin by the Arkansas Archeological Survey. Station archeologists conduct research at the site that provides visitors with a unique opportunity to see how we learn about prehistory. Visitors can watch research in progress, and see firsthand the results of careful excavations and laboratory analysis.
Visit The Crate Project below to view 3D renderings and movies about life at the Parkin site during the Mississippi Period.
The park visitor center includes an interpretive exhibit area, auditorium, and gift shop. A picnic area, playground, and standard pavilion (enclosed) are located nearby. A boat ramp provides access to the St. Francis River.
Park interpreters offer site tours, educational programs, scout patch activities, workshops, and special events throughout the year.
The park also interprets the Northern Ohio Lumber and Cooperage Company that had a mill on this site in the early 20th century. Tour the circa 1910 Northern Ohio School, a historic one-room schoolhouse. By the beginning of World War II, there were 15 one-room and two-room schoolhouses providing education for children in Parkin, a town of less than 2,000 citizens. Today, the Northern Ohio School, which is on the National Register of Historic Places, is the only one of these early Parkin structures still standing. The stories it tells of what took place here in the early 20th century in and around the Sawdust Hill community are compelling parts of the historic fabric of Parkin, just as is the park's interpretation of the prehistoric village of Casqui is, too.
As the 20th century dawned and northern timberlands were depleted, timber buyers looked to the dense forests in the South. In March 1902, S.W. Sterling, a timber buyer for a firm in Grafton, Ohio, was buying timber in Missouri when he heard about the fine timber at Parkin, Arkansas. Sterling bought a mill located just south of the American Indian mound here. Between 1902 and 1904, Henry Coldren moved his Grafton, Ohio, lumber company to Parkin. In 1906, Sterling and Coldren merged their two companies and established the Northern Ohio Cooperage and Lumber Company. The mill provided work for many people during a time when there were few jobs other than agriculture. Sawmills depended on river and rails to ship finished lumber to growing markets in the North. At the turn of the 20th century, Parkin had river, rail, and vast uncut timberlands. Parkin was poised to take advantage of the timber boom. Around 1910, the Northern Ohio Cooperage and Lumber Company constructed a wood framed one-room schoolhouse for mill workers' children. Three-quarters of the sawmill workforce were black men. The school was built adjacent to the northern boundary of the prehistoric American Indian village site within easy walking distance of the mill community. The Northern Ohio School provided first through eighth grade educations for the children of the sawmill workers until all the Parkin area schools were consolidated into the Central Elementary School in 1948.
Parkin Archeological State Park is on the northern edge of Parkin at the junction of U.S. 64 and Ark. 184 north.
Museum / Archeological Site Self-Guided Walking Tour: Free
Archeological Site Guided Walking Tour:
Adult: $3.50 each*
Child (6-12): $2.50 each
Family: $12
*Adult Group Rates (15 or more with advance notice): $.25 off above fees
Bona Fide School Groups (with advance notice): $2/person
For more information about Arkansas State Parks historic, heritage, and cultural parks, go to: http://www.historystateparks.com/
Parkin Archeological State Park is part of the Great River Road. Please visit here for more details.
Parkin Archeological State Park
with our helpful maps and brochures! Just click on an icon to view, or right-click on your mouse to save a copy to your computer.
From trails to historic events, tours and fun family activities...Never miss out on an Arkansas State Parks Adventure again!


text:
BILLINGS, Mont. (AP) — Energy companies behind the oil boom sweeping the Northern Plains increasingly are turning to trains to move their crude across the U.S. The move comes as pipeline plans stall and existing pipelines can't keep up with demand.
Delivering oil by rail to refineries thousands of miles away on the East, West and Gulf coasts costs more. But it can bring increased profits — of $10 or more a barrel.
It also means a steady parade of trains carrying the hazardous material rumbling out of North Dakota and Montana and across the country.
Experts and federal regulators say rail transport is less safe than pipelines. That's raised concerns the proliferation of oil trains could lead to a major derailment and spill.
Companies say they are making track upgrades and other improvements.


text:
Judge rules to keep officers on Laurie listBy DALE VINCENT
New Hampshire Union Leader
December 05. 2013 6:43PM
MANCHESTER — Three Manchester police officers this week filed a motion asking Hillsborough County Superior Court North Judge David Garfunkel to reconsider his rejection of their request to have their names taken off the so-called "Laurie list" that county prosecutors maintain.
Police officers on the Laurie list are considered to have credibility issues as a result of incidents in their police careers and defense attorneys need to be informed if the officers were involved in the investigation or are to testify in their client's trial. The information presumably could help the defense.
The three officers, and a fourth officer who retired shortly after the March 3, 2010 incident at the Strange Brew Tavern, 88 Market St., were off duty at the time Christopher Micklovich said they beat him severely, causing multiple broken facial bones and leaving him with sight issues and post traumatic stress.
Jonathan Duchesne, Matthew Jajuga, Michael Buckley and Lt. Ernie Goodno argued Micklovich was drunk and disorderly, insulted a patron, refused to leave the tavern, damaged property and appeared ready to assault the owner when they sought to remove and arrest him.
Micklovich was initially charged with disorderly conduct, criminal mischief, resisting arrest and assault on a police officer, but the charges were eventually dropped.
Chief David Mara originally supported his officers, but after internal and criminal investigations conducted in-house, Mara suspended the three officers still working and wrote to then-Hillsborough County Attorney Robert Walsh, asking to have the officers placed on the Laurie list.
An investigation by the New Hampshire Attorney General's Office determined in July 2010 that the officers had not used excessive force.
The officers' union sought arbitration under their contract and the arbitrator ruled in January 2012 that the city did not have "just cause to take disciplinary action … (the officers') grievances are sustained."
The officers got the pay they lost while suspended and, most important to them, the information about the incident was removed from their personnel files as if the incident had never occurred.
Mara wrote to the new county attorney, Dennis Hogan, this time asking to have the officers' names removed from the Laurie list. Mara said he would have been a hypocrite if he didn't make the request.
But Hogan refused to remove the names, writing in February 2012 that the arbitrator's judgment that the officers did not use excessive force "does not change the following facts: There is an injured party and witnesses that saw what looked to them as three men beating a fourth man outside a bar. … there is a sustained complaint of excessive use of force."
Although the AG had found the officers did not use excessive force, then Attorney General Michael Delaney declined to order the county attorney to remove the names after the arbitrator's ruling.
Meanwhile, Micklovich filed suit against the city in U.S. District Court and, after negotiations, the city settled with Micklovich in mid-May 2012, paying him $200,000.
Current Hillsborough County Attorney Patricia LaFrance has also refused to remove the three officers' names from the county's Laurie list, which prompted the officers' request for a judge to order her to do so.
In paperwork and at a hearing Sept. 5 before Judge David Garfunkel, the attorney for the officers, John Krupski, argued the reason for putting the officers' names on the list no longer exists and so they should not be on it.
But Associate Attorney General Jane Young, who was not a party to the action but participated in the hearing, said it wouldn't matter what Garfunkel ruled.
"I know it and I'm going to turn it over every time until the Supreme Court tells me differently," she said. Young said prosecutors have to notify the courts and leave it to judges to decide wether the officer's credibility issue can be used at trial.
Krupski told the judge: "It's a stigma that follows you. People think you are a liar."
Garfunkel's decision, issued Nov. 20, denied the officers' request that LaFrance be ordered to remove their names from the list.
The officers' attorney filed a motion for reconsideration Dec. 2, suggesting the judge "misapprehended and/or overlooked" a number of issues and points of law and again requested the judge issue a permanent injunction prohibiting LaFrance from designating the officers' participation in the Strange Brew incident "a so-called Laurie issue."
(New Hampshire Sunday News Reporter Nancy West contributed to this report.)


text:
It takes three things to make a country club successful in Bob Esworthy's opinion: a great grounds superintendent, a great chef and great service.
It takes three things to make a country club successful in Bob Esworthy's opinion: a great grounds superintendent, a great chef and great service. The general manager of Sapona Ridge Country Club said the recently purchased facility now has all three components of that equation.
Richard Childress purchased the financially struggling club in August, and since that time he has been making changes.
"Richard wants to make this club the premier club in this area," Esworthy said. "We've freshened up the clubhouse," he added, which includes everything from general cleaning to updating the light fixtures.
In addition to the changes made to the look of the clubhouse, a new chef has taken his place in the kitchen. Sean Wehr has been a chef for about 25 years and accepted the position at Sapona Ridge because of the new vision for the country club.
"I wanted to help turn the membership numbers around and focus on fresh food ideas that work well with the different seasons," Wehr said.
He doesn't necessarily have a favorite style but occasionally pulls from his past experience in New Orleans. He also likes to highlight local produce and Carolina seafood.
"I would like to bring this club back to life through the dining," Wehr said.
When he first accepted the position, he noticed that not many members were dinning at the clubhouse. To see what works and to what people respond, Wehr has changed the menu twice already and is still in the process of tweaking it.
"I want to make dinner enticing to the members. My goal is to make Sapona an everyday dining option and make sure the food is fresh and affordable," Wehr said.
But not only have changes been going on inside the walls of the clubhouse but outside as well. The tennis courts have been resurfaced, new golf carts have been purchased, and an extension has been built to the golf barn. Overgrown shrubbery has been removed from the landscape, and more than 140 trees will be removed from the golf course. The trees that will be left will have their canopy raised.
One of the larger projects to begin in the middle of May is to redo all 19 greens. The golf course will shut down for three weeks if all goes according to plan. New Life Turf out of Norway, S.C., is handling the entire project.
"We're trying to get the golf course in shape for the members," Esworthy said. "(Childress) really wants to make this a great place, and I want to make this a great place."
Esworthy is commuting to Lexington after leaving a position as the golf professional at a country club in Pinehurst. His goal is to move his family to Lexington soon.
While many changes have been made it is certainly not the end. Esworthy said he has noticed a need for increased attention to women's and children's golf. He would also like to see a fitness center installed at Sapona Ridge in the future.
"I think the members are very happy with the changes. At first, the members were very skeptical, and we had to earn their trust," Esworthy said. "We want members to be proud of their club and bring their friends, family and colleagues."
Rebekah Cansler McGee can be reached at 249-3981 ext. 228 or firstname.lastname@example.com.


text:
Join the Nation's Conversation
To find out more about Facebook commenting please read the Conversation Guidelines and FAQs
LG's Ultra High-Definition TV comes with big price tag
On the surface, the 84LM9600 seems like any other LG Smart TV, just bigger. But look closer—this 84-inch monster is a different beast entirely. It's one of the new Ultra High-Definition TVs (UHDTV), with more than 8 million pixels of resolution and a price tag matching that of a Hyundai Sonata ($20,000).
MORE: Read the full, in-depth review on Reviewed.com
We saw this gargantuan set at CES 2012, back when the format was still called 4K and touching wasn't allowed. But LG recently invited us to take a closer look, giving us four hours alone with the future of television. LG had some sample UHDTV content for us to watch and, for the most part, it looked glorious: The UHDTV content we saw took full advantage of the screen's staggering 8,294,400 pixel count. It's not quite as jaw-dropping as the jump from standard-definition to high-definition was, but details come to life on the massive, ultra high-resolution display.
MORE: The best TVs for streaming Netflix
Does this mean that your HD television, with its miniscule 1080p resolution, is already outdated? Well…probably not. Yeah, Ultra HD displays (four times the resolution of 1080p) are now commercially available, but at four times the resolution of 1080p, you'll have a tough time finding anything to watch. And with most cable signals barely topping 720p, buying a UHDTV now is like calling your real estate agent to buy property on Mars. Is this TV worth as much as car? Early adopters can find out right now: It's been on sale at select retailers since October. The rest of us will wait it out for the next half-decade.
GUIDE: Best Budget TV
For more TV reviews, head to TelevisionInfo.com, part of the Reviewed.com network, a division of USA Today.


text:
Search Term
Advanced Search
0 Items (Empty)
Store Home
> Release Title "N"
Various Artist Compilations, Single Album Release. Album Names Beginning with "N".
Default | Name Up | Name Down | Price Up | Price Down
LP3902 - Narada. The Christmas Collection
Click to view Song Listing and other details. Also available on CD at www.christmaslpstocd.com
LSP2579 - Nashville Christmas Party. RCA Records
PC44413 - Nashville's Greatest Christmas Hits. Volume 2
PC44412 - Nashville's Greatest Christmas Hits.
Click to view Song Listing and other details. You will choose your shipping options at check-out. .
CS0002 - New England Christmastide
FR0021 - Noel Sound. Fuller Productions
PQ12482 - Noel! Noel!
2985 Wilmington Rd Lebanon, Ohio 45036 United States
© 2018 ChristmasLps.com Operated by DLF Music Transfer LLC. All rights reserved worldwide.


text:
Records Relating to Depositors Economic Protect... | State Archives Catalog
Please Note: The arrangement and descriptions of the records in this record group are largely based on descriptions and lists provided by the Rhode Island Depositors Economic Protection Corporation at the time of transfer. The volume of records transferred has so far precluded a detailed examination of the materials to verify the accuracy of the lists and descriptions.
In 1991, the Rhode Island General Assembly created the Depositors Economic Protection Corporation (DEPCO) to assist in protecting the interests of depositors of certain credit unions, loan and investment companies and bank and trust companies in the state (PL 1991, ch.116.) This was made necessary by a banking crisis triggered by the collapse of the Rhode Island Share and Depositors' Indemnity Corporation (RISDIC), a private firm established by the General Assembly in 1969 to insure deposits in certain of Rhode Island's financial institutions. The failure of many of these institutions over a short period of time had overwhelmed RISDIC's limited financial resources. This prompted Governor Bruce Sundlun to declare a banking emergency and to close over forty institutions unable to obtain legally required insurance to back their deposits. (This was the last in a series of post-1970 failures of state-chartered, privately operated deposit insurance funds for thrift institutions, industrial banks, and some credit unions. The failures began in Mississippi in 1976 and continued in Nebraska and California (1983), Ohio and Maryland (1985), Utah and Colorado (1987), and Rhode Island (1991.)
The lockout provoked a financial crisis. It prevented depositors from withdrawing their funds and caused consternation in myriad other ways. Over time, many of the affected financial institutions were able to obtain deposit insurance from other sources, such as the Federal Deposit Insurance Corporation, and to resume operations. Others were absorbed by insured entities. In the end ten financial institutions were unable to reopen. These financial institutions' lending practices accounted for their eventual insolvency. They were all placed into conservatorship.
DEPCO was created to assume the role of a liquidating bank for the closed, uninsurable institutions. As such, certain accounting principles governing liquidating banks were implemented by DEPCO. DEPCO was empowered to act as the receiver, to manage the failed banks' real estate, marshal and liquidate their assets, repay depositors, and seek recovery from those responsible for the fiasco. It was established as a semi-autonomous public corporation. It was dissolved on April 30, 2003.
The records in this Record Group include DEPCO's corporate records as well as the records of the Select Commission established to investigate RISDIC's failure; the Gregorian Commission; RISDIC's corporate records and, also, dating back to 1936, the corporate records from those financial institutions that fell into bankruptcy and came under DEPCO receivership.


text:
A time-tested methodology for consortia certification programs
The Open Group partners with many external consortia to facilitate the development of their standards, best practices and certification programs through the use of our time-tested vendor-neutral review and approval procedures and our experienced staff.
In the certification area, The Open Group works with a consortium and their members to define and design a certification program specifically for their standards and best practices that is aligned with their stakeholders' requirements. That may include interfacing with validation houses, with third- party best-practice assessors, utilizing The Open Group's own assessors and assessor trainers, the development of conformance test suites or best-practice assessment procedures.
Because of The Open Group's extensive international experience in developing and operating certification programs, we have the development staff, IT systems, formal procedures, proven processes, and the operational staff to get our consortia partners up and running faster and more cost-effectively than our competitors. We have developed certification programs for SIF, the Free Standards Group, Hotel Technology Next Generation (HTNG), NFC Forum, North American State and Provinical Lotteries (NASPL).
If you are interested in learning more about how The Open Group can help your organization facilitate standards or best practice development or how we can help you create a certification program for your existing standards and best practices, please contact Mike Hickey [1].


text:
Send Results to This Email:
Street Address:
Street Address:
The Walgreens store at 2655 Frayser Blvd. in Frayser has been sold to a North Carolina buyer for $6.4 million.
WGC Partners (Memphis) LLC of Winston-Salem, N.C., bought the 14,850-square-foot Walgreens in an Oct. 21 special warranty deed from NTP Frayser-Range Line, comprised of three entities – WN Frayser-Range Line LLC, JMT Frayser-Range Line LLC and SFC Frayser-Range LLC.
Built in 2010, the Class A retail store sits on 1.5 acres at the southeast corner of Frayser Boulevard and Range Line Road. The Shelby County Assessor of Property's 2013 appraisal is $1.9 million.
In conjunction with the purchase, WGC Partners (Memphis) filed a $3.8 million loan through EverBank. Paul G. Chrysson, James Chrysson and James D. Yopp Jr. signed the trust deed as managers of the borrower.
Source: The Daily News Online & Chandler Reports– Daily News staff
The $180 million redevelopment of the Sears Crosstown building goes to the Downtown Memphis Commission Design Review Board Wednesday, Nov. 6.
The review board will vote on design elements of the project as proposed by Crosstown LLC. A staff report recommends approval of the changes the group plans for the 14-story building and its detached parking garage.
The critical design elements include replacing original windows and a drive-thru feature toward the rear of the building off North Claybrook Street.
The Crosstown building is not in the Central Business Improvement District governed by Downtown Memphis Commission design guidelines. But it is close enough that the project qualified and was granted a payment-in-lieu-of-taxes arrangement by the Center City Revenue Finance Corp.
The design guidelines call for preserving existing windows and repairing them when possible. But the staff report concludes replacing the windows with ones that match the character of the building is appropriate, given the condition of the existing windows.
The drive-thru feature is also acceptable to the staff because of its location in the rear and its relatively small size compared to the scale of the entire building.
The Design Review Board meets at 4 p.m. in the Downtown Memphis Commission conference room, 114 N. Main St.
– Bill Dries
UT Medical Group Inc. has named Brad Canada as chief medical officer.
Canada, who previously served as associate chief medical officer and vice president of physician services for UT Medical Group, is a UT Medical Group nephrologist and an associate professor of medicine at the University of Tennessee Health Science Center. Canada also serves as medical director for the Satellite Dialysis clinic.
UT Medical Group is a private, nonprofit group practice affiliated with the UT Health Science Center College of Medicine faculty.
Canada earned his undergraduate degree at the University of Mississippi and completed his medical degree, nephrology fellowship and master's degree in epidemiology at UT Health Science Center.
– Amos Maki
Mid-South Spay & Neuter Services will hold its seventh annual SPAYtacular Gala and Silent Auction Nov. 3.
The event is the biggest fundraiser of the year for the group and will take place from 2 p.m. to 5 p.m. at Downtown's Jack Robinson Gallery, 44 Huling Ave.
Amenities for attendees include mimosas, a bloody mary bar, beer from Yazoo Brewing Co., wine and brunch food, as well as music from Vanessa Winter and Deering and Down, with Ron Childers as the emcee.
Tickets are $40 per person and $75 for a pair and can be purchased at spaytacular2013.eventbrite.com.
All proceeds from SPAYtacular supports the mission of reducing pet overpopulation through affordable spay and neuter surgery.
– Andy Meek
The National Transportation Safety Board has released a preliminary report on a medical helicopter crash that killed a pilot and two hospital workers in West Tennessee.
The report released on the NTSB website shows that the helicopter was headed east when it began to climb and made a right turn to the south, away from the observed course. The helicopter was going 112 mph and was 1,560 feet above sea level at the last data point established by satellite tracking.
The report says the aircraft crashed into a wooded area about 6:05 a.m. on Oct. 22 in Somerville. The helicopter went down while on the way to pick up an ailing child in Bolivar.
NTSB investigator Ralph Hicks released similar details the day after the crash.
– The Associated Press
Gov. Bill Haslam says it is unlikely the state will hammer out a deal with the federal government on Medicaid expansion before the new year.
The Republican governor told reporters in Nashville on Wednesday that negotiations have been hampered by the problems with the online insurance marketplaces.
Haslam said the federal government officials that the state has been in discussions with have been busy dealing with the federal exchange website serving 36 states including Tennessee.
Health and Human Services Secretary Kathleen Sebelius on Wednesday set a Nov. 30 deadline for fixing the problems that have overwhelmed the website intended to make shopping for insurance clear and simple.
Haslam in March declined $1.4 billion in federal funds to cover about 140,000 uninsured Tennesseans under the terms the money was offered.
Average U.S. rates on fixed mortgages fell for the second straight week and are at their lowest levels in four months.
Mortgage buyer Freddie Mac said Thursday that the average rate on the 30-year loan declined to 4.10 percent from 4.13 percent last week. The average on the 15-year fixed loan eased to 3.20 percent from 3.24 percent.
Rates have been falling since September when the Federal Reserve surprised investors by continuing to buy $85 billion a month in bonds. The purchases are intended to keep long-term interest rates low.
Rates had spiked over the summer when the Fed indicated it might reduce those purchases later this year. But hiring has slowed since then. Many now expect the Fed won't taper until next year.
The average on the 30-year loan has now fallen about half a percentage point since a hitting two-year high over the summer. The lower rates appear to be sparking a surge in activity by prospective homebuyers and homeowners looking to refinance.
The number of Americans applying for unemployment benefits fell 10,000 last week to a seasonally adjusted 340,000, a sign that employers are laying off very few workers.
The Labor Department said Thursday that the four-week average rose 8,000 to 356,250, the highest since April. The 16-day partial government shutdown and backlogs in California due to computer upgrades inflated the average.
Still, a government spokesman said those unusual factors did not affect last week's first-time applications, which appeared to be free of distortions for the first time in two months.
Applications are a proxy for layoffs. They have fallen for three straight weeks and are just above the pre-recession levels reached in August.
Fewer applications are typically followed by more job gains. But hiring has slowed in recent months, rather than accelerated.
The economy added an average 143,000 jobs a month from July through September. That's down from an average of 182,000 in April through June, and 207,000 during the first three months of the year.
Nearly 3.9 million people received unemployment benefits in the week ended Oct. 12, the latest data available. That's about 40,000 more than the previous week. But a year ago, more than 5 million people were receiving unemployment aid.
Hiring likely weakened even further in October because of the shutdown, which ended on Oct. 16.
U.S. Supreme Court Justice Antonin Scalia is visiting Memphis in December.
He'll speak at a luncheon at The Peabody Hotel from noon to 1 p.m. Dec. 16, then head to the University of Memphis Cecil C. Humphreys School of Law for a private program with law students after the luncheon.
The Peabody luncheon is open to the public. For more information, contact Paula Bethge, 678-4922, firstname.lastname@example.com.
- Andy Meek
Copyright 1995 -
by The Daily News Publishing Co. Inc. - All Rights Reserved


text:
Happy Family
Metal Print Details
Totally contemporary, Metal Prints have vibrant, high definition colours that have superior moisture and stain resistant properties. Let your creative side shine as you match and mesh different combinations to showcase your best moments in style. Fully personalise it with images, captions, backgrounds, layout and scrapbook items. Design one to suit any room in any of our varied sizes, available in square, portrait, and landscape. Learn more
Hang It Up
All metal prints comes with its own support structure on its back, complete with adjustable mounting, so it's ready to be hanged the moment it arrives!
Our Metal Prints are made out of specially-made Aluminium which gives it that sleek, sophisticated contemporary feel. A stunning choice for all types of images with its Gloss finish, images are digitally printed using dye sublimation technology directly to a 1mm thin metal slate to give it that sharp image reproduction. Because it's made out of metal, it has a much heavier and sturdier tribute, placing it in a class of its own.
Printing Time
2-3 Business Days
Personalization is key. That is why with our editor, you are able to add your favourite photos, include text with different font types, use our wide array of page styles, backgrounds and scrapbook items to form your unique photo print.


text:
Houses & Single Family Homes in Saline Looking to buy single family homes & houses? Browse single family homes & houses in Saline, Louisiana Real Estate on NOLA.com.
We're sorry, no listings were found that match your criteria.
Moving Tools
Real Estate Tips & Resources
- Louisiana Real Estate Listings
- Browse by Cities in Bienville Parish
- Foreclosure Real Estate in LA
- Saline Real Estate Listings
- Home Mortgage Companies in Saline
- Real Estate Appraisers in Saline
- Real Estate Brokers in Saline
- Real Estate Attorneys in Saline
- Title Companies in Saline
- Escrow Services in Saline
- Home Inspection Services in Saline
- Mortgage Calculators
- LA Real Estate Jobs
- LA Real Estate News
- LA Home & Garden


text:
Antarctica: Now on Google Maps Street View!
How often do you say to yourself, "I sure would like to see this address that I'm mapping on the frozen continent of Antarctica"? A couple times a day, right? Well: Antarctica now has a Google Maps Street View.
Or should I say... Ice Sheet View?! Am I right? No, but really, this is real:
Besides Antarctica, Google's added Brazil and Ireland to their Street View database. They now cover pieces of all seven continents.


text:
Elastic Nail
Rush Nail
Dynamic Compression Plate (DCP Small)
Low Contact Dynamic Compression Plate (LC-DCP) Small
1/3rd Tubular Plate
Cortical Screw 3.5mm (self Tapping)
Cortex Locked Screw 5.0mm (Solid)(Hex Drive)
Semi Tubular Locked Plate
Semi Tubular Plate
Sharma Orthopedic
Orthopedic Implants & Instruments : Quality and trust are two major
factors that an Orthopedic surgeon takes into consideration while selecting orthopedic
implants. Orthopedic experts all over the world not only trust NET Orthopedic Implants
but also recommends them to the fellow professionals with confidence because of
their high quality. Sharma Orthopedic India Pvt. Ltd. has its own state-of-the-art-factory
that manufactures Orthopedic Implants and Instruments. The Orthopedic Implants factory
is perhaps the biggest (skilled production staff of about 250 people) and most well
equipped in India. We, as a leading Orthopaedic Implants manufacturer and Orthopaedic
Implant suppliers, have become a top orthopedic company. Sharma Orthopedic (India) Pvt.
Ltd. is an India based company.
The company operates under a quality system that complies with ISO 9001:2008, ISO
13485:2003, CE and WHO:GMP. Sharma Orthopedic India Pvt. Ltd. is currently supplying
orthopedic implants in Titanium and stainless steel to more than 80 countries. Many
reputed companies in Europe and USA regularly buy orthopedic implants from us. We
are leading manufacturer and suppliers of orthopedic implants.
Orthopedic Implants & Instruments
4 stars - based on 250 reviews


text:
The lineup was lackluster, aside from Puig hitting in the No. 3 spot. Most of the Dodger stars had played against the Padres earlier in the day in Peoria, Ariz. But the team left Puig behind, and everyone in attendance got quite the treat.
In Puig's first at-bat, he did his best Matt Kemp impression by blasting a 2-run home run to right-center field off the Royals' Yordano Ventura.
When Ned Colletti commented earlier this winter about the sound the bat makes when Puig hits it, he wasn't inaccurate. The second Puig connected with that ball, everyone knew it was long gone.
In his next at-bat, Puig laced a single to right field. He hit it so hard, Royals' outfielder Jeff Francoeur attempted to throw Puig out at first. Puig responded by stealing second base. He'd eventually come around to score.
In his third and final at-bat, he smoked a single back up the middle. Then, the baserunning antics ensued.
On a pop fly down the right-field line, Puig didn't get off the base nearly far enough, but was still able to beat the throw into second. Then, on a bloop single, he had to slide into third base. Unbeknownst to the Royals, Puig dashed for home and slid in safely without a throw.
Like I said, he did his best Kemp impression for the 8,125 folks in attendance. It was the Puig show and everyone was watching.
Puig's line: 3-for-3, 2-run HR, two singles, a stolen base and three runs scored. Yep.
After the game, manager Don Mattingly made a Puig comparison we've yet to hear (per Eric Stephen):
"'I don't think I've seen anybody do something like this. I've seen guys have good springs, but not with that kind of energy,. You don't see this kind of package. This is a Bo Jackson-type package that you just don't see.'"Bo Freaking Jackson? I can live with that. Let's just hope Puig doesn't take up football anytime soon.
Now, it is spring training and he isn't facing Major League-equivalent talent, but he is facing Triple-A talent. For a guy who has less than 100 professional plate appearances (regular season), that's rather remarkable.
Puig is still going to start the season in the minor leagues (likely with Double-A Chattanooga), but his ticket to The Show could be punched at any time, especially if he impresses against stiff Double-A competition.
Side note: Unfortunately, I didn't get any video of Puig's home run, but I got everything else. I'll work on posting that either later this weekend or next week. For now, just enjoy the photos.
Photo credits: Dustin Nosler, Feelin' Kinda Blue


text:
Note: Images may show upgrades
Be the first to review this product
Availability: In stock
Vaseline Petrolatum Gauze is a fine-mesh, absorbent gauze impregnated with white petrolatum. This product remains moist, non-toxic and non-irritating. It is non-adherent and sterile.
Please call us for specific details.
Please call us for specific details
Only registered users can write reviews. Please, log in or register
87 Danbury Road, Unit 1 New Milford, CT 06776
Tel: (866) 563-6812 Mon-Fri, 8.30am to 5pm EST Fax: (860) 838-4671
App for iOS
App for Android
© 2017 Medicaleshop.com. All Rights Reserved.