text:
This post is a go-to quick reference for exactly how covariance and contravariance work in Java. Different programming languages do this in different ways, so sometimes it can be tricky to switch between languages and keep the rules straight. When you switch over to Java, use this guide to refresh your memory.
Type conversion in Java is covariant (unlike Dart). That means that if
SubClazz is a subtype of
Clazz then a
SubClazz reference can be cast to a
public class Clazz { }
public class SubClazz extends Clazz { }
(Clazz)new SubClazz(); // OK
(SubClazz)new Clazz(); // Error
Conversion can occur implictly during assignment:
Clazz instance = new SubClazz();
Conversion can also occur implicitly when returning from a method or when passing arguments.
public Clazz makeClazz() {
return new SubClazz();
public Clazz takeClazz(Clazz foo) { }
takeClazz(new SubClazz());
Arrays in Java are covariant in the type of the objects they hold. In other words,
Clazz[] can hold
SubClazz objects.
Clazz[] array = new Clazz[10];
array[0] = new SubClazz();
They are also covariant in the type of the array itself. You can directly assign a
SubClazz[] type to a
Clazz[] array = new SubClazz[10];
Be careful though; the above line is dangerous. Although the type of the
array variable is
Clazz[], the actual array object on the heap is a
SubClazz[]. For that reason, the following code compiles fine but throws a
java.lang.ArrayStoreException at runtime:
Clazz[] array = new SubClazz[10];
array[0] = new Clazz();
The overriding method is covariant in the return type and invariant in the argument types. That means that the return type of the overriding method can be a subclass of the return type of the overridden method, but the argument types must match exactly.
public interface Parent {
public Clazz act(Clazz argument);
public interface Child extends Parent {
public SubClazz act(Clazz argument);
If the argument types aren't identical in the subclass then the method will be overloaded instead of overridden. You should always use the
@Override annotation to ensure that this doesn't happen accidentally.
Unless bounds are involved, generic types are invariant with respect to the parameterized type. So you can't do covariant ArrayLists like this:
ArrayList<Clazz> ary = new ArrayList<SubClazz>(); // Error!
The normal rules apply to the type being parameterized:
List<Clazz> list = new ArrayList<Clazz>();
Unbounded wildcards allow assignment with any type parameter:
List<?> list = new ArrayList<Clazz>();
Bounded wildcards affect assignment like you might expect:
List<? extends Clazz> list = new ArrayList<SubClazz>();
List<? super Clazz> list2 = new ArrayList<Object>();
Java is smart enough that more restrictive type bounds are commensurable with less restrictive type bounds when appropriate:
List<? super Clazz> clazzList;
List<? super SubClazz> subClazzList;
subClazzList = clazzList;
Type parameter bounds work the same way, although they cannot be lower-bounded. If you have multiple upper bounds on a type parameter, you can upcast to any of them, as expected:
interface A {}
interface B {}
interface C extends A, B {}
public class Holder<T extends A & B> {
T member;
A member1 = new Holder<C>().member;
B member2 = new Holder<C>().member;
C member3 = new Holder<C>().member;
You can add or remove the type parameters from the return type of an overriding method and it will still compile:
public interface Parent {
public List echo();
public interface Child extends Parent {
public List<String> echo();
public interface Parent {
public List<String> echo();
public interface Child extends Parent {
public List echo();
Wildcards can be present in the types of method arguments. If you want to override a method with a wildcard-typed argument, the overriding method must have an identical type parameter. You cannot be "more specific" with the overriding method:
public interface Parent {
public void act(List<? extends List> a);
public interface Child extends Parent {
public void act(List<? extends ArrayList> a); // Error!
Also, you can replace any type-parameterized method argument with a non-type-parameterized method argument in the subclass and it will still be considered an override:
public interface Parent {
public void act(List<? extends Number> a);
public interface Child extends Parent {
public void act(List a);
You are given a set of rectangles in no particular order. They have varying widths and heights, but their bottom edges are collinear, so that they look like buildings on a skyline. For each rectangle, you're given the x position of the left edge, the x position of the right edge, and the height. Your task is to draw an outline around the set of rectangles so that you can see what the skyline would look like when silhouetted at night.
How shall we proceed? If you're drawing a blank, it's always good to get a really awful solution on the table right away so that you have something to think about and improve upon.
The first thing I thought of was to construct a 1-dimensional heightmap. The idea is to create an array of height values and write each rectangle onto it. Without worrying about the details of mapping rectangle coordinates to pixel array indicies, the code will look something like this:
for each rectangle r:
for each heightmap cell c starting at r.left and ending at r.right:
c gets the max of r.height and the previous value of c
OK, so this works as a first attempt at a solution. What, specifically, is wrong with it?
You can see from the animation that the skyline constructed from the heightmap isn't quite correct. The edges of the rectangles don't line up perfectly with the array cells, so there is a small amount of error in the shape of the skyline. In fact, it is easily shown that the only way to guarantee zero error is to use a heightmap with the same resolution as the final rendered image. This means that the running time of your algorithm depends not only on the number of given rectangles, but also on the resolution of the output image.
Of course, unless you're using a vector display, it's inevitable that at some point you will have code looping on the order of the resolution of the output image, just to draw the line segments one pixel at a time. I'm inclined to not worry about this cost. If you're writing code in Perl, for example, your concern is to do as little as possible in Perl and offload as much work as possible to the drawing library, which is likely compiled and heavily optimized. Only when the line-drawing code isn't much faster than your application logic does it start to make sense to use a raster approach like a heightmap.
What now? If the chief weakness of the heightmap approach is the sheer number of points to deal with in application code, maybe we can reduce the number of points in play. Now that we think about it, the skyline is made up of horizontal line segments, interrupted in only a few places. In fact, the only time the skyline can change its y position is at the left or right side of a rectangle. It's clear now that if we find the height of the skyline at each of these "critical points" on the x axis then we will have completely determined the shape of the skyline. At each critical point, you just go up or down to the new height and draw a line segment to the right until you reach the next critical point.
So how do we find the true height of the skyline at each of these critical points? Well, we already have this heightmap approach, so let's try doing something similar. This time, instead of printing the rectangles onto a heightmap array with an entry for each pixel, let's print the rectangles onto an array with an entry for each critical point! This will eliminate the problem of dealing with too many points, because we're now dealing with the minimum number of points necessary to determine the skyline.
Here's a first stab at what the code would look like:
for each rectangle r:
for each critical point c:
if c.x >= r.left && c.x < r.right:
c.y gets the max of r.height and the previous value of c.y
Looks good! So now we have a working solution to exactly the problem we were trying to solve, with no error. Can we achieve a better running time? It occurs to us that we don't really need to look at every critical point when printing a rectangle, but rather only those critical points below the rectangle in question.
for each rectangle r:
for each critical point c below r (except the one at r.right):
c.y gets the max of r.height and the previous value of c.y
This optimization depends, of course, on being able to efficiently find which critical points are subtended by each rectangle. This is easily done by sorting the critical points. For example, if we want to find the critical points subtended by the magenta rectangle, we start at the left side of the magenta rectangle and scan to the right, accumulating critical points until we reach the right side.
Unfortunately, this isn't an asymptotic improvement in the worst case. It's still given something like the following configuration:
At this point perhaps no ideas jump out at you about how to improve the algorithm's performance further. Let's try perturbing the solution we have in order to see what might present itself. What if, instead of looking at each critical point for each rectangle, we look at each rectangle for each critical point? This is the same code as before, with the loops switched:
for each critical point c:
for each rectangle r:
if c.x >= r.left && c.x < r.right:
c.y gets the max of r.height and the previous value of c.y
Again, we don't really need to consider all rectangles, only the ones above the critical point in question:
for each critical point c:
for each rectangle r above c (not including the right edge of rectangles):
c.y gets the max of r.height and the previous value of c.y
So, given a critical point, how do we efficiently find all of the rectangles above it? This requires a different strategy than before. Before we turned the problem inside out, we needed to find all of the critical points between the left and right sides of the given rectangle. Now, we need to find all of the rectangles with a left edge to the left of the given critical point and a right edge to the right of the given critical point.
What if we begin at the critical point and go left looking for left edges, and also go right looking for right edges, and then intersect the two sets of rectangles? That would work, but, again, it's in total to do this for every critical point.
A better approach is to simply scan across the skyline's sorted critical points from left to right, keeping track of an active set of rectangles as you go. When you reach a critical point, the active set is updated and then the critical point gets assigned a copy of the current active set of rectangles. By the end of the pass, each critical point will know about all of the rectangles above it.
Now that we're able to scan through the critical points and consider only the "active" set of rectangles at each critical point, an interesting opportunity presents itself. Our current solution can be written as:
for each critical point c
c.y gets the height of the tallest rectangle over c
This is no longer obviously . If we can somehow calculate the height of the tallest rectangle over c in faster than time, we have beaten our algorithm. Fortunately, we know about a data structure which can keep track of an active set of integer-keyed objects and return the highest one in time: a heap.
Our final solution, then, in time, is as follows. First, sort the critical points. Then scan across the critical points from left to right. When we encounter the left edge of a rectangle, we add that rectangle to the heap with its height as the key. When we encounter the right edge of a rectangle, we remove that rectangle from the heap. (This requires keeping external pointers into the heap.) Finally, any time we encounter a critical point, after updating the heap we set the height of that critical point to the value peeked from the top of the heap.
There's an old comment on HN that annoys me. In it, a developer whines bitterly and eloquently about his experience being stumped by a common interview question: "write an algorithm for computing the square root of a number."
I tried a couple more times to answer this question that is completely unrelated to the job I'm interviewing for. Finally, I get so fed up with this moron that my internal ticker clicks over and I realize, "Even if I get this job, I'm going to be dealing with these kinds of nazel-gazing engineers every single day. Not an environment I want to be in."
"Completely unrelated?" The problem is easily solved with binary search; is it inconceivable that a frontend developer would ever use binary search? For that matter, is this interview for a contract to build a single front-end, or for a full-time developer position which may continue indefinitely? Because if it's the latter, general problem solving questions are completely fair game. The company is going to need to make an investment of institutional knowledge in a new developer. If the developer can pivot to a new role as needed then the company may be able to avoid hiring someone new in the future and save the cost of bringing another employee up to speed. There is therefore legitimate value added by being able to tackle problems outside of your comfort zone. Petulantly hanging up on the interviewer and deciding he's not worth your time for asking such a question is childish.
Anyway, other than the obvious solution of binary search, how might we solve the problem of calculating ? Let's first introduce the concept of a fixed point. A fixed point is a value which is unchanged by the function - that is, . For example, a fixed point of the sine function is 0 because . A fixed point of the cosine function is located around 0.739085133 because . In fact, if we plot the cosine function on top of then we can see that they intersect at exactly that point:
One interesting fact which might be of use is that is a fixed point of the function :
We can therefore graph to find its fixed point . Here's a plot for various values of a:
By subtracting x from the function it becomes a root finding problem:
This we can solve with Newton's method:
Of course, we could have just used Newton's method from the beginning. If we're trying to calculate then the value we're looking for is a zero of the function . In this case we have:
These are different functions but they have the same fixed point. This is a plot of for the two different functions (with a=7) showing that they have the same zeros:
Newton's method corresponds closely to a concept called fixed point iteration. In fixed point iteration, we repeatedly evaluate a function and feed its output back into its input. Eventually we hope it will converge on a fixed point. We mentioned the cosine function earlier; this is one such function which always converges on a particular fixed point. Enter any value into a scientific calculator and repeatedly press the cosine button:
-1.0000, 0.5403, 0.8575, 0.6542, 0.7934, 0.7013, 0.7639, 0.7221, 0.7504, 0.7314, 0.7442, 0.7356
It will eventually converge to a value near 0.7391:
Another function which converges to a fixed point is the expression given by Newton's method applied to the function , which we derived before:
If we rearrange the right side we obtain:
This is called the Babylonian method, or Heron's method, and it was actually discovered long before Newton's method. The idea was that if is an overestimate to then is an underestimate, and you can average them to get a better approximation. Repeated iteration improves this approximation until it converges on , which we know is a fixed point.
Remember that before we said is a fixed point of the function . Unfortunately if you iterate that function, you will not approach . Fixed point iteration doesn't always work and this is one such case. The math behind being able to tell whether an arbitrary function will converge to a fixed point under fixed point iteration is complicated.
Now it would be very simple to wrap the Babylonian method in a loop and perform a couple steps of fixed point iteration to get a decent sqrt(a). But since we're finding a fixed point, this seems like a nice time to break out something called a fixed point combinator. The best-known fixed point combinator is the Y combinator. You've probably heard of it due to the eponymous startup incubator founded by Lisp greybeard Paul Graham, of the famous Paul Graham essays.
This is the lambda calculus definition of the Y combinator, due to Haskell Curry:
The reason y is called a fixed-point combinator is because of what happens when you apply it to a function and reduce. By following the lambda calculus reduction rules you can find that the Y combinator satisfies the equation . This matches the form - the definition of a fixed point. So, is a fixed point of ! Therefore all we have to do is apply the Y combinator to obtain a fixed point of , right?
Well, not really. takes and returns a function so the fixed point of isn't a number at all, it's the function which maps to . In other words, all the Y combinator is doing is facilitating fixed-point iteration:
It appears that this expansion will continue forever and never terminate. But we can build a termination condition into the function so that it stops expanding. Let's see how that would work with the sqrt example. Our could look like this in JavaScript:
function step (callback) {
return function (originalValue, approxSqrt) {
// Babylonian method formula to improve our approximation of the square root
// of originalValue.
var improvedApproxSqrt = (approxSqrt + (originalValue / approxSqrt)) / 2;
// How far off the mark we are.
var discrepancy = Math.abs(originalValue -
(improvedApproxSqrt * improvedApproxSqrt));
// Termination condition
if(discrepancy < 0.00001) {
return improvedApproxSqrt;
return callback(originalValue, improvedApproxSqrt);
This looks a lot like recursion, except that we've never referred to an free variable name. This is called anonymous recursion, and it's useful in systems (notably lambda calculus) where functions cannot refer to themselves by name.
Now we need the magic which will repeatedly invoke
step and feed its output back into its input: the Y combinator. How would it look in JavaScript? Here's the Y combinator in lambda calculus again:
This corresponds pretty directly to a JavaScript function:
function Y(f) {
return (function (x) {
return f(x(x));
})(function (x) {
return f(x(x));
Unfortunately, when we try to use this version of the Y combinator, we get a stack overflow. If you trace out the execution you'll see that
x(x) must be evaluated in order to get a final return value for
Y, and this causes infinite recursion. The reason this works at all in lambda calculus is that lambda calculus is call by name so is evaluated by expanding the definition of and passing that function to f. JavaScript, on the other hand, is call by value, so the x function is actually evaluated with x as an argument.
If we η-reduce the Y combinator then we obtain an alternate fixed-point combinator, called the Z combinator, which contains an extra layer of indirection and prevents runaway recursion:
Here's the JavaScript code corresponding to the Z combinator:
function Z(f) {
return (function (x) {
return f(function (v) { return x(x)(v); });
})(function (x) {
return f(function (v) { return x(x)(v); });
We still have a bit of a problem: our step function takes two variables, while Z only calls it with one. So let's modify Z:
function Z(f) {
return (function (x) {
return f(function (v1, v2) { return x(x)(v1, v2); });
})(function (x) {
return f(function (v1, v2) { return x(x)(v1, v2); });
Now we can see it working:
> var sqrt = Z(step);
> sqrt(2, 1); // sqrt of 2, with a starting estimate of 1
It's rather awkward to always have to provide a starting estimate, so we can add a wrapper which always guesses 1 to start:
> function sqrt (num) { return Z(step)(num, 1); }
> sqrt(2)
The personal blog of Mark Karpeles, aka MagicalTux, CEO of the recently-bankrupt Bitcoin exchange Mt. Gox, received attention on Hacker News recently. Given that Gox's spectacular $473 million downfall was supposedly caused by a bug in Karpeles's custom implementation of the Bitcoin protocol, people were understandably interested in checking the quality of his public source code.
What we saw was not reassuring. In one post, Karpeles describes a custom implementation of SSH2 which he wrote for production use at his web hosting company.
With PHP I could write a fully working SSH server in only 3 days. … My goal when writing this was to provide a replacement for the FTP protocol for the customers of my hosting service.
As I was missing some functions to properly handle the initial Diffie-Hellman key exchange (and later to implement publickey authentication) I had to re-implement those in PHP.
This is horrifying to see from the guy who wrote the server which once handled 70 percent of all Bitcoin trades. If I had seen this post before Mt. Gox's failure, I would never have deposited my Bitcoin with them. The SSH server source code has since been taken down, but one HN user remembers it:
The code for the sshd does not seem to be there anymore, but from memory: it did not check if the number sent by Bob was 0, 1, or any any other groups that would make it easy solve the discrete logarithm problem. I don't think it bothered to check the primes either. [1] I think there was also something wrong with the signature checking (padding not checked maybe?).
Altogether it seemed like you could easily MITM connections made to the server, but I don't think I ever tried. It was a perfect example–to me at least–of why you should not spend a trivial amount of time reading about crypto on Wikipedia and then writing crypto code.
I absolutely agree. The main lesson that you should take away from the crypto class is that you should be afraid of rolling your own crypto code. There are a thousand ways to screw up, and it only takes one mistake for your cryptosystem to fall apart. The recent Apple and GnuTLS vulns show that even the serious players get this wrong.
So best practices were apparently not followed at Mt. Gox. In fact, later it was alleged that developers at Mt. Gox would push changes directly to production, and didn't even use version control for the site's source code.
Another of his blog posts is about a tool which he wrote - in PHP of course - to compute routes between star systems in the MMORPG EVE Online. In EVE, solar systems are connected to each other with portals called Stargates. The result is a big graph. Savvy players will try to take the shortest possible path to get from point A to point B by using a shortest-path algorithm to automate navigation.
I thought I'd hop on the bandwagon by criticizing his EVE pathfinder. Although I could nitpick on matters of style, I'd rather focus on the core- that is, the all-pairs shortest path solver which is the basis of his algorithm. The general idea is to generate an index which contains, for each system, the next hop to take in order to reach any given system. This uses O(n^2) space but allows efficient pathfinding between any two arbitrary systems in the universe. All of this is perfectly fine so far. The problem is how he goes about constructing this index.
Based on my reading of his code, this appears to be his algorithm:
s, collect the best known paths to systems 1 hop away and advertise them to
s's adjacent systems.
s, collect the best known paths to systems 2 hops away and advertise them to
s's adjacent systems.
s, collect the best known paths to systems 3 hops away and advertise them to
s's adjacent systems.
s, collect the best known paths to systems 4 hops away and advertise them to
s's adjacent systems.
This continues for 256 steps, by which point MagicalTux hopes all systems have been informed of the shortest path to all other systems. Judging by a cusory search of the EVE forums, this appears to be a valid assumption.
This algorithm is essentially the Bellman-Ford algorithm run once for each system in the universe. Although this solution is asymptotically optimal, in real life it will perform poorly compared to a real all-pairs shortest path algorithm. I thought it would be interesting to see how badly I could beat his code's performance. MagicalTux claims that it takes about 3 hours to construct the index using his PHP code. I'm going to see how much faster I can do it, by doing these things differently:
I downloaded the jump connection data helpfully provided by MagicalTux - the official data comes in an unusable binary MSSQL format - and put it in a CSV file for easy parsing.
My complete EVE pathfinder implementation can be found here. It doesn't require any extra space (asymptotically) to construct the index, which is nice. This is the core of the code where almost 100% of the running time is spent:
// Floyd's algorithm
for(uint32_t k=0; k<NUM_SYSTEMS; k++) {
#pragma omp parallel for shared(k, cost, next) schedule(dynamic)
for(uint32_t i=0; i<NUM_SYSTEMS; i++) {
if(i == k) {
for(uint32_t j=0; j<NUM_SYSTEMS; j++) {
uint32_t prev = cost[(NUM_SYSTEMS * i) + j];
uint32_t candidate = cost[(NUM_SYSTEMS * i) + k] + cost[(NUM_SYSTEMS * k) + j];
if(candidate < prev) {
cost[(NUM_SYSTEMS * i) + j] = candidate;
next[(NUM_SYSTEMS * i) + j] = next[(NUM_SYSTEMS * i) + k];
I picked two random system IDs (30000029 and 30000050) for a pathfinding demo. My test program constructed the all-pairs index and then used it to find the shortest path between the two systems. You can see the output of the test below:
brian@mint ~/eve $ ./eve
Indexing... done. Elapsed time 38.99 seconds.
Calculating the quickest route from 30000029 to 30000050... done.
Built a 14 hop route in 0.002 ms.
Note that, indeed, the shortest route between those two systems according to DOTLAN is 14 hops! And the index was built in less than 40 seconds- about 0.4% of the time that it took MagicalTux's PHP version.
I've been a full-time Java developer for about a year now, and in that time I've seen a lot of incorrect information out there about the behavior of the Java compiler (javac). With this post I hope to clear up some misconceptions about compile-time optimization in Java. Note that this information is correct for my version of javac but is not necessarily true for all JDKs.
brian@mint ~ $ java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
Let's start with an easy case. Is the compiler smart enough to spot a redundant logical NOT in a boolean condition? Let's compile the following blocks of code:
if(!booleanExpression) {
} else {
if(booleanExpression) {
} else {
The compiler produces pretty much identical bytecode for both of these. Of course, the cost of an added logical NOT operation would be insignificantly small. But in fact there is no extra operation. Let's examine the bytecode:
13: ifne 23
16: iconst_1
17: invokestatic #5 // doSomething(1)
20: goto 27
23: iconst_0
24: invokestatic #5 // doSomething(0)
27: return
13: ifeq 23
16: iconst_0
17: invokestatic #5 // doSomething(0)
20: goto 27
23: iconst_1
24: invokestatic #5 // doSomething(1)
27: return
The only difference is an
ifeq instead of an
ifne as the condition for the jump, so you can feel free to use either of the two forms depending on which makes more intuitive sense in context.
Now for a more complex case. You might be tempted to apply your knowledge of boolean algebra to transform the former of these blocks into the latter in order to improve performance in a tight loop:
if(!a || !b) {
if(!(a && b)) {
Would you be justified in doing so?
19: iload_2
20: ifeq 27
23: iload_3
24: ifne 33
30: invokevirtual #6
19: iload_2
20: ifeq 27
23: iload_3
24: ifne 33
30: invokevirtual #6
Nope! Once again, the compiler is smarter than you are. In fact, in this case the compiler literally generates the exact same bytecode for the two functions.
private static int SECONDS_IN_30_DAYS = 60*60*24*30;
This is clearly more readable than embedding the magic constant 2592000 in the source code. But does it incur a runtime performance cost? Here is the bytecode for the class's static initializer:
0: ldc #5 // int 2592000
2: putstatic #3 // Field SECONDS_IN_30_DAYS:I
5: return
ldc instruction indicates that the compiler has precomputed the value 2592000 and stored it in the class's constant pool. No multiplication occurs at run-time.
OK, so that works for integer arithmetic. How about constant boolean expressions?
private static boolean troo = true && (false || false || (true && true));
0: iconst_1
1: putstatic #3 // Field troo:Z
4: return
This one is even leaner! Since there's a special bytecode instruction for loading the integer 1, you don't even have to go to the constant pool.
Note that in the two previous examples we have forced the compiler to create a static field within the class, and to create code which initializes the field. Creating a field is unnecessary for constant expressions. If we add the
final keyword, we can get the compiler to inline these values wherever they're actually used within the class.
private static int SECONDS_IN_30_DAYS = 60*60*24*30;
public static void main(String[] args) {
public static void main(java.lang.String[]);
0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
3: getstatic #3 // Field SECONDS_IN_30_DAYS:I
6: invokevirtual #4 // Method java/io/PrintStream.println:(I)V
9: return
static {};
0: ldc #5 // int 2592000
2: putstatic #3 // Field SECONDS_IN_30_DAYS:I
5: return
final there is no separate static initializer section, and instead of
getstatic we can simply
ldc to get the constant value:
private static final int SECONDS_IN_30_DAYS = 60*60*24*30;
public static void main(String[] args) {
public static void main(java.lang.String[]);
0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3 // int 2592000
5: invokevirtual #4 // Method java/io/PrintStream.println:(I)V
8: return
Some people will tell you that String concatenation with
+ is a performance killer on Java. They'll tell you to use StringBuilder instead. But javac is actually pretty smart about converting
+ into StringBuilder appends.
return str1 + " : " + str2;
11: new #3 // class java/lang/StringBuilder
14: dup
15: invokespecial #4 // Method java/lang/StringBuilder."<init>":()V
18: aload_1
19: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
22: ldc #6 // String :
24: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
27: aload_2
28: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
31: invokevirtual #7 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
However, it's not perfect. In cases like this you need to construct a StringBuilder yourself, because the automatic StringBuilder won't be reused for the second line:
String cat = str1 + " : " + str2;
return cat + " 123";
8: new #2 // class java/lang/StringBuilder
11: dup
12: invokespecial #3 // Method java/lang/StringBuilder."<init>":()V
15: aload_1
16: invokevirtual #4 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
19: ldc #5 // String :
21: invokevirtual #4 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
24: aload_2
25: invokevirtual #4 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
28: invokevirtual #6 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
31: astore_3
35: new #2 // class java/lang/StringBuilder
38: dup
39: invokespecial #3 // Method java/lang/StringBuilder."<init>":()V
42: aload_3
43: invokevirtual #4 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
46: ldc #8 // String 123
48: invokevirtual #4 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
51: invokevirtual #6 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
Note that the StringBuilder constructor is called twice (lines 8 and 35).
IntelliJ IDEA breaks lengthy String constants into multiple lines:
return "We the People of the United States, in Order to form a more perfect "
+ "Union, establish Justice, insure domestic Tranquility, provide for the "
+ "common defence, promote the general Welfare, and secure the Blessings "
+ "of Liberty to ourselves and our Posterity, do ordain and establish this "
+ "Constitution for the United States of America.";
As you might expect, the compiler deals:
0: ldc #2 // String We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common defence, promote the general Welfare, and secure the Blessings of Liberty to ourselves and our Posterity, do ordain and establish this Constitution for the United States of America.
If code is unreachable, it will be eliminated from the class file:
public static void main(String[] args) {
if(false) {
System.out.println("The universe is broken.");
public static void main(java.lang.String[]);
0: return
Believe it or not, that's about all of the optimizations that are performed at compile time. The really advanced optimizations are going to be deferred until the code is just-in-time compiled at runtime. This allows the JIT to write machine code which is optimized for your specific processor architecture.
Something you need to be aware of, though, is that in order to employ certain optimizations the JIT cannot compile loaded bytecode immediately:
A warm-up period provides the HotSpot VM's JIT compiler the opportunity to collect information about a running program and make intelligent dynamic optimization decisions based on the "hot" code paths taken by the executing program. By default, the HotSpot Server VM executes a block of Java byte code 10,000 times before the HotSpot Server JIT compiler produces native machine code for that block of Java bytecode.
— Java Performance, by Charlie Hunt and Binu John.
This can really play hell with your efforts to profile code, because the performance profile of your application is constantly changing as more methods are JIT compiled. One thing you can try is setting the runtime flag
-XX:CompileThreshold to a lower value, for example 1. This will cause the JIT to run immediately; however, its optimizations will be less effective and this will subvert the Java code cache mechanism if you don't have enough memory available.
These two brain teasers posted on /r/math impressed me greatly, so I decided to present them here.
You have been abducted by terrorists and blindfolded. They sit you down at a table and tell you that if you can solve two puzzles then they will let you go.
There is a deck of 52 cards on the table in front of you. Ten of them are face-up and the rest are face-down. Split the deck such that each new stack has an equal number of face-up cards.
You sit thinking in darkness for a few minutes. The terrorists are growing impatient around you when you finally smile: you've got the solution! You count out 10 cards from the deck and flip them over. Then you push the two stacks across the table.
The terrorists count the face-up cards in each stack suspiciously. When they find that the number of face-up cards is identical, they're impressed, but you have a yet harder challenge to face before they will let you go.
On one side of the table there are five dice which add up to 15. On the other side of the table there are another five dice which add up to 13. Move some dice around so that the two sides of the table have equal sums.
You furrow your brow and sit thinking in darkness for over an hour. The terrorists' new respect for you is wearing off quickly, and they won't wait much longer. Finally, you get it. You take one die from the group on the right and move it to the group on the left. Then you flip the remaining 4 dice of the right group upside-down. "You see," you explain carefully. "If the left group sums to , then the right group sums to ; this was given in the problem. If you take a die from the right group and move it to the left, then the new sums are and . Now, because the opposite sides of a single die always add to 7, any time you flip a set of 4 dice summing to , you end up with a set of 4 dice summing to . Therefore, if we flip all of the dice in the right group, we now have:" "which is the same value that we have on the left side."
Last night I was trying to figure out a balisong trick by watching 15 seconds of a YouTube video over and over while trying to duplicate the movements. Switching back and forth between my mouse and the knife was getting annoying, so I took a few minutes to figure out how to control the player with JavaScript. This is how I did it.
First, get the
<embed> DOM object. The best way to do this is by using the DOM inspector in your favorite browser to find the ID string of the element. Right now that ID is
movie_player, but YouTube mught change it in the future.
Once you have the ID string you can get the DOM object using
var ytplayer = document.getElementById("movie_player");
Now you can use any of the functions of the YouTube player API, which are properties of the DOM object we just found. For example,
seekTo will take you to a given point in the video. So if you want to go back to 1:01 in the video every ten seconds then you can use
setInterval(function () { ytplayer.seekTo(61, true); }, 10000);
Say you have ten images on a page, with IDs
img0 to
img9. You'd like the number of the image to pop up when you click on one. You might be tempted to write the following JQuery code:
for(var i=0; i<10; i++) {
$("#img" + i).click(
function () { alert(i); }
The event handlers will successfully bind to every image's onClick event. You may be surprised, however, to find that when you click on any of the images, 10 always pops up! You can try it for yourself at this jsfiddle.
The problem, of course, is that a reference to the
i object is being stored in the click handler closure, rather than the actual value of
i. Since there's only one counter object, every single click handler will refer to the same object, which has the value 10 by the time the user gets a chance to trigger the handler.
Here's a workaround:
for(var i=0; i<10; i++) {
(function (i) {
$("#img" + i).click(
function () { alert(i); }
So what happened? Lest you think that the extra execution context has something to do with it, observe that this version without a function argument doesn't work:
for(var i=0; i<10; i++) {
(function () {
$("#img" + i).click(
function () { alert(i); }
This demonstrates that the function argument preserves the passed value. Indeed, primitives are copied by value in function calls:
function toFive(in) {
in = 5;
var a = 4;
a == 4 // true
What about the case where we're dealing with real objects? Here's an alternative example, which toggles each image to a different image on click. This version doesn't work (the last image is always toggled):
for(var i=0; i<5; i++) {
var toggler = $("<img/>", { "src": "http://www.famfamfam.com/lab/icons/silk/icons/cross.png" });
toggler.click(function () { toggler.attr("src", "http://www.famfamfam.com/lab/icons/silk/icons/tick.png"); });
First of all, it's important to note that variable and function declarations are hoisted to the top of their scope, so the above code is equivalent to:
var toggler;
for(var i=0; i<5; i++) {
toggler = $("<img/>", { "src": "http://www.famfamfam.com/lab/icons/silk/icons/cross.png" });
toggler.click(function () { toggler.attr("src", "http://www.famfamfam.com/lab/icons/silk/icons/tick.png"); });
When you assign a new
<img> to
toggler, the reference is updated to point to the new object. And it's the reference, not the value, which is bound into the
click closure. So the same reference is being updated over and over, and the same reference is being bound into the click
closure each time. If we want to fix this problem, we can create a new reference each time by using a self-executing function declaration like before:
for(var i=0; i<5; i++) {
var toggler = $("<img/>", { "src": "http://www.famfamfam.com/lab/icons/silk/icons/cross.png" });
(function (t) {
t.click(function () { t.attr("src", "http://www.famfamfam.com/lab/icons/silk/icons/tick.png"); });
I have been playing Counter-Strike: Source off and on since its release in late 2004. Gameplay largely consists of playing the same short scenarios over and over against different opponents. Over the course of hundreds of hours of gameplay, everything from tiny obstructions in the game levels to the feel of the recoil of each weapon is inevitably memorized and incorporated into players' muscle memory. Players continually search out better tactics, tune their game client configurations, and generally try to develop a better feel for the Source engine.
I say all of that in the hope that with the above introduction, the next sentence won't seem overly bizarre: I've been wondering for years about the most efficient way to climb a ladder.
Typically to climb a ladder in a first-person shooter, the player (1) walks forward into the ladder while looking up. But what happens if you (2) back into the ladder while looking down? What happens if you (3) strafe sideways into a ladder while facing off to the side? What happens if you (4) face 45 degrees to the right of the ladder and then walk diagonally forward and left? In the case of the Source engine, 2 produces the same upward movement as 1, 3 produces no movement, and - I found - 4 produces up to 142% of the upward movement of 1 and 2 depending on where you're looking vertically.
To get exact times for each possibility, I created this test map (screenshot) with the Source SDK. The idea was to climb the ladders with each technique, record the climbs, and examine the video to get the exact time for each climb.
Unfortunately, the second variable in play - the vertical angle that the player is facing when they climb the ladder- has a huge influence on the speed of the climb. What I really want is to rank the times using the optimal vertical angle for each technique. It would be extremely difficult to determine the optimal angle and control it experimentally, so I cheated!
Because of the game's physics model, if the player gets up to speed and reaches the top of the ladder, then he or she will sail upward a short distance past the top before falling back down. By trial and error, I determined that it's impossible to clear more than 53 units using techniques 1 and 2, and it's imposible to clear more than 105 units using technique 4. Those maximum distances can only be cleared at very close to top speed. So I jump around trying to find the optimal vertical angle which will clear the first height at the bottom of the track. Then I let go of the mouse and record a climb the rest of the way up at top speed!
Here are some recordings of the forward and diagonal methods. It takes about a minute to find the exact angle where it works, but I cut that part out.
The final results: technique 1 and its variant 2 climb at about 281 ups (units per second), and technique 3 and its variants climb at about 399 ups. That's 42% faster!
The Fibonacci sequence is:
Each term is the sum of the previous two terms in the sequence. Terms in the Fibonacci sequence are pretty easy to spot. An interesting property of this sequence is that it works as a mnemonic for converting miles to kilometers. For example, 21 is followed by 34 in the Fibonacci sequence, and 21 miles is about 34 kilometers. Likewise, 34 is followed by 55 in the Fibonacci sequence, and 34 miles is about 55 kilometers.
Why does this work? The short answer is that the Fibonacci numbers grow with , and is approximately the conversion constant from miles to kilometers. More exactly,
The value of is about 1.62, and 1 mile is about 1.61 kilometers. So successive terms in the Fibonacci sequence are approximately converting miles to kilometers! And, of course, to convert in the other direction you simply look at predecessive terms.
A couple of techniques are useful for when the number you want to convert isn't exactly a Fibonacci number. If you want to convert 17 miles to kilometers, you could look at the conversions for Fibonacci numbers 13 and 21 and try to interpolate the answer. However, since 34 is a Fibonacci number you can get a much better answer by converting 34 miles to 55 kilometers and dividing by 2.
You could also change the initial conditions of the recurrence. A Fibonacci sequence with general starting conditions is called a Lucas sequence. Because when solving a linear homogeneous recurrence relation the starting conditions don't affect the relation's characteristic equation, a Lucas sequence also grows with , and the mnemonic applies. So you have more data points to work with if you also memorize, for example, the sequence:
For more mathematical coincidences, see the Wikipedia article.
GitHub provides a great service called GitHub pages, which allows you to host static web sites from GitHub servers by simply pushing a repository containing the content. GitHub founder Tom Preston-Werner wrote a fantastic blog platform called Jekyll to fit this hosting model. Blog authors can write their posts in Markdown and Jekyll will render the posts to HTML and generate an entire site structure of static pages suitable for hosting with GitHub Pages. It makes sense as an architecture- if not for user comments there would be no reason at all for having a whole scripting lanugage and database engine behind an otherwise static blog. Of course you've probably guessed that this post is published through that system. The complete source code and some comments about setting up your own blog are available here.
Besides playing with GitHub, I've also been working on my reading list over the break. Other than fiction, I've been reading through some textbooks which I have been fortunate enough to recieve for free thanks to financial aid. One of these books is Introduction to Algorithms (in my classes we used Manber and Kleinberg & Tardos instead), which I have discovered has some excellent exercises- perfect little puzzlers for a blog format! Today's puzzle is based on exercise 9.3-9 in the 3rd edition.
A number of well pumps have been built in arbitrary positions throughout a region. An east-west pipeline is to be built through the area. Connections will run north-south from each pump to the nearest point on the main pipeline. Your task is to decide where to place the pipeline so that the total length of connections that need to be laid is minimized. An example region map is below; click the image to expand it.
The example above is, in fact, a solution- you cannot find a better place to put the east-west pipeline. So how do you find an optimal position in general, given the coordinates of each pump?
You might be tempted to suggest that the pipeline be placed along the mean y-coordinate of all of the pump stations. It seems to be clear that the pipeline should be laid roughly through the center of the constellation of pumps, since we're trying to minimize the distance to each pump. This geometrical intuition turns out to be wrong in rather the same way that our as-the-crow-flies pathfinding intuition is wrong in cities- the unusual way of accounting for distance foils the obvious solution. I hope that examining an example of using the mean will convince you that the mean doesn't work; click the image to expand it.
The correct answer is to use the median of the y-coordinates. The easiest way to see why this works is by considering the case where there are an odd number of pumps, for example 5. The median, then, is the latitude line through the third pump sorted by y-coordinate. Say we move the pipeline from the median to just one meter north of the median. Then the lengths of two vertical connectors (to pumps 4 and 5) will decrease by one meter, and the lengths of three vertical connectors (to pumps 1, 2, and 3) will increase by one meter. In sum, the total length of pipe will increase. The same thing will happen if you move the pipeline just one meter south.
If we have an even number of pumps, say 6, the solution is that the pipeline can go anywhere vertically between pumps 3 and 4. It should be clear that you can move the pipeline up and down within that range without changing the overall total length, because three vertical connectors increase and three decrease in lockstep. It's only when you move outside of that range that an asymmetry appears.


text:
Swamp Rabbit Trail in fall
Here are some views of fall foliage along the Swamp Rabbit Trail north of Greenville between Furman University and Travelers Rest. Â Â This trail makes a very pleasant daytime run or bicycle trip between Greenville and Travelers Rest.
Follow these topics: Fall foilage, Swamp Rabbit

subset: commoncrawl


text:
15 Fast Facts About Microsoft
At first, they operated a small shop called "Traf-O-Data" and sold a computer that counted traffic for the city of Seattle. They were teenagers then, but they would eventually go on to create something far, far larger: Microsoft. Those founding teenagers, Bill Gates and Paul Allen, were inspired by an issue of Popular Electronics to create the Altair BASIC interpreter as Microsoft's first product in 1975. Today, Microsoft Office, the Windows operating system, Bing, Xbox 360, MSN, the Microsoft Surface tablet, Windows Phone and countless other products are now associated with the brand. And while former CEO Gates has clearly established himself as one of the world's most driven philanthropists, he and his company have weathered a flurry of extensive controversies—most notably the federal antitrust civil case in the 1990s, which was settled in 2001. Tech powerhouses such as Apple and Google may have upended the company as far as tech "star power" goes, but Microsoft still commands a great many headlines with its continued pursuit of innovation. Here are some recent "fast fact" developments.
How IT Is Accelerating Software Devel...With the rapid pace of technology and business changes, the demand ...
Watch Now


text:
Lions offensive lineman blasts Cowboys' Roy Williams: He's a 'frontrunner'
Former Detroit Lions receiver Roy Williams recently said that many of the Lions' problems when he played in Detroit were caused by an ineffective offensive line.
Center Dominic Raiola, who played with Williams in Detroit, fired back in an interview with MLIVE.com
"That's coming from a guy who checked out of here," Raiola said. "He never wanted to be here. I don't even think he's the top receiver in Dallas anymore.
"If he wants to throw shots, we can throw shots back, too. Pretty much what I'm saying is that Roy's a frontrunner. If he wants to talk (bleep) about us, that's what I'm going to give you."
Williams had a quick start to the season, but has just four catches in his last three games.
"Well, I just make the plays when they come to me," Williams said. "That's about all I can do."
MLIVE relayed that quote to Raiola who said, "Sounds about right — 'It's not my fault.' That's Roy."


text:
Princess Lily - 50ft x 10ft 1940 Dutch barge £77,500
Video Photos Layout plan Brochure
Princess Lily is a Dutch motor barge dating from the 1940s, and completely refitted in 2011 including a new engine. Like many Dutch vessels, the lines and the steelwork are superbly built. This boat apparently started life as a bunkering barge, delivering oil and fuel to ports from the Netherlands to Belgium and Northern France. The current layout makes a very comfortable home, with the wheelhouse proving the living room space, with steps down at either end leading to an office/utility room aft, and forward to the galley, then the wet room and finally in the bow a good sized bedroom.


text:
Fabulous, Fun, and Festive!
Eastland Diamond Wrap is a new product in our Quick Candles line and it is one of my all-time new favorite products! Diamond Wrap comes in 9 colors to accommodate almost any color scheme. There are several reasons that I love this product!
The first is that this product is affordable. In today's economy, I know that lots of folks, like me, are looking for ways to impress while spending less. This product sold at $13.99 a 30 ft. roll, can create multiple table decorations for large, large events. It can last forever in your home as you place bling around your home for Holidays, Birthday celebrations, or just adding bling to a boring old item. It can also just be one of your go-to products that you keep on hand at your home for quick, easy "bling-ing" of gifts!
Secondly, this product is EASY to use! If you have a pair of scissors, tape, glue, straight pins…you can create something fabulous in less than 5 minutes! Simple squares cut and placed on a kitchen island, then placing on top votive candle holders and votive candles can give a look of sophisticated ease! And all you had to do was cut a square. I also love anything that kids can help with as well. This product is so easy for your kids to join in your DIY projects.
Thirdly, Eastland Diamond Wrap is perfect for Weddings & Events! I love that with one roll of this product, you can simply "Bling" up your event. Our resident expert, Joel Kirby, talks about the 3 S's…this product definitely falls into this category for DIY-ers, Wedding Planners, or Event Planners by being Simple, Sophisticated, and provides Speed in decorating.
Check out the fun looks created by Joel Kirby from Curly Willow Designs and stay tuned for some great informative videos on how to use this product and some tutorials on how to create that WOW Factor!


text:
Or at least he's ready to tear it up according to a comment-poster at www.profootballtalk.com. You have to love the ability for anyone to leave any comment anonymously these days. In an article quoting new Redskin coach Mike Shanahan talk about his quarterback situation, commenter "Rex Grossman" (what else) writes:
This made my day. The man is a true legend. Injury after injury in Chicago and fans bashing him down, he would always fight back and conducted himself in a way that really makes you pull for him. Unlike Kyle Orton and Jay Cutler.
As for his play, yeah the costly errors are there. But so his arm. Dude has a cannon and when he's on, he is ON. If he can eliminate the errors he can be an elite quarterback. MVP talks half way through the '06 season. The most memorable time I've been apart of as a lifetime Bears fan. I would love to have him back in Chicago. But I'm glad he's getting a shot with a coaching staff that knows what they're doing. Seriously, this is awesome. Redskins fans are in for a surprise.
Seriously! I just thought everyone would love this. Let's remember, Grossman got into a game, one game I believe, in Houston last year, and he was the same old Rex, going 3/9 with 1 interception on the season.
I'll remind everyone, I was never one of the complete Rex bashers when he was here. I just think anyone that thinks "he has a cannon for an arm and he's back" is crazy.
Then again, it will be interesting to see if coaches other than Lovie Smith and Ron Turner can get any more out of him.


text:
Archive for "March"
219: Season 3, Episode 1
This month, 219 West focuses on celebrating Women's History Month by taking a look at the past — and honors women who paving their own way in the workplace.
Remembering The Triangle Fire
This March marked 100 years since the Triangle Factory fire, a tragic incident that killed more than 140 female garment workers. Tamy Cozier investigates the legacy of this tragedy.
219 West Reporter Margaret Teish spent time with FDNY firefighter Regina Wilson, who defies gender stereotypes by being one of the boys.
Carving Her Place
Butcher Sarah Bigelow sits down with 219 West Reporter Judy Le to talk about the art of carving. She is the only female full-time butcher at the Meat Hook in Williamsburg.
Cutting Edge
Diane Wood, who has been recognized internationally as one of the best in her field, is a barber at the legendary Paul Mole Barber Shop. Malgorzata Wojtunik reports.
Interview: Women In The Workplace
The struggle for women's rights in the workplace still continues today. Reporter Alcione Gonzalez talks to Cynthia Epstein, CUNY Graduate School professor and gender studies expert in this 219 West interview.
Interview: City Council Speaker Christine Quinn
New York City Council Speaker Christine Quinn talked to 219 West Reporter Annais Morales about what she does when the man next to her is the one singled out.


text:
He should get out of there, he has his country like a prison isolated from the rest of the world? That guy has something wrong in his head. & No, its not power, its people dumb enough to follow him
lol photo from his 2002 trip.
Thanks for your comment. Here's the full caption supplied by the photo agency: "North Korean leader Kim Jong-il takes part in a welcoming ceremony on his arrival in Novoburesky in Amur province, August 21, 2011. Kim visited one of Russia's largest hydro power stations on Sunday, Russian news agencies said, part of a tour of the country's Far East before talks with President Dmitry Medvedev. REUTERS/www.portamur.ru/Handout"


text:
Hey, Baseball, You Should Be Terrified Of The Tigers Bullpen
Terror, terror! Everybody's made a big stink about how terrifying Detroit's ace, Justin Verlander, is. We, of course, agree: nine strikeouts, two walks, and six hits per nine is plenty terrifying. And everyone's made a similar stink about how un-terrifying Detroit's other starters—Doug Fister, Max Scherzer, and Rick… »


text:
Veterans Affairs Chief Information Officer Roger Baker, above, described the so-called electronic service bus as "the heart of the [integrated electronic health record]" for service members and veterans. (Thomas Brown / Staff file photo)
The Veterans Affairs and Defense departments achieved a major milestone last month in their quest to develop an integrated electronic health record (iEHR) system for service members and veterans.
The agencies selected Fairfax, Va.-based ASM Research Inc. to manage a critical portion of the iEHR, called the enterprise service bus, which will allow various components of the future system to communicate with each other and with VA and DoD health information stored in data centers. The contract, which was awarded under VA's Transformation Twenty-One Total Technology, or T4, program, has a ceiling value of $102.6 million.
The enterprise service bus is "the heart of the iEHR," VA Chief Information Officer Roger Baker said in an interview. "Everything will talk to it or through it."
Baker said VA and DoD are still finalizing an estimated four- to five-year development plan for the iEHR. Development of the iEHR is tied to the larger Virtual Lifetime Electronic Record that will enable better sharing of veterans' health and benefits data, but the iEHR is a separate program that requires its own oversight, he said.
"The iEHR is all about building a single medical record that's usable from accession until burial for the individual," Baker said.
The iEHR will include four layers a graphical user interface for clinicians to see health data, 127 medical applications to submit and retrieve data, the enterprise service bus and data centers storing health information.
For example, if a clinician wants pharmacy data about a particular patient, the enterprise service bus, or middle layer, can quickly determine which database the information is stored in and present it to the clinician in a standard format. The goal is to ensure that any application can communicate with any database.
"By building a single medical record system, when you leave the DoD and show up at a VA hospital, it will be as if you went from one DoD hospital to the next DoD hospital," Baker said. VA doctors will "know everything" and "see everything" about a patient's medical history.
At the Capt. James A. Lovell Federal Health Care Center in North Chicago, and Tripler Army Medical Center and VA's Pacific Islands Health Care System, both in Honolulu, clinicians are testing a graphical user interface that gives VA and DoD clinicians a common view of patient information. The interface tool can capture patient information from separate electronic health records managed by VA and DoD and present it as a single medical record to the clinician, Baker said.
The focus for DoD has been to provide clinicians with an electronic health record that is always available, retrieves information quickly and is easy to use, said Mary Ann Rockey, technical director at the DoD-VA interagency program office. That will continue to be a priority with the new system.
The clinical community and the business community are driving the next-generation electronic health record, said Navy Capt. Michael Weiner, deputy program manager and chief medical officer for the Defense Health Information Management System.
Weiner said VA and DoD include clinicians in their decision-making for the integrated electronic health record. Before they settle on new features, like laboratory modules for the system, they will consult with lab offices and technicians from all the services and VA to see what works best.
Starting in March, VA will begin moving 126 systems that make up its electronic health record to data centers managed by the Defense Information Systems Agency. Data from DoD's electronic health record already is stored in DISA data centers. Both departments expect that co-locating data in DISA data centers will make it easier to share health data.


text:
Join Now |
Login |
Forgot Password?
The Ani Difranco presale password has been found: You can get the pre-sale code for Ani Difranco at McDonald Theatre in Eugene, OR. The Ani Difranco presale password is for Concert tickets. With this ticketmaster presale password, you will have the chance to get your Ani Difranco Concert tickets early! See the Concert at McDonald Theatre like a VIP, or get great Ani Difranco tickets you can re-sell. We have all the details you will need to order your Ani Difranco at McDonald Theatre tickets during the presale.
Get Exclusive access to this event presale using This Presale Link!
Ani Difranco
McDonald Theatre
Eugene, OR
Apr 12, 2011
Presale Information:
Begins: Jan 10, 2011 at 10:00 AM PDT
Presale Password:
293 views
Where to Find Presale Passwords |
Where to Buy Presale Tickets |
Presale Archives |
Terms of Use |
Privacy Policy |
Contact Us
Copyright © 2015 Presale Password Info. All Rights Reserved |
Ticketmaster Presale Passwords


text:
Strange Tales Vol 1 128
this wiki
Previous Issue
Next Issue
- For years I have stayed in hiding, increasing my knowledge -- and my power -- but now I need hide no longer -- now my power is greater than that of Dr. Strange! And I shall prove it by defeating him!!
- -- The Demon
Appearing in "Quicksilver and the Scarlet Witch"Edit
Featured Characters:
Supporting Characters:
Other Characters:
- Spider-Man (Peter Parker) (In an illusion or vision)
- Avengers (In an illusion or vision)
- Captain America (Steve Rogers) (In an illusion or vision)
- Giant Man (Henry Pym) (In an illusion or vision)
- Thor (In an illusion or vision)
- Iron Man (Tony Stark) (In an illusion or vision)
- Daredevil (Matthew Murdock) (In an illusion or vision)
- Fantastic Four (In an illusion or vision)
- Mr. Fantastic (Reed Richards) (In an illusion or vision)
- Invisible Girl (Susan Storm) (In an illusion or vision)
- X-Men (In an illusion or vision)
- Cyclops (Scott Summers) (In an illusion or vision)
- Beast (Henry McCoy) (In an illusion or vision)
- Marvel Girl (Jean Grey) (In an illusion or vision)
- Angel (Warren Worthington III) (In an illusion or vision)
- Iceman (Robert Drake) (In an illusion or vision)
- Professor X (In an illusion or vision)
- Brotherhood of Evil Mutants (In a photograph only)
- Magneto (Max Eisenhardt) (Only in flashback)
- Mastermind (Jason Wyngarde) (In a photograph only)
- Toad (Mortimer Toynbee) (In a photograph only)
Synopsis for "Quicksilver and the Scarlet Witch"Edit
Wanting to be free of Magneto's rule, Quicksilver and Scarlet Witch decide they should seek the aid of heroes in the United States. Traveling to New York, the two go to seek the help of the Fantastic Four. Unfortunately, the Thing and Human Torch are the only one's home and they have just seen a news bulletin identifying the two mutants as members of Magneto's Brotherhood of Evil Mutants. A fight soon breaks out that ends with both sides growing weary of a fight. Afterwords the two mutants decide that they're safest by Magneto's side and the two Fantastic Four members allow them to leave.
Appearing in "The Demon's Disciple!"Edit
Featured Characters:
Supporting Characters:
- Mordo's Minions
- Demonicus (Mordo's Apprentice) (First appearance)
Other Characters:
- Disciple of the Demon
- Seraphim (Mentioned) (Invocation)
- Cyttorak (Mentioned) (Invocation)
- Vishanti (Mentioned) (Invocation)
- Raggador (Mentioned) (Invocation)
- Agamotto (Mentioned) (only by the narrator)
Synopsis for "The Demon's Disciple!"Edit
Dr. Strange is visited by a disciple of a mystic known as the Demon, however the Demon causes the man to disappear. Tracking the Demon to his lair, Dr. Strange is trapped in the Crimson Bands of Cyttorac until he travels out of his body and reads the Demon's spells in order to learn a way to free himself. Battling the Demon, Dr. Strange bests him in mystic combat and then casts a spell that will make the Demon want to renounce the mystic arts for the purposes of evil.
- Quicksilver and the Scarlet Witch next appear when they join the Avengers in Avengers #16
- Story contains a 1 page pin-up: Dr. Strange-Master of the Mystic Arts. (Steve Ditko/art)
- Dr. Strange story is reprinted in Doctor Strange Master of the Mystic Arts (Pocket Books).
- Contains letters page: Strange Mails- Letters from Danny Harrison and "The Charades", Steve Perrin, Mike Passano, Bruce MacPherson, and Roy Cunningham
- Also contains "The Mighty Marvel Checklist" with "And a Bunch of Memos from the Ol' Bullpen"
- No trivia.
See AlsoEdit
- Write your own review of this comic!
- Discuss Strange Tales Vol 1 128 on the forums
- Cover gallery for the Strange Tales series
- Images from Strange Tales Vol 1 128
Recommended ReadingEdit
- None.
Links and ReferencesEdit
- None.
|Like this? Let us know!


text:
ReviewGist App
Read reviews on the go.
'We aren't kidding when we say that this display is bright and brilliant with vibrant colors and sharp graphics. '
'responsive controls'
'As you approach your destination, an interactive photo of the actual location pops up with an arrow to point you in the right direction. '
'Nevertheless, the Motorola Droid is hip, powerful, and smart, making it our top smart phone pick for Verizon Wireless. '
'very good quality sound'
'Further, the entire phone feels solid and extremely well built. '
'all-round performance'
'stunning phone'
'clunky user interface'
'superb, polished phone'
'really cool phone'
'most impressively specced phones'
'generous keypad'
'The gliding action is very smooth, probably due to the fact that the phone is a well-built device.'
'A few blue details, such as the blue navigation key, add a little flare to the already stylish phone. '
'But it crams a lot into its tiny, gleaming steel case, including a very high-res screen and a 3.2 MP camera. '
'best phone'
'Navigation of the W810 menus is pleasantly intuitive, like most recent Sony Ericsson phones.'
'dedicated music controls'
'Switching between the cell phone and the music player is seamless, as music automatically stops when you receive a call.'
'the phone can be sluggish.'
'The QWERTY keyboard is released by pushing the screen up in landscape mode up on a hinge, although this is pretty stiff and not easy to do with one hand.'
'arguably archaic keyboard'
'the overall user experience offered by Nokia E7 is ultimately frustrating.'
'The Moment ships with Android OS 1.5 so its three home screens and phone dialer interface will be familiar to Android users.'
'We weren't very fond of typing on the keyboard, however, because it's laid out in an awkward honeycomb fashion.'
'the interface on the Moment hasn't been tweaked with new graphics or capabilities.'
'Callers on the other end of the line heard me loud and clear except when I was standing in line at a busy lunch spot; one reported that she could barely hear me over the background noise.'
'The phone itself is pretty solid, despite being mostly made of plastic.'
'The phone is very good at playing all kinds of music.'
'The touch response is good, and as in both those previous models, the S-Class interface is a pleasure to use and runs slick enough.'
'It uses a proprietary headphone and charging jack instead, so you can't charge the phone and listen to music simultaneously. '
'Simple, easy-to-use design and outstanding call quality'
'Solid reception and sound quality'
'Easy-to-use navigation menu'
'Heavy and thick'
'The simplicity of simply holding down then clicking 'Done' when a selection is made is both simple and intuitive, and a highlight of the OS.'
'free full turn-by-turn navigation'
'loud and solid music'
ReviewGist helps you find the best products to buy by making sense of online reviews. We are currently aggregating 372,308 reviews covering over 29,324 products. See what the press says about ReviewGist here.


text: There is a term used in the antique business provenance. Fom the French provenir, "to come from", ahd refers to the chronology of the ownership, custody or location of a historical object. It is very important and seriously effects the value of an item. If the seller cannot provide you with this documented information then do not buy


text:
google mobile app jar
Google Books Downloader is a handy app that allows you to download free Google books to your computer. Google Books is a great service that gives you access to thousands of books. Even better, a large proportion of these online books are free. Google Books Downloader is a little applicati ...
Size:579 KB | License:Free | Date:2011-11-09
Google App Engine enables you to build and host web apps on the same systems that power Google applications. Google App Engine can be centralized administration: A new, company-focused administration console lets you manage all the applications in your domain. ...
Size: | License:Freeware | Date:2011-11-07
Mobile Video Extractor is a video editor and converter. It was designed to allow you to cut parts of your video files and then save them to other formats, but you can use it to convert files between different formats as well. Format support isn't this application's forte. It supports only .VOB, FL ...
Size: | License:Shareware | Date:2011-11-07
Tags Realated to google mobile app jar:
Additional Files, related to google mobile app jar:
Size: | License:Freeware | Date:2011-11-07
This program will help you easily convert a JAR file (MIDP application, such as Nokia Mobile Games) to an EXE file (Win32 NHAL Emulator). You can run the midlets just like what the execution files running on Windows platform. This program will run Midp2Exe compiler to convert JAR file (MIDP Applica ...
Size: | License:Shareware | Date:2011-11-07
ThinkVD DVD to Mobile Phone Converter can convert DVD to supported formats on other mobile phones. It also converts audio such as WMA, MP2, OGG, RA, AC3, APE, CDA and even extract audio from videos to convert to MP3, WAV or M4A so you can watch and listen to them on your mobile Phone.It can support ...
Size: | License:Shareware | Date:2011-11-07
Aya MP3 AMR WAV MMF Mobile Ringtone Creator 1.5 is audio conversion utility that helps in ringtone creation. The tool converts audio to mobile ringtone formats such as MP3, WAV, MMF, AMR etc. It can be extract and split the audio from video formats like AVI, Divx, Xvid, MPEG1, MPEG2, DVD, VCD, SVCD, ...
Size: | License:Freeware | Date:2011-11-07
Watching your favorite Movies and TV shows and downloaded internet TV files. The new mobile tv app is available as a free download which gives viewers access to mini content or minisodes, basically condensed tv shows to just a few minutes. Now you can watch Live TV, online movies and radio on your t ...
Size: | License:Freeware | Date:2011-11-07
MediaCell Mobile Video Converter is a multi-format video converter. It allows you to convert video files to either MP4 or 3GP files, which are usually playable on mobile devices. The application uses conversion profiles to help you optimize the conversion process for specific devices. There is a dro ...
Size: | License:Freeware | Date:2011-11-07
YouTube Downloader App is a free and easy-to-use video downloader that allows you to download videos from YouTube. Once these videos are on your computer, you can do a variety of things with them, like watch them, convert them using a video converter to watch them on your mobile device, use an audio ...
Size: 367.01K | License:Free | Date:2011-11-07
Google Maps for mobile is a free download that lets you view maps and satellite imagery, find local businesses, and get driving directions on your mobile device. Since the application is designed for users on-the-go, it provides features like click-to-call and saved search history that are especial ...
Size: 2.04MB | License:Freeware | Date:2011-11-08
NetQin Mobile Security ...
Size:588 KB | License:Free | Date:2011-11-08
RealPlayer SP is one of those media applications that seems to have been around since the very beginnings of the web. Nowadays, its far more sophisticated than it was in its humble beginnings and features social and portability options that make it a widely-used application for those who ...
Size:11.3 MB | License:Free | Date:2011-11-08
Opera Mobile is a browser for Windows 7 users that can also be taken with you on the go on your mobile device. First impressions are often the ones that stay with you the longest. For Opera Mobile it's that this browser is lightweight and very fast. Particularly suitable for devices suppo ...
Size:2.4 MB | License:Free | Date:2011-11-09
PdaNet lets you tether your computer to your phone's Internet connection using your USB cable, and it's really simple to set up. Trying to find a WiFi hotspot to connect your laptop or netbook can be quite a mission at times. With PdaNet though, you can ensure you can always get your comp ...
Size:9.6 MB | License:Free | Date:2011-11-09
With an ever growing number of social networks and IM platforms, keeping in touch with all your friends has become quite a time-consuming task. This is where Nimbuzz comes in really handy as it's a multi-platform instant messaging client. This enables you to chat with your contacts and ke ...
Size: 27.39K | License:Freeware | Date:2011-11-12
SatTracx Mobile Locator service helps to Locate your Friends, Family, Field Force and every possible person having a GSM mobile in INDIA. Features: 1.Locate your mobile (Area). 2.Locate your friends, family, Field Force Mobile in India. 3.Locate your Mobile once its lost. 4.SIM change notification ...
Size:125 KB | License:Free (GPL) | Date:2011-11-13
RemoteDroidServer is the application you'll need to remotely control your PC from your Android phone with RemoteDroid. Simply download the app, open the . JAR file and use the IP address that appears on your PC when prompted by the RemoteDroid application on your mobile. ...
Free Video to Nokia Phones Converter on Tuesday June 18,2013
Standalone Flash Player on Tuesday June 18,2013
DJ Music Mixer on Tuesday June 18,2013
DreamLight Photo Editor on Tuesday June 18,2013
Magic Photo Editor on Tuesday June 18,2013
Google Satellite Maps Downloader on Tuesday June 18,2013
Virtual DJ Studio on Tuesday June 18,2013
Photo Frames Master on Tuesday June 18,2013
Free Video to Samsung Phones Converter on Monday November 30,-0001
Opera Password Recovery on Tuesday June 18,2013


text:
Sept. 3, 2005
Students and other members of the ACU family will be helping aid Hurricane Katrina evacuees who will be relocated to Abilene and will be aiding residents of nearby Stamford who are still facing extensive damage from recent flooding.
City leaders said Saturday that Abilene may be a location for up to 100 evacuees from areas affected by Hurricane Katrina. ACU students are planning to be available to help prepare a location and provide other aid to any evacuees who arrive in Abilene.
In addition, city leaders urged Abilene residents to continue to help residents of neighboring Stamford who faced severe flooding recently.
About 128 ACU students who met Saturday have begun organizing teams of 20 students each to be ready at a moment's notice. Students will begin by going to the Lake Stamford/Haskell area to help flood victimes there who remain displaced. Others will be mobilized to clean and prepare a location, collect clothing and other needed hygiene items and to prepare materials to be shipped wherever they are needed.
Saturday during ACU's pre-game party at Shotwell Stadium, donations for the hurricane relief fund were collected. In addition to cash, hygiene items continue to be the greatest need. Many churches will be collecting these items on Sunday to be packaged and used in Abilene and in other cities across Texas and in affected states.
Plans are being made for students to travel on weekends to work with churches in Houston, San Antonio, and Dallas with evacuees in those locations, said Dr. Wayne Barnard, dean of campus life. A Christmas Break Campaign is also being planned during the week after fall finals week. Students will organize themselves to work with churches in Texas cities, as well as churches in Louisiana. ACU's Spring Break Campaign leadership will be meeting to discuss opportunities to focus efforts for the 2006 Spring Break Campaigns on the New Orleans area, Barnard said.
ACU's daily Chapel on Tuesday will focus on hurricane relief and a special collection. Kirk Garrison, former ACU Bible professor and former minister of the Carrolton Ave. Church of Christ in New Orleans will help in planning Tuesday's Chapel. The Students' Association will take up a collection. All donations from the pre-game party, Chapel, and ACU's website will go to a special Hurricane Relief account at ACU to help with local evacuees and with the Carrolton Avenue Church of Christ in New Orleans, as well as other churches involved in ministry to evacuees. >.
Visit www.acu.edu/hurricanekatrina for more details or donate online.
If you are a member of the media who would like more information about this release, please contact Wendy Kilmer, director of public relations.


text:
I am no stranger to same-sex marriage debates. And even though marriage is not a priority for me (be it to the same or opposite sex) since I'm not sure I might ever want to, it's very difficult to sit back and keep my mouth shut when the anti same-sex marriage crew start to mouth off.
I had a conversation/argument about this with an old acquaintance recently, and I finally realized something – I think I'm done arguing with people about the morality of same-sex marriage and the general equality of non-heterosexual people.
It wasn't an argument I hadn't heard before, but as I sat there listening to this person who was supposed to be a 'friend' and maybe even a prospective partner (I was SO wrong) say that people might as well be allowed to marry animals and little children, I was enraged. "Where do we draw the line", he asked. I don't think I've ever wanted to punch somebody in the throat that bad.
I could not believe that once again, I was expected to sit here and argue my self-worth. That I was expected to actually say, "Could you please not compare me to a dog yeah? Thanks much"
It is not, and will never be my job to explain to people, especially those who are supposed to know and like me, that they should not dehumanize me in an attempt to prove to themselves and the world, that they perceive an aspect of my self to be wrong. Did I mention that he even used the word, "unnatural"
I say it all the time…I have never been able to understand how parents disown their gay children or people abandon their gay friends. Speaking from my point of view, my friends must have seen something in me to make them like me so much; perhaps it was a summation of many qualities. My family on the other hand, is supposed to love me unconditionally as far as I know. So how do these people actively decide that this one thing about me (which in NO WAY affects them if I might add) overshadows everything good?
But that's it. I'm done. Everyone's entitled to an opinion no matter how ignorant it is, but anyone who tries to pull this stunt on me again will wish that they had never gotten out of bed that day. I will not argue, but you better believe that I will let that person know what a dehumanizing piece of schtako they are.
Pingback: ccn2785xdnwdc5bwedsj4wsndb()
Pingback: xcmwnv54ec8tnv5cev5jfdcnv5()
Pingback: xcn5bsn5bvtb7sdn5cnvbttecc()


text:
Water-main break in Gatewood closes roadJanuary 16, 2013 at 7:18 pm | In Utilities, West Seattle news | 4 Comments
Residents in the 37th/Elmgrove area of Gatewood say their water's just come back on after a while without it tonight. Mark Ahlness tells WSB that city crews explained "it was a broken 8-inch water main on SW Elmgrove," and that crews have "replaced the broken portion." Elmgrove has been closed between 35th and 37th for the work. A WSB crew also has just stopped by the scene, and we're told the road should reopen within a few hours, once the hole dug for the pipe fix has been re-filled.
4 Comments
Maybe it was a stainless steel repair band? Not a stainless steel pipe, I maybe wrong.
Comment by timh2o — 7:24 pm January 16, 2013 #
Not being a pipe expert I've just taken that part out. We have verified the main part of the info – it's been fixed/replaced. Will ask SPU for followup tomorrow – TR
We're still missing water pressure in some of our faucets.
Comment by Weiss — 11:02 pm January 16, 2013 #
clean out the aerators on the faucets. repair jobs mean grit in the pipes. flushing your pipes at the hose bibbs will help too.
Comment by das — 8:05 am January 17, 2013 #
Sorry, comment time is over.
All contents copyright 2005-2015, A Drink of Water and a Story Interactive. Here's how to contact us.
Header image by Nick Adams. ABSOLUTELY NO WSB PHOTO REUSE WITHOUT SITE OWNERS' PERMISSION.
Entries and comments feeds. ^Top^


text:
Posted by Harald
I got a denial on my green card renewal, due to an error from USCIS. I had a lot of traveling planned and needed urgent help. Was recommended to call Lindsay and it really paid off. She worked our way into the USCIS building without an appt and I was able to get my temporary travel stamp. She also filed a motion to get the case looked at again, and I got my renewed GC within 2 months. Highly recommend Lindsay!
Posted by Karl
She was recommended to us as we were hiring an executive of Chinese Origin for our international business based in NYC.
Lindsay was immediately responsive, very knowledgeable and a trustworthy lawyer who provided us with comprehensive documentation for a speedy and successful resolution of our immigration matter.
Lindsay also has a warm and engaging personality as well as being a superb lawyer.
Overall we had a very good experience both on a personal and professional level with Lindsay.
We highly recommend Lindsay.
Posted by a Immigration client
Lindsay processed my petition for the an O1B visa.
Very nice to work with! Always really helpful in guiding me through what I needed to complete a strong petition!
And I got the visa!
Posted by Niamh
Lindsay is very diligent about communicating and explaining the immigration process in a way that's understandable. I previously worked with 2 lawyers for the same visa and never fully understood what was happening until working with Lindsay where she explained each step of the process. She's very responsive and knows how to put a client at ease. Truly great to work with!
Posted by a Immigration client
I cannot find words to adequately describe Lindsay. EFFICIENT, PROFESSIONAL, WARM, GOES ABOVE AND BEYOND HER CALL OF DUTY TO GET THE WORK DONE, DOES HER BEST TO MAKE THE PROCESS EASY TO UNDERSTAND, TIME-CONSCIOUS, PATIENT, DOES NOT LOOSE FAITH, PERSISTENT, CONSCIENTIOUS, KIND. All these words do not do her justice. Lindsay is an excellent attorney. She is the kind of attorney you will want to have on your side.
For my case, I was initially not even sure if I could apply for this visa. An attorney told me of Lindsay's excellent reputation and encouraged me to consult with Lindsay. At the consultation, Lindsay boosted my confidence, showed she was willing to work with me and create exceptions to help me with my case. Lindsay became a general advocate/source of quality information on my behalf after the consultation although we had not yet retained her. As all clients involved in my case deliberated about the possibility of applying for the visa, Lindsay was always available to answer any general questions we had although we had not yet retained her. Her emails were always very well written, easy to understand. When you called her she was always available to talk or called you back quickly.
Things did not initially go as planned in my case because all the clients were not sure if they wanted to apply together. It took months of deliberation. All this time, Lindsay did not give up on us. She was always available to answer any questions, to talk, to provide detailed and easy-to-understand information about the visa. She also always reminded us of the deadlines involved, so we wouldn't miss any. Lindsay's excellent explanations were one of the reasons why all the clients found confidence to go ahead and apply for the visa. That she did not give up on us throughout our deliberations and provided excellent info even though we had not yet retained her, was testament of her excellent character. This was not about money for this lawyer; the visa process is her passion and a way of life for her. In fact she even made fee exemptions for us to help us.
As soon as we signed the attorney agreement, Lindsay worked swiftly. In less than 3 weeks, she helped us to file everything. The process would have taken less than 3 weeks but the clients took time to get things together. Lindsay always acted swiftly to get things in on time. One time I turned in materials around 6 pm during holiday season. Lindsay reviewed, completed her work and filed the documents that same evening even though it was the holidays. That is the kind of attorney Lindsay is. This is a way of life for her. She picks up and completes things on time. She is certainly the kind of attorney, the kind of dedication, the kind of excellence, the kind of kindness you want in your corner. Also, on days we were very anxious and high strung about the process, Lindsay had kind words and jokes here and there to make us laugh and ease our anxiety.
It takes efficient people like Lindsay sometimes to help you to win in the nick of time and even with the slightest of odds in your favor. You will not regret working with her. Everyone needs to have someone like Lindsay in their corner. She has restored my faith in humanity.
Posted by Andris
She was helpful with an application for the H-1B Petition for a new employee. Her knowledge was outstanding. She walked us through the process, careful to explain what was needed all along the way. She listened and offered relevant advice, but most of all she listened. It was clear that she understood our needs and was intentional to include us as clients in the process.
She is an excellent attorney with a wonderful sense of humor. I HIGHLY recommend her services. She made us feel comfortable and was always available to respond to questions.
Again, I would HIGHLT recommend her services. Thank you.
Posted by a Employment client
Lindsay was very patient throughout the process and at times when I felt flustered or anxious, she would respond to my emails with direct yet encouraging words. She was detailed when needed and took us through the process step by step.
I highly recommend Lindsay Curcio!
Posted by a Immigration client
Lindsay is the consummate immigration attorney. She assisted my husband and I on an immigration petition which had been ongoing for several years. Within a short period of time she got up to speed on the case and began taking steps to move our case forward. Lindsey is both knowledgeable and steadfast in her commitment to servicing her clients. She keeps you informed every step of the way and takes the time to explain nuances in the law so that you have a full understanding of your case. Today my husband and I are permanent residents and we attrible that solely to Lindsey's commitment and care in handling our case.
Posted by Sophie
Lindsay was fantastic at every step of the process to get my visa. She worked tirelessly and was contactable at any time of the day or night, which was incredibly reassuring. She made all the legal jargon easy to understand and was patient and kind throughout. I would definitely use her again and wouldn't hesitate in recommending her to others.
Posted by David
Lindsay handled my immigration case (British citizen, H1-B visa petition) and was superb at every step of the process.
She was knowledgeable, honest, patient, dedicated and totally dependable. Her understanding of the process was absolute, she clearly knows the process inside out. She answered every emailed query of mine (however trivial) within minutes, and explained everything in a very accessible manner. I trust her absolutely and would recommend her without reservation.


text:
- Program List
Below are many of the more than 170 five-hour 'weeks' of Exploring Music that have been created since 2003. The first seven minutes of every program are free to sample. Several entire 5-hour programs are also free to listen (marked 'free' below). For complete access to all of the shows, click here to become a subscriber. To sort through the shows by composers click here. To see the playlist for a given show, click on the show and then on the 'playlist' button beneath any of the five one-hour programs.
AA Green and Pleasant LandA Little Traveling Music, Please (FREE)American Masters, Part I (FREE)American Masters, Part IIAmerican Masters, Part IIIAmerican Masters, Part IVAmerican Masters, Part V (FREE)An Intelligent ConversationArias & BarcarollesArtists in Exile, Part IArtists in Exile, Part IIAutumn Leaves BBach Sleeps in on Sundays Bach to Beethoven Bach's Christmas OratorioBach's Not-So-Minor B-Minor MassBarberBartokBeethoven & that Danged Metronome (FREE)Beethoven and the PianoBeethoven at Parnassus, Part IBeethoven at Parnassus, Part IIBeethoven QuartetsBerliozBernsteinBill's Keepers Boulanger, NadiaBrahms, Part IBrahms, Part II Britten CCall for ScoresCello Concertos (FREE)Child's PlayChopinClash of the Titans Clowning AroundCoplandCoriglianoCzech out those Bohemians DDebussyDemons, Spooks and Other Things That Go Bump in the NightDirector's ChoiceDistant NeighborsDon't Shoot the Piano PlayerDvorakDvorák, Tchaikovsky & Borodin String Quartets EElgarEmotion and Meaning in MusicEspanaFFamilies of InstrumentsFamily MattersFauréFit for a KingFour SeasonsFrom This Mighty River: Music of the Children of J.S BachGGame of Pairs, Part I (FREE)Game of Pairs, Part IIGershwinGet the PictureGitana: Gypsy Music and Its Influences HHandelHaydn and Mozart QuartetsHaydn SymphoniesHHidden Gold, Part IHidden Gold, Part IIHindemithHit or Myth (FREE)Holiday CelebrationHomageII Didn't Know About YouI Hear America SingingI Lost it at the Movies (FREE)In a Family WayIncidentally SpeakingIntimate VoicesInvitation to the Dance, Part IInvitation to the Dance, Part II Invitation to the Dance, Part IIIIt Takes Two to TangoIt Was a Lover and His LassItalian SouvenirsJJanáčekLLatin CarnivalLes SixLife Among the Dead: Requiem MassesListener's Choice, Part IIListener's Choice, Part IIILiszt (FREE)MMaestro, Pt IIMaestro, Pt. I Magnificent MagyarsMahler, Part IMahler, Part IIMaiden VoyagesMendelssohnMendelssohn, Schumann and Brahms String QuartetsMerrie EnglandMozart at his Zenith (FREE)Mozart Piano ConcertosMozart's Birthday BashMozart: Bright Lights, Big CityMusic for the MassesMusic in the Time of WarMusical Cryptograms NNationalismNew Releases III, Part 1 New Releases III, Part 2 (FREE)New Releases, Part IINew Wine in Old Bottles (FREE)NielsenNinth SymphoniesNobody Ever Builds a Statue to a CriticOOrpheus in the New WorldOutward BoundPPastoral SymphoniesPiano ConcertosPolandPortraits in Black, Brown, & Beige, Part IPortraits in Black, Brown, & Beige, Part IIPoulenc, FrancisProkofiev RRachmaninoffRavel (FREE)RespighiRoaring 20'sRussian Five: The Mighty HandfulSSchool DaysSchubert String QuartetsSchubertiade, Part ISchubertiade, Part IISchuman, WilliamSchumann, Robert Shakespeare (FREE)Shostakovich, Part I (FREE)Shostakovich, Part IISibelius and GriegSounds of the City of Lights SoundtracksSpring is Here St-Saëns, Camille St. Matthew PassionStrauss, RichardStravinsky (FREE)String Quartets from Fibich to SibeliusStrings Plus OneSweet Home Chicago (FREE)Symphony, Part 01Symphony, Part 02Symphony, Part 03 (FREE)Symphony, Part 04Symphony, Part 05 Symphony, Part 06 (French)Symphony, Part 07 (Russian)Symphony, Part 08Symphony, Part 09Symphony, Part 10TTchaikovsky, Part ITchaikovsky, Part IIThe Ballad of East and West The Big Five, Part I: Chicago Symphony Orchestra (FREE)The Big Five, Part I: New York PhilharmonicThe Big Five, Part II: New York PhilharmonicThe Proud Tower, Part IThe Proud Tower, Part IIThe Violin Concerto Through the Mail SlotTone Poems (FREE)Too Darn BigTriple PlayTudor MusicTwo Very Different Worlds Delius and HolstUUnder the Hood, Part IUnder the Hood, Part IIUnfinished SymphoniesVVariationsVaughan WilliamsVeniceVerdi, Part IVerdi, Part IIVienna, Part IVienna, Part II (FREE)ViolaVoices from the East WWagnerWagner's Ring CycleWalton, WilliamWater MusicWhat Else Ya Got?Wind QuintetsWunderkinder Part OneWunderkinder Part TwoYYou and the Night and the Music
- Listen to the Show
- About Exploring Music
- Discussion
Please click here to find out more.
Beethoven and the Piano Purchase Now
At age 13, Ludwig Van Beethoven wrote his first piano sonata, which was published when he was 24-years-old. Bill samples Beethoven's first concerto, named as his second due to publishing order, and demonstrates Bill's favorite passage of the piece. He describes the passage as one that provides evidence that composers could become poetic and prophetic. Then Bill samples one of Beethoven's most famous pieces, "Pathetique Sonate," as the music that brought him so much satisfaction that he did not write in that style again.
Beethoven: Piano Sonata Op. 2 No. 1, I & II
Perahia, p.
Sony 64397
3:55, 4:40
Beethoven: Concerto for Piano No. 2 in B-flat major, Op. 19
Cleveland Orchestra/Szell; Fleisher, p.
27:28, 1:14
Beethoven: Sonata for Piano No. 8 in C minor, Op. 13, Pathétique, I
Ashkenazy, p.
Lon 410260
Beethoven: Sonata for Piano No. 9 in E major, Op. 14 No. 1, I
Gould, p.
Sony 51638
The beginning of the nineteenth century marked the shift from the "rational" to the "emotional," the shift from the age of Enlightenment to the age of Romanticism. The clarity, balance, and reason that can be heard with Enlightenment-age composers such as Mozarrt and Haydn is present in much of Beethoven's earlier piano works such as the Piano Concerto No. 1 and the Piano Sonata No. 11. However, Beethoven is responsible for guiding the shift to the personal, emotive quality of Romantic-era music, and the tension between these two differing ideologies courses through his compositions after the turn of the century.
Beethoven: Sonata No. 11 in B-flat, Op. 22, III
Ohlsson, p.
Arab 6773
3:29, :56
Beethoven: Piano Concerto No. 1 in C Major, Op. 15
Concertgebouw/Wallberg; Argerich, p.
:30, :25, 34:08
Beethoven: Sonata for Piano No. 14 in C-sharp minor, Op. 27 No 2, Moonlight, I & III
Goode, p.
None 79328
The third installment of Beethoven's piano works begins with the third piano concerto, which marked a significant departure from his previous works, much like his groundbreaking third symphony which was published around the same date. This concerto is notable for the deeply contrasting styles of the first and second movements, especially in the harmonic language employed. Bill equates the slow second movement to a poetic journey, with unexpected tonality giving way to deep emotional expression.
Bill examines the"Appasionata," and the fourth concerto, discussing how the themes Beethoven composed during this time were usually quite simplistic. And yet, they allowed for incredible development using rhythmic repetition and variation. The fourth concerto marks a departure from the traditional "double exposition" common in previous concertos, where the piano entrance comes after an extended orchestral introduction. Here, the piano opens the piece to dramatic effect.
Beethoven: Sonata for Piano No. 23 in F minor, Op. 57, Appassionata, I
Ashkenazy, p.
Lon 425838
Beethoven: Concerto for Piano and Orchestra No. 4 in G Major, Op. 58
CSO/Levine; Brendel, p.
Phil 456045
Beethoven: Sonata for Piano No. 24 in F-sharp major, Op. 78, I
Pommier, p.
Apex 48994
This final installment begins with a piano transcription of Beethoven's D Major Violin Concerto, and then onto the monumental "Emperor" concerto.
Beethoven: Concerto for Piano No. 6 in D major, Op. 61, III
Sinfonia Varsovia/Menuhin; Duchable, p.
Beethoven: Concerto for Piano No. 5 in E-flat major, Op. 73, Emperor
Berlin Phil/Leitner; Kempff, p.
Beethoven: Sonata for Piano No. 21 in C major, Op. 53, Waldstein, II
Brendel, p.
Phil 412575


text:
Annotations for
Mostly True Adventures of Homer P. Figg
Baker & Taylor
Twelve-year-old Homer, a poor but clever orphan, has extraordinary adventures after running away from his evil uncle to rescue his brother, who has been sold into service in the Civil War.
Findaway World Llc
A dramatic, witty, Civil War tale from bestselling author Rodman Philbrick.hrough a series of fascinating events, Homer's older brother has been illegally sold to the Union Army, and it's up to Homer to save him. Along the way, he encounters strange but real people of that different era. These historical people and places will educate and engage young listeners about our nation's past--in one of the most decisive moments of American history.Rodman Philbrick on writing:"I believe that we have the ability to change our lives using our imaginations. Imagination is a muscle--the more you use it, the stronger it gets."
Random House, Inc.
Although he is underage, Homer P. Figg's beloved older brother, Harold, is illegally sold into the Union Army by their ruthless guardian. Now Homer must run away from Pine Swamp, Maine, and his wretched home to find his brother and save him from the war, before it's too late.In a story filled with adventure, humor, and danger, award-winning novelist Rodman Philbrick tells of the turbulent, passionate times-from rural Maine to the Battle of Gettysburg--in the Civil War. Here is historical fiction at its most engaging, portraying the 1860s through the observant eyes of a backwoods boy who is both courageous and funny-and always willing to stretch the truth to his own advantage. A master of plot twists and vivid characters, Philbrick sweeps readers into the unpredictable events--both colorful and tragic--of this powerful turning point in American history.