The exam will consist of multiple-choice, short-answer questions and writing your own code. You will need to prepare by reviewing the lectures numbered 1 through 7 (i.e. including the Tuesday 1/31 lecture) and the requisite readings. In addition, Lab 1 and Lab 2 are fair game for the exam. The material you need to finish Lab 3 is included in this exam (since it is covered in the lectures).
For the labs, this includes both code you've written and questions you've answered. Between this review and the labs, this information is intended to be comprehensive; there will be no material on the exam which isn't touched by either the labs or this review.
Convert the decimal number 39 into 8-bit binary.
00100111
Convert the decimal number 40 into a two-digit hexadecimal number.
0x28
Convert the hexadecimal number 0x45
into decimal.
69
Convert the hexadecimal number 0x1F
into decimal.
31
Convert the unsigned binary number 1001
into decimal.
9
Convert the signed binary number 1001
into decimal.
-7
Convert -5 into binary, using two's complement.
1011
Negate the number 7 using two's complement, and show its 4-bit binary representation.
1001
Negate the binary number 0110
using two's complement, showing the result in binary.
1010
What's the quickest way to tell if a number in two's complement is negative?
It is negative if its left-most bit is a 1.
In 5 bits, what is the most negative value representable in signed form, using two's complement? Express your answer in both binary and decimal.
In 5 bits, what is the most positive value representable in signed form, using two's complement? Express your answer in both binary and decimal.
In 5 bits, what is the most negative value representable in unsigned form? Express your answer in both binary and decimal.
You cannot represent a negative value in unsigned form; unsigned form means that all the bits are used for representing positive values.
In 5 bits, what is the most positive value representable in unsigned form? Express your answer in both binary and decimal.
Suppose you are given the following 4-bit binary number, shown in two's complement:
0110You're not told whether or not the number is signed or unsigned. Is this information important in knowing what the value of the number is, in decimal? That is, do you need to know if it's signed or unsigned to say what the decimal value is? Why or why not?
First of all, we know that it's signed because it's in two's complement. However, even we hadn't been told that it's in two's complement and only been told it's a binary number, we wouldn't need to be told if it's signed or not because the left-most bit is a 0, meaning it will be positive a number regardless of whether the number was signed or unsigned. It is equal to 6 decimal in either case.
Suppose you are given the following 4-bit binary number, shown in two's complement:
1001You're not told whether or not the number is signed or unsigned. Is this information important in knowing what the value of the number is, in decimal? That is, do you need to know if it's signed or unsigned to say what the decimal value is? Why or why not?
Like the previous question, we know it's signed because it's in two's complement. If we hadn't been told it was two's complement, then because of the left-most bit being a 1, we would be unable to determine the value of the number unless more information was given. This is because the left-most bit would make it a negative number if the number was signed, and a different positive number if the number was unsigned.
Suppose that a binary addition was performed in a processor, and the processor set the carry bit at the end of the computation. What does this mean? That is, what is the significance of the carry bit being set after an addition is performed?
After addition, the carry bit being set means that the result of the addition did not fit into the number of bits alloted. For example, adding two unsigned 4-bit binary numbers 5 and 11:
0101 + 1011 ------ 10000Notice that the result is 5 bits wide, but we only have 4 bits to store the number in. Therefore, the result of the additon is actually
0000with a carry set (the carry corresponding to the bit that would have been in position 4 if we had a 5 bits available).
Suppose that a binary addition was performed in a processor, and the processor set the overflow bit at the end of the computation. What does this mean? That is, what is the significance of the overflow bit being set after an addition is performed?
After addition, the overflow bit being set means that the result of adding two same-signed numbers resulted in a number of a different sign (just like in decimal, if you add two positive numbers, you must get a positive number, and if you add two negative numbers, you must get a negative number). For example, here we add two signed 4-bit binary numbers 5 and 7:
0101 + 0111 ------ 1100The resulting number, because we are dealing with signed numbers, is not 12 as it should be, but is instead -4 (because of two's complement). Both numbers were positive, but we got a negative result, thus we have overflow.
Generally, the carry bit is ignored when performing signed arithmetic. Why?
The carry bit is used to signify that we do not have enough bits to represent the result of a computation using unsigned arithmetic, and doesn't correspond to anything interesting in a signed setting.
Generally, the overflow bit is ignored when performing unsigned arithmetic. Why?
The overflow bit is set when the two inputs have the same sign, but the output lacks this same sign. In an unsigned setting, because there are no such things as negative numbers, this distinction is meaningless.
Perform the following two's complement addition, noting whether or not the carry bit (C) and/or the overflow bit (V) get set:
01111111 +11111111 --------- 01111110 C
Perform the following two's complement addition, noting whether or not the carry bit (C) and/or the overflow bit (V) get set:
00100101 +10110111 --------- 11011100
Perform the following two's complement subtraction, noting whether or not the carry bit and/or the overflow bit get set:
01111111 -11111111 --------- 10000000 V
Perform the following two's complement subtraction, noting whether or not the carry bit and/or the overflow bit get set:
00100101 -10110111 --------- 01101110
Consider the following C code:
signed char x; for (x = 1; x > 0; x++) { printf("Hello\n"); } printf("Goodbye\n");
Assume the compiler performs a naive translation to assembly, and doesn't exploit any special features of C. Recall that char
in C is represented with 1 byte. Does "Goodbye\n"
ever get printed out? Why or why not?
"Goodbye\n"
will be printed out. Since a char
is represented with one 8-bit byte,
the initial value of x
will be 1, and then x
is incremented continually. It will eventually reach the largest positive 8-bit
number, which, because this is signed two's complement, is (2^8)-1, 127 in decimal, or 01111111
in binary. Adding one
more to that results in 10000000
(binary), which is -128. Since -128 is less than 0, it finally exits the loop and prints
the final "Goodbye\n"
.
Consider the following C code:
unsigned char x; for (x = 0; x <= MAX_UNSIGNED_CHAR; x++) { printf("Hello\n"); } printf("Goodbye\n");
Assume that MAX_UNSIGNED_CHAR
holds the maximum value representable in an unsigned char
, which is defined previously in the code. Does "Goodbye\n"
ever get printed out?
The word "Goodbye\n"
will never get printed out. A character is represented using 8 bits, and because x
is unsigned,
it will be incremented until it reaches it's largest value, which is 1111111 in binary (255 in decimal), which is also equal to MAX_UNSIGNED_CHAR
.
When you add one to the largest unsigned 8-bit value, it wraps around back to 0 and continues incrementing, forever. Thus, the comparison x <= MAX_UNSIGNED_CHAR
will stay true for any of the possible values x
gets.
In the following questions, &
refers to bitwise AND, |
refers to bitwise OR, ^
refers to bitwise XOR, <<
refers to shift left, and >>
refers to shift right.
00011101 &11011010 --------- 00011000
00011101 |11011010 --------- 11011111
00011101 ^11011010 --------- 11000111
Consider the following C code, which is intended to extract the lowest 7 bits of the given input i
, leaving the bits in their original position:
int unsignedBits0through6(int i) { return __________; }
Fill in __________
with a single bitwise expression which will make the code do what it is intended to do.
(i & 0x0000007F)
Consider the following C code, which is intended to extract the next 7 bits of the given input i
, leaving the bits in their original position:
int unsignedBits7through13(int i) { return __________; }
Fill in __________
with a single bitwise expression which will make the code do what it is intended to do.
(i & 0x00003F80)
Consider the following C code, which is intended to extract the lowest 7 bits of the given input i
, treating the result as a signed value, leaving the bits in their original position:
int signedBits0through6(int i) { __________; return __________; }
Fill in the blanks with valid C code which will make the function do what it is intended to do.
int signedBits0through6(int i) { int u = i & 0x0000007F; if (u & 0x00000040) { u |= 0xFFFFFF80; } return u; }
Consider the following C code, which is intended to extract the next 7 bits of the given input i
, treating the result as a signed value, putting the bits in the rightmost position:
int signedBits7through13(int i) { __________; return __________; }
Fill in the blanks with valid C code which will make the function do what it is intended to do.
int signedBits7through13(int i) { int u = (i & 0x00003F80) >> 7; if (u & 0x00000040) { u |= 0xFFFFFF80; } return u; }
Consider the binary value 00001011
, stored in $s0
.
How can this be multiplied by 4, without using an instruction intented for division or multiplication?
sll $s0, $s0, 2
Consider the signed binary value 00001011
, stored in $s0
.
How can this be divided by 4, without using an instruction intented for division or multiplication?
sra $s0, $s0, 2
There is only one form of shift left, but there are two forms of shift right. Some questions follow about this fact:
Why are there two forms of shift right?
One is for signed values in two's complement, and the other for unsigned values. For example, consider the following 4-bit number:
1011
Let's say we shift right two places, like so:
XX10
...where XX
are the two bit positions on the left we need to fill in.
If the original value was unsigned, then we should always fill in with zeros.
However, if the value was signed, then we'd potentially have a problem if we're using shift right to divide: if we only fill in zeros, then the number becomes positive.
That is, we could end up getting a positive result back if we divide a negative number by a positive number, which wouldn't be correct.
To address this problem, there is a version of shift right (arithmetic shift right) which will fill in the XX
's above with whatever the leftmost bit remaining is (in this case, 1
).
In summary, this means that the non-arithmetic version of shift right always fills in zeros on the left (resulting in 0010
in the above example), and the arithmetic version fills in whatever bit preserves the signedness of the original value (resulting in 1110
in the above example).
What do the two different forms of shift right do?
Fill in higher order bits with 0s or 1s, according to the mechanism described in the previous answer..
Why is there only one form of shift left?
There are no leftmost bits to fill in. Substituting zeros on the right is the correct behavior regardless of the signedness of the value.
Division by a power of two can be achieved via the clever use of shift right. However, this won't always get the same result as actual division would. Some questions follow about these facts:
Under what conditions will shift right and division not return the same result?
When the dividend is negative.
The difference in results is viewable in a difference between rounding. What is the difference in rounding here?
Integer division rounds towards zero, whereas shift right rounds towards negative infinity.
When dealing with positive values, this distinction is meaningless, as there is no situation under which the behavior is different.
However, with negative values, this causes problems.
To demonstrate, consider -5 / 2
.
Mathematically, this results in -2.5
.
Using integer division gets -2
, but using shift right on the equivalent binary values results in -3
.
What does the li
pseudoinstruction do?
It loads the immediate value (2nd operand) into the target register (first operand). For example:
li $t0, 7
...puts the value of 7
into register $t0
.
Why isn't li
an actual MIPS instruction?
All MIPS instructions are exactly 32 bits large.
li
can be used to load a 32 bit constant into a register.
Therein lies a problem: the constant's entire value couldn't possibly be held in a single instruction, because there aren't enough bits (in addition to the 32 bits of the constant, there would need to be other bits to encode what the instruction is, which requires in total more than 32 bits).
It is for this reason that li
is a psuedoinstruction which can be automatically translated to multiple instructions, whenever we need to specify a constant using the full 32 bits.
li
to a form that uses only actual instructions (no pseudoinstructions):
li $t0, 0xFFFFFFFF # is translated into: lui $t0, 0xFFFF ori $t0, $t0, 0xFFFF
Translate the following C code into MIPS assembly.
The variables used below should be placed in the register with the same name.
For example, variable s0
should be placed in register $s0
.
If you need additional registers than what the code below uses, use registers $t0 - $t9
.
You do not need to exit the program properly.
int s0 = 82; int s1 = s0 << 2; int s2 = s1 * 20; int s3 = s2 + 7; int s4 = s3 - 24; int s5 = s4 / 3; main: li $s0, 82 # int s0 = 82; sll $s1, $s0, 2 # int s1 = s0 << 2; li $t0, 20 # int s2 = s1 * 20 (part 1 of 3) mult $s1, $t0 # (part 2 of 3) mflo $s2 # (part 3 of 3) addi $s3, $s2, 7 # int s3 = s2 + 7 li $t1, 24 # int s4 = s3 - 24 (part 1 of 2) sub $s4, $s3, $t1 # (part 2 of 2) li $t2, 3 # int s5 = s4 / 3 (part 1 of 3) div $s4, $t2 # (part 2 of 3) mflo $s5 # (part 3 of 3)
Translate the following C code into MIPS assembly.
Where <<read integer from the user>>
is used, you should use special functionality provided by SPIM to read in an integer from the console.
Where <<print integer s1>>
is used, you should use special functionality provided by SPIM to print the integer stored in s1
to the console (you might not be able to do this directly, in which case you'll need to copy the value of s1
into another register first).
The variables used below should be placed in the register with the same name.
For example, variable s0
should be placed in register $s0
.
If you need additional registers than what the code below uses, use registers $t0 - $t9
.
You do not need to exit the program properly.
int s0 = <<read integer from the user>>; int s1 = 2; if (s0 < 7) { s1 = 3; } <<print integer s1>> main: # read integer from user li $v0, 5 syscall # save integer from user move $s0, $v0 # store 2 in s1 li $s1, 2 # check if s0 < 7 li $t0, 7 slt $t1, $s0, $t0 # if it's NOT less than 7, skip the body of the if beq $t1, $zero, printmsg # we didn't branch, meaning s0 < 7 li $s1, 3 printmsg: # print s1 li $v0, 1 move $a0, $s1 syscall
Translate the following C code into MIPS assembly.
Where <<read integer from the user>>
is used, you should use special functionality provided by SPIM to read in an integer from the console.
Where <<print integer s1>>
is used, you should use special functionality provided by SPIM to print the integer stored in s1
to the console (you might not be able to do this directly, in which case you'll need to copy the value of s1
into another register first).
The variables used below should be placed in the register with the same name.
For example, variable s0
should be placed in register $s0
.
If you need additional registers than what the code below uses, use registers $t0 - $t9
.
You do not need to exit the program properly.
int s0 = <<read integer from the user>>; int s1 = 2; if (s0 < 7) { s1 = 3; } else { s1 = s0 + s0; } <<print integer s1>> main: # read in the integer from the user, and initialize s1 li $v0, 5 syscall move $s0, $v0 li $s1, 2 # check if $s0 < 7 li $t0, 7 slt $t1, $s0, $t0 # jump to the else branch if this isn't true beq $t1, $zero, else_branch # fall through to the true branch li $s1, 3 j print else_branch: add $s1, $s0, $s0 # fall through to the print print: li $v0, 1 move $a0, $s0 syscall
Translate the following C code into MIPS assembly.
The variables used below should be placed in the register with the same name.
For example, variable s0
should be placed in register $s0
.
If you need additional registers than what the code below uses, use registers $t0 - $t9
.
You do not need to exit the program properly.
int s0; int s1 = 1; for (s0 = 0; s0 < 10; s0++) { s1 = s1 * s0; } main: # initialize variables li $s0, 0 li $s1, 2 loop: # check loop condition li $t0, 10 slt $t1, $s0, $t0 # s0 < 10? beq $t1, $zero, loop_exit # if not, jump to loop_exit # do body of the loop mult $s1, $s0 mflo $s1 # increment counter addi $s0, $s0, 1 j loop loop_exit: # this is past the loop


public class StoreConfig
extends java.lang.Object
implements java.lang.Cloneable
EntityStore
or RawStore
.
StoreConfig
objects are thread-safe. Multiple threads may safely
call the methods of a shared StoreConfig
object.
See the package
summary example for an example of using a StoreConfig
.
| Modifier and Type | Field and Description |
|---|---|
static StoreConfig |
DEFAULT
The default store configuration containing properties as if the
configuration were constructed and not modified.
|
| Constructor and Description |
|---|
StoreConfig()
Creates an entity store configuration object with default properties.
|
| Modifier and Type | Method and Description |
|---|---|
StoreConfig |
clone()
Returns a shallow copy of the configuration.
|
StoreConfig |
cloneConfig()
Deprecated.
As of JE 4.0.13, replaced by
clone() . |
boolean |
getAllowCreate()
Returns whether creation of a new store is allowed.
|
DatabaseNamer |
getDatabaseNamer()
Returns the object reponsible for naming of files and databases.
|
boolean |
getExclusiveCreate()
Returns whether opening an existing store is prohibited.
|
EntityModel |
getModel()
Returns the entity model that defines entity classes and index keys.
|
Mutations |
getMutations()
Returns the configured mutations for performing lazy evolution of stored
instances.
|
boolean |
getReadOnly()
Returns the read-only configuration property.
|
boolean |
getSecondaryBulkLoad()
Returns the bulk-load-secondaries configuration property.
|
boolean |
getTransactional()
Returns the transactional configuration property.
|
StoreConfig |
setAllowCreate(boolean allowCreate)
Specifies whether creation of a new store is allowed.
|
void |
setAllowCreateVoid(boolean allowCreate)
The void return setter for use by Bean editors.
|
StoreConfig |
setDatabaseNamer(DatabaseNamer databaseNamer)
Specifies the object reponsible for naming of files and databases.
|
void |
setDatabaseNamerVoid(DatabaseNamer databaseNamer)
The void return setter for use by Bean editors.
|
StoreConfig |
setExclusiveCreate(boolean exclusiveCreate)
Specifies whether opening an existing store is prohibited.
|
void |
setExclusiveCreateVoid(boolean exclusiveCreate)
The void return setter for use by Bean editors.
|
StoreConfig |
setModel(EntityModel model)
Sets the entity model that defines entity classes and index keys.
|
void |
setModelVoid(EntityModel model)
The void return setter for use by Bean editors.
|
StoreConfig |
setMutations(Mutations mutations)
Configures mutations for performing lazy evolution of stored instances.
|
void |
setMutationsVoid(Mutations mutations)
The void return setter for use by Bean editors.
|
StoreConfig |
setReadOnly(boolean readOnly)
Sets the read-only configuration property.
|
void |
setReadOnlyVoid(boolean readOnly)
The void return setter for use by Bean editors.
|
StoreConfig |
setSecondaryBulkLoad(boolean secondaryBulkLoad)
Sets the bulk-load-secondaries configuration property.
|
void |
setSecondaryBulkLoadVoid(boolean secondaryBulkLoad)
The void return setter for use by Bean editors.
|
StoreConfig |
setTransactional(boolean transactional)
Sets the transactional configuration property.
|
void |
setTransactionalVoid(boolean transactional)
The void return setter for use by Bean editors.
|
public static final StoreConfig DEFAULT
public StoreConfig()
public StoreConfig cloneConfig()
clone()
.public StoreConfig clone()
clone
in class java.lang.Object
public StoreConfig setAllowCreate(boolean allowCreate)
If this property is false and the internal store metadata database
does not exist, DatabaseException
will be thrown when the store
is opened.
allowCreate
- whether creation of a new store is allowed.public void setAllowCreateVoid(boolean allowCreate)
allowCreate
- whether creation of a new store is allowed.public boolean getAllowCreate()
public StoreConfig setExclusiveCreate(boolean exclusiveCreate)
If this property is true and the internal store metadata database
already exists, DatabaseException
will be thrown when the store
is opened.
exclusiveCreate
- whether opening an existing store is prohibited.public void setExclusiveCreateVoid(boolean exclusiveCreate)
exclusiveCreate
- whether opening an existing store is prohibited.public boolean getExclusiveCreate()
public StoreConfig setTransactional(boolean transactional)
This property is true to open all store indices for transactional access. True may not be specified if the environment is not also transactional.
transactional
- whether the store is transactional.public void setTransactionalVoid(boolean transactional)
transactional
- whether the store is transactional.public boolean getTransactional()
public StoreConfig setReadOnly(boolean readOnly)
This property is true to open all store indices for read-only access, or false to open them for read-write access. False may not be specified if the environment is read-only.
readOnly
- whether the store is read-only.public void setReadOnlyVoid(boolean readOnly)
readOnly
- whether the store is read-only.public boolean getReadOnly()
public StoreConfig setSecondaryBulkLoad(boolean secondaryBulkLoad)
This property is true to cause the initial creation of secondary
indices to be performed as a bulk load. If this property is true and
EntityStore.getSecondaryIndex
has
never been called for a secondary index, that secondary index will not
be created or written as records are written to the primary index. In
addition, if that secondary index defines a foreign key constraint, the
constraint will not be enforced.
The secondary index will be populated later when the getSecondaryIndex
method is called for the first time for that index,
or when the store is closed and re-opened with this property set to
false and the primary index is obtained. In either case, the secondary
index is populated by reading through the entire primary index and
adding records to the secondary index as needed. While populating the
secondary, foreign key constraints will be enforced and an exception is
thrown if a constraint is violated.
When loading a primary index along with secondary indexes from a large input data set, configuring a bulk load of the secondary indexes is sometimes more performant than updating the secondary indexes each time the primary index is updated. The absence of foreign key constraints during the load also provides more flexibility.
secondaryBulkLoad
- whether bulk-load-secondaries is used.public void setSecondaryBulkLoadVoid(boolean secondaryBulkLoad)
secondaryBulkLoad
- whether bulk-load-secondaries is used.public boolean getSecondaryBulkLoad()
public StoreConfig setModel(EntityModel model)
If null is specified or this method is not called, an AnnotationModel
instance is used by default.
model
- the EntityModel.public void setModelVoid(EntityModel model)
model
- the EntityModel.public EntityModel getModel()
public StoreConfig setMutations(Mutations mutations)
If null is specified and the store already exists, the previously specified mutations are used. The mutations are stored persistently in serialized form.
Mutations must be available to handle all changes to classes that are
incompatible with the class definitions known to this store. See Mutations
and Class Evolution
for
more information.
If an incompatible class change has been made and mutations are not
available for handling the change, IncompatibleClassException
will be thrown when creating an EntityStore
.
mutations
- the Mutations.public void setMutationsVoid(Mutations mutations)
mutations
- the Mutations.public Mutations getMutations()
public StoreConfig setDatabaseNamer(DatabaseNamer databaseNamer)
DatabaseNamer.DEFAULT
.databaseNamer
- the DatabaseNamer.java.lang.NullPointerException
- if a null parameter value is passed.public void setDatabaseNamerVoid(DatabaseNamer databaseNamer)
databaseNamer
- the DatabaseNamer.public DatabaseNamer getDatabaseNamer()
Copyright (c) 1996, 2016 Oracle and/or its affiliates. All rights reserved.


Raveena Tandon to make digital debut as writer
National Award-winning actor Raveena Tandon said she is looking forward to working in the web platform.
by PTIActor Raveena Tandon is making foray into the digital space as a writer. Raveena will also produce projects, four in total, for her home banner, AA Films.
The National Award-winning actor said she is looking forward to working in the web.
“We are in the process of going on floors, and all of them are for the web platform. I find this medium fantastic as it is so experimental and we can do so much.
“It gives you the liberty to tell a story without being restricted to just two hours, so it’s a very exciting space to be in,” Raveena said in a statement.
Her last cinematic outing was 2017’s Shab.


THE ENDURANCE: SHACKLETON'S LEGENDARY ANTARCTIC EXPEDITION
In 1914, Sir Ernest Shackleton, having lost his bid to be the first explorer to reach the South Pole, set sail with a crew of 28 men to be the first to cross the Antarctic continent. His three-masted sailing vessel, built to withstand ice, was named after his family motto, 'By endurance we conquer.' In 1999, producer/director George Butler mounted an expedition to retrace Shackleton's two year struggle of extraordinary courageousness in "The Endurance: Shackleton's Legendary Antarctic Expedition."
Among Shackleton's many wise decisions was to bring along Australian photographer Frank Hurley, who documented their journey in both still photographs and moving film, which he editted into the 1919 documentary "South." While Hurley's original film features amazing footage and striking imagery, it suffers from injudicious editing and pacing, with almost a half hour of the film's end turned over to nature photography to fill in the gap Hurley experienced when Shackleton journeyed on, leaving Hurley and twenty-one others behind awaiting rescue.
What Butler has done is to recreate the entire amazing story, beginning with descendents of Shackleton's crew recalling the tales they were told (or not as the case may be) and filling out personalities of the men who responded to Shackleton's newspaper ad (which began 'Men wanted for hazardous journey, small wages, bitter cold...'). Butler has actors provide the voices of the crew as excerpts from their diaries are read, revealing the incredible leadership Shackleton provided under threat of mutiny and overwhelming odds. While he uses Hurley's footage and photos, Butler's documentary is a far richer, more emotional work. New footage and unobtrusive recreations continue Shackleton's determination to save his men after ten months trapped in the ice pack which crushed their ship.
After getting his men to Elephant Island in three lifeboats, Shackleton and five others travelled 800 miles through wild seas to South Georgia, a whaling station and their last point of departure. This journey alone is often called the most daring ocean voyage in modern maritime history. Starved, frostbitten and exhausted, Shackleton still faced a 36 hour trek, including scaling a glacier, when they made land on the opposite side of their destination. It took him four voyages before he finally arrived back at Elephant Island and succeeded in bringing his entire crew back to civilization alive. Ironically, they returned to a world at war which paid scant attention to their return. Shackleton himself began another Antarctic expedition some years later with many of his former crew, but died of a heart attack at the age of 48 upon their arrival at South Georgia's whaling station.
Butler's first rate documentary is only hurt by Liam Neeson's narration. His soft, lilting voice often lacks the drama the events he's recounting demand. Music by Michael Small ranges from a deep, foreboding orchestral piece which recalls whale sounds to Irish jigs and Tibetan vocals. Transitions from old footage to new are seamless.
"The Endurance: Shackleton's Legendary Antarctic Expedition" is an awe-inspiring, uplifting tale of human fortitude and one man's incredible capacity to lead men through unthinkable obstacles.
A-
For more Reeling reviews visit www.reelingreviews.com
<EMAIL_ADDRESS><EMAIL_ADDRESS>========== X-RAMR-ID: 29493 X-Language: en X-RT-ReviewID: 250234 X-RT-TitleID: 1110013 X-RT-SourceID: 386 X-RT-AuthorID: 1487
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Architecture¶
Options¶
Just about everything (too much) is configured via the Options class. Defaults and command line options are handled via the docopt library, which uses a very verbose docstring to work. Options can also come from an inifile via the confirparser library. Right now the priority for configuration options is:
inifile > command line > docstring defaults
In the future, the priority will be:
command line > inifile > docstring defaults
The dictionary of options, sans the double hyphen prefix in the case of those coming in via docopt, are used throughout the package. No advance cleanup is taking place to, for example, turn a value into an string into an int.
Note that for any options dealing with MIDI, both int and hex values are allowed and will be translated as needed. In other words, both 0x7F and 127 are both acceptable.
ProcessAudio¶
ProcessAudio initializes the sound card for record as well as the various audioprocessors that have been turned on. Once started, a callback loop takes frames of incoming audio data and sends a copy of each frame as an array to the live audio processors.
TempoFinder¶
The TempoFinder receives frames of audio data from ProcessAudio. Depending on how it has been configured, it may accumulate some multiple of these audio frames before moving on. Once a threshold amount of audio has been received, it uses the aubio tempo class to try to get the BPM of the audio. Configurable averaging takes place to keep radical values from throwing things off. Assumptions are made that extremely low BPM values should be doubled, and likewise extremely high values should be halved. After that, values lower than a BPM of 60 or greater than a BPM of 187 are ignored.
If the BPM value has changed from the last time this has run, MIDI messages are prepared with the new information. Due to the 7 bit nature of MIDI, there are several ways to encode the BPM into MIDI messages, which can be configured. Once the message or messages are prepared, they are handed off the MidiProcessor and the TempoFinder object waits for new frames of audio data to go through all of this again.
BeatFinder¶
The BeatFinder receives frames of audio data from ProcessAudio. Depending on how it has been configured, it may accumulate some multiple of these audio frames before moving on. Once a threshold amount of audio has been received, it uses the aubio tempo class to find out if there is a beat in the audio frame. The BeatFinder object can be configured to count the beats, so that the first beat is assigned a value of 0, the second beat a value of 1, and so on, repeating as necessary. The default is to count 8 beats in a row, assign each as a value 0-7, then looping back around to 0 and starting again.
MIDI messages are prepared with the beat information with the beat location as the value of the message and are handed off the MidiProcessor. The TempoFinder object waits for new frames of audio data to go through all of this again.
Though it doesn’t exist yet, this is where MIDI clock messages should originate. The MIDI spec calls for 24 clock messages to be sent per quarter note. To implement, we will need to measure the time elapsed between the previous two quarter notes–for 120BPM, that would 0.5 seconds. We would then send clock messages at 1/24th of this time (0.5 / 24 = 0.0208333 seconds). This will require a separate thread, and even then, with all of the stuff that is happening with processing the sound, I’m not sure how well it would actually work.
RMSFinder¶
The RMSFinder receives frames of audio data from ProcessAudio. Depending on how it has been configured, it may accumulate some multiple of these audio frames before moving on. Once a threshold amount of audio has been received, some math is done on the accumulated data to determine the root-mean-square, or RMS. Aubio is not used for this, it’s just a function that is very likely wrong. But in the end, loud sound comes out near 127 and quiet sound is near 0, so it’s good enough for the moment.
MIDI messages are prepared with this value and is handed off the MidiProcessor. The RMSFinder object waits for new frames of audio data to go through all of this again.
FrequenciesFinder¶
The FrequenciesFinder receives frames of audio data from ProcessAudio. Depending on how it has been configured, it may accumulate some multiple of these audio frames before moving on. Once a threshold amount of audio has been received, this is sent to the aubio phase vocoder, which returns data that is sent to the aubio filterbank.
Several things on this. The aubio phase vocoder is essentially a wrapper around a FFT function (from FFTW, I believe). By design, the goal is to align frames of data so that overlaps with previous audio frames match with the current one. Unfortunately, this creates something of a memory leak that I’ve yet to eliminate. While you do want to hang on some amount of previous frames for this matching process, after an hour there is no need for the previous frames of audio to still be sticking around. I’ve not yet figured out how to fix this. Just know that if you intend to use this audio processor that you should keep an eye on how much memory is being used. For short time periods, it may not be a problem, but if the idea is to leave this running for a long period of time unpredictable things might happen.
The results from the phase vocoder are fed to the aubio filterbank, which determines the strength between audio bands. The definition of those audio bands is configurable, with presets available third-octave (30 bands) and octave (10 bands) that is pretty close to what you see on graphic equalizers.
The results of each band in the filterbank are translated into values 0-127. The peak of 127 is assumed to be the highest value ever received in that bank, and everything else is considered a fractional portion of that. What this means practically is that as program is running is that the meaning of what a value of, say, 60 in band 0 means will change over time. But, as with RMS, you do get a decent enough value to do something with.
A MIDI sysex message is prepared, with each band adding a single value of 0-127 to the message, moving from the lowest frequency bands to the highest. The message is handed off the MidiProcessor and the FrequenciesFinder object waits for new frames of audio data to go through all of this again.
PitchFinder¶
The PitchFinder receives frames of audio data from ProcessAudio. Depending on how it has been configured, it may accumulate some multiple of these audio frames before moving on. Once a threshold amount of audio has been received, this is sent to the aubio pitch object, which returns a midi note value 0-127. Well, actually, sometimes it sends something beyond that, so those values are ignored.
MIDI notes start at 0, with is “C”, and each octave occupies 12 slots in this sequence:
C C# D D# E F F# G G# A A# B
At 12, it starts again, and so on up to 127, or a little less than 11 octaves total. Middle C on a piano is a value of 60.
The aubio pitch object can return any of these values, but quite often it struggles to determine the proper octave, so you can see oscillation between, say, 60 and 72. Both are a C note, but the octave is unclear. For this reason, you can opt to just send 12 notes where the octave is basically ignored but the fundamental pitch is correct. You can also opt to shift these 12 notes to somewhere else on the scale–perhaps to start at the middle C position so that the possible notes are just 60-71.
Be realistic about expectations here. Chords seem to really throw pitch detection off. Often you will see oscillation between all of the notes that make up the chord.
This information can be sent as MIDI control or sysex messages, but in this one case, you can also send this as actual MIDI note values. In this case, you may want to send both a note on message when a new pitch is found as well as a note off message to turn off the previous pitch.
As with everything else, once there is a change in pitch, the configured MIDI messages are passed off to the MidiProcessor and the whole process starts again.
MidiProcessor¶
The MidiProcessor receives MIDI messages from the audio processors and sends these out to the configured MIDI port. No prioritization of incoming messages is taking place, nor is any buffering.
When the SoundToMidi package is running on the same computer as the software that is listening for these messages, sending things out and receiving them on an internal MIDI bus is definitely not the most efficient way to do things. This class could be expanded to take advantage of different ways of doing this better and faster.


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 1
Dietary
Preheat the oven to 180C/250F/Gas 4.
For the caramelised butternut squash, place the sugar into a small ovenproof frying pan and heat gently until melted and caramel-coloured. Add the butter and stir to combine.
Add the butternut squash pieces, stir well and cook gently for 3-4 minutes, until softened.
For the pastry, place the crushed pine nuts, plain flour and cold butter into a food processor and pulse until the mixture resembles breadcrumbs.
Add the beaten egg and a splash of milk if the mixture is still too dry and blend to combine.
Turn the dough out onto a floured surface and roll out to the thickness of a pound coin.
Place the pastry over the cooked butternut squash in the pan, pressing down around the edges to enclose the filling and trimming off any excess pastry.
Transfer to the oven and bake for 12-14 minutes, or until golden-brown.
Remove the tart from the oven and allow to cool slightly. Slide a knife around the edges of the frying pan and turn the tart out onto a serving plate.
To serve, mix the yoghurt and chives together in a bowl and place a dollop of chive yoghurt on top of the tart.


Friedrich Nietzsche
A German Philosopher, cultural critic, composer, poet, writer and philologist whose work has exerted a profound influence on Modern Intellectual History.
Here is a timeline of Nietzsche's life:
- 1844 - He was born on 15th October, in Röcken, Lützen, Germany.
- 1854 - He began to attend Domgynasium in Naumburg.
- 1858 - He was offered a scholarship to study at the internationally recognized Schulpforta where he studied up to 1864, as a result of his late father having worked for the state as a pastor, but not as a result of his academic competence.
- 1864 - He begun studying theology and classical philology at the University of Bonn in the hope of becoming a minister. After one semester he stopped his theological studies and lost his faith, greatly angering his mother.
-
1865 - At the age of 20 he wrote to his deeply religious sister Elisabeth a letter regarding his loss of faith. The letter contains the following statement:
He also thoroughly studied the works of Arthur Schopenhauer, owing the awakening of his philosophical interest to reading Schopenhauer's The World as Will and Representation."Hence the ways of men part: if you wish to strive for peace of soul and pleasure, then believe; if you wish to be a devotee of truth, then inquire..."
-- Friedrich Nietzsche - 1866 - He read Friedrich Albert Lange's History of Materialism. Lange's anti-materialistic philosophy, and the general revellion against tradition and authority intrigued him greatly.
- 1867 - He signed up for one year of voluntary service with the Prussian artillery division in Naumburg.
- 1868 - While jumping into the saddle of his horse, Nietzsche struck his chest against the pommel, tearig two muscles in his left side, which left him exhausted and unable to walk for months. This led him to turn his attention to his studies completing them.
-
1869 - At the age of 24, before completing his doctorate or receiving a teaching certificate he become a professor of classical philology at the University of Basel in Switzerland through the help of Professor Friedrich Wilhelm Ritschl.
- He was also awarded an honorary doctorate by Leipzig University in March the same year, again with Ritschl's support.
(To this day, he is still among the youngest of the tenured Classics professors on record.) -
1870 - His projected doctoral thesis "Contribution toward the Study and the Critique of the Sources of Diogenes Laertius" examined the origins os ideas of Diogenes Laërtius. Though never submitted it was later published as a congratutatory publication in Basel.
- He also served in the Prussian forces during the Franco-Prussian War as a medical orderly, where he experienced much and witnessed the traumatic effects of battle, also contracting diphtheria and dysentry. - 1872 - He published his first book, The Birth of Tragedy. However his colleagues expressed little enthusiasm for the work in which Nietzsche eschewed the classical philologic method in favor of a more speculative approach.
-
1873 - He began to accumalate notes that would be posthumously published as Philosophy in the Tragic Age of the Greeks.
- Between 1873 and 1876, he published four separate long essays:- David Strauss: the Confessor and the Writer.
- On the Use and Abuse of History for Life.
- Schopenhauer as Educator.
- Richard Wagner in Bayreuth.
- 1878 - He published Human, All Too Human, a book of aphorisms ranging from metaphysics to morality to religion.
-
1879 - Due to a significant decline in health, Nietzsche had to resign his position at Basel.
- Living off his pension from Basel and aid from friend, he travelled frequently to find climates more conducive to his helath and lived until 1889 as an independent author in different cities. He spent many summers in Sils Maria near St. Moritz in Switzerland. Spent his winters in the Italian cities of Genoa, Rapallo, and Turin, and the French city of Nice. -
1882 - He published the first part of The Gay Science.
- In Rome in April he met Lou Andreas-Salomé, through Malwida von Meysenbug and Paul Rée, who he is believed to have fallen instantly in love with, asking Rée to propose marriage to Salomé on his behalf which she rejected. He was nonetheless content to join together with Rée and Salomé touring through Switzerland and Italy together, planning their commune.
- His sister Elisabeth on realizing Nietzsche's continued tries to woo Salomé become determined to get him away from theimmoral woman,
writing letters to the families of Salomé and Rée to disrupt the plans for the commune.
- In November, Salomé and Rée ditched Nietzsche, leaving for Stibbe (today Zdbowo in Poland), without any plans to meet again. -
1883 - Amidst renewed bouts of illness, living in near-isolation after a falling out with his mother and sister regarding Salomé, he fled to Rapallo, where he wrote the fisrt part of Also Sprach Zarathustra in only 10 days.
- He tried and failed to obtain a lecturing post at the University of Leipzig, according to him this was due to hisattitude towards Christianity and the concept of God.
- 1885 - With the new style of Zarathustra, his work become even more alienating, and the market received it only to the degree required by politeness. He recognized this and maintained his solitude, though often complaining. His books remained largely unsold, leading him to print only 40 copies of the fourth part of Zarathustra, distributing a fraction of them among close friends.
-
1886 - He broke with his publisher Ernst Schmeitzner, disgusted by his antisemitic opinions.
- Printed Beyond Good and Evil at his own expense, also acquiring the publication rights for his earlier works. Over the next yer he issued second editions of the- The Birth of Tragedy
- Human, All Too Human
- Daybreak
- The Gay Science
- 1886 - His sister Elisabeth married the antisemite Bernhard Forster and travelled to Paraguay to found Nueva Germania, a Germanic colony - a plan Nietzsche responded to with mocking laughter.
- 1887 - He wrote the polemic On the Genealogy of Morality.
-
1888 - Seeming to have abandoned the idea of a new work with the title The Will to Power, he used some of the draft passages to compose Twilight of the Idols and The Antichrist.
- After his 44th Birthday, he decided to write the autobiography Ecce Homo. In its preface - which suggest he was well aware of the interpretive difficulties his work would generate - he declares,
Hear me! For I am such and such a person. Above all, do not mistake me for someone else.
- 1889 - On 3rd January Nietzsche suffered a mental breakdown, in the streets of Turin. What happened remains unkown, but an often-repeated tale from shortly after his death states that he witnessed the flogging of a horse at the other end of the Piazza Carlo Alberto, ran to the horse, threw his arms around its neck to protect it, then collapsed to the ground.
- 1890 - The historian Julius Langbehn attempted to cure Nietzsche without success, his secretiveness eventually discrediting him. Franziska removed him from the clinic and brought him to her home in Naumburg.
- 1893 - His sister Elisabeth returned from Nueva Germania in Paraguay following the suicide of her husband. She studied Nietzsche's work and piece by piece took control of their publication.
- 1897 - After the death of Franziska, Nietzsche lived in Weimar, where his sister cared for him and allowed visitors to meet her uncommunicative brother.
- 1898 - Between that year and 1899 Nietzsche suffered at least two stokes, which partially paralyzed him, leaving him unable to speak or walk.
- 1900 - After contracting pneumonia in mid-August, Nietzsche had another stroke during the night of 24th - 25th August, and died at about noon on 25th August.
"No one can construct for you the bridge upon which precisely you must cross the stream of life, no one but you yourself alone."
--Friedrich Nietzsche


thoughts, comments & general ramblings
misc
learning
fun
skydive
video
cambridge
entrepreneurs
pics
list
software
tech
useful
web
funny
startups
games
trivia
quotes
essay
friends
science
redgate
school
conference
notes
lecture
legal
code
infographic
holiday
new york
sabbatical
san francisco
30days
ocaml
ocaml-labs
ocamllabs
wireframes
apps
aggregation
centralisation
companies
devices
internet of things
nymote
ownership
privacy
rights
quote
design
graphic
health


Would you like to compete this item and redeem your reward points?
You do not have enough reward points. Continue completing tasks to earn more!
Would you like to redeem this item and spend some of your points?


What is qermit?¶
The qermit
framework is a software platform for the development and execution of
error-mitigation protocols.
The toolset is designed to aid platform-agnostic software, making running a range
of combined error-mitigation protocols as straightforward as running any experiment.
This user manual is targeted at readers who are already familiar with
CQC pytket,
a python module for interfacing with tket, a set of quantum programming tools. It provides
a comprehensive tour of the qermit
platform, from running basic unmitigated experiments with
pytket
circuits, to running tailored combinations of error-mitigation protocols to get
as much performance out of devices as possible.
What is Error-Mitigation and how does qermit perform it?¶
It is common knowledge that we are currently in the NISQ-era of Quantum Computers; Noisy, Intermediate-Scale Quantum Computers that have too few high fidelity Qubits for running Quantum Error Correction protocols on, but are characterised as having high error rates such that even for quantum circuits with very few gates (10’s), running experiments on such devices lead to errors accruing quickly and output states being dominated by noise.
As dominating noise is a key problem facing Quantum Computation, naturally many approaches to address it are available. Better quantum circuit compilation is one such approach. Circuit optimisation to reduce the number of logical gates in a quantum circuit and mapping passes for fitting logical circuits to physical constraints can reduce noise by producing circuits that compute identical processes with fewer operations. These methods can be improved by being ‘noise-aware’, having an understanding of the device via noise characterisation and using this to produce circuits that user less noisy qubits, such as those characterised with higher fidelity operations. Error-mitigation methods provide another approach.
The name error-mitigation often functions as an umbrella term for a wide range of loosely-connected techniques at all levels of the quantum computing stack. The loose thread between such methods is that they mitigate errors in quantum computation, caused by noise in quantum devices in some capacity.
qermit
restricts the scope of such a range of methods to those that are defined in the quantum circuit layer of abstraction.
This is a reasonable restriction to make as in many cases a fine
understanding of how noise manifests isn’t required to correct for the errors it produces, but only an understanding
of the error that is produced (though a fine understanding is always helpful).
As an example, we can attempt to suppress the coherent quantum computation error produced by a systematic over-rotation of an operation rotating a Qubit’s state in the z plane without having a fine understanding of what calibration and control problems are occuring in the quantum device. If we can understand what error occurs with what operations, we can design tools to suppress them.
In designing qermit
, the goal was to make using error-mitigation methods easy, easy to integrate into a
typical experiment workflow, easy to access a wide range of useful error-mitigation techniques, and easy to use
different error-mitigation techniques in combination.
To do so, error-mitigation methods in qermit
fit in to two distinctions, MitRes
methods
that result in a modification of a distribution of counts retrieved from some
quantum computer, and MitEx
methods that result in the modification of the
expectation value of some observable. These correspond to two common archetypes for useage of quantum computers,
meaning they are not only useful for improvung results, but there is a wide and ever growing area of research
dedicated to designing mitigation schemes that fit to these archetypes.
In this manner, often the use of a MitRes
or MitEx
object may be able to replace code performing the fiddly aspect
of running and processing experiments, with or without error-mitigation. Furthermore, as they are written using the
pytket
Backend class,
any hardware supported by pytket
via the Backends available in the pytket-extensions
can be used in conjunction with qermit
.
Installation¶
To install using the pip
package manager, run pip install qermit
from your terminal.


H.B. Woodrose Seeds
How I learned to loathe myself and respect ergot alkaloids
Here's the situation, kids; see if you can find where I went horribly, tragically wrong: Several weeks ago, over a period of a couple of months, my lover and I of four and a half years broke up, I lost my job and subsequently my home, and had a brief fling which punched holes in my reputation and self-image.
Still managing to convince myself that I was the free-spirit, untouched by the illusionary material world, I put on a happy face et cetera. A few days ago, however, I started to dwell on thoughts of self-doubt, worry, mild paranoia, and depression.
Drum roll please.
So I thought I'd take a psychedelic drug and see if that helped to put things back in perspective.
WRONG! What, was I out of my mind? Lesson number one in the psychedelic universe: Don't use a psychedelic drug as a mood-lifter, to escape bad feelings, or to make a bad situation better. It don't work that way.
The pharmacological details: A couple of days prior to the experiment, I ground up fifty Hawaiian Baby Woodrose (Argyreia nervosa) seeds in a mortar and pestle, and put the resulting powder into gel caps. There were about 3.5 seeds per gel cap, with even potency across all of the gel caps.
Part of the motivation for my experiment was to test the potency/toxicity of the seeds taken in this manner. I had taken ten seeds, cracked in water, and had a terrific trip; and I had taken twelve seeds in a similar way and been wracked with nausea, stupor, and a generally bad time.
So I took two capsules, what I expected to be about 2/3rds of a real dose. My notes follow (indented) with comments (not indented):
1:00 PM - two caps
I had also been taking ginseng fairly regularly for the previous week or two, and I don't know how these two drugs might have reacted. What I believed I had been noticing from the ginseng were the following symptoms: a) increased creativity, b) more alertness without caffeine jitteryness, c) slight paranoia. Of course any of the above could also be the result of a placebo effect, or of the emotional turmoil in my life.
I was not taking any other drugs at the time. I had smoked a good hunk of weed the previous afternoon.
1:30 - slight runs, tight bridge of nose
The slight runs were slightly loose bowels, I included them in my notes without knowing whether or not they represented the first symptoms of nausea. In the aftermath, I'd say that it was just coincidence. The tight bridge of nose was one of those bells that goes off in my mind and says to me, 'remember, you just took a psychedelic and here it comes!'
1:35 - tight top of head
Similarly.
1:45 - stomach grumbling
This was probably caused more by the drug, but I'm not sure. There wasn't much nausea (thank God) at all this time. A little bit hit me at one point, but nothing in itself particularly bothersome.
2:40 - very slight nausea twinge, some peripheral visual distortion[, ] cold feet
There is the nausea I was talking about. By 'twinge,' I mean that it was noticable, but not lasting. A moment would come and I would say, 'gee, I feel kind of sick to my stomach,' but then it would go away. Could be explained by just the psychedelic coenesthetic fuzziness, but I don't think I was tripping that hard yet. Cold feet was a 'just in case' marker for me. Stafford's 'Psychedelics Encyclopedia' mentions that ergot alkaloids like those in HBWS and MGS can at higher doses cause the limbs to turn bluish. (See: ergotism). So far this hasn't happened to me, but I try to be alert for the effects. It was a chilly day, and my feet were propped up, so I think it was not a drug effect.
2:50 - More tummy rumbles.
3:00 - Take 500 mg C - folklore
I'm two hours into the dose and not getting much out of it but some slight peripheral vision fuzziness and motion, and a weird overall feeling. So I try to augment the trip with Vitamin C. I have no idea if this works or not, but it's everpresent acid folklore, and it's harmless as far as I know.
4:15 - Tired, amotivational[, ] Somewhat trippy.
I think the trip started right about here - three hours and fifteen minutes after taking the powdered seeds. That's something I should stress right off the bat about HBWS - the curve is very very different from that of LSD. On LSD, you accelerate quickly to the peak (within an hour or two of taking the drug), and then spend another couple of hours or more at the peak before sliding slowly down to baseline.
With HBWR, you spend the first three to six hours just climbing to the peak, and then a shorter time falling back to baseline. I don't think I reached the peak until six or seven at night - five or six hours after taking the capsules.  I tried all of the traditional things to swing things around: Went to the bathroom, made some food, took a walk in the fresh air, turned on more lights, changed the music. Nothing worked.
I was feeling the beginnings of what would be a very panicked depressive episode. Nobody loved me, even the people I thought were my friends were really annoyed with me and talked about me behind my back, my pretensions had become such an integral part of my self-image that seeing them shattered was destroying my identity. I felt that if people knew who I really was, they would be disgusted or frightened and run away, and so I had to wear a mask, which of course was another way of keeping people at a distance from my real self, so there was no way I could win...
Whew. It was bad, folks. Going for a quick-paced walk helped, but only by keeping my mind busy thinking about route and traffic lights and whether or not it was going to rain. Overall the mood was still bad. I stopped by a donut shop to get a chocolate-covered devil's food donut with chocolate chips. Chocolate is another of my temperamental mood-lifters that I've kept in my bag of acid trips for that rainy day when I need it. But the wisdom of this decision didn't stand up; I thought that when I crashed from the sugar high things would just be that much worse. So I tossed the donut away.
7:00 - Still depressed - some anaesthesia - pinches don't hurt as much as they should. Tripping at about maximum so far, but wish it would stop.
I should note at this point that there is a history of depression in my family, my younger brother is taking medication for depression, and most of the women on my mother's side of the family seem to have had some sort of breakdown in their past. So far, except for a period of bad depression in adolescence (which could have just been adolescence, of course), I've escaped in terrific shape. My mood has been generally good, and my psychedelic trips have been 95% wonderful.
But, after a few hours of this nonsense, I was convinced that my bad mood and such over the previous days was part of a spiral into mental illness and that I was going straight to the funny farm. I was exhibiting a lot of the signs of a panic attack and severe depression, and I wasn't sure how much I could attribute to the drug, and how much was just me.
Remember that I had taken what I thought was 2/3rds of a good dose of HBWS, which I translated as about 2/3rds again of a reasonable dose of LSD. In other words, about half a hit: small potatoes for a veteran tripper.
The anaesthesia I'm talking about was kind of interesting. At one point, I pinched the web of skin between my thumb and finger, and although I could feel the pain, it didn't seem to mean anything to me. So I pinched harder. Sure enough, the pain increased slightly, but it still didn't mean anything to me. So I pinched as hard as I could. Still, no injury I could get excited about, although there was clearly some tissue trauma.
Two things of note: One, this may have been an effect of the drug, and if so, is a new one to me. Two, severely depressed people sometimes engage in self- mutilation, and this may have been an inkling of that for me.
7:22 - Niacin
At this point I remembered another bit of folklore - the 'niacin abort.' I decided to give it a try. I took one 100 mg tablet of niacin. I don't know if it did any good or not.
A little after this point - I was alone in the apartment, and had been alone through the whole trip - I called a very good friend and trip buddy, telling him that 'I'm having a bad trip and I can't get out.' I felt very ashamed, because one of my own rules for drug taking is that I can't use drugs to put obligations on other people. But my friend was happy to help me out, and was a soothing voice and a shoulder to lean on when I really, really needed one.
By this time, I felt like a raving nut.  I thought that I probably sounded like that woman in the diner in the movie 'Slacker.' ('You shouldn't. You should not. You should't. You shouldn't. You shouldn't traumatize a woman sexually. You shouldn't. You should not...')
Except that my dialogue was at the same time more coherent and more troubled: 'I feel so alienated. I look at people. I look at them talk. I look at people talk and I can't understand them. I mean I understand what they are saying, and I know what the words mean, but I don't understand the transaction that's taking place. I don't know the rules. I try to talk, but people look at me and expect me to say more and I don't know the rules. I look at people and I don't understand. Nobody knows who I am. I can't understand them. I'm trying to say I feel alienated. Like I'm not one of them. They're doing something when they talk and it's not in the words and I can't understand what it is.'
I mean, really, really, bonkers call the men in the white suits stuff. Most of the above was in reference to a party I went to the night before where I didn't know very many of the people in attendance. They had social conventions in common, and shared interests (Star Trek and the Rocky Horror Picture Show) that I did not share with them, so in a way it was as though I'd landed on another planet. But my feelings of alienation had been extrapolated to include the whole human race.
It was bad. I have new understanding for the tales of people who took acid and committed suicide. For a long time I thought of these tales as drug war propaganda or coincidence. Now I have a little more understanding of how a pre-existing depression could be catapulted into a state of absolute hopeless- ness under the influence of a psychedelic.
9:10 - Coming down finally.
And rapidly, too. The whole coming-down time seemed to take about fifteen minutes. One minute I was babbling nonsense and biting my fingers, the next minute I'm sipping tea and putting some Paul Simon on the CD player. Perhaps the niacin took effect, or maybe thats the unfamiliar HBWS curve again.
What lessons can the readers of alt.drugs get from my tale of woe? HBWS did not give me a bad trip. HBWS gave me a powerful trip that was bad because of the soil the seeds were planted in: an emotionally troubled mind. HBWS is powerful juju. It's not a poor substitute for the real thing; it IS the real thing. My recommendation: Do not trip on a psychedelic drug if you're in a bad mood, depressed, or suffering from some sort of emotional turmoil. And, finally, think twice about tripping alone.
Personally, I'm going to stay away from drugs, ginseng, chocolate, and concentrated sugar for a couple of weeks at least, just to do an evaluation of where my head's at and make sure I'm not falling prey to the family curse. I feel much better this morning (last night I was sure I'd never recover), although a bit apprehensive. I'm going to treat psychedelics in a much more reverent fashion from here on out, and tread more lightly on my mind.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


--- layout: post title: One way/Send only endpoints date: 2011-12-02 08:00:47.000000000 +01:00 categories: - NServiceBus tags: [] status: publish type: post published: true meta: _edit_last: '1' dsq_thread_id: '490609773' author: login: andreas.ohlund email<EMAIL_ADDRESS>display_name: Andreas Öhlund first_name: Andreas last_name: "Öhlund" ---
The equivalent to the one way bus in Rhino Service Bus is what we in NServiceBus call "Send only mode". In short you would use this in endpoints who's only purpose is sending messages, websites are often a good example of send only endpoints. I've blogged about it a while back but the syntax has changed slightly since then. This time we'll take closer look at the code needed to start in send only mode.
{% gist 1417373 %}
The only configuration needed when running in this mode is the destination of the messages you're sending, you can do this either inline or through configuration.
A working sample can be found here.
That's really all there is to it.


kelp-engine
src
component
Classes
|
Namespaces
Transform.h File Reference
#include "
Entity.h
"
#include "
Component.h
"
#include "
kep/Core.h
"
Include dependency graph for Transform.h:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Classes
class
kelp::Transform
Namespaces
kelp
Generated by
1.8.13


South Korea expels two North Koreans suspected of killing 16 fishermen
SEOUL: South Korea expelled on Thursday (Nov 7) two North Korean fishermen suspected of killing 16 colleagues before crossing the border into the South last week, South Korea's Unification Ministry said.
The two men, both in their 20s, breached the inter-Korean maritime frontier into the South aboard a squid fishing boat on Saturday and South Korean authorities detained them for questioning, ministry spokesman Lee Sang-min said.
The authorities concluded after their investigation that the men had fled to the South after killing 16 other men on the vessel, Lee said.
"The government decided to expel them as they had committed grave, non-political crimes such as murder and were not subject to our protection under the law," Lee told a briefing.
Lee did not elaborate on why or how the two men had killed their colleagues.
They were handed over at the border village of Panmunjom in the demilitarised zone dividing the two Koreas, Lee said.


Prolog Projects Menu
Prolog Projects Menu | - Manage prolog projects and settings
FORMS
Choosing Consult produces two different behaviors, depending on whether the Prolog menu was
pulled down from the main listener or debugger windows, or from an editor window.
Using the accelerator key sequence (Ctrl-K on Unix and Windows, and <AppleKey>K on Macintosh) produces equivalent behaviors in the different settings. If Consult is chosen from the main listener or debugger windows, a file selection dialog
appears, and the selected file is (re)consulted into the current Prolog database. In contrast, if Consult is selected from an edit window (or the Ctrl/<apple>-K accellerator key is hit over that window), the file associated with that
window is (re)consulted into the Prolog database; if unsaved changes have been
made in the editor window, the file/window is first Saved before consulting.
If a file containing syntax errors is consulted, these errors are collected,
an editor window into the file is opened, and the errors are displayed, as
indicated below:
Line numbers are added on the left, and the lines on which errors occur are
marked in red. Lines in which an error occurs at a specified point are marked in
a combination of red and green, with the change in color indicating the point
at which the error occurs. Erroneous lines without such a specific error
point, such as attempts to redefine comma, are marked all in red. A scrollable pane
is opened below the edit window, and all the errors that occurred are listed
in that pane. Double clicking on one the listed errors in the lower pane will
cause the upper window to scroll until the corresponding error line appears in
the upper pane. The upper pane is an ordinary error window, and the errors can
be corrected and the file saved. Choosing Prolog> Consult, or typing ^K will cause the file to be reconsulted, and the error panes to be closed.
Clear Workspace causes all procedures which have been consulted to be abolished, , including
clauses which have been dynamically asserted. In addition, future releases,
all user-defined Tc/Tkl interpreters will also be destroyed.
The four Project-related buttons as well as the bottom entry on this menu are described in the
next section.
Set Directory ... allows you to change the current working directory.
Selecting IDE Settings raises the following dialog:
The Heartbeat is the time interval between moments when a Prolog program temporarily yields
control to the Tcl/Tk interface to allow for processing of GUI events,
including clicks on the Interrupt button.
The Print depth setting contols how deep printing of nested terms will proceed; when the
depth limit is reached, some representation (normally ‘*’ or ‘...’) is printed
instead of continuing with the nested term.
The Printing depth type setting determines whether traversing a list or the top-level arguments of a
term increases the print depth counter. The Flat setting indicates that the counter will not increase as one traverses a list
or the top level of a term, while Non-flat specifies that the counter will increase.
Selecting Dynamic Flags produces a popup window which displays the current values of all of the
changable Prolog flags in the system, and allows one to reset any of those
values.
Selecting Static Flags producs a popup window displaying the values of all of the unchangable Prolog
flags for the system


A GIFT FOR YOU! You can ask Sasha any one question for FREE! Just one, so think for a minute before sending in the question.
If you are an artist, businessman/businesswoman, or any kind of a professional... Leave your info so I can help other people find you.


Code replacements in autosar_multirunnables
Code replacements report not generated. Select 'Summarize which blocks triggered code replacements' in the Configuration Parameters > Code Generation > Report pane and then rebuild the model.


See Photos of the 2020 Jeep Wrangler EcoDiesel 12 Nov 2019, 05:01 by Car and Driver Jeep's diesel engine turns a great off-roader into something special. From Car and Driver


Home page
Add Branch
Name of Branch
Maximum Customer Number
Minimum Customer Number
average_cookies_per_customer
Our Logo
Expectations of cookies shape
The Hard Reality
Our Uniform


Fawad Chaudhry warns opposition not to underestimate the govt
by Our CorrespondentISLAMABAD : Federal Minister for Science and Technology Fawad Chaudhry on Saturday warned the opposition not to mistake the Pakistan Tehreek-e-Insaf (PTI) government as weak.
The minister took to social media and said the government is exercising self-restraint – over the protest led by JUI-F chief Maulana Fazlur Rehman, pressurising the premier to step down – on the directives of Prime Minister Imran Khan.
“Don’t dare to underestimate PTI government, we are exercising self-restraint because Imran Khan has desired so,” he wrote.
The federal minister also noted that if the premier wanted, he could make a phone call to deal with the matter, warning the Azadi march leaders – including PPP, PML-N and JUI-F – that they would not find any place to hide.

The JUI-F chief has set a two-day deadline for PM Imran to step down.
“People have given their verdict… they want freedom from this government,” the 66-year-old firebrand cleric said while addressing tens of thousands of opposition workers camping in Sector H-9 on Friday.
The two opposition parties – PPP and PML-N – have thrown their weight behind the Maulana because their leaders are facing corruption charges which they claim are part of premier Imran’s political vendetta.
“We want the state institutions to be impartial and withdraw their support to this illegitimate government,” the cleric said, adding that they did not want confrontation with the state institutions.


| Name | Size | Progress | Status | Actions |
|---|---|---|---|---|
| {{ item.file.name }} | {{ item.file.size/1024/1024|number:2 }} MB |
|
| File Name | Uploaded Time | CCC# | Project_ID | Chassis | User | Region | Country | |
|---|---|---|---|---|---|---|---|---|
| {{row.file_name}} | {{row.uploaded_on}} | {{row.project_number}} |
{{row.project_id}} | {{row.chassis}} | {{row.user_name}} | {{row.region}} | {{row.country}} |
|


Netlist class. More...
#include <netlist.h>
Public Member Functions | |
| void | cell_preallocate (std::size_t qnt) |
| void | pin_preallocate (std::size_t qnt) |
| void | net_preallocate (std::size_t qnt) |
| netlist (standard_cell::standard_cells *std_cells) | |
| Constructor. More... | |
| void | register_cell_property (entity_system::property *property) |
| Registers cell property. More... | |
| void | register_pin_property (entity_system::property *property) |
| Registers pin property. More... | |
| void | register_net_property (entity_system::property *property) |
| Registers net property. More... | |
| void | module_name (std::string name) |
| std::string | module_name () const |
| const standard_cell::standard_cells & | std_cells () const |
| Standard cells getter. More... | |
| entity_system::entity | cell_find (std::string name) const |
| Finds cell. More... | |
| entity_system::entity | cell_insert (std::string name, std::string type) |
| Inserts a new cell. More... | |
| void | cell_remove (entity_system::entity cell) |
| Removes a cell. More... | |
| std::size_t | cell_count () const |
| Returns the number of cells. More... | |
| std::string | cell_name (entity_system::entity cell) const |
| Cell name getter. More... | |
| const std::vector < entity_system::entity > & | cell_pins (entity_system::entity cell) const |
| Cell pins getter. More... | |
| entity_system::entity | cell_std_cell (entity_system::entity cell) const |
| Cell type getter. More... | |
| bool | cell_std_cell (entity_system::entity cell, std::string type) |
| Cell type setter. More... | |
| bool | cell_std_cell (entity_system::entity cell, entity_system::entity std_cell) |
| Cell type setter. More... | |
| const entity_system::entity_system & | cell_system () const |
| Cell system getter. More... | |
| const cells & | cells_properties () const |
| Cell properties getter. More... | |
| entity_system::entity | pin_insert (entity_system::entity cell, std::string name) |
| Inserts a new pin. More... | |
| std::size_t | pin_count () const |
| Returns the number of pins. More... | |
| std::string | pin_name (entity_system::entity pin) const |
| Pin name getter. More... | |
| entity_system::entity | pin_owner (entity_system::entity pin) const |
| Pin owner getter. More... | |
| entity_system::entity | pin_net (entity_system::entity pin) const |
| Pin net getter. More... | |
| entity_system::entity | pin_std_cell (entity_system::entity pin) const |
| Pin type getter. More... | |
| entity_system::entity | pin_by_name (std::string name) const |
| Finds pin. More... | |
| const entity_system::entity_system & | pin_system () const |
| Pin system getter. More... | |
| const pins & | pins_properties () const |
| Pin properties getter. More... | |
| entity_system::entity | net_insert (std::string name) |
| Inserts a new net. More... | |
| entity_system::entity | net_insert (std::string name, std::size_t pin_count) |
| Inserts a new net. More... | |
| void | net_remove (entity_system::entity net) |
| Removes a net. More... | |
| std::size_t | net_count () const |
| Returns the number of nets. More... | |
| std::string | net_name (entity_system::entity net) const |
| Net name getter. More... | |
| const std::vector < entity_system::entity > & | net_pins (entity_system::entity net) const |
| Net pins getter. More... | |
| std::pair< std::vector < std::string > ::const_iterator, std::vector < std::string > ::const_iterator > | net_names () const |
| Net names iterator. More... | |
| const entity_system::entity_system & | net_system () const |
| Net system getter. More... | |
| entity_system::entity | net_by_name (std::string name) const |
| Finds net. More... | |
| const nets & | nets_properties () const |
| Net properties getter. More... | |
| void | connect (entity_system::entity net, entity_system::entity pin) |
| Connects a pin to a net. More... | |
| void | disconnect (entity_system::entity pin) |
| Disconnects a pin from its net. More... | |
| entity_system::entity | PI_insert (std::string name) |
| Inserts a new primary input. More... | |
| void | PI_remove (entity_system::entity PI) |
| Removes a primary input. More... | |
| std::size_t | PI_count () const |
| Returns the number of primary inputs. More... | |
| std::vector < entity_system::entity > ::const_iterator | PI_begin () const |
| Primary input begin iterator. More... | |
| std::vector < entity_system::entity > ::const_iterator | PI_end () const |
| Primary input end iterator. More... | |
| entity_system::entity | PO_insert (std::string name) |
| Inserts a new primary output. More... | |
| void | PO_remove (entity_system::entity PO) |
| Removes a primary output. More... | |
| std::size_t | PO_count () const |
| Returns the number of primary outputs. More... | |
| std::vector < entity_system::entity > ::const_iterator | PO_begin () const |
| Primary output begin iterator. More... | |
| std::vector < entity_system::entity > ::const_iterator | PO_end () const |
| Primary output end iterator. More... | |
This class provides the basic netlist interface, such as cells, pins and nets manipulation.
| ophidian::netlist::netlist::netlist | ( | standard_cell::standard_cells * | std_cells | ) |
Netlist constructor. Creates the entity systems for cells, pins and nets.
| std_cells | Standard cells object. |
|
inline |
Returns the number of cells created in the cells system.
| entity_system::entity ophidian::netlist::netlist::cell_find | ( | std::string | name | ) | const |
Finds a cell by its name.
| name | Cell name. |
| entity_system::entity ophidian::netlist::netlist::cell_insert | ( | std::string | name, |
| std::string | type | ||
| ) |
Inserts a new cell in the netlist. A cell has a name and type associated to it.
| name | Name of the cell, used to identify it. |
| type | Standard cell type of the cell. |
|
inline |
Returns the name of a cell.
| cell | Cell to get the name. |
|
inline |
Returns the pins of a cell.
| cell | Cell to get the pins. |
| void ophidian::netlist::netlist::cell_remove | ( | entity_system::entity | cell | ) |
Removes an existing cell from the netlist.
| cell | Cell to be removed. |
|
inline |
Returns the standard cell type of a cell.
| cell | Cell to get the type. |
| bool ophidian::netlist::netlist::cell_std_cell | ( | entity_system::entity | cell, |
| std::string | type | ||
| ) |
Sets the standard cell type of a cell. The number of pins of the current cell type and the new one must match.
| cell | Cell to set the type. |
| type | Name of the type to set for the cell. |
| bool ophidian::netlist::netlist::cell_std_cell | ( | entity_system::entity | cell, |
| entity_system::entity | std_cell | ||
| ) |
Sets the standard cell type of a cell. The number of pins of the current cell type and the new one must match.
| cell | Cell to set the type. |
| type | Entity of the type to set for the cell. |
|
inline |
Returns the cells entity system.
|
inline |
Returns the cells properties object.
| void ophidian::netlist::netlist::connect | ( | entity_system::entity | net, |
| entity_system::entity | pin | ||
| ) |
Connects a pin to a net. This method changes the pins property of the net to contain the new pin and the net property of the pin.
| net | Net to be connnected. |
| pin | Pin to be connected. |
| void ophidian::netlist::netlist::disconnect | ( | entity_system::entity | pin | ) |
Disconnects a pin from its net. This method removes the pin from the net pins property and leaves the pin without a net.
| pin | Pin to be disconnected. |
|
inline |
Finds a net by its name.
| name | Net name. |
|
inline |
Returns the number of nets created in the pins system.
| entity_system::entity ophidian::netlist::netlist::net_insert | ( | std::string | name | ) |
Inserts a new net in the netlist. A net has a name associated to it.
| name | Name of the net, used to identify it. |
| entity_system::entity ophidian::netlist::netlist::net_insert | ( | std::string | name, |
| std::size_t | pin_count | ||
| ) |
Inserts a new net in the netlist. A net has a name associated to it.
| name | Name of the net, used to identify it. |
| pin_count | Number of pins the net will connect |
|
inline |
Returns the name of a net.
| net | Net to get the name. |
|
inline |
Returns the beginning and end iterators of the net names property.
|
inline |
Returns the pins of a net.
| net | Net to get the pins. |
| void ophidian::netlist::netlist::net_remove | ( | entity_system::entity | net | ) |
Removes an existing net from the netlist.
| net | Net to be removed. |
|
inline |
Returns the nets entity system.
|
inline |
Returns the nets properties object.
|
inline |
Returns an iterator pointing to the beginning of the primary inputs in the netlist.
|
inline |
Returns the number of primary inputs created in the netlist.
|
inline |
Returns an iterator pointing to the end of the primary inputs in the netlist.
| entity_system::entity ophidian::netlist::netlist::PI_insert | ( | std::string | name | ) |
Inserts a new primary input in the netlist. A primary input is a pin without an owner.
| name | Name of the primary input, used to identify it. |
| void ophidian::netlist::netlist::PI_remove | ( | entity_system::entity | PI | ) |
Removes an existing primary input from the netlist.
| PI | Primary input to be removed. |
|
inline |
Finds a pin by its name.
| name | Pin name. |
|
inline |
Returns the number of pins created in the pins system.
| entity_system::entity ophidian::netlist::netlist::pin_insert | ( | entity_system::entity | cell, |
| std::string | name | ||
| ) |
Inserts a new pin in the netlist. A pin has a name and owner associated to it.
| cell | Cell owner of the pin. |
| name | Name of the pin, used to identify it. |
|
inline |
Returns the name of a pin.
| pin | Pin to get the name. |
|
inline |
Returns the net of a pin.
| pin | Pin to get the net. |
|
inline |
Returns the owner of a pin.
| pin | Pin to get the owner. |
|
inline |
Returns the standard cell type of a pin.
| pin | Pin to get the type. |
|
inline |
Returns the pins entity system.
|
inline |
Returns the pins properties object.
|
inline |
Returns an iterator pointing to the beginning of the primary outputs in the netlist.
|
inline |
Returns the number of primary outputs created in the netlist.
|
inline |
Returns an iterator pointing to the end of the primary outputs in the netlist.
| entity_system::entity ophidian::netlist::netlist::PO_insert | ( | std::string | name | ) |
Inserts a new primary output in the netlist. A primary input is a pin without an owner.
| name | Name of the primary output, used to identify it. |
| void ophidian::netlist::netlist::PO_remove | ( | entity_system::entity | PO | ) |
Removes an existing primary output from the netlist.
| PO | Primary output to be removed. |
| void ophidian::netlist::netlist::register_cell_property | ( | entity_system::property * | property | ) |
Registers a property to the cells entity system.
| property | Property to be registered. |
| void ophidian::netlist::netlist::register_net_property | ( | entity_system::property * | property | ) |
Registers a property to the nets entity system.
| property | Property to be registered. |
| void ophidian::netlist::netlist::register_pin_property | ( | entity_system::property * | property | ) |
Registers a property to the pins entity system.
| property | Property to be registered. |
|
inline |
Returns the standard cells object.


Driver in 2017 fatal crash charged with vehicular homicide
by WFTX Digital TeamLEE COUNTY, Fla. – Fort Myers Police say they have arrested a man for a deadly car crash that happened more than two years ago.
They say 29-year-old Andrew Conlyn has been charged with Vehicular Homicide.
The crash happened in March of 2017 on McGregor Boulevard.
Police say Conlyn was speeding when he crashed into a utility pole.
26-year-old Colten Hassut was a passenger in the car when it crashed. He died in the crash.
Conlyn is out of jail on $75,000 bond.


Crazy Heads
HOME
ABOUT
CONTACT
Send the limited mesages and not contracts and fees for the customers only.
Get Started!


COLORECTAL CANCER AI
USING ARTIFICIAL INTELLIGENCE METHODS TO DETECT POLLYPS DURING
LIVE COLLORECTAL EXPLORATIONS AND MALIGNANCY DETECTION
USING ADVANCED ALGORITHMS
Colorectal cancer is among world's deadliest diseases in the world. Its location makes it difficult to develop tools in order to find it at early stages, but we can help by increasing the accuracy of traditional methods, including explorations. Cameras will be equipped with an artificial intelligence chip able to run a prebuild model to detect pollyps and cancerous forms live during explorations and provide a prediction of the malignancy level based on the morphological features characteristic of both tumor types, benign and malignant.
TOOL AVAILABLE SOON...


three.js
- PMREM directional light test
Emmett Lalish
Top row is white metal
Middle row is white dielectric
Bottom row is black dielectric.
Mouse-out is a standard
Directional Light.
Mouse-over is a PMREM of the skybox: a single
bright pixel representing the same directional light source.
The
difference between these renders indicates the error in the PMREM
approximations.


Via the Mailbox Panel you can monitor your Mail Folders. Options include add a new mailbox, read the contents and delete a mailbox.
Mailbox Name
Total Messages
File size (KB)
Delete
$var['folders']
Create a New Mailbox
Mailbox Name
Rename Personal Folder
Select folder to rename
$var['renamefolderbox']
New Name:
Mailbox Quota [Disk Space Used $var['usedquota'] Kb of $var['totalquota'] Kb]
$var['used']
100%
Email to Folder Sorting
Email Address
or
Email Subject
Move Email to
$var['folderbox']
Email Sorting
$var['sort_email']
Subject Sorting
$var['sort_subj']


Dear {{ user.full_name }},
You have been invited by {{ invite_by.full_name }} to join {{ config.APP_NAME }}!
Please Go to Login To access your account using the password: {{ password }}.
Alternatively, you can paste the following link in your browser's address bar:
{{ invite_link }}
Sincerely,
The {{ config.APP_NAME }} Team
Note: replies to this email address are not monitored.


TACHYONS
Markup examples for layouts and components
Footers
Headers
Buttons
Links
Typography
Forms
Grid
Skins
Navs


Cost Function
The CostFunction class represents a cost function that is used in fitting a NeuralNet
.
Use in initializing a NeuralNet
When initializing a NeuralNet
using NeuralNetFactory
a cost function is supplied at the final step.
Provided cost functions
There are three cost functions provided by default:
Mean Squared Error
Mean squared error is provided by MSECost
. Mean squared error is the simplest of the three provided cost functions. It is a good cost function to use when the output values are not forced to lie in a small range, i.e. when using IdentityActivation
.
When initialising a NeuralNet
, the cost function can be set to MSECost
by setting the cost function to
CostFunction costFunction = new MSECost();
Huber cost
Huber cost is provided by HuberCost
. Huber cost is an adaptation of mean squared error where the cost is linear, instead of quadratic, when the error is larger than a given value. This means that Huber cost is less affected by extreme errors (outliers) than mean squared error.
To use Huber cost, you need to set the size of the error for which Huber cost becomes linear. Set this value, called outlierBoundary
, to how large of an error you wish to treat as an outlier in your project.
When initialising a NeuralNet
, the cost function can be set to MSECost
by setting the cost function to, for example (with an outlier boundary of 1):
CostFunction costFunction = new HuberCost(outlierBoundary: 1.0);
Cross Entropy
Cross entropy is provided by CrossEntropyCost
. Cross entropy measures the error in learning probabilities.
If you are using CrossEntropyCost
, it is reccommended to apply softmax activation to your output layer. This will ensure that your output vector is a vector of probabilities.
Warning
In using cross entropy cost, the expected output vector must be a vector of probabilities: i.e. its entries must be between 0 and 1.
Supplying an expected output vector with non-positive entries will cause NaN
s to appear.
When initialising a NeuralNet
, the cost function can be set to MSECost
by setting the cost function to, for example (with an outlier boundary of 1):
CostFunction costFunction = new CrossEntropyCost();


Douglas County Libraries is a passionate advocate for literacy and lifelong learning.
Douglas County Libraries is the fourth-largest library system in Colorado, and we play a vital role in the life of our community. We lend nearly 8 million books, CDs, DVDs, magazines, e-books and audiobooks every year, including more children’s materials than any other Colorado library.
Our seven locations offer a large collection of popular materials; children’s books; reference materials; downloadable audio, video and e-books; wireless access; public internet stations; and friendly, professional staff. We also provide online access to Douglas County History and community information.
We offer reading programs for all ages, more than 75 Storytimes each week, children’s and teen writing groups, book clubs, and a variety of interesting programs that engage, educate and entertain patrons of all ages. Study rooms and large meeting rooms are available to the public.
Our Community Relations/Communications Team can help answer your questions, put you in touch with library leadership or staff responsible for specific programs, and help you develop library stories for your audience.


This week, we started a quick-turnaround project in Sinatra called Clone Wars. Our challenge was to pick one of five local businesses, build a CMS for their existing types of content, and then scrape their existing website into our database — all in three days.
On Monday, before the project started, we took a little time to research web scrapers as a class. Afterwards, we did a short tutorial with the Mechanize and Nokogiri gems, and started scraping different websites.
We were assigned our teams in the afternoon, and got to planning out our project. We got up to speed on what local business we wanted to choose (we went for the Bike Depot), and started sketching out what the different types of content might look like. We set up our hours of availability as a team, and decided that we wanted to approach the entire project from an acceptance-test-first approach. It was our first time trying it, but we were all very interested in learning how to do it.
We then sat down with Elaine from Pivotal Labs (and prior gSchool student) to talk about user stories, acceptance tests, and PivotalTracker. She gave us a lot of good insight on how to use the tool, and soon we started crafting our user stories for the project.
Once we got to the point where we felt we had flushed out the project requirements from a user story perspective, we started digging in. We set up our Sinatra app, and began by writing our first Capybara user test. We ran that first test… and it passed. That didn’t make any sense — we had not set up any routes for the route that we had requested, and certainly did not have any views to display the content that the test requested!
This problem tripped us up for over an hour, when we discovered that in our Gemfile we had declared a test group, but we had not yet set our environment variables in our acceptance test. We also later discovered that looking for content as the first piece of an acceptance test is too many steps into the process — the first step would be to verify the response code. Finally on our way to a true failing test, we moved to the first piece of the error, and started working our way through the controller, the models, and the views. It was exciting to go through the process and actually successfully go from dummy data to a real database with real data in the matter of a few hours, and then repeat the process over and over again throughout the process.
From my perspective, our team worked incredibly well together. When one of us would get stuck, we’d stop and explain what was happening, and why. We all paired (side note: what is the three-person equivalent of pairing? Triading?) throughout the length of the project, since we had a small enough project that it was likely we might end up with merge conflicts otherwise.
Although we did not completely finish building the CMS in three days, we learned a lot about scraping, dynamic routing, serializing data into databases, and setting up different rack test groups. We had an awesome time trying the acceptace-test-first approach, and stuck together as a group to work through tough problems.
The differences between working in a two person versus a three person group weren’t too obvious, since our project was so compact. I can definitely see where a four person group might split into two pairs that rotate, but with three people at different levels in the program, and with a small spec and a short timeframe, it seemed more appropriate to stick together and learn together.
If we had another week to work on Clone Wars, we’d likely get our authorization working correctly, and work on integrating more functionality into the CMS — including the addition of news items, products for sale, and a volunteer database.
Overall, I was extremely satisfied with where we got with our project because I felt that we built it well, communicated with each other clearly, and have a solid foundation to build upon when we choose to revisit the project.
To see the project in action, you can visit George’s GitHub repository, clone the project, run bundle
, then run rackup
in your terminal, and visit your localhost for a peek at the project. At localhost/admin, you can view our CMS functionality. Make sure to take a look at our test suite, and run the tests by running the rake
command in your terminal. Then marvel at the beautiful rainbow of passing tests!


Technodrome Inc.
The Team
Industry Data
IT Work
Project Idea
IT Technologies
References
Technodrome Inc.
Test Results
Ash
Brendan
Chris
Eddie
Kim
Mark


Handlers: Object
function applied to every request body, e.g. body => JSON.stringify(body)
body => JSON.stringify(body)
function applied to every response, e.g. async response => await response.json()
async response => await response.json()


Key: = Must support, = QICore-defined extension, = Is-Modifier
| Field | Card. | Type and Description |
|---|---|---|
| date |
0..1
|
DateTime
|
| doseQuantity |
0..1
|
Quantity
|
| encounter |
0..1
|
Encounter
|
| expirationDate |
0..1
|
DateTime
|
| explanation |
0..1
|
Explanation
|
| identifier |
0..*
|
List<Identifier>
|
| location |
0..1
|
Location
|
| lotNumber |
0..1
|
String
|
| manufacturer |
0..1
|
Organization
|
| note |
0..*
|
List<Annotation>
|
| patient |
1..1
|
Patient
|
| performer |
0..1
|
Practitioner
|
| reaction |
0..*
|
List<Reaction>
|
| reported |
1..1
|
Boolean
|
| requester |
0..1
|
Practitioner
|
| route |
0..1
|
Concept
|
| site |
0..1
|
Concept
|
| status |
1..1
|
code
|
| vaccinationProtocol |
0..*
|
List<VaccinationProtocol>
|
| vaccineCode |
1..1
|
Concept
|
| wasNotGiven |
1..1
|
Boolean
|
Key: = Must support, = QICore-defined extension, = Is-Modifier


Unlocking data from databases
Most of the internet demands data in forms that play nicely with it — especially for visualization. JavaScript libraries that dynamically assemble charts, graphs and maps typically want something that looks a lot more like the JSON we got from the crime API over a CSV file or a database table. And that's OK, because it just gives Python another chance to shine.
We're going to write a few scripts that convert our crime data into GeoJSON, which is designed specifically to store geographic data like points, lines and polygons, as well as data that may be associated with those shapes.
From there, we're going to layer them on a very basic Leaflet.js map that was hacked together from a few of their tutorials.
Instead of having to load data into a GIS program like Esri's ArcGIS or the open-source QGIS and spend the time manually joining a table from a database to a shapefile and then exporting the whole affair to a web-friendly format, we'll handle it two ways.
First, we'll write a section of script so that Python will generate GeoJSON straight from a database table. We'll use a new data type, OrderedDict
, to store key/value pairs as well as the order in which they are added.
The next section of the Python script will process an existing GeoJSON polygon shapefile. It will check the ID of each polygon against an existing data set; if it finds a match, it will write new data into the shape.
The whole point here is that you can have Python acting as an autonomous data depot, pulling down new data from one side and sending it to update dynamic visualizations from the other.
We'll use the following files for this project:
-
to_json.py: The script we'll write to make and alter GeoJSON files based on information in our existing crime.db.
-
chicago_crime.html: An HTML file that contains JavaScript. It uses Leaflet.js to draw a map and other functions that are part of that library to incorporate GeoJSON files as map layers.
-
comm_areas.geojson: A GeoJSON file that contains all of Chicago's community areas. This originally existed as an Esri shapefile but was converted to this format in QGIS; there are also command line tools available that can do this, like ogr2ogr.
A finished version of the Python script is in completed.


{% extends "home/base.html" %} {% load staticfiles %} {% block addon_css %} {% endblock %}
{% block content %}GPCRmd is an online platform with web-based visualization capabilities and a comprehensive analysis toolbox that allows scientists from any discipline to visualize, inspect, and analyse GPCR molecular dynamics.
It is a community-driven initiative with the final aim to accelerate basic research and beyond the discovery of more efficient and safer therapeutics.
If you have questions, ideas or comments on GPCRmd, you can contact the autors on info@gpcrmd.org.