Node.js v0.10.7 Manual & Documentation
Table of Contents
- Buffer
- Class: Buffer
- new Buffer(size)
- new Buffer(array)
- new Buffer(str, [encoding])
- Class Method: Buffer.isEncoding(encoding)
- buf.write(string, [offset], [length], [encoding])
- buf.toString([encoding], [start], [end])
- buf.toJSON()
- buf[index]
- Class Method: Buffer.isBuffer(obj)
- Class Method: Buffer.byteLength(string, [encoding])
- Class Method: Buffer.concat(list, [totalLength])
- buf.length
- buf.copy(targetBuffer, [targetStart], [sourceStart], [sourceEnd])
- buf.slice([start], [end])
- buf.readUInt8(offset, [noAssert])
- buf.readUInt16LE(offset, [noAssert])
- buf.readUInt16BE(offset, [noAssert])
- buf.readUInt32LE(offset, [noAssert])
- buf.readUInt32BE(offset, [noAssert])
- buf.readInt8(offset, [noAssert])
- buf.readInt16LE(offset, [noAssert])
- buf.readInt16BE(offset, [noAssert])
- buf.readInt32LE(offset, [noAssert])
- buf.readInt32BE(offset, [noAssert])
- buf.readFloatLE(offset, [noAssert])
- buf.readFloatBE(offset, [noAssert])
- buf.readDoubleLE(offset, [noAssert])
- buf.readDoubleBE(offset, [noAssert])
- buf.writeUInt8(value, offset, [noAssert])
- buf.writeUInt16LE(value, offset, [noAssert])
- buf.writeUInt16BE(value, offset, [noAssert])
- buf.writeUInt32LE(value, offset, [noAssert])
- buf.writeUInt32BE(value, offset, [noAssert])
- buf.writeInt8(value, offset, [noAssert])
- buf.writeInt16LE(value, offset, [noAssert])
- buf.writeInt16BE(value, offset, [noAssert])
- buf.writeInt32LE(value, offset, [noAssert])
- buf.writeInt32BE(value, offset, [noAssert])
- buf.writeFloatLE(value, offset, [noAssert])
- buf.writeFloatBE(value, offset, [noAssert])
- buf.writeDoubleLE(value, offset, [noAssert])
- buf.writeDoubleBE(value, offset, [noAssert])
- buf.fill(value, [offset], [end])
- buffer.INSPECT_MAX_BYTES
- Class: SlowBuffer
- Class: Buffer
Buffer#
Stability: 3 - Stable
Pure JavaScript is Unicode friendly but not nice to binary data. When dealing with TCP streams or the file system, it's necessary to handle octet streams. Node has several strategies for manipulating, creating, and consuming octet streams.
Raw data is stored in instances of the Buffer
class. A Buffer
is similar
to an array of integers but corresponds to a raw memory allocation outside
the V8 heap. A Buffer
cannot be resized.
The Buffer
class is a global, making it very rare that one would need
to ever require('buffer')
.
Converting between Buffers and JavaScript string objects requires an explicit encoding method. Here are the different string encodings.
'ascii'
- for 7 bit ASCII data only. This encoding method is very fast, and will strip the high bit if set.Note that when converting from string to buffer, this encoding converts a null character (
'\0'
or'\u0000'
) into0x20
(character code of a space). If you want to convert a null character into0x00
, you should use'utf8'
.'utf8'
- Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8.'utf16le'
- 2 or 4 bytes, little endian encoded Unicode characters. Surrogate pairs (U+10000 to U+10FFFF) are supported.'ucs2'
- Alias of'utf16le'
.'base64'
- Base64 string encoding.'binary'
- A way of encoding raw binary data into strings by using only the first 8 bits of each character. This encoding method is deprecated and should be avoided in favor ofBuffer
objects where possible. This encoding will be removed in future versions of Node.'hex'
- Encode each byte as two hexadecimal characters.
A Buffer
object can also be used with typed arrays. The buffer object is
cloned to an ArrayBuffer
that is used as the backing store for the typed
array. The memory of the buffer and the ArrayBuffer
is not shared.
NOTE: Node.js v0.8 simply retained a reference to the buffer in array.buffer
instead of cloning it.
While more efficient, it introduces subtle incompatibilities with the typed
arrays specification. ArrayBuffer#slice()
makes a copy of the slice while
Buffer#slice()
creates a view.
Class: Buffer#
The Buffer class is a global type for dealing with binary data directly. It can be constructed in a variety of ways.
new Buffer(size)#
size
Number
Allocates a new buffer of size
octets.
new Buffer(array)#
array
Array
Allocates a new buffer using an array
of octets.
new Buffer(str, [encoding])#
str
String - string to encode.encoding
String - encoding to use, Optional.
Allocates a new buffer containing the given str
.
encoding
defaults to 'utf8'
.
Class Method: Buffer.isEncoding(encoding)#
encoding
String The encoding string to test
Returns true if the encoding
is a valid encoding argument, or false
otherwise.
buf.write(string, [offset], [length], [encoding])#
string
String - data to be written to bufferoffset
Number, Optional, Default: 0length
Number, Optional, Default:buffer.length - offset
encoding
String, Optional, Default: 'utf8'
Writes string
to the buffer at offset
using the given encoding.
offset
defaults to 0
, encoding
defaults to 'utf8'
. length
is
the number of bytes to write. Returns number of octets written. If buffer
did
not contain enough space to fit the entire string, it will write a partial
amount of the string. length
defaults to buffer.length - offset
.
The method will not write partial characters.
buf = new Buffer(256);
len = buf.write('\u00bd + \u00bc = \u00be', 0);
console.log(len + " bytes: " + buf.toString('utf8', 0, len));
The number of characters written (which may be different than the number of
bytes written) is set in Buffer._charsWritten
and will be overwritten the
next time buf.write()
is called.
buf.toString([encoding], [start], [end])#
encoding
String, Optional, Default: 'utf8'start
Number, Optional, Default: 0end
Number, Optional, Default:buffer.length
Decodes and returns a string from buffer data encoded with encoding
(defaults to 'utf8'
) beginning at start
(defaults to 0
) and ending at
end
(defaults to buffer.length
).
See buffer.write()
example, above.
buf.toJSON()#
Returns a JSON-representation of the Buffer instance, which is identical to the
output for JSON Arrays. JSON.stringify
implicitly calls this function when
stringifying a Buffer instance.
Example:
var buf = new Buffer('test');
var json = JSON.stringify(buf);
console.log(json);
// '[116,101,115,116]'
var copy = new Buffer(JSON.parse(json));
console.log(copy);
// <Buffer 74 65 73 74>
buf[index]#
Get and set the octet at index
. The values refer to individual bytes,
so the legal range is between 0x00
and 0xFF
hex or 0
and 255
.
Example: copy an ASCII string into a buffer, one byte at a time:
str = "node.js";
buf = new Buffer(str.length);
for (var i = 0; i < str.length ; i++) {
buf[i] = str.charCodeAt(i);
}
console.log(buf);
// node.js
Class Method: Buffer.isBuffer(obj)#
obj
Object- Return: Boolean
Tests if obj
is a Buffer
.
Class Method: Buffer.byteLength(string, [encoding])#
string
Stringencoding
String, Optional, Default: 'utf8'- Return: Number
Gives the actual byte length of a string. encoding
defaults to 'utf8'
.
This is not the same as String.prototype.length
since that returns the
number of characters in a string.
Example:
str = '\u00bd + \u00bc = \u00be';
console.log(str + ": " + str.length + " characters, " +
Buffer.byteLength(str, 'utf8') + " bytes");
// ½ + ¼ = ¾: 9 characters, 12 bytes
Class Method: Buffer.concat(list, [totalLength])#
list
Array List of Buffer objects to concattotalLength
Number Total length of the buffers when concatenated
Returns a buffer which is the result of concatenating all the buffers in the list together.
If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer.
If the list has exactly one item, then the first item of the list is returned.
If the list has more than one item, then a new Buffer is created.
If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly.
buf.length#
- Number
The size of the buffer in bytes. Note that this is not necessarily the size
of the contents. length
refers to the amount of memory allocated for the
buffer object. It does not change when the contents of the buffer are changed.
buf = new Buffer(1234);
console.log(buf.length);
buf.write("some string", 0, "ascii");
console.log(buf.length);
// 1234
// 1234
buf.copy(targetBuffer, [targetStart], [sourceStart], [sourceEnd])#
targetBuffer
Buffer object - Buffer to copy intotargetStart
Number, Optional, Default: 0sourceStart
Number, Optional, Default: 0sourceEnd
Number, Optional, Default:buffer.length
Does copy between buffers. The source and target regions can be overlapped.
targetStart
and sourceStart
default to 0
.
sourceEnd
defaults to buffer.length
.
All values passed that are undefined
/NaN
or are out of bounds are set equal
to their respective defaults.
Example: build two Buffers, then copy buf1
from byte 16 through byte 19
into buf2
, starting at the 8th byte in buf2
.
buf1 = new Buffer(26);
buf2 = new Buffer(26);
for (var i = 0 ; i < 26 ; i++) {
buf1[i] = i + 97; // 97 is ASCII a
buf2[i] = 33; // ASCII !
}
buf1.copy(buf2, 8, 16, 20);
console.log(buf2.toString('ascii', 0, 25));
// !!!!!!!!qrst!!!!!!!!!!!!!
buf.slice([start], [end])#
start
Number, Optional, Default: 0end
Number, Optional, Default:buffer.length
Returns a new buffer which references the same memory as the old, but offset
and cropped by the start
(defaults to 0
) and end
(defaults to
buffer.length
) indexes. Negative indexes start from the end of the buffer.
Modifying the new buffer slice will modify memory in the original buffer!
Example: build a Buffer with the ASCII alphabet, take a slice, then modify one byte from the original Buffer.
var buf1 = new Buffer(26);
for (var i = 0 ; i < 26 ; i++) {
buf1[i] = i + 97; // 97 is ASCII a
}
var buf2 = buf1.slice(0, 3);
console.log(buf2.toString('ascii', 0, buf2.length));
buf1[0] = 33;
console.log(buf2.toString('ascii', 0, buf2.length));
// abc
// !bc
buf.readUInt8(offset, [noAssert])#
offset
NumbernoAssert
Boolean, Optional, Default: false- Return: Number
Reads an unsigned 8 bit integer from the buffer at the specified offset.
Set noAssert
to true to skip validation of offset
. This means that offset
may be beyond the end of the buffer. Defaults to false
.
Example:
var buf = new Buffer(4);
buf[0] = 0x3;
buf[1] = 0x4;
buf[2] = 0x23;
buf[3] = 0x42;
for (ii = 0; ii < buf.length; ii++) {
console.log(buf.readUInt8(ii));
}
// 0x3
// 0x4
// 0x23
// 0x42
buf.readUInt16LE(offset, [noAssert])#
buf.readUInt16BE(offset, [noAssert])#
offset
NumbernoAssert
Boolean, Optional, Default: false- Return: Number
Reads an unsigned 16 bit integer from the buffer at the specified offset with specified endian format.
Set noAssert
to true to skip validation of offset
. This means that offset
may be beyond the end of the buffer. Defaults to false
.
Example:
var buf = new Buffer(4);
buf[0] = 0x3;
buf[1] = 0x4;
buf[2] = 0x23;
buf[3] = 0x42;
console.log(buf.readUInt16BE(0));
console.log(buf.readUInt16LE(0));
console.log(buf.readUInt16BE(1));
console.log(buf.readUInt16LE(1));
console.log(buf.readUInt16BE(2));
console.log(buf.readUInt16LE(2));
// 0x0304
// 0x0403
// 0x0423
// 0x2304
// 0x2342
// 0x4223
buf.readUInt32LE(offset, [noAssert])#
buf.readUInt32BE(offset, [noAssert])#
offset
NumbernoAssert
Boolean, Optional, Default: false- Return: Number
Reads an unsigned 32 bit integer from the buffer at the specified offset with specified endian format.
Set noAssert
to true to skip validation of offset
. This means that offset
may be beyond the end of the buffer. Defaults to false
.
Example:
var buf = new Buffer(4);
buf[0] = 0x3;
buf[1] = 0x4;
buf[2] = 0x23;
buf[3] = 0x42;
console.log(buf.readUInt32BE(0));
console.log(buf.readUInt32LE(0));
// 0x03042342
// 0x42230403
buf.readInt8(offset, [noAssert])#
offset
NumbernoAssert
Boolean, Optional, Default: false- Return: Number
Reads a signed 8 bit integer from the buffer at the specified offset.
Set noAssert
to true to skip validation of offset
. This means that offset
may be beyond the end of the buffer. Defaults to false
.
Works as buffer.readUInt8
, except buffer contents are treated as two's
complement signed values.
buf.readInt16LE(offset, [noAssert])#
buf.readInt16BE(offset, [noAssert])#
offset
NumbernoAssert
Boolean, Optional, Default: false- Return: Number
Reads a signed 16 bit integer from the buffer at the specified offset with specified endian format.
Set noAssert
to true to skip validation of offset
. This means that offset
may be beyond the end of the buffer. Defaults to false
.
Works as buffer.readUInt16*
, except buffer contents are treated as two's
complement signed values.
buf.readInt32LE(offset, [noAssert])#
buf.readInt32BE(offset, [noAssert])#
offset
NumbernoAssert
Boolean, Optional, Default: false- Return: Number
Reads a signed 32 bit integer from the buffer at the specified offset with specified endian format.
Set noAssert
to true to skip validation of offset
. This means that offset
may be beyond the end of the buffer. Defaults to false
.
Works as buffer.readUInt32*
, except buffer contents are treated as two's
complement signed values.
buf.readFloatLE(offset, [noAssert])#
buf.readFloatBE(offset, [noAssert])#
offset
NumbernoAssert
Boolean, Optional, Default: false- Return: Number
Reads a 32 bit float from the buffer at the specified offset with specified endian format.
Set noAssert
to true to skip validation of offset
. This means that offset
may be beyond the end of the buffer. Defaults to false
.
Example:
var buf = new Buffer(4);
buf[0] = 0x00;
buf[1] = 0x00;
buf[2] = 0x80;
buf[3] = 0x3f;
console.log(buf.readFloatLE(0));
// 0x01
buf.readDoubleLE(offset, [noAssert])#
buf.readDoubleBE(offset, [noAssert])#
offset
NumbernoAssert
Boolean, Optional, Default: false- Return: Number
Reads a 64 bit double from the buffer at the specified offset with specified endian format.
Set noAssert
to true to skip validation of offset
. This means that offset
may be beyond the end of the buffer. Defaults to false
.
Example:
var buf = new Buffer(8);
buf[0] = 0x55;
buf[1] = 0x55;
buf[2] = 0x55;
buf[3] = 0x55;
buf[4] = 0x55;
buf[5] = 0x55;
buf[6] = 0xd5;
buf[7] = 0x3f;
console.log(buf.readDoubleLE(0));
// 0.3333333333333333
buf.writeUInt8(value, offset, [noAssert])#
value
Numberoffset
NumbernoAssert
Boolean, Optional, Default: false
Writes value
to the buffer at the specified offset. Note, value
must be a
valid unsigned 8 bit integer.
Set noAssert
to true to skip validation of value
and offset
. This means
that value
may be too large for the specific function and offset
may be
beyond the end of the buffer leading to the values being silently dropped. This
should not be used unless you are certain of correctness. Defaults to false
.
Example:
var buf = new Buffer(4);
buf.writeUInt8(0x3, 0);
buf.writeUInt8(0x4, 1);
buf.writeUInt8(0x23, 2);
buf.writeUInt8(0x42, 3);
console.log(buf);
// <Buffer 03 04 23 42>
buf.writeUInt16LE(value, offset, [noAssert])#
buf.writeUInt16BE(value, offset, [noAssert])#
value
Numberoffset
NumbernoAssert
Boolean, Optional, Default: false
Writes value
to the buffer at the specified offset with specified endian
format. Note, value
must be a valid unsigned 16 bit integer.
Set noAssert
to true to skip validation of value
and offset
. This means
that value
may be too large for the specific function and offset
may be
beyond the end of the buffer leading to the values being silently dropped. This
should not be used unless you are certain of correctness. Defaults to false
.
Example:
var buf = new Buffer(4);
buf.writeUInt16BE(0xdead, 0);
buf.writeUInt16BE(0xbeef, 2);
console.log(buf);
buf.writeUInt16LE(0xdead, 0);
buf.writeUInt16LE(0xbeef, 2);
console.log(buf);
// <Buffer de ad be ef>
// <Buffer ad de ef be>
buf.writeUInt32LE(value, offset, [noAssert])#
buf.writeUInt32BE(value, offset, [noAssert])#
value
Numberoffset
NumbernoAssert
Boolean, Optional, Default: false
Writes value
to the buffer at the specified offset with specified endian
format. Note, value
must be a valid unsigned 32 bit integer.
Set noAssert
to true to skip validation of value
and offset
. This means
that value
may be too large for the specific function and offset
may be
beyond the end of the buffer leading to the values being silently dropped. This
should not be used unless you are certain of correctness. Defaults to false
.
Example:
var buf = new Buffer(4);
buf.writeUInt32BE(0xfeedface, 0);
console.log(buf);
buf.writeUInt32LE(0xfeedface, 0);
console.log(buf);
// <Buffer fe ed fa ce>
// <Buffer ce fa ed fe>
buf.writeInt8(value, offset, [noAssert])#
value
Numberoffset
NumbernoAssert
Boolean, Optional, Default: false
Writes value
to the buffer at the specified offset. Note, value
must be a
valid signed 8 bit integer.
Set noAssert
to true to skip validation of value
and offset
. This means
that value
may be too large for the specific function and offset
may be
beyond the end of the buffer leading to the values being silently dropped. This
should not be used unless you are certain of correctness. Defaults to false
.
Works as buffer.writeUInt8
, except value is written out as a two's complement
signed integer into buffer
.
buf.writeInt16LE(value, offset, [noAssert])#
buf.writeInt16BE(value, offset, [noAssert])#
value
Numberoffset
NumbernoAssert
Boolean, Optional, Default: false
Writes value
to the buffer at the specified offset with specified endian
format. Note, value
must be a valid signed 16 bit integer.
Set noAssert
to true to skip validation of value
and offset
. This means
that value
may be too large for the specific function and offset
may be
beyond the end of the buffer leading to the values being silently dropped. This
should not be used unless you are certain of correctness. Defaults to false
.
Works as buffer.writeUInt16*
, except value is written out as a two's
complement signed integer into buffer
.
buf.writeInt32LE(value, offset, [noAssert])#
buf.writeInt32BE(value, offset, [noAssert])#
value
Numberoffset
NumbernoAssert
Boolean, Optional, Default: false
Writes value
to the buffer at the specified offset with specified endian
format. Note, value
must be a valid signed 32 bit integer.
Set noAssert
to true to skip validation of value
and offset
. This means
that value
may be too large for the specific function and offset
may be
beyond the end of the buffer leading to the values being silently dropped. This
should not be used unless you are certain of correctness. Defaults to false
.
Works as buffer.writeUInt32*
, except value is written out as a two's
complement signed integer into buffer
.
buf.writeFloatLE(value, offset, [noAssert])#
buf.writeFloatBE(value, offset, [noAssert])#
value
Numberoffset
NumbernoAssert
Boolean, Optional, Default: false
Writes value
to the buffer at the specified offset with specified endian
format. Note, behavior is unspecified if value
is not a 32 bit float.
Set noAssert
to true to skip validation of value
and offset
. This means
that value
may be too large for the specific function and offset
may be
beyond the end of the buffer leading to the values being silently dropped. This
should not be used unless you are certain of correctness. Defaults to false
.
Example:
var buf = new Buffer(4);
buf.writeFloatBE(0xcafebabe, 0);
console.log(buf);
buf.writeFloatLE(0xcafebabe, 0);
console.log(buf);
// <Buffer 4f 4a fe bb>
// <Buffer bb fe 4a 4f>
buf.writeDoubleLE(value, offset, [noAssert])#
buf.writeDoubleBE(value, offset, [noAssert])#
value
Numberoffset
NumbernoAssert
Boolean, Optional, Default: false
Writes value
to the buffer at the specified offset with specified endian
format. Note, value
must be a valid 64 bit double.
Set noAssert
to true to skip validation of value
and offset
. This means
that value
may be too large for the specific function and offset
may be
beyond the end of the buffer leading to the values being silently dropped. This
should not be used unless you are certain of correctness. Defaults to false
.
Example:
var buf = new Buffer(8);
buf.writeDoubleBE(0xdeadbeefcafebabe, 0);
console.log(buf);
buf.writeDoubleLE(0xdeadbeefcafebabe, 0);
console.log(buf);
// <Buffer 43 eb d5 b7 dd f9 5f d7>
// <Buffer d7 5f f9 dd b7 d5 eb 43>
buf.fill(value, [offset], [end])#
value
offset
Number, Optionalend
Number, Optional
Fills the buffer with the specified value. If the offset
(defaults to 0
)
and end
(defaults to buffer.length
) are not given it will fill the entire
buffer.
var b = new Buffer(50);
b.fill("h");
buffer.INSPECT_MAX_BYTES#
- Number, Default: 50
How many bytes will be returned when buffer.inspect()
is called. This can
be overridden by user modules.
Note that this is a property on the buffer module returned by
require('buffer')
, not on the Buffer global, or a buffer instance.
Class: SlowBuffer#
This class is primarily for internal use. JavaScript programs should use Buffer instead of using SlowBuffer.
In order to avoid the overhead of allocating many C++ Buffer objects for small blocks of memory in the lifetime of a server, Node allocates memory in 8Kb (8192 byte) chunks. If a buffer is smaller than this size, then it will be backed by a parent SlowBuffer object. If it is larger than this, then Node will allocate a SlowBuffer slab for it directly.


To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video


Kate Beckinsale divorce from Len Wiseman finalised four years after split
Kate Beckinsale met director Len Wiseman on the set of Underworld in 2003 and they married a year later before separating in late 2015
by James Brinsford, https://www.facebook.com/james.brinsfordKate Beckinsale has officially divorced Len Wiseman, four years after they originally split.
The 46-year-old British actress had separated from film director Wiseman in 2015 before he filed for divorce a year later, citing "irreconcilable differences".
On Monday, TMZ reported that Beckinsale's marriage to Wiseman was finally officially over, after a judge signed off on the property settlement.
It has been reported that as part of the settlement, Beckinsale would be keeping all earnings she had made since they separated.
Beckinsale would also be keeping jewellery and personal items and The Blast has reported that she has deeded a property in the Hollywood Hills to Wiseman in recent weeks.
It has been a long process as Wiseman originally filed for divorce on October 25, 2016.
The couple met on the set of Underworld in 2003 and they married a year later. The film was starring Beckinsale's then partner Michael Sheen, who she had been with since 1995.
Becksinsale and Wiseman split in 2015 as their feelings for each other 'fizzled out'.
The actress has a 20-year-old daughter, Lily, from her relationship with Sheen, who Becksinale had persuaded Wiseman to cast him in Underworld before she dumped Sheen for the filmmaker.
Since splitting from Wiseman, Beckinsale raised eyebrows when she embarked on a relationship with SNL comedian, Pete Davidson.
The comic had just ended his engagement to singer Ariana Grande when he was spotted stepping out with Beckinsale, who was 20 years his senior.
After four months, their relationship was over and Beckinsale has shown she has a penchant for comedians, dating British star Jack Whitehall and US comic Matt Rife, in recent years.
Away from the dating scene, Beckinsale has revealed that she was rescued from her Los Angeles home after wildfires blazed through Northern California.
She took to social media to share her gratitude last week and thanked the Los Angeles Fire Department and her neighbours who assisted her and her two Persian cats named Clive and Willow and two lapdogs Ingrid and Myf in evacuating her Hollywood property.
Telling her Instagram followers what happened, alongside a snap of the terrifying flames, the British actress penned: "We are safe. Thank you so much to everyone who checked in.
"Sending love and hope to everyone else who walked out of their house at 3 am to this, love and admiration to the @losangelesfiredepartment and most of all to David and Dorothy who didn’t need to remember in the middle of the night that I can’t drive but did.
"And to everyone who has offered me a place to stay despite my rolling with four animals including an epileptic cat. Angel people. So grateful x"
Do you have a story to sell? Get in touch with us at<EMAIL_ADDRESS>or call us direct 0207 29 33033.


Cannabis Gourmet
I've recently been introduced to the advantages of ingested cannabis. I get a more powerful high eating it than I could ever get from smoking it, and it provides a long-lasting visionary state similar to other psychedelics.
In the past, I tried ingested cannabis with minimal effect. Then I tried some brownies made with cannabis butter. WOW! I said, I must speak to the man who made this butter.
As it turns out, the THC is sucked out of the leaves by the butter when you cook it, then you strain the leaves out and that's that. You need to use butter or some kind of very saturated fat, otherwise it does not work.
Rather than get distracted with the specifics, I will provide a single experience report followed by the recipe.
The Experience:
00:00 - Eat one guacamole eggplant quesedilla containing approximately 1/8 cup (one fluid ounce) of cannabis butter.
00:20 - Start to feel a bit dizzy and relaxed.
00:40 - Color enhancement, good mood, easily amused.
01:00 - The full effects come over me and I feel an extreme sense of euphoria and presence. The feeling is similar to MDMA but without the speedy anxiety. I'm able to continue working, talking on the phone, having a wonderful time.
02:00 - Listening to music is delightful. The mind is very relaxed.
03:00 - Spend some time in the hot tub. Emerge refreshed and alert.
04:00 - Later stage psychedelic feelings of completeness and purpose of being are felt. Erotic push is very strong.
05:00 - Damn, I'm hungry!
06:00 - Deep sleep
14:00 - Feel fine the next day
The Recipe:
Cannabis Butter: 1 lb Butter, 4 oz. Cannabis Shake (the stuff nobody will ever smoke), Water. Put the shake through a colander to break it up more and get rid of the seeds and major stems. Fill a pot with 4-6 cups of water, add 2 oz. of the shake and bring to slow boil. Add the butter and stir until melted. Let simmer for an hour. Pour the whole mix through a cheesecloth to strain out the vegetation. Squeeze out as much of the butter/water you can. Throw out the leaves and put the butter/water in the refrigerator for 6 hours. The butter will separate out from the water and you can pour off all the water and leaf gunk (there's no THC in that water just bad stuff). Repeat the whole process using the remaining 2 oz. of shake, reusing the butter you just processed. You will end up with enough excellent butter for 4 batches of brownies.
Cannabis Eggplant: Saute one large eggplant cut into small strips in 1/2 cup cannabis butter. Let cook slowly until the eggplant is crispy and all butter is absorbed. Makes delicious sandwiches, put on pizza, pasta, etc.
Cannabis Guacamole: Add 1/4 cup cannabis butter for each avacado. Add garlic, lemon juice, season to taste.
I've found that the dessert-based cannabis treats are weaker than those made with no sugar and flour, so I make main dishes that will use a lot of oil. If you use cannabis for pain management, you might want to think of eating it instead of smoking. It's healthier and the effects of the cannabis are much greater and longer lasting. It can also be a lot cheaper. Anyone who grows cannabis at home will be more than happy to have someone come by and take all the leaves away so they don't have to figure out how to get rid of them.
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.


What sets us apart at Luminus Technical University College are the hundreds of diverse programs we deliver across ten schools, all of which are uniquely designed based on the latest market trends and employment requirements, ultimately providing you with specialized entrepreneurial and career training that prepares you to determine your path, enter the real world, overcome economic challenges and achieve professional success. As part of Luminus Education, we are one of the first technical colleges in Jordan to offer six different technical Bachelor Degrees in numerous high demand fields, equipping our students with not only academic strength, but also with the confidence to secure jobs in today’s rapidly evolving workforce.
APPLY NOWLearn about the programs available at LTUC. Click to sort the programs:


Provide support for C# on Databricks There are (at least) two use cases of it: - Migrate large number of (hundreds) data pipelines running on ADLA to Databrick. Those data pipelines usually have heavy business logic built in C# library. It will be a huge cost to re-write the code in Java ...
Life, part 2 Code for this episode can be found here. There are literally fifty years of articles explaining Conway’s Game of Life, starting with the one that introduced it to me: the October 1970 issue o…
Psychedelic compound from magic mushrooms produced in yeast Psilocybin mushrooms have been found to have minimal harmful effects and could potentially benefit those with depression. But they remain illegal even though they offer a groundbreaking alternative to several under-treated psychological conditions.
ASP .NET Core Dev Blog Series Looking for my for my blog home? Here: https://wakeupandcode.comOn This PageASP .NET Core 2018 Blog SeriesHappy New Year 2019!ASP .NET Core 2019 SeriesASP .NET Core 2019 eBook&nb
TechEmpower Web Framework Performance Comparison Performance comparison of a wide spectrum of web application frameworks and platforms using community-contributed test implementations.
Star Trek: Deep Space Nine In 82.5 Hours The show that pushed Star Trek (and 1993 television) to the structural limits.
Home Page - Stack Overflow Email It's reserved for our users to easily manage email subscriptions directly from any email we send.
 Instead of psycho-analysing why you have it, instead implement some processes and barriers to reduce it's hold over you.
Configuring Logging in Azure App Services - ardalis Azure App Services are a very easy and economical way to quickly deploy your ASP.NET/ASP.NET Core apps to the cloud. You can get started for free if you just want to try out something you’re developing (without uptime considerations) and entry-level plans...
Feature Flags (aka Feature Toggles) Separation of deployment and feature releases: how to enable and disable features in applications (services) at configuration time
Postgres For Those Who Can’t Even, Part 3 – In The Real World This is part 3 of a series of posts I’m writing for Friendo, a web person who wants to get their hands a lot dirtier with Node and Postgres. You can read part 1 here, and part 2 here, where w…
Strategies for migrating to TypeScript This blog post gives an overview of strategies for migrating code bases from JavaScript to TypeScript. It also mentions material for further reading.
Filtering on Include in EF Core For years (quite literally 3 years) I’ve been waiting for filtering to be available on includes within Entity Framework, or more specifically, EF Core. Finally, the next preview should have this included. From the pull request, the additional operations t...
Creating web apps via TypeScript and webpack This blog post describes how to create web apps via TypeScript and webpack. We will only be using the DOM API, not a particular frontend framework. The repository ts-demo-webpack with the files can be downloaded from GitHub.
How does TypeScript work? The bird’s eye view This blog post gives the bird’s eye view of how TypeScript works: What is the structure of a typical TypeScript project? What is compiled and how? How can we use IDEs to write TypeScript?
BANNERS - Where The Shadow Ends (Acoustic / Audio) "Where the Shadow Ends" (Acoustic) Available Now: http://Banners.lnk.to/WTSEacoustic Follow BANNERS: Instagram: https://www.instagram.com/bannersmusic/ Facebook: https://www.facebook.com/BANNERSmusic/ Twitter: https://twitter.com/BANNERSMUSIC
Hardware Solutions To Highly-Adversarial Environments Part 3: Trusted Execution Environment (TEE), SGX, TrustZone and Hardware Security Tokens This is end of my blog post series on cryptography with hardware. I’ve written about smart cards and secure elements in part 1 and about HSMs and TPMs in part 2. Trusted Execution Environment (TEE) So far, all of the hardware solutions we’ve talked about...
The Baymard Institute: A glorious, evidence-based trove of UX best practices What’s so great about Baymard and why aren’t there more organizations on the same level?
Watching More Files With Dotnet Watch For Static Sites The marriage of .NET Core and static site generators is a beautiful thing. There are many great static site generator options out there like 11ty, Jekyll, Hugo, and many more. While you can accomplish amazing feats at build time, a dynamic backend can all...


|
Pretty
Fly For A White Guy
(Offspring) |
|
Give
it to me baby, uh huh, uh huh
Give it to me baby, uh huh, uh huh Give it to me baby, uh huh, uh huh And all the girlies say I'm pretty fly for a white guy Uno dos tres cuatro cinco cinco seís You know its kinda hard just to get along today Our subject isn't cool, but he fakes it anyway He may not have a clue, and he may not have style But everything he lacks, well he makes up in denial So don't debate, a player straight You know he really doesn't get it anyway Gonna play the field, and keep it real For you no way, for you no way So if you don't rate, just overcompensate At least you'll know you can always go on Ricki Lake The world needs wannabes Hey, hey, do that brand new thing! Give it to me baby, uh huh, uh huh Give it to me baby, uh huh, uh huh Give it to me baby, uh huh, uh huh And all the girlies say I'm pretty fly for a white guy He needs some cool tunes, not just any will suffice But they didn't have Ice Cube so he bought Vanilla Ice Now cruising in his Pinto, he sees homies as he pass But if he looks twice, they're gonna kick his lily ass!  Now he's getting a tattoo yeah, he's getting ink done He asked for a 13, but they drew a 31 Friends say he's trying too hard and he's not quite hip But in his own mind he's the, he's the dopest trip Give it to me baby, uh huh, uh huh Give it to me baby, uh huh, uh huh Give it to me baby, uh huh, uh huh Uno dos tres cuatro cinco cinco seís So don't debate, a player straight You know he really doesn't get it anyway Gonna play the field, and keep it real For you no way, for you no way So if you don't rate, just overcompensate At least you'll know you can always go on Ricki Lake The world needs wannabes The world loves wannabes Let's get some more wannabes Hey, hey, do that brand new thing! |


20 September 2018
Process over product
There is a time and a place for everything, just like baking a cake (product) where we are following a recipe book to make a copy of the one depicted in the photograph.
However for the baker, it is the joy of the baking that inspires them most.
Source
Process over product, the "better" you become at something the more likely tend to forget how important the road having you let to that point is. Having worked in IT for 10 years and having seen "The Web" grow to what it is now, it is easy to mix up old knowledge with the new (HTML, xHTML, iFrame, Frontpage (don't look that up), Flash (neither) ) and it is interesting to see how some technologies were seen as gimmicks (Javascript) and have outgrown themself to something bigger and almost independant.
The context behind process over product is one which I do not want to forget, it alone has reminded me to not focus on the ultimate website, but to let it progress in steps and take the information in like a tree going from season to season it doesn't rush.
Search Inside Yourself, a reflection, chapter 2
Before I had read this chapter, I thought about meditation on being good for your mind without any scientific explanation. Like when your parents tell you to do something when you were a child and as you grow older you see why they pushed you to doing it. However having read it is quite the eye opener and it is interesting to read into.
Some of the new things I have learned backing up the reasons why it meditation is usefull. You learn to keep an attention span and to keep it in line as you want. The way this is achieved is the same as training for a marathon (or any other muscle group) and it happens in small doses. Also meditation helps you to be more aware of the small things we take for granted of our minds, the small things we tend let happen by going into auto-pilot.
Most of the meditation techniques described in chapter 2 are still in the begining stages and describe the traditional techniques more commonly shown in films and tv. Where this technique is called the seven-point meditation program and in essence require you to be in an non-slanted posture where your body is able to do all the work it needs to do (pump blood, breath normally) and prevents you from doing much else. More advanced techniques will be described in chapter 3 which will be discussed in a later post.


Order info for this order
| Order No |
Id |
| Ordet Total |
2156465 |
| Order Status |
Pending |
| Payment Status |
Pending |
| Payment type |
Pending |
| Order Date |
12-2119 |
Customer info for this order
| Customer Name |
MD Zubaer |
| Phone Number |
21656541 |
| Email Address |
<EMAIL_ADDRESS>|
| Address |
Rajshi |
Shipping info for this order
| Full Name |
MD zubaer |
| Phone Number |
1564651321 |
| Email Address |
zubaera@gmail |
| Address |
Chapai |
Product info for this order
| SN. |
Product Id |
Product Name |
Product Price |
Product Quantity |
Total Price |
| 01 |
04564 |
Pant |
5464654tk |
5 |
21541215 |


Post-Doctoral Fellow
Visiting MSc Student (UT)
MSc student
Visiting MSc Student
Visiting MSc Student
Technician
Visiting MSc Student (ETH)
Research Associate
Currently:
Assistant Professor, University of Toronto Mississauga, Canada
PhD Student
PhD Student
Currently:
Researcher, Google Deep Mind, London, UK
MSc Student
MSc Student
Post-Doctoral Fellow
Currently:
Professor, ESPCI, Paris, France
Post-Doctoral Fellow
Currently:
Assistant Professor, Wayne State University, USA
PhD Student
MSc Student
Visiting Student
Post-Doctoral Fellow
Currently:
Assistant Professor, University of Calgary, Canada
MSc Student
MSc Student
MSc Student
MSc Student
MSc Student
PhD Student
Currently:
Researcher, Google Deep Mind, London, UK
Post-Doctoral Fellow
Post-Doctoral Fellow
Post-Doctoral Fellow
Currently:
Chief Science Officer, Neuro Behavioral Analysis Unit, University of Lausanne, Switzerland
Post-Doctoral Fellow
Post-Doctoral Fellow
Technician
MSc Student
MSc Student
PhD Student
Visiting Scientist
Post-Doctoral Fellow
Currently:
Assistant Professor, University of Toronto, Canada
PhD Student
PhD Student
Currently:
Assistant Professor, University of Toronto, Canada
Post-Doctoral Fellow
Currently:
Assistant Professor, University of British Columbia, Canada
Post-Doctoral Fellow
Currently:
Biomedical Research/Research Data Specialist, Wayne State, USA
PhD Student
Currently:
Assistant Professor, University of Toronto, Canada
Post-Doctoral Fellow
Post-Doctoral Fellow
Post-Doctoral Fellow
MSc Student
PhD Student
Undergraduate Student
Graduate Student
Graduate Student
Post-Doctoral Fellow
Currently:
Assistant Professor, University of Toronto, Canada
Post-Doctoral Fellow
PhD Student and Post-Doctoral Fellow
Post-Doctoral Fellow (in Salter, Josselyn and Frankland labs)


4 Interpretability, Legal and Regulatory Frameworks
Week 12
Lecture: Interpretability
Topics: What is interpretability?
Reading:
- “The Intuitive Appeal of Explainable Machines”, A. Selbst and S. Barocas (2018) [SSRN]
- “Nutritional Labels for Data and Models”, J. Stoyanovich and B. Howe (2019) [pdf]
- “The Imperative of Interpretable Machines”, J. Stoyanovich, J. Van Bavel, T. West (2020) [link]
Lab: Course project discussion; working through an example of an ADS
Week 13
Lecture: Legal and regulatory frameworks
Topics: Data protection, algorithmic impact assessment, regulating Automated Decision Systems (ADS) and AI
Reading:
- GDPR [link]
- Canadian Directive on Automated Decision-Making [link]
- NYC ADS Task Force Report [pdf]
- “Disparate Impact in Big Data Policing”, A. Selbst (2017) [SSRN]
- “Ensuring a Future that Advances Equity in Algoritmic Employment Decisions”, J. Yang (2019) [pdf]
Lab: Slack; course project discussion
Week 14
Lecture: Project presentations
Lab: Project presentations


Unit Testing with Email
Lots of applications send email. You might send email to customers when they request a forgotten password, or you might send an email to support when an unhanded exception occurs. The problem in unit testing is you don't want to actually send an email every time the test are run, but you may well want to test the logic around the email send. How can you stub out the email for unit testing?
You might have some code which looks a bit like this:
public void SendSupportMail(string toAddress)
{
if (Regex.IsMatch(toAddress, @"^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$"))
{
MailMessage message = new<EMAIL_ADDRESS>toAddress);
message.IsBodyHtml = false;
message.Subject = "BigCorp support wants to help";
message.Body = string.Format("BigCorp is dealing with your problem./nYour reference for this issue is {0}.", new Random().Next(0, 10000));
SmtpClient client = new SmtpClient();
client.Send(message);
}
}
On it's own, maybe this code isn't so bad. It's simple enough that a unit test isn't going to provide huge value. The problem happens later, when the SendSupportMail call get's embedded in some more complex business logic. When you try to unit test that, emails start flying out, and you look a bit stupid.
The problem unit testing this code is the line "SmtpClient client = new SmtpClient()". Newing the SmtpClient binds the code to the real Smtp client. It's going to send out a real email and you can't avoid it. To make this unit-testable you need to fake out the SmtpClient. With a fake Smtp client in place, the rest of the logic can run ok, but when client.Send(message) is called nothing will actually happen. How do you do this?
- Make an Interface for the Smtp client.
- Make two implementations for the Smtp client:
- Real - calls the real Smtp client, for the real code.
- Fake - for unit testing.
- Pass the interface into the constructor of the email helper.
- Adjust the code to use the interface.
- Add tests.
A unit tested version of the code looks like this:
using System;
using System.Net.Mail;
using System.Text.RegularExpressions;
using MbUnit.Framework;
namespace EmailDemo
{
[TestFixture]
public class EmailTest
{
public interface ISmtpClient
{
void Send(MailMessage message);
}
public class RealSmtpClient : ISmtpClient
{
public void Send(MailMessage message)
{
SmtpClient client = new SmtpClient();
client.Send(message);
}
}
public class FakeSmtpClient : ISmtpClient
{
public bool MailSent { get; set; }
public FakeSmtpClient()
{
MailSent = false;
}
public void Send(MailMessage message)
{
MailSent = true;
}
}
public class EmailHelper
{
private ISmtpClient smtpClient;
public EmailHelper(ISmtpClient smtpClient)
{
this.smtpClient = smtpClient;
}
public void SendSupportMail(string toAddress)
{
if (IsValid(toAddress))
{
MailMessage message = MakeMessage(toAddress);
smtpClient.Send(message);
}
}
public MailMessage MakeMessage(string toAddress)
{
MailMessage message = new<EMAIL_ADDRESS>toAddress);
message.IsBodyHtml = false;
message.Subject = "BigCorp Support wants to help";
message.Body = string.Format("BigCorp is dealing with your problem./nYour reference for this issue is {0}.", new Random().Next(0, 10000));
return message;
}
public bool IsValid(string emailAddress)
{
return Regex.IsMatch(emailAddress, @"^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$");
}
}
[Test]
public void IfEmailAddressIsValid_AnEmailShouldBeSent()
{
FakeSmtpClient fakeClient = new FakeSmtpClient();
EmailHelper helper = new EmailHelper(fakeClient);
helper.SendSupportMail("mat@littlecorp.com");
Assert.IsTrue(fakeClient.MailSent);
}
[Test]
public void IfEmailAddressIsInvalid_AnEmailShouldNotBeSent()
{
FakeSmtpClient fakeClient = new FakeSmtpClient();
EmailHelper helper = new EmailHelper(fakeClient);
helper.SendSupportMail("matatlittlecorp.com");
Assert.IsFalse(fakeClient.MailSent);
}
}
}
There are a few things to say about this code:
- I've separated the creation of the message, from the send of the message - doing this always seems to make the code clearer.
- I've extracted the regex into an IsValid method, which better expresses the intention of the code. It also makes it easy to add tests for just the regex.
- I've copied the regex from a reasonably reputable source, so I'm not really testing it properly. If I wrote it myself, it would have a bunch of dedicated tests - regex always goes wrong.
- Validating email addresses with regex is quite a controversial area. Most regular expressions for validating email addresses are too strict. The problem is if you do it correctly you end up with something like this.
- I'm ambivalent about testing the MakeMessage method. On the one hand it's a method that you could write test for, and that would make me feel good. On the other I don't think it would actually help - you really need to see a real email, to check it is formatted correctly.
- This code doesn't actually test sending an email.
To be absolutely clear, actually sending an email has not been tested. This technique allows you to test the other logic without sending an email. You can also check that a mail would have been sent, if the real Smtp client were plugged in.
To really test the email send, you need an integration test. Actually sending an email is important. You need to check that the Smtp client configuration is correct, and you want to make sure the real email looks right. The simplest way to integration test the code is to just execute it, with your own email address, and check your inbox. If you only need to check the format of the email you can write it to disk, instead of going via smtp.
Failing to put the real Smtp client under test is somewhat unsatisfactory. What would be really nice is if you could automate that integration test, so your Smtp configuration was tested. Phil Haack describes doing this with an open source Smtp cliemt, and a testing wrapper he wrote for it. More power to the Haack. What I can't help thinking though, is that the .net framework needs to be more accessible for testing in this area.
In the code shown here I chose to fake out just the call to the Smtp client. There's another way you could go - put an interface on the whole email helper class. The interface would be something like void SendMail(string from, string to, string subject, string message). With this approach the whole email creation process is behind the interface. This could well work better. The problem I've had in the past though, is the types of email sent out can vary quite a lot: Plain-text or html, attachments or not, CC's etc. By the time I'd finished I'd wrapped the whole MailMessage class, only badly. Still a perfectly legitimate approach.
The main thing to remember is, if you want to unit test you need to make the external resources replaceable.


With the start of mp3tunes.com, I thought I should give it a try. I've used iTunes Music Service a couple times. I think I confused Apple with Google and thought they had a don't be evil motto. Not that they have a be evil motto, but they don't have anywhere near the kind of respect for their customers that Google shows. Visual design isn't the same thing as respect. In this case I was burned with my iTMS purchases -- for some reason I lost my authorization and couldn't burn the audio to disk, and of course I can't play their encrypted songs on Linux (it is possible to play m4a's, but not easy, and certainly not encrypted AAC files). And I couldn't get the Hymn to work either. But really that was just a last attempt to steal back the music their DRM stole from me -- I already knew I wasn't going to sink any more money into a service that found me guilty of copyright infringement until I proved innocent. And they simply offer no value over actual CDs -- they cost the same if you consider that you don't get as much product (no actual CD, no liner notes). The only benefit is being able to buy individual songs, but I generally like albums anyway.
I've been using allofmp3.com some, and talked about that before. Their prices are great (even if they did go up recently), the site is workable, the payment system sometimes a little indirect (but always secure), the audio formats just about ideal for anyone, their collection of music is incomplete and quirky (it's got to be the best Frank Zappa collection available online anywhere!), and the legality is somewhat questionable.
So I like them, I don't feel bad about using them. But there's a lot of music I can't get there, and I feel a little funny linking to them if I refer to a musician or CD -- I know I'm not really supporting the musicians, and they deserve support. When Metallica gets in a huff my utilitarian ethic doesn't give me much sympathy for them. But Metallica is hardly representative of the kind of musicians I like.
Anyway, I'm happy mp3tunes offers another alternative, one where neither artists nor I am deprived. For my first purchase I got Regina Spektor, who I heard on NPR (listening to her again, she sounds a lot like Fiona Apple).
My review of the site:
I think it's important to support this effort -- not so much for freedom (it's not CC-licensed works or anything) but simply setting a standard of reasonable consumer rights. DRM is simply unacceptable.
Ian, it appears the days of allofmp3 may be numbered.
Unfortunately, it looks as though allofmp3 may not have always been compensating artists, although it's all very uncertain and they probably couldn't have compensated artists if they tried, because that would have nullified the RIAA's legal excuse to sue them.


V1.0.0 - June 24th 2018 (Deprecated)
- works with Expressjs >= 4.3.x
- works with Typescript >= 2.2.x
- works with Nodejs >= 8.10.x
V2.0.0 - August 16th 2018 (Current)
There are no breaking API changes from V1.x.x to V2.x.x. You can easily upgrade.
- works with Expressjs >= 4.3.x
- works with Typescript >= 2.2.x
- works with Nodejs >= 8.10.x
Why V2.x.x is released in less time?
We have added lot of new API methods (without breaking V1.x API) and features to make developer lives easier. To have a proper tracking on features list, we have preferred to release V2.x.x.


Programming Specialist
Marathon Runner
Life Science Graduate
Aspiring Programmer
Little Baby Johan
Smiling Kid
It was this year at some part of the world my love was born
Happy Birthday to me...!
The moment we started thinking together
Two birds flew from India to make their nest here...
God sent an angel from the heaven to fill our life with more happiness!!!...
Budding Web Developer
Web Developing Student
Automation Engineer
The great thing about friends is that they bring energy to our souls...


[requester_name]'s request for leave from [leave_start] to [leave_end] has been approved by [approver_name] and as agreed . You are expected to cover-up his/her duties during this period.
Approver commented: [approver_comment]
Leave Date [leave_dates]
Shift Date & Time
Date In
Time In
Date Out
Time Out
2016-12-08( 08:30-17:30)
2016-12-08
08:26
2016-12-08
17:20
2016-12-08( 08:30-17:30)
2016-12-08
08:26
2016-12-08
17:20
This is auto generated Email if you need more clarification please contact HR Department.
Thank you.


A quite common way to bypass URL access rules is to abuse redirections (responses with code 3xx). I noticed that:
chat.google.com redirects to https://chat.google.com/u/0/?hasBeenRedirected=true
when navigating to a non-existent URL, like:
https://chat.google.com/test123.
So I defined a match/replace rule in Burp to rewrite the "hasBeenRedirected=true" URL-s to sekurak.pl to see what happens (and it works).


--- layout: post authors: ["Raniere Silva"] title: "Call for Applications to December Instructor Training" date: 2015-10-26 time: "22:00:00" tags: ["Instructor Training"] ---
This blog post was amended with the information from this other post.
This blog post was updated with the answers that we got so far.
As we announced previously, we will run another round of the free/open Instructor Training in December. People who are interested in participating in this round can now apply to take part.
Students must apply in groups that are able to co-locate in one room for the duration of the Instructor Training. And each group should commit to jointly run at least one workshop no later than June 1st, 2016. Please note: how to run a workshop is covered in the curriculum.
Each student is expected to:
Be on the current waiting list or demonstrate sufficient competence with core tools used in the lessons they will teach.
Watch one of the two videos below and submit a paragraph of feedback on the video they chose to watch as part of their application.
People who wish to teach Software Carpentry must submit a small pull request to a specified GitHub repository. People who wish to teach Data Carpentry do not need to do so.
Your pull request should contain one file (and one file only) called "your_name.txt" (e.g., marie_curie.txt or alan_turing.txt). This file should contain a sentence or two that describes the type of work you do. You will submit the name of this file as part of your application.
Help on creating pull requests can be found at https://help.github.com/articles/using-pull-requests/.
If you need assistance, please mail<EMAIL_ADDRESS>Groups must fill out this survey to apply for the two-day training course in December 2015. There is a cover letter sample at the end of this document.
Individuals must fill out this other survey with informations related with the tasks that we are requiring. Groups do not need to wait until all their members fill this second survey.
Update: Please use this etherpad to find people interested in also join instructor training.
Groups will be selected based on:
Group members were involved in SCF/DC, e.g. members were learners, helpers or instructors in a workshop, members have opened issues or pull request to one of SCF/DC lessons.
Group members were involved in a group that organizes Software Carpentry-like workshops, e.g. The Hacker Within, Python and R local user groups.
The group's plan for the follow-up workshop.
Groups will not be selected based on:
Affiliation with a particular institution, lab, or university. All groups will be considered equally.
Academic qualification. Faculty and students will be considered equally, as will groups from different academic disciplines.
We prefer groups with at least 3 people. Groups must be at most 10 and if your group size is over 5, you will need to commit to running two workshops after the training to ensure every new instructor has an opportunity to teach after the training.
We expected that each member of the group are comfortable with (or master) the content of at least one of our lessons. For example, if the answer of one is yes for at least one of the following questions s/he can be part of your group:
grep
?No. If you live in one city that had a couple of Software Carpentry workshop in the past year we hope that you had attend at least one of our workshops. If you live somewhere that never had one of our workshops we expected that you are comfortable with the content of at least one of our lessons and participate in any local project that help people learn programming.
No. This round of instruction training is free. The workshop that your group will need to organize will be considered Self-Organised so you or the instruction that you are affiliated do not own anything to Software Carpentry Foundation. If the institution that you are affiliated can make a donation related with the instructor training and/or the workshop we will be grateful.
Dear SCF Mentoring Subcommittee,
we are writing to express our interested to attend the two-day training course in December 2015 as one group composed by:
NAME_OF_1ST_STUDENT attended a SCF workshop in 2014, NAME_OF_2ND_STUDENT attended a SCF workshop in 2015. and NAME_OF_3RD_STUDENT attended a DC workshop in 2015. NAME_OF_1ST_STUDENT was a helper at the last SCF/DC workshop organized at our university that was lead by INSTRUCTOR_NAME.
If we are selected for the instructor training we will use the conference room of our department that you can check below. We already made reservations for that room in advance.
We are planing to organize two workshops at the beginning of 2016. One will be Python based and will have NAME_OF_1ST_STUDENT, NAME_OF_2ND_STUDENT, NAME_OF_4TH_STUDENT and INSTRUCTOR_NAME as instructors. The other one will be R based and will have NAME_OF_3RD_STUDENT, NAME_OF_5TH_STUDENT, NAME_OF_6TH_STUDENT and INSTRUCTOR_NAME as instructors. We will use the same room used for the last workshop and we already talked with INSTRUCTOR_NAME about those workshops.
Thanks for your consideration.


WITNESS LIST State, Federal & International Relations Committee February 25, 1997-8:00A TX Commission On the Arts On: Batiste, John Paul (TX Coms. on the Arts) Ware, Connie (TX Coms. on the Arts) Registering, but not testifying: On: Hernandez, Ricardo (TX Coms. on the Arts) Sell, Freddie (TX Coms. on the Arts)


Go to the source code of this file.
◆ make_key_persistent()
| TPM_RC make_key_persistent |
( |
TSS_CONTEXT * |
tss_context, |
|
|
TPM_HANDLE |
key_handle, |
|
|
TPM_HANDLE |
persistent_handle |
|
) |
| |
◆ persistent_key_available()
| bool persistent_key_available |
( |
TSS_CONTEXT * |
tss_context, |
|
|
TPM_HANDLE |
handle |
|
) |
| |
◆ powerup()
| TPM_RC powerup |
( |
Tss_setup const & |
tps | ) |
|
◆ retrieve_persistent_handles()
| std::vector<TPM_HANDLE> retrieve_persistent_handles |
( |
TSS_CONTEXT * |
tss_context, |
|
|
uint32_t |
ph_count |
|
) |
| |
!!!!!!Need to fix this for the case where there is more data !!!!!!Not needed here as we should only have one, or two persistent handles
◆ shutdown()
| TPM_RC shutdown |
( |
TSS_CONTEXT * |
tss_context | ) |
|
◆ startup()
| TPM_RC startup |
( |
TSS_CONTEXT * |
tss_context | ) |
|


## Preface As a Spring Boot-based development framework open sourced by Ant Financial, SOFABoot provides capabilities such as Readiness Check, class isolation, and log space isolation. In addition to enhancing the Spring Boot, SOFABoot provides users with the capability to easily use SOFA middleware in Spring Boot.
We have received a lot of feedback from community users since SOFABoot was open sourced in April 2018. We are also very pleased to see many community users take an active part in building the SOFAStack open source, which greatly increases our determination to prosper SOFAStack community and ecosystem. Here, we announce the release of the SOFABoot 3.0, which is developed based on Spring Boot 2.0. SOFABoot 3.0 allows us to seamlessly integrate the extension capability of SOFABoot with official components of Spring Boot 2.x. In addition, SOFABoot 3.0 is compatible with Spring Cloud components, which allows us to easily integrate Spring Cloud components like Zuul and Config in the SOFABoot framework.
Below are the major changes of SOFABoot 3.0 compared with SOFABoot 2.x.
Upgrade Spring Boot to version 2.x
Upgrade Spring Boot in SOFABoot 3.0 to version 2.0. As the Spring Boot community recently announced that the maintenance for version 1.x will end in August 2019, we will focus on SOFABoot 3.x in the future and will release SOFABoot 3.1 with Spring Boot upgraded to version 2.1 soon.
Spring Cloud compatible
Some components are not compatible with SOFABoot in SOFABoot 2.x. In SOFABoot 3.x, we have run thorough compatibility tests on Spring Cloud components and fixed all problems found to ensure good compatibility between SOFABoot 3.x and Spring Cloud.
WebFlux framework compatible
Spring Boot 2.x introduces the WebFlux framework. SOFABoot 3.x is compatible with WebFlux in two major aspects; + Health Check is compatible with the ReactiveHealthIndicator extension interface. The Readiness Check will include the implementation of the interface extension; + Compatible with buried points of WebFlux web requests. Point burying logs and files are compatible with common MVC requests. For detailed information, refer to MVC point burying request.
JDK version support
SOFABoot 3.x must run on JDK 8 or higher versions and does not support JDK 6 and JDK 7.
Health Check
SOFABoot adds Readiness Check capability to Spring Boot’s Health Check capability, to ensure that all components and operations are in a healthy state before the application goes into services. Compared with SOFABoot 2.x, SOFABoot 3.0 features great adjustments to the Health Check. It abandons some internal compatibility logic of Ant Financial and uses a friendlier coding scheme. Besides, the Health Check of SOFABoot 3.0 offers extensions in various scenarios, supports the ‘ReactiveHealthIndicator’ extension interface introduced in Spring Boot 2.x, and provides more Health Check extension features.
Adjust the Readiness Check Endpoint path
The Endpoint for checking the Health Check result is ‘/health/readiness’ in SOFABoot 2.x. However, it has been changed to ‘/actuator/readiness’ in SOFABoot 3.0.
Extension interface change
SOFABoot 3.x provides the following four ways to expand health checks: + HealthChecker + HealthIndicator (native Spring Boot) + ReactiveHealthIndicator (native Spring Boot) + ReadinessCheckCallback
Extension of these four interfaces is executed in the order of HealthChecker > HealthIndicator, ReactiveHealthIndicator > ReadinessCheckCallback. Extensions through the same interface are executed in the order specified in the Spring Boot standard scheme. That is to say, the extension class can implement two additional standard Order interfaces:
- org.springframework.core.Ordered
- org.springframework.core.PriorityOrdered
or use annotations
- org.springframework.core.annotation.Order
The results of the extension implementation of these interfaces will be presented in the Health Check results.
Deleting the SofaBootBeforeHealthCheckEvent
SOFABoot 2.x does not support ordering the Health Check extension implementations. As a result, users are unable to expect the time when their extension will be implemented. As mentioned above, SOFABoot 3.x supports ordering component extension implementations. Extension of the unified ‘HealthChecker’ interface has the highest priority, so the event is no longer necessary. In addition, the logical outcome of ‘SofaBootBeforeHealthCheckEvent’ event processing is not shown in the Health Check result in SOFABoot 2.x. After ‘HealthChecker’ is used, this logical processing becomes a part of the Health Check and it available for viewing.
Deleting the DefaultHealthChecker Interface
The DefaultHealthChecker interface is deleted by the default method in JDK8. Users can use the HealthChecker interface as an alternative.
Deleting SofaBootMiddlewareAfterReadinessCheckCallback and SofaBootAfterReadinessCheckCallback Interfaces
The two interfaces are the Health Check callbacks for two scenarios in SOFABoot 2.x. You are recommended to use SofaBootMiddlewareAfterReadinessCheckCallback for the official SOFABoot Starter and SofaBootAfterReadinessCheckCallback for service applications because the framework will first implement the extension of the former callback. There are two flaws in this design: + The two interfaces are the same in essence. The implicit ordering logic brings an additional learning cost for users. + The design only considers the order of the two interfaces and does not specify the order of implementations of the same interface.
SOFABoot 3.x introduces ReadinessCheckCallback, a unified Health Check callback interface that has been implemented by both the official Starter and service applications. The order of implementations follows the Spring Boot standard scheme. That is to say, two additional standard Order interfaces have been implemented:
- org.springframework.core.Ordered
- org.springframework.core.PriorityOrdered
or use annotations
- org.springframework.core.annotation.Order
to control the execution order of extension implementations.
Viewing Version Information
Adjusting Versions Endpoint Path
The Endpoint for viewing version information is /sofaboot/versions in SOFABoot 2. However, it has been changed to /actuator/versions in SOFABoot 3.0.
Conclusion
The above are the detailed change records for SOFABoot 3.x. If you want an upgrade or a trial version, please contact us through Github. We will reply promptly and provide support.


Percentage of students in tertiary education enrolled in Humanities and Arts programmes, both sexes (%)
Humanities are academic disciplines that study aspects of human society and culture. In the Renaissance, the term contrasted with divinity and referred to what is now called classics, the main area of secular study in universities at the time. Today, the humanities are more frequently contrasted with natural, and sometimes social, sciences as well as professional training.


AI Driven Business Analytics
We bring the latest advancements in AI to solve your problems. Tell us where you're looking to bring artificial intelligence in your organization and we will apply the best tools from our toolkit to find what works best for your use case
We will work with you to find the best solution and approach and ensure our models train and learn enough to move on to next stage. We will comply with any data sensitivity requirements subject to your organization
We will continue to stay engaged with how you use new insights to create value in your business. We take special care to ensure maximum value extraction from new tools and visualizations and productivity enhancements. It's amazing to see our clients come back to us asking how they can extend our models to new scenarios and use cases


#include <FieldLayoutData.h>
Definition at line 42 of file FieldLayoutData.h.
Public Types | |
| enum | Alignment { ALIGN_START, ALIGN_CENTER, ALIGN_END, ALIGN_FILL } |
Public Member Functions | |
| FieldLayoutData () | |
| Creates a new field layout data. | |
| Vector | getBottomRightMargin () |
| Returns the bottom and right margin sizes in pixels. | |
| Vector | getBottomRightPadding () |
| Returns the bottom and right padding sizes in pixels. | |
| int | getColumnSpan () |
| Returns the number of consecutive cells the field uses within its row. | |
| Field * | getField () |
| Returns the field this layout data belongs to. | |
| Alignment | getHorizontalAlignment () |
| Returns the horizontal alignment. | |
| Vector | getTopLeftMargin () |
| Returns the top and left margin sizes in pixels. | |
| Vector | getTopLeftPadding () |
| Returns the top and left padding sizes in pixels. | |
| Alignment | getVerticalAlignment () |
| Returns the vertical alignment. | |
| void | setBottomRightMargin (Vector bottomRightMargin) |
| Sets the bottom and right margin sizes in pixels. | |
| void | setBottomRightPadding (Vector bottomRightPadding) |
| Sets the bottom and right padding sizes in pixels. | |
| void | setColumnSpan (int columnSpan) |
| Sets the number of consecutive cells the field uses within its row. | |
| void | setHorizontalAlignment (Alignment horizontalAlignment) |
| Sets the horizontal alignment. | |
| void | setTopLeftMargin (Vector topLeftMargin) |
| Sets the top and left margin sizes in pixels. | |
| void | setTopLeftPadding (Vector topLeftPadding) |
| Sets the top and left padding sizes in pixels. | |
| void | setVerticalAlignment (Alignment verticalAlignment) |
| Sets the vertical alignment. | |
| virtual | ~FieldLayoutData () |
| Destroys the field layout data. | |
Protected Member Functions | |
| void | layoutIfAutomatic () |
| Relayouts the fields area, if automatic layouting is enabled. | |
Private Attributes | |
| Vector | bottomRightMargin |
| The bottom and right margin sizes in pixels. | |
| Vector | bottomRightPadding |
| The bottom and right padding sizes in pixels. | |
| int | columnSpan |
| The number of consecutive cells the field uses within its row. | |
| Field * | field |
| The field this layout data belongs to. | |
| friend | Field |
| Alignment | horizontalAlignment |
| The horizontal alignment. | |
| Vector | topLeftMargin |
| The top and left margin sizes in pixels. | |
| Vector | topLeftPadding |
| The top and left padding sizes in pixels. | |
| Alignment | verticalAlignment |
| The vertical alignment. |
|
|
Definition at line 49 of file FieldLayoutData.h. |
|
|
Creates a new field layout data.
|
|
|
Destroys the field layout data.
|
|
|
Returns the bottom and right margin sizes in pixels. If multiple inner margin specifications apply (e.g. the right margin of one field and the left margin of the field next to it), the maximum margin specification is used, not the sum of both. Exception: The fields area's margin specification always overrides the outer margin specifications of outer fields. The margin can be used for spacing considering neighbors as well, while the padding defines "fixed" size spacing.
|
|
|
Returns the bottom and right padding sizes in pixels. The padding is the space between the margin and the field. It always reduces the space available for the field and is not related to the padding or margin of any adjacent field or the fields area. It can be used for "fixed" size spacing, while the margin defines spacing considering neighbors as well.
|
|
|
Returns the number of consecutive cells the field uses within its row. 0 specifies that is should use all cells up to the end of the row. Same holds if the span is too large, in this case it also uses at last the remaining cells. The cells are built from the container layout data's column specification, and the spans of each field. If a row's span sum exceeds the columns specification, the next row starts.
|
|
|
Returns the field this layout data belongs to.
|
|
|
Returns the horizontal alignment. This value specifies how the field should be positioned and resized within its cell. The cells are built from the container layout data's column specification, and the spans of each field. If a row's span sum exceeds the columns specification, the next row starts.
|
|
|
Returns the top and left margin sizes in pixels. If multiple inner margin specifications apply (e.g. the right margin of one field and the left margin of the field next to it), the maximum margin specification is used, not the sum of both. Exception: The fields area's margin specification always overrides the outer margin specifications of outer fields. The margin can be used for spacing considering neighbors as well, while the padding defines "fixed" size spacing.
|
|
|
Returns the top and left padding sizes in pixels. The padding is the space between the margin and the field. It always reduces the space available for the field and is not related to the padding or margin of any adjacent field or the fields area. It can be used for "fixed" size spacing, while the margin defines spacing considering neighbors as well.
|
|
|
Returns the vertical alignment. This value specifies how the field should be positioned and resized within its cell. The cells are built from the container layout data's column specification, and the spans of each field. If a row's span sum exceeds the columns specification, the next row starts.
|
|
|
Relayouts the fields area, if automatic layouting is enabled.
|
|
|
Sets the bottom and right margin sizes in pixels. If multiple inner margin specifications apply (e.g. the right margin of one field and the left margin of the field next to it), the maximum margin specification is used, not the sum of both. Exception: The fields area's margin specification always overrides the outer margin specifications of outer fields. The margin can be used for spacing considering neighbors as well, while the padding defines "fixed" size spacing.
|
|
|
Sets the bottom and right padding sizes in pixels. The padding is the space between the margin and the field. It always reduces the space available for the field and is not related to the padding or margin of any adjacent field or the fields area. It can be used for "fixed" size spacing, while the margin defines spacing considering neighbors as well.
|
|
|
Sets the number of consecutive cells the field uses within its row. 0 specifies that is should use all cells up to the end of the row. Same holds if the span is too large, in this case it also uses at last the remaining cells. The cells are built from the container layout data's column specification, and the spans of each field. If a row's span sum exceeds the columns specification, the next row starts.
|
|
|
Sets the horizontal alignment. This value specifies how the field should be positioned and resized within its cell. The cells are built from the container layout data's column specification, and the spans of each field. If a row's span sum exceeds the columns specification, the next row starts.
|
|
|
Sets the top and left margin sizes in pixels. If multiple inner margin specifications apply (e.g. the right margin of one field and the left margin of the field next to it), the maximum margin specification is used, not the sum of both. Exception: The fields area's margin specification always overrides the outer margin specifications of outer fields. The margin can be used for spacing considering neighbors as well, while the padding defines "fixed" size spacing.
|
|
|
Sets the top and left padding sizes in pixels. The padding is the space between the margin and the field. It always reduces the space available for the field and is not related to the padding or margin of any adjacent field or the fields area. It can be used for "fixed" size spacing, while the margin defines spacing considering neighbors as well.
|
|
|
Sets the vertical alignment. This value specifies how the field should be positioned and resized within its cell. The cells are built from the container layout data's column specification, and the spans of each field. If a row's span sum exceeds the columns specification, the next row starts.
|
|
|
The bottom and right margin sizes in pixels. If multiple inner margin specifications apply (e.g. the right margin of one field and the left margin of the field next to it), the maximum margin specification is used, not the sum of both. Exception: The fields area's margin specification always overrides the outer margin specifications of outer fields. The margin can be used for spacing considering neighbors as well, while the padding defines "fixed" size spacing.
Definition at line 103 of file FieldLayoutData.h. |
|
|
The bottom and right padding sizes in pixels. The padding is the space between the margin and the field. It always reduces the space available for the field and is not related to the padding or margin of any adjacent field or the fields area. It can be used for "fixed" size spacing, while the margin defines spacing considering neighbors as well.
Definition at line 114 of file FieldLayoutData.h. |
|
|
The number of consecutive cells the field uses within its row. 0 specifies that is should use all cells up to the end of the row. Same holds if the span is too large, in this case it also uses at last the remaining cells. The cells are built from the container layout data's column specification, and the spans of each field. If a row's span sum exceeds the columns specification, the next row starts. Definition at line 124 of file FieldLayoutData.h. |
|
|
The field this layout data belongs to.
Definition at line 129 of file FieldLayoutData.h. |
|
|
Definition at line 45 of file FieldLayoutData.h. |
|
|
The horizontal alignment. This value specifies how the field should be positioned and resized within its cell. The cells are built from the container layout data's column specification, and the spans of each field. If a row's span sum exceeds the columns specification, the next row starts. Definition at line 138 of file FieldLayoutData.h. |
|
|
The top and left margin sizes in pixels. If multiple inner margin specifications apply (e.g. the right margin of one field and the left margin of the field next to it), the maximum margin specification is used, not the sum of both. Exception: The fields area's margin specification always overrides the outer margin specifications of outer fields. The margin can be used for spacing considering neighbors as well, while the padding defines "fixed" size spacing.
Definition at line 150 of file FieldLayoutData.h. |
|
|
The top and left padding sizes in pixels. The padding is the space between the margin and the field. It always reduces the space available for the field and is not related to the padding or margin of any adjacent field or the fields area. It can be used for "fixed" size spacing, while the margin defines spacing considering neighbors as well.
Definition at line 161 of file FieldLayoutData.h. |
|
|
The vertical alignment. This value specifies how the field should be positioned and resized within its cell. The cells are built from the container layout data's column specification, and the spans of each field. If a row's span sum exceeds the columns specification, the next row starts. Definition at line 170 of file FieldLayoutData.h. |


The Mummy (1999) Reviewed by Eugene Novikov http://www.ultimate-movie.com Member: Online Film Critics Society
*** out of ****
Starring Brendan Fraser, Rachel Weisz, John Hannah. Rated PG-13.
I cherish energy in a movie. I cherish genuine wit even in the most unlikely places. I cherish escapist fare that truly deserves that name - - a movie that makes even the most critical of viewers forget it's own faults (as well as the viewer's own troubles, if only for two hours), sit back and enjoy. The Mummy is a movie I cherish.
The Mummy, believe it or not, is actually a remake of a 1932 horror film of the same name and starring Boris Karloff. It is not a horror flick. It's about a super-cool adventurer named O'Connell (Brendan Fraser) who leads a young librarian (Rachel Weisz) and her brother (John Hannah) in search of a forbidden Egyptian city. When they find it (quite easily, I might add), the librarian screws up. She reads from a forbidden book and that, you see, wakes up The Mummy (Aaron Vosloo), who has been stuck in a tomb for thousands of years, has been given the powers to bring horrible plagues on Egypt and needs human flesh and blood to regenerate.
>From the moment The Mummy awakens, director Stephen Sommers's (Deep Rising) film goes into hyperdrive. It becomes a non-stop tirade of special effects, action scenes and jokes. Damned if it doesn't work. Throughout, The Mummy maintains a contageous sort of glee, a sense of almost self-ridiculing facetiousness. It is the kind of movie where when someone asks someone else what to do because the boat has been sabotaged and is burning down, the other person responds "Stay here, I'll get help" and jumps overboard. It's the kind of movie where the main characters are constantly in jeopardy and yet the movie almost tells us "Don't worry about them, look at that awesome wall of sand!"
Most of The Mummy is utter nonsense. Not only does the plot not make sense, but the movie doesn't even make any attempts to justify it. This is not a plot movie. All that matters is how the characters try to escape their situation -- not even whether they escape, but how they go about doing it.
The performances from Vosloo, Weisz and Fraser are barely worth mentioning because they don't matter. I'm sure that their performances are satisfactory, but if Stephen Sommers and his screenwriters could have gotten rid of characters all together, they probably would have, so the wall of sand could be the official star of the movie. The only performance that bears any significance in The Mummy is that of John Hannah -- the script has some ingeniously funny scenes reserved for him, some of them eliciting applause from the audience (myself included).
There is a lot in this movie to hate.  However, no human should be bored. Most should be greatly entertained.
You have to get yourself in the right state of mind to enjoy this picture. Don't look at it as a movie; view it rather as an outrageously entertaining theme park ride. If you're not willing to strap yourself in and drop your cinematic pretentions at the door -- don't go. ©1999 Eugene Novikov
--== Sent via Deja.com http://www.deja.com/ ==-- ---Share what you know. Learn what you don't.---
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


Gelfand: Chunk 22 - Geometric Progression Sums
March 23, 2017
Just as sums of arithmetic progressions were interesting, so are the sums of their geometric siblings. Here follows some more commentary on what Gelfand brings us in Section 42.
Problem 201
Let’s launch into some problems and see what that gives us.
First up, Problem 201.
where is the number of fractions after the .
Problem 202 - Two Routes to a Formula
This problem isn’t particularly hard to grasp from the solution Geland provides, but it is instructive to examine the two routes, especially their intuitive leaps that Gelfand employs to get to the answer.
Let’s start with the first. We’ll begin where Gelfand does, with the sum
I’m guessing that Gelfand is hoping by now that we’re hungry to factor this into something more manageable. The first step in this is an easy one too - just pull out the .
Can we go further? It seems sensible to try. Have we seen something like any of this before? Well, I personally couldn’t recall anything, but Gelfand is telling us we should have, and so I went hunting.
What I found was Problem 90Which I didn’t write about specifically; a possible explanation for my amnesia which goes like this:
It’s not hard to see if you swap for , and then make it more generic and rearrange the sides, you have a pretty closeThough not exact. match for a bit of our current expression.
Close, but not the same as what Gelfand is referring us to:
Can we simply swap our ’s and ’s? Yes we canAnd here’s the working to prove it :
We can now pick up with Gelfand again. Now we know we can swap our ’s and ’s we have this:
Now we can put this into our current expression and get the same answer Gelfand has
Well done. Give yourself a slap on the back for following along.
The second path to this solution takes up the -mechanism we’d seen before in Problem 200 (and prior to that too). This takes more insight, but consequently relies less on brute-force factoring and pattern-memory.
In this approach the first few steps seem obvious to me.And therefore I guess to you too. It’s when we get to that I want to pick up.
How do we get from this to the next step? We start where I just mentioned makes sense:
We’re aiming to re-jig to isolate . First we factor the left hand side:
Then we factor the right hand side:
Finally to isolate the we move the across, getting what Gelfald showed us as the final step.Provided we remove the parentheses.
Problem 203 - A Reminder of Prior Tricks
Problem 203 is to find out the gap in the solution to 202. The solution is pretty easy to spot given the inputs.
The lesson learned is very clear though. This is another circumstance where our sums-of-geometric-progressions formula is not universally applicable. We could state it now as:
when , and
when .This (and previous encounters with this kind of thing) sounds a little like a partial function which I know as a functional programming concept from Scala and Haskell. The Haskell Wiki defines it as “a function that is not defined for all possible arguments of the specified type.” That sounds like where we are, and if you look at the examples on Wikipedia for the same topic it looks like where we are too.
Where Next?
That’s Gelfand done now on the core rules of progressions.Both arithmetic and geometric What he’s about to do is set up a bunch of problems for us to help embed and understand the subtleties of what we learned.
That’s the next chunk.


Create custom Load Wedges that easily and safely override #load and #require.
README
·
EXAMPLE
API
·
WIKI
·
CODE