R. Johanan said: Exile atones for everything, for it is written, . Whereas after he [the king] was exiled, it is written, (1) [He was called] , because his mother conceived him in prison. , because God did not plant him in the way that others are planted. We know by tradition that a woman cannot conceive in a standing position. [yet she] did conceive standing. Another interpretation: , because God obtained [of the Heavenly court] absolution from His oath.(2)

(1) I Ch. III, 17. Notwithstanding the curse that he should be childless and not prosper, after being exiled he was forgiven. (2) Which He had made, to punish Jechoniah with childlessness.

–Soncino Talmud edition, with selected footnotes

I accepted the repentance of Jeconiah: shall I not accept your repentance? A cruel decree had been imposed upon Jeconiah: Scripture says, (
Jer. 22:28
), for Jeconiah, according to R. Abba bar Kahana, was like a man’s skull which once shattered is utterly useless, or according to R. Helbo, like a wrapper of reed matting that dates are packed in, which, once emptied, is utterly useless. And Scripture goes on to say of Jeconiah: He is a vessel that none reaches for with delight (ibid.), a vessel, said R. Hama bar R. Hanina, such as a urinal; or a vessel, said R. Samuel bar Nahman, such as is used for drawing off blood. [These comments on Jeconiah derive from] R. Meir’s statement: The Holy One swore that He would raise up no king out of Jeconiah king of Judah. Thus Scripture: (
Jer. 22:24
), words by which God was saying, explained R. Hanina bar R. Isaac, “Beginning with thee, Jeconiah, I pluck out the kingship of the house of David.” It is to be noted, however, that the Hebrew for “pluck thee” is not as one would expect , but the fuller and less usual , which may also be rendered “mend thee”–that is, mend thee by thy repentance. Thus in the very place, [the kingship], whence Jeconiah was plucked, amends would be made to him: [his line would be renewed].

R. Ze’era said: I heard the voice of R. Samuel bar Isaac expounding from the teacher’s chair a specific point concerning Jeconiah, but I just cannot remember what it was. R. Aha Arika asked: Did it perhaps have some connection with this particular verse — (
Jer. 22:30
)? “Yes, that’s it!” said R. Ze’era. Thereupon R. Aha Arika went on to give R. Samuel bar Isaac’s interpretation of the verse: In his days Jeconiah, so long as he is childless, will not prosper, but when he has a son, then he will prosper by his son’s prosperity.

So I have been on an adventure in trying to buy groceries at my local grocery store using bitcoins. It has not been easy task mainly due to my not speaking German well enough to explain or argue with cashiers about some fancy technology. But I go through these things so that you, dear reader, don’t have to.

As I showed in
Part 1
I was able to buy my groceries online for about the same price as the grocery store but it is not the most convenient way of getting food (although I still vouch for the St Louis style ribs). This process was more convenient but still not what we all want as far as walking into our local grocery store with our cell phone, scanning a QR code (or swiping our implanted chip) to pay for your food. But it’s close.

Using
cardfy.com
I was able to find a gift card for Real grocery store here in Germany. This is one of the major grocery stores that offer everything. It’s like a Super Walmart though smaller. And of course, through
cardfy.com
I can pay for the gift card with bitcoins at a discount of 3%.

I started with a test card of 10 euros to see if it would work. The purchase was simple like any other online bitcoin purchase. Within a few minutes I received an e-mail with the gift card. This is where the fun begins. The e-mail has a link to download your card which is a pdf file but when you download it the name of the file is www.cardfy.com. This is the first hurdle because trying to open the file it tries to run a .com executable. So I had to open a DOS shell and change the filename to .pdf. Opening the pdf it had instructions on printing out the page and cutting off the bottom portion for your card.

Instead of printing the page I exported it to an image file and cropped out the card portion. I then sent that portion to my phone so I can pull it up at the store.

Saturday I went to test this out at the big store in the next town. I bought about 30 euros worth of food, took it up to the counter and pulled out my card on my cell phone. I went to a cashier who was just opening her aisle and I don’t think she was really ready to start yet so she seemed rushed. I said “you take this?” in as good of a german accent that I could. She scanned the barcode and it didn’t work so she increased the size on the barcode and scanned again and it didn’t work. She shook her head so I just paid in cash.

Sunday the grocery stores are all closed in germany, something about hating freedom or something.

MondayI ended up printing out the card just in case the problem was with not being able to read the cell phone image. I went to the Real close to my job after work. It was very busy and I got in line with an older cashier. I bought about 15 euro worth of food and when it came time to pay I showed her the printout and she appeared understandably confused. She looked at the page and I tried to say I bought it on the Internet in my broken german. She refused it, talking about how I needed the “original”. With a large line behind me and nothing I can say that she would understand, I just paid in cash again.I also found out that day that I didn’t actually go to a Real on Saturday. I went to a Rewe super store. I have no idea why I thought it was Real. Maybe because it was the biggest one I’ve seen.

Adding the
*zoom
property to the parent element triggers the
hasLayout
mechanism
specifically within Internet Explorer 6 and 7, which determines how elements should draw and bound their content, as well as how elements should interact with and relate to other elements.

Taking the same example from above you can see how the floats are contained and the elements are able to live outside of the parent element.

Clearfix Technique Demo

Which techniques to use boils down to the content at hand and your personal preference. Some people prefer to stick strictly with the clearfix technique as it is consistent across the board. Others feel the clearfix technique is a bit too much code in some cases and prefer a mix of techniques based on the content. What you decide to use is up to you, just make sure it is well documented and easily identifiable either way.

One common practice is to assign a class to the parent element which includes the floats needing to be contained. Using the clearfix technique for example, Dan Cederholm helped coin the class name
group
. The
group
class name can then be applied to any parent element needing to contain floats.

Single Pseudo-Elements

It is worth noting only one and one pseudo-element are allowed per element, for the time being. When trying to use the clearfix technique with other and pseudo-element content you may not achieve the desired outcome.

In the examples above, the clearfix styles would not live under the
box-set
class. Instead, the class of
group
would need to be added to the parent element containing the floats.

Occasionally you need more control over the position of an element, more than a float can provide, in which case the
position
property comes into play. The
position
property accepts five different values, each of which provide different ways to
uniquely position
an element.

In the demonstration below, all the boxes are stacked one on top of the other as they are block level elements and are not floated in any specific direction.

Position Static Demo

The
relative
value for the
position
property is very similar to that of the
static
value. The primary difference is that the
relative
value accepts the box offset properties
top
,
right
,
bottom
, and
left
. These box offset properties allow the element to be precisely positioned, shifting the element from its default position in any direction.

Note:
Do
not
use , since it will not point to the prototype of but rather to the function object . So the prototype chain will go over and not ; therefore, will not be on the prototype chain.

as a Property

JavaScript does not protect the property name ; thus, if the possibility exists that an object might have a property with this name, it is necessary to use an to get correct results.

In Conclusion

Using is the
only
reliable method to check for the existence of a property on an object. It is recommended that be used in many cases when iterating over object properties as described in the section on
loops
.

Note:
It is
not
enough to check whether a property is . The property might very well exist, but its value just happens to be set to .

Just like the operator, the loop traverses the prototype chain when iterating over the properties of an object.

Since ECMAScript 5, can be used with set to to add properties to objects (including ) without these properties being enumerated. In this case it is reasonable to assume in application code that any enumerable properties have been added for a reason and to omit , since it makes code more verbose and less readable. In library code should still be used since assumptions cannot be made about which enumerable properties might reside on the prototype chain.

Using for Filtering

This version is the only correct one to use with older versions of ECMAScript. Due to the use of , it will
only
print out . When is left out, the code is prone to errors in cases where the native prototypes - e.g. - have been extended.

In newer versions of ECMAScript, non-enumerable properties can be defined with , reducing the risk of iterating over properties without using . Nonetheless, care must be taken when using older libraries like
Prototype
, which does not yet take advantage of new ECMAScript features. When this framework is included, loops that do not use are guaranteed to break.

In Conclusion

It is recommended to
always
use in ECMAScript 3 or lower, as well as in library code. Assumptions should never be made in these environments about whether the native prototypes have been extended or not. Since ECMAScript 5, makes it possible to define non-enumerable properties and to omit in application code.

Note:
The loop will
not
iterate over any properties that have their attribute set to ; for example, the property of an array.