A summary of fruit trees from various sources. In the list below, the checkboxes can be used to show or hide information specific to that particular source; the symbol Ⓟ indicates an official PPJA mod. Additionally there are some buttons which will show or hide multiple sources at once.
The Break Even Amount column is a simplistic measure of how many base (no-star) quality products need to be sold to recoup the cost of the initial sapling. Smaller numbers are better, although those who care about these kind of measurements will probably be processing the items in machines where possible rather than selling them raw.
| Image | Product Name | Product Type | Sapling Name | Sapling Vendor (& Requirements) |
Sapling Price |
Product Value |
Break Even Amount |
|---|---|---|---|---|---|---|---|
| Apricot | Fruit | Apricot Sapling | Pierre | 2000 | 50 | 40 | |
| Breadfruit | Fruit | Breadfruit Sapling | Sandy (Year 2+) |
8000 | 200 | 40 | |
| Cherry | Fruit | Cherry Sapling | Pierre | 3400 | 80 | 43 | |
| Cocoa Pod | Vegetable | Cocoa Sapling | Pierre (Year 2+) |
5000 | 125 | 40 | |
| Eucalyptus Leaves | Vegetable | Eucalyptus Sapling | Harvey (Year 2+) |
5500 | 135 | 41 | |
| Fragrant Wisteria | Flower | Fragrant Wisteria Sapling | Pierre | 2500 | 60 | 42 | |
| Jujube | Fruit | Jujube Sapling | Pierre | 7500 | 170 | 45 | |
| Lemon | Fruit | Lemon Sapling | Pierre | 2000 | 50 | 40 | |
| Lime | Fruit | Lime Sapling | Pierre | 2000 | 50 | 40 | |
| Magnolia | Flower | Magnolia Sapling | Pierre | 2000 | 100 | 20 | |
| Mamey Sapote | Fruit | Mamey Sapote Sapling | Pierre | 7500 | 270 | 28 | |
| Mangosteen | Fruit | Mangosteen Sapling | Pierre | 7500 | 170 | 45 | |
| Mayhaw | Fruit | Mayhaw Sapling | Pierre | 7500 | 170 | 45 | |
| Melaleuca Leaves | Vegetable | Melaleuca Sapling | Pierre | 4000 | 100 | 40 | |
| Pandan | Vegetable | Pandan Sapling | Sandy | 7500 | 270 | 28 | |
| Tamarind | Fruit | Tamarind Sapling | Pierre | 7500 | 170 | 45 | |
| Vanilla | Flower | Vanilla Sapling | Pierre | 5000 | 200 | 25 | |
| Yerba Mate Leaves | Vegetable | Yerba Mate Sapling | Pierre (Year 3+) |
7500 | 225 | 34 |
| Image | Product Name | Product Type | Sapling Name | Sapling Vendor (& Requirements) |
Sapling Price |
Product Value |
Break Even Amount |
|---|---|---|---|---|---|---|---|
| Avocado | Fruit | Avocado Sapling | Pierre (Year 2+) |
8000 | 200 | 40 | |
| Black Ruby Plum | Fruit | Black Ruby Plum Sapling | Pierre | 8500 | 100 | 85 | |
| Cherimoya | Fruit | Cherimoya Sapling | Pierre | 7500 | 170 | 45 | |
| Date | Fruit | Date Sapling | Sandy | 7500 | 170 | 45 | |
| Dragon Fruit | Fruit | Dragon Fruit Sapling | Sandy | 5000 | 125 | 40 | |
| Durian | Fruit | Durian Sapling | Sandy (Year 2+) |
8000 | 200 | 40 | |
| Hibiscus | Flower | Hibiscus Sapling | Pierre | 1700 | 80 | 22 | |
| Jerky | ArtisanGoods | Jerky Sapling | Pierre | 15000 | 500 | 30 | |
| Kola Nut | Vegetable | Kola Sapling | Pierre | 4000 | 90 | 45 | |
| Lychee | Fruit | Lychee Sapling | Sandy (Year 2+) |
5000 | 110 | 46 | |
| Nectarine | Fruit | Nectarine Sapling | Pierre | 7500 | 90 | 84 | |
| Orange | Fruit | Orange Sapling | Pierre | 4000 | 100 | 40 | |
| Papaya | Fruit | Papaya Sapling | Sandy | 5500 | 135 | 41 | |
| Peach | Fruit | Peach Sapling | Pierre | 6000 | 140 | 43 | |
| Plantain | Fruit | Plantain Sapling | Sandy | 7500 | 270 | 28 | |
| Purple Pluot | Fruit | Purple Pluot Sapling | Pierre | 7500 | 170 | 45 | |
| Ume | Fruit | Ume Sapling | Pierre | 2000 | 50 | 40 | |
| Ylang Ylang | Flower | Ylang Ylang Sapling | Sandy (Year 3+) |
3000 | 75 | 40 |
| Image | Product Name | Product Type | Sapling Name | Sapling Vendor (& Requirements) |
Sapling Price |
Product Value |
Break Even Amount |
|---|---|---|---|---|---|---|---|
| Almond | Vegetable | Almond Sapling | Pierre | 3750 | 90 | 42 | |
| Apple | Fruit | Apple Sapling | Pierre | 4000 | 100 | 40 | |
| Asian Pear | Fruit | Asian Pear Sapling | Pierre | 3500 | 125 | 28 | |
| Black Boy Peach | Fruit | Black Boy Peach Sapling | Pierre | 6500 | 250 | 26 | |
| Black Diamond Apple | Fruit | Black Diamond Apple Sapling | Sandy | 10000 | 650 | 16 | |
| Black Worcester Pear | Fruit | Black Worcester Pear Sapling | Pierre | 6000 | 75 | 80 | |
| Blood Orange | Fruit | Blood Orange Sapling | Pierre | 7500 | 170 | 45 | |
| Cashew | Vegetable | Cashew Sapling | Pierre | 4000 | 100 | 40 | |
| Chestnut | Fruit | Chestnut Sapling | Pierre | 7500 | 170 | 45 | |
| Clove | Fruit | Clove Sapling | Pierre | 7500 | 170 | 45 | |
| Granny Smith Apple | Fruit | Granny Smith Sapling | Pierre | 3500 | 100 | 35 | |
| Grapefruit | Fruit | Grapefruit Sapling | Pierre (Year 2+) |
6000 | 140 | 43 | |
| Jackfruit | Fruit | Jackfruit Sapling | Pierre | 7500 | 170 | 45 | |
| Jasmine | Flower | Jasmine Sapling | Pierre | 2500 | 120 | 21 | |
| Kumquat | Fruit | Kumquat Sapling | Sandy | 7500 | 120 | 63 | |
| Olive | Vegetable | Olive Sapling | Pierre (Year 2+) |
2000 | 50 | 40 | |
| Pawpaw | Fruit | Pawpaw Sapling | Pierre | 7500 | 170 | 45 | |
| Pecan | Vegetable | Pecan Sapling | Pierre (Year 3+) |
5000 | 125 | 40 | |
| Pistachio | Vegetable | Pistachio Sapling | Pierre | 7500 | 85 | 89 | |
| Pomegranate | Fruit | Pomegranate Sapling | Pierre | 6000 | 140 | 43 | |
| Walnut | Vegetable | Walnut Sapling | Pierre | 3750 | 90 | 42 |
| Image | Product Name | Product Type | Sapling Name | Sapling Vendor (& Requirements) |
Sapling Price |
Product Value |
Break Even Amount |
|---|---|---|---|---|---|---|---|
| Bitter Orange | Fruit | Myrtle Leaved Orange Sapling | Pierre (Year 2+) |
7500 | 225 | 34 | |
| Camphor Leaves | Vegetable | Camphor Sapling | Pierre (Year 3+) |
4000 | 100 | 40 | |
| Cinnamon Sticks | Vegetable | Cinnamon Sapling | Pierre (Year 2+) |
6000 | 140 | 43 | |
| Clementine | Fruit | Clementine Sapling | Pierre | 7500 | 80 | 94 | |
| Fig | Fruit | Fig Sapling | Pierre (Year 2+) |
4000 | 100 | 40 | |
| Frozen Tear | Gem | Frozen Leaf Sapling | Clint | 2000 | 75 | 27 | |
| Ghost Apple | Fruit | Twisted Sapling | Pierre (Year 3+) |
29500 | 360 | 82 | |
| Pear | Fruit | Pear Sapling | Pierre (Year 2+) |
5500 | 135 | 41 | |
| Persimmon | Fruit | Persimmon Sapling | Pierre | 7000 | 155 | 46 | |
| Piñones | Fruit | Stone Pine Sapling | Pierre | 7500 | 170 | 45 | |
| Pomelo | Fruit | Pomelo Sapling | Pierre (Year 2+) |
3400 | 80 | 43 | |
| Quince | Fruit | Quince Sapling | Pierre | 7500 | 170 | 45 | |
| Yuzu | Fruit | Yuzu Sapling | Pierre | 2000 | 50 | 40 |
| Image | Product Name | Product Type | Sapling Name | Sapling Vendor (& Requirements) |
Sapling Price |
Product Value |
Break Even Amount |
|---|---|---|---|---|---|---|---|
| Banana | Fruit | Banana Sapling | Island Trader | 5 Dragon Teeth | 150 | -- | |
| Mango | Fruit | Mango Sapling | Island Trader | 75 Mussels | 130 | -- |


CanVis (sounds like deity) is a simple jQuery plugin that converts an element's content into a simple <canvas>
mini pie 2/5, line 5,3,9,6,5,9,7,3,5,2, or bar chart and is compatible with any browser that supports <canvas>
: Chrome, Firefox, IE9+, Opera, Safari.
Simply call canvis("pie")
on a jQuery selection. There are two subtly different pie chart semantics, a "/" delimiter is assumed to mean "three out of five" and only the first two values will be drawn, otherwise all of the values are included in the chart and the total is the sum of all values.
You can also pass fill
, delimiter
, diameter
, lineColor
, lineWidth
, focusColor
and focusWidth
options. Fill is an array of colors for the slices of pie. Delimiter is the string used to separate numbers. Diameter sets the size of the canvas (and resulting pie chart). lineColor is only relevant if lineWidth > 0. It creates an outline on the circle. focusColor and focusWidth work similarly, but only outline the arc of a slice of the pie.
226/360 0.52/1.561 1,2,3,2,2
226/360
0.52/1.561
1,2,3,2,2
$("span.pie").canvis("pie");
1/5 1,2,3,2,2 4,8,7,5,9
1/5
1,2,3,2,2
4,8,7,5,9
$(".pie-1").canvis("pie", {
diameter: 48,
fill: ["red", "blue"]
});
$(".pie-2").canvis("pie", {
diameter: 48,
lineWidth: 1,
lineColor: "#090"
});
$(".pie-3").canvis("pie", {
diameter: 48,
focusWidth: 1,
focusColor: "#090"
});
Line charts work on a comma-separated list of digits. Line charts can take the following options: fill
, lineColor
, lineWidth
, delimiter
, max
, min
, width
, height
, left
, pointSize
, region
, and focus
. xAxis
, yAxis
, and tooltip
support the following sub-options: color
, size
and formatter
. gridlines
supports widths
and colors
.
5,3,9,6,5,9,7,3,5,2 5.5,3,2.5,-1,-3.5,-2,2,3,5,2 0,-3,-6,-4,-5,-4,-7,-3,-5,-2
5,3,9,6,5,9,7,3,5,2
5,3,2,-1,-3,-2,2,3,5,2
0,-3,-6,-4,-5,-4,-7,-3,-5,-2
$(".line").canvis("line");
5,3,9,6,5,9,7,3,5,2 5.5,3,2.5,-1,-3.5,-2,2,3,5,2 0,-3,-6,-4,-5,-4,-7,-3,-5,-2
5,3,9,6,5,9,7,3,5,2
5,3,2,-1,-3,-2,2,3,5,2
0,-3,-6,-4,-5,-4,-7,-3,-5,-2
$("#line-1").canvis("line", {
width: 128, height: 64,
fill: "#f99", lineColor: "#f00",
gridlines: { widths: [0, 1], colors: ["#fff", "#99f"] }
});
$("#line-2").canvis("line", {
width: 200, height: 64,
lineWidth: 2, pointSize: 4, focus: true
});
$("#line-3").canvis("line", {
width: 200, height: 64, left: 40,
region:3,
xAxis: { size: 13 },
yAxis: { formatter: function(e) { return Math.round(e); } },
gridlines: { widths: [1, 1] }
});
Multi-Line charts work on a vertical bar, "|", separated list of comma-separated list of digits. Multi-Line charts can take the following options: lineColors
, lineWidths
, delimiter
, seriesDelimiter
, max
, min
, width
, height
, left
, labels
, pointSizes
, region
, and focus
. xAxis
, yAxis
, and tooltip
support the following sub-options: color
, size
and formatter
. gridlines
supports widths
and colors
. It works very similarly to line charts, but some of the properties are arrays instead of plain values.
5,3,9,6,5,9,7,3,5,2|5.5,3,2.5,-1,-3.5,-2,2,3,5,2 0,-3,-6,-4,-5,-4,-7,-3,-5,-2|5,3,9,6,5,9,7,3,5,2
5,3,9,6,5,9,7,3,5,2|5.5,3,2.5,-1,-3.5,-2,2,3,5,2
0,-3,-6,-4,-5,-4,-7,-3,-5,-2|5,3,9,6,5,9,7,3,5,2
$(".lines").canvis("line");
5,3,9,6,5,9,7,3,5,2|5.5,3,2.5,-1,-3.5,-2,2,3,5,2 0,-3,-6,-4,-5,-4,-7,-3,-5,-2|5,3,9,6,5,9,7,3,5,2
5,3,9,6,5,9,7,3,5,2
5,3,2,-1,-3,-2,2,3,5,2
0,-3,-6,-4,-5,-4,-7,-3,-5,-2
$("#line-1").canvis("line", {
width: 128, height: 64,
fill: "#f99", lineColor: "#f00",
gridlines: { widths: [0, 1], colors: ["#fff", "#99f"] }
});
$("#line-2").canvis("line", {
width: 200, height: 64,
lineWidth: 2, pointSize: 4, focus: true
});
$("#line-3").canvis("line", {
width: 200, height: 64, left: 40,
region:3,
xAxis: { size: 13 },
yAxis: { formatter: function(e) { return Math.round(e); } },
gridlines: { widths: [1, 1] }
});
Bar charts work in the same way as line charts and take the following options: fill
, delimiter
, max
, min
, gap
, width
, height
. xAxis
, yAxis
, tooltip
have the following sub-options: color
, size
, and formatter
. focus
has the following sub-options: color
and width
. gridlines
supports widths
and colors
.
5,3,9,6,5,9,7,3,5,2
5,3,2,-1,-3,-2,2,3,5,2
0,-3,-6,-4,-5,-4,-7,-3,-5,-2
$(".bar").canvis("bar")
5,3,9,6,5,9,7,3,5,2
5,3,2,-1,-3,-2,2,3,5,2
0,-3,-6,-4,-5,-4,-7,-3,-5,-2
$(".bar").canvis("bar")
Bar and pie chart fill can be defined dynamically based on the values
of the chart. When passing an array its values are cycled, when passing a
function it is called once for each value allowing you to define each
bar's color. The function is called with a similar signature to
Array#forEach
with the bar's value, its index, and the full
array of values.
4,7,6,5 5,3,9,6,5
5,3,9,6,5,9,7,3,5,2
5,3,2,-1,-3,-2,2,3,5,2
0,-3,-6,-4,-5,-4,-7,-3,-5,-2
4,7,6,5
5,3,9,6,5
$(".bar-fill-1").canvis("bar", {
fill: ["red", "green", "blue"]
})
$(".bar-fill-2").canvis("bar", {
fill: function(value) {
return value > 0 ? "green" : "red"
}
})
$(".bar-fill-3").canvis("bar", {
fill: function(_, i, all) {
var g = parseInt((i / all.length) * 255)
return "rgb(255, " + g + ", 0)"
}
})
$(".pie-fill-1").canvis("pie", {
fill: ["cyan", "magenta", "yellow", "black"]
})
$(".pie-fill-2").canvis("pie", {
fill: function(_, i, all) {
var g = parseInt((i / all.length) * 255)
return "rgb(255, " + g + ", 0)"
}
})
Charts can be updated by changing the the jQuery selection's text content
and calling change()
on it. The chart will be redrawn with
the same options that were originally passed to it.
5,3,9,6,5,9,7,3,5,2,5,3,9,6,5,9,7,3,5,2
5,3,9,6,5,9,7,3,5,2,5,3,9,6,5,9,7,3,5,2
var updatingChart = $(".updating-chart").canvis("line", { width: 64 })
setInterval(function() {
var random = Math.round(Math.random() * 10)
var values = updatingChart.text().split(",")
values.shift()
values.push(random)
updatingChart
.text(values.join(","))
.change()
}, 1000)
You can easily add your own custom chart by registering it with CanVis with name, defaults and the draw function which receives an options object.
$.fn.canvis.add("custom", {
color: "#FFCC00"
}, function(opts) {
...
}
)
If you use data attributes, CanVis will apply their values to the defaults
with the same names automatically. Options passed to the
canvis()
function take precedence over data-* attributes.
1/7 2/7 3/7 4/7 5/7 6/7 7/7
1/7
2/7
3/7
4/7
5/7
6/7
7/7
$(".pie span").canvis("pie")
CanVis adds a "change" event trigger to your graph elements, so if you
update their data your can regenerate one or more charts by triggering
change()
on them.
Nothing's happened yet.

<select>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4" selected>4</option>
<option value="5">5</option>
</select>

<select>
<option value="0">0</option>
<option value="1" selected>1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>

<select>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3" selected>3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>

Nothing's happened yet.

$("select").change(function() {
$(this)
.siblings("span.graph")
.text($(this).val() + "/" + 5).change()
}).change()
var chartUpdate = function(event, value, max) {
$("#notice").text(
"Chart updated: " + value + "/" + max
)
}
$("span.graph")
.canvis("pie")
.bind("change.canvis", chartUpdate)
Defaults can be overridden globally like so:
$.fn.canvis.defaults.pie = {
fill: ["#ff9900", "#fff4dd", "#ffd592"],
delimiter: null,
diameter: 16,
height: null,
width: null
}
$.fn.canvis.defaults.line = {
color: "#c6d9fd",
lineColor: "#4d89f9",
lineWidth: 1,
delimiter: ",",
height: 16,
max: null,
min: 0,
width: 32
}
$.fn.canvis.defaults.bar = {
fill: ["#4d89f9"],
delimiter: ",",
height: 16,
max: null,
min: 0,
gap: devicePixelRatio || 1,
width: 32
}


SPI
SPI uses three or four wires for transferring data. A SPI bus consists of a single master and one or more slaves. The master will send the clock signal to the slaves over the SCK (Serial Clock) pin. It will also send data over MOSI (Master Out Slave In) pin, while reading incoming data on the MISO (Master In Slave Out) pin. The SCK line is used to determine how fast the data is moved. If you know electronics, this is simply a shift register.
The master selects which slave it will swap the data with using the SSEL (Slave SELect) pin, sometimes called CS (Chip Select).
In its simplest terms, the master will swap data between itself and the slave. You cannot write data without reading data at the same time. However, often you want to write data and don't care about the incoming data. To do this you can use the Write method. Keep in mind that the Write method is discarding whatever data the slave is sending back.
Tip
Note that a board running TinyCLR OS is always the SPI master, not the slave.
In TinyCLR OS, SPI transfers are dynamically sent in batches that are internally optimized to allow for maximum speed back-to-back transfers. This is helpful when sending large buffers, such as when refreshing displays.
Tip
Some SPI devices (slaves) can have more than one select pin, like the VS1053 MP3 decoder chip that uses one select pin for data and the other for commands. Both share the three data transfer pins (SCK, MOSI, MISO).
var cs = GpioController.GetDefault().OpenPin(SC20260.GpioPin.PE4);
var settings = new SpiConnectionSettings() {
ChipSelectType = SpiChipSelectType.Gpio,
ChipSelectLine = cs,
Mode = SpiMode.Mode1,
ClockFrequency = 4_000_000,
};
var controller = SpiController.FromName(SC20100.SpiBus.Spi4);
var device = controller.GetDevice(settings);
device.Write(new byte[] { 1, 2 }); //Write something.
device.TransferSequential(...); //This is good for reading registers.
device.TransferFullDuplex(...); //This is the only one that truly represents how SPI works.
SPI Clock Speed
SITCore SPI controllers support different clock ranges.
| SPI Controllers | 1, 2 & 3 | 4 & 5 | 6 |
|---|---|---|---|
| Minimum Speed | 188 kHz | 469 kHz | 250K |
| Maximum Speed | 24 MHz | 60 MHz | 32MHz |
Note
Supported clock speeds are derived/divisible from the Maximum clock frequency. If the requested clock is not divisible, the next lower frequency will be used. This is to keep the clock speed as high as possible, but still at or below the requested speed. For example, on 60Mhz clock, the available options are 60Mhz, 30Mhz, 20Mhz, 15Mhz...etc. If the desired frequency is set to 29Mhz then 20Mhz will be used.
The MinClockFrequency
and MaxClockFrequency
fields can be used at runtime.
var controller = SpiController.FromName(SC20100.SpiBus.Spi3);
Debug.WriteLine(controller.MinClockFrequency.ToString());
Debug.WriteLine(controller.MaxClockFrequency.ToString());
Bit Ordering
TinyCLR supports switching between sending the most significant bit first (MSb) or least significant bit first (LSb).
var spiSettings = new SpiConnectionSettings() {
DataFrameFormat = SpiDataFrame.MsbFirst // MSb
};
var spiSettings = new SpiConnectionSettings() {
DataFrameFormat = SpiDataFrame.LsbFirst // LSb
};
Software SPI
Users have the option to drive (bit bang) SPI bus in software over any of the available GPIOs.
var provider = new GHIElectronics.TinyCLR.Devices.
Spi.Provider.SpiControllerSoftwareProvider(mosi, miso, clk);
Tip
Software generated buses are slower and use more resources, but can be used on any pins.
SPI Display Helper
When partially updating a section of the SPI display, SPI includes a Write
method to extract and send the needed data. Partial updates are faster than updating the full screen due to sending fewer bytes over SPI bus.
var x = 10;
var y = 20;
var width = 100;
var height = 100;
var originalWidth = 160;
spi.Write(graphicsBuffer, x, y, width, height, originalWidth, 1, 1);
Tip
Software SPI doesn't support this method.
Pixel Multiplier
This feature allows pixels to be multiplied across the screen, allowing larger displays to be used with lesser memory. For example, a 320x240 display can be used with 160x120 graphics buffer if both multipliers, the column and the row, are set to 2. The system will be able to drive the display with only 25% of the needed memory, trading off the resolution.
Tip
The column and row multipliers are independent from each other. A 320x240 display can be driven with a 320x120 graphics when column multiplier is set to 1 and the row multiplier is set to 2.
spi.Write(buffer, x, y, width, height, originalWidth, columnMultiplier, rowMultiplier);
Tip
Software SPI doesn't support this feature.


Congratulations, Flatpak!
Flatpak has reached a major milestone today, with its 1.0 release.
We in Team Silverblue are all excited and happy to use Flatpak 1.0 as the solid foundation for application deployment and execution in Fedora Silverblue.
Keep it coming! 💓📦💓📦


{{site.user_description}}
A beginner in webdesign using html and bootstrap.
Advanced knowledge of object-oriented programming using C++ and python. Experience with Django framework and project deployment using Heroku.
Basic git commandline knowledge with advanced Github experience, using VisualStudio Code as a preferred dev environment. Experience with project management task trackings using Trello.


|
libcoap
4.1.2
|
Macros | |
| #define | prng(Buf, Length) |
Fills Buf with Length bytes of random data. More... | |
| #define | prng_init(Value) |
| Called to set the PRNG seed. More... | |
Functions | |
| static int | coap_prng_impl (unsigned char *buf, size_t len) |
Fills buf with len random bytes. More... | |
| #define prng | ( | Buf, | |
| Length | |||
| ) |
| #define prng_init | ( | Value | ) |


Regression is one of the core tasks in machine learning. In this task, you get some input and your target variable is a single floating point number. For example, predicting the price of a house, estimating the age of the universe or calculating the probability that an image shows a dog. The age of the universe example shows that it regression is not only used in machine learning and the dog image example shows that regression and classification can be very similar. A logistic regression can be converted to a classifier by choosing a threshold value (e.g. 0.5).
A big difference between regression and classification are scoring functions and targets. The targets in classification are just a few finite ones, while you have infinite possible targets for regression. Below, you can see a list of scoring functions.
Scoring functions
In the following, \(y\) is the ordered list of target, \(y^P\) is the list of predictions in the same order and \(\bar{y}\) is the mean of \(y\).
| Name | Image | X is better | Definition and Usage |
|---|---|---|---|
| MAE | $[0, \infty)$ | lower | $f(y, y^P) = \frac{1}{|y|} \sum_{y_i, y_i^P \in (y, y^P)} |y_i - y_i^P|$ |
| MSE | $[0, \infty)$ | lower | $f(y, y^P) = \frac{1}{|y|} \sum_{y_i, y_i^P \in (y, y^P)} (y_i - y_i^P)^2$ |
| $R^2$ | $[0, 1]$ | higher | $f(y, y^P) = 1 - \frac{\sum (y_i - y_i^P)^2}{\sum (y_i - \bar{y})^2}$ |
| Explained Variance | $(-\infty, 1]$ | higher | $f(y, y^P) = 1 - \frac{Var(y - y^P)}{Var(y)}$ |
See also:
Regression Models
Trivial Models
There are some straight-forward "models" for regression. They do learn, but they ignore the input completely:
- Arithmetic mean: \(\frac{1}{n}\sum_{i=1}^n {y_i}\)
- Median: Sort all \(y_i\) and take the value in the middle
- minimum and maximum
- q-Quantile: Sort the \(y_i\) and take the first value after going through \(q \in [0, 1]\) of the input. For \(q = 0.5\), this is the median.
- Other "means" like the geometric mean
Linear regression
Linear regression tries to fit a line to the input by minimizing the squared quadradic distance between the input points and the line. This usually gives pretty good results.
The model looks like this:
If one defines \(X \in \mathbb{R}^n\) one can also write it in a vectorized form:
It can be "learned" (calculated) with
Logistic regression
Logistic regression tries to fit the logistic function \(y(x) = \frac{1}{1+e^{-x}}\) to the input. This function is nice as it is within \([0, 1]\) and thus can be used to represent a probability.
Trees
You can also use trees for regression. One idea how to do that is by "bucketing" observations and applying one of the trivial models to each bucket. Such models can only predict values between what they observed before.
See also:


The JirAgileR R package has the mission to bring the power of the project management tool 🔧 JIRA to R. By doing so, users benefit from the best capabilities of both platforms. More specifically, the package is a wrapper around JIRA’s REST API, allowing users to easily analyze JIRA proyects and issues from within R. The underlying powertrain of the API is the Jira Query Language (JQL). You can find more information about it here. You can find a cheatsheet here.
The focus of this package lies in the following workflow aspects:
Hence, for easy transformation and manipulation, each function returns a data.frame
with tidy data, following main rules where each row is a single observation of an issue or a project, each column is a variable and each value must have its own cell. Thus, it integrates well with both the dplyr
and data.table
R libraries.
More information about the package can be found at the following link: (https://matbmeijer.github.io/JirAgileR/.
data.frame
is flattened to a combination of issues and comments. Thus, the information of an issue may be repeated the number of comments each issue has.get_jira_permissions()
function to retrieve JIRA user permissionsget_jira_groups()
function to retrieve JIRA groupsget_jira_server_info()
function to retrieve JIRA server informationdata.table
dependencyYou can install the latest release of this package from Github with the following commands in R
:
if (!require("devtools")) install.packages("devtools") devtools::install_github("matbmeijer/JirAgileR")
This is a basic example which shows you how to obtain a simple table of issues of a project and create a tabular report. Most of the times, you will need a username and your password to authenticate in your domain. Possible fields to obtain (which will populate the data.frame
columns) can be found here.
library(JirAgileR, quietly = T) library(knitr, quietly = T) library(dplyr, quietly = T) # Save credentials to pass them only one time save_jira_credentials(domain = "https://bitvoodoo.atlassian.net") # Get full list of projects in domain get_jira_projects() %>% select(key, name) %>% kable(row.names = F, padding = 0)
| key | name |
|---|---|
| MACRODOC | Macro Documentation for Confluence |
| THEME | Enterprise Theme for Confluence |
| SBB | SBB Widgets for Confluence |
| SD | Sequence Diagram |
| CFSYNC | Custom Field Option Synchroniser |
| TEMPBLOG | Templates for Blog Posts for Confluence |
| REDIRECT | Homepage Redirect for Confluence |
| LABEL | Label Scheduler for Confluence |
| PANELBOX | Advanced Panelboxes for Confluence |
| REG | bitvoodoo Registration for Confluence |
| LABELFIX | Label Fixer |
| NTCLOUD | Navitabs - Tabs for Confluence Cloud |
| NAVITABS | Navitabs - Tabs for Confluence |
| LANGUAGE | Language Macros for Confluence |
| SUPPLIER | Viewtracker Supplier |
| SCHEDULER | Content Scheduler for Confluence |
| BVDEVOPS | DevOps |
| SYNCTEST | SyncTest |
| VIEWTRACKER | Viewtracker - Analytics for Confluence |
| VTCLOUD | Viewtracker Cloud |
| CONGRATS | Congrats for Confluence |
| EXTLINK | External Links for Confluence |
# Retrieve the issues from a single project - in this case the project CONGRATS. See documentation to define which fields to see get_jira_issues(jql_query = "project='CONGRATS'", fields = c("summary","created", "status")) %>% select(key, summary, created, status_name, status_description, status_statuscategory_name) %>% head(5) %>% kable(row.names = F, padding = 0)
| key | summary | created | status_name | status_description | status_statuscategory_name |
|---|---|---|---|---|---|
| CONGRATS-39 | Make the year of birth anonymous | 2019-11-06 16:02:32 | Open | The issue is open and ready for the assignee to start work on it. | To Do |
| CONGRATS-38 | Changing the display of events | 2019-11-06 15:52:42 | Open | The issue is open and ready for the assignee to start work on it. | To Do |
| CONGRATS-37 | Add additional parameters for Events | 2019-11-06 08:57:14 | Open | The issue is open and ready for the assignee to start work on it. | To Do |
| CONGRATS-36 | UI misaligned when error is displayed in the settings | 2019-10-15 14:41:30 | Awaiting Release | A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed. | Done |
| CONGRATS-32 | Confluence 7 Support | 2019-08-26 11:10:25 | Awaiting Release | A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed. | Done |


Guidelines for XML Query Update Test Suite Submissions
Licensing Issues and Acceptance
Conformance to Schemas and File Format
- Submissions must be valid with respect to "XQUTSCatalog.xsd" schema file.
- All submissions must be in a ZIP, tar or gzip file formats.
- Please add your test cases to the "XQUTSCatalogSubmission.xml" document that we have provided.
Test Structure
- Entries in the catalogue file should contain citations of document sections, using both the section number and section name,
whenever possible. This practice is highly recommended. A typical test catalogue entry is illustrated below.
<test-case name="id-insert-expr-06" FilePath= ... >
<description>Evaluates a simple insert expression with "after" clause only. ... </description>
<spec-citation spec="XQUPDATE" section-number="2.4.1" ... section-pointer="#id-insert"/>
<state time="0">
<query name="id-insert-expr-06" date="2007-06-04"/>
<input-file role="principal-data" variable="input-context">works-mod</input-file>
</state>
<state time="1">
<query name="id-insert-expr-06-test" date="2007-06-04"/>
<input-file role="principal-data" variable="input-context">works-mod</input-file>
<output-file role="principal" compare="Fragment">id-insert-expr-06.xml</output-file>
</state>
</test-case>
|
- Tests for which the <input-file> element in the catalog file references the "emptydoc" file are not required
to make any variable mapping back to the <input-file> element. In other words the following declaration is not
required to be present in the test case:
(: insert-start :)
declare variable $input-context external;
(: insert-end :)
|
- Submitters should indicate any potential problems with the
tests.
- Negatives tests will be accepted. However, they must be
identified as such in the catalog file. Please see the Error Tests Section below for futher
information. A typical negative test is illustrated below:
(: Name: id-insert-expr-023 :)
(: Description: Evaluation of simple insert expression where source expression is an updating expression. :)
(: insert-start :)
declare variable $input-context external;
(: insert-end :)
let $var := $input-context/employees[1]/employee[2]
return
do insert (do insert <salary>150000</salary> into $var) into $var
|
- Variable names, function names, etc., should not contain any
copyrighted information or any company name or any other text
identifying a company. However test submitters are allowed to use a company name as
the value of the "featureOwner" attribute of the <test-group> element.
- Submitted tests should be minimal in nature and independent of
one another.
- Submitted tests must at least include a “Name”
comment and a “Description” comment. These
comments must appear as the first two lines of the file.
- Submitters should reuse existing input files whenever
possible.
- Submitted tests should be insensitive to boundary-space, that is, in direct
element constructors there should be no boundary space between open/close tags and enclosed
expression.
- Tests involving the decimal and integer data types should use no more than 18 digits.
- Test involving the data types xs:date, xs:time, xs:dateTime, xs:gYear, xs:gYearMonth,
the maximum value of the year component should be no more than 4 digits, and the maximum number of
fractional second digits must be no more than 3.
- For tests involving the int, long, short and byte data types, please see the Schema specifications for limits
on those data types.
- Submitted tests for a particular section must include only
functionality defined by that section and by the provided
foundation features.
Collations and URI’s
- When no collation is specified, the Unicode-Codepoint collation
is assumed. Tests should be written with that in mind.
- URI’s must be based on the www.example.com domain.
Static Typing
- Submitted tests should obey the Static Typing rules, except for
tests intended to evaluate violations of the Static Typing
rules.
- Submitted tests must not rely on any static typing
extensions.
Optional Features and vendor Specific Features
- Submitted tests that evaluate non-optional features should not
use optional features.
- Submitted tests should not include any vendor specific
extensions (pragmas).
Error Tests
Error conditions that can be mapped to the conditions specified
in the appendices of the XML Query Update specifications should include the
error code stated for that condition. The following example
from the catalog file illustrates one of such conditions:
<test-case name="id-insert-expr-029" FilePath="InsertExpressions/" scenario="runtime-error" Creator="Carmelo Montanez">
<description>Evaluates an insert expression where the target expression evaluates to a number.</description>
<spec-citation spec="XQUPDATE" section-number="2.4.1" section-title="Insert" section-pointer="#id-insert"/>
<state time="0">
<query name="id-insert-expr-029" date="2007-06-04"/>
<input-file role="principal-data" variable="input-context">employeesNIST</input-file>
<expected-error>XUTY0005</expected-error>
</state>
</test-case>
|
Any error condition for which there is not a predefined code, the "*" symbol should be used.
External Variable Tests
External variable tests are designed to run queries, whose external variable values are defined by outsite
agents. The main catalog will define an <input-query> element. The results of the input query (s) are bind to
external variables defined in the main query. The <input-query> element require three attributes,
namely:
- name - specifies the name of the input query (no extension required).
- variable - the name of the variable to which the results of the query should be binded.
- date - the date the query was written.
The following table illustrates a possible entry for an external variable test case:
<test-case name="extvardeclwithtype-17" ...>
<description>External Variable used to evaluate a boolean expression ... .</description>
<spec-citation spec="XQuery" section-number="4.14" ... />
<state time = "0">
<query name="extvardeclwithtype-17" date="2006-02-09"/>
<input-file role="principal-data" variable="input-context">emptydoc</input-file>
<input-query variable="x" name="extvardeclwithtypetobind-17" date="2006-02-09"/>
<output-file role="principal" compare="Text">extvardeclwithtype-17.txt</output-file>
</state>
</test-case>
|
The following are the input query and the main query that corresponds to the entry above:
Input Query
(: Name: extvardeclwithtypetobind-17 :)
(: Description: Binding boolean expression for extvardeclwithtype-17.:)
let $var := fn:true() or fn:true()
return $var
Main Query
(: Name: extvardeclwithtype-17 :)
(: Description: Evaluates an external variable used in a boolean expression:)
(: Both queries perform the operation. :)
declare variable $x as xs:boolean external;
$x or fn:false()
|
Note the name(s) of the external variable(s) defined in the main query must match the names of the
variable(s) defined in the input queries ("x" in this case). The main query must be a stand alone query,
it should have no input infosets. At this point, it is not forseen that a lot of tests will be available for the
Update facility test suite.
XML and Namespaces
- Submitted tests should be independent of XML versions
“1.0” and “1.1” and XML Namespaces versions
“1.0” and “1.1” features unless the purpose
is to evaluate those features.
XML Encoding
- Submitted tests should use UTF-8 encoding.
Related Specifications
- Submitted tests should be based exclusively on the XQuery Update
specifications and the Main XQuery specifications. Some tests may rely
on the Formal Semantics, Data Model, Functions and Operators and Serialization documents,
however those specifications are not being directly tested.
Results and Serialization
- Tests in the XQTTF Update test suite rely on the serialized form of the test
result in order to check correctness. Thus, any feature whose effect is
not captured as part of the serialized result of a query, should be
explicitly checked as part of the test query itself. For example, typing
information is not present in the serialized results of an XQuery
expression.
Expected Results
- Submitters must provide expected results for all submitted
tests.
- When serializing content of a typed element where the type is
atomic, any lexical representation of the value may be serialized.
To minimize the number of expected results per test case, the
input value used to construct the typed element should be identical
to the result if this input value was cast to xs:string. If
this is true, then only one expected result with the serialized
value in its original lexical form is required for this test case.
However, if the intent of the testcase is to test other
lexical representations, then two expected results must be created
where one result would contain the value if it was cast to
xs:string, and the other in its original lexical form.
- Many tests involve operations on floats/doubles and coverting those results to
strings. Even as one explicit value is given, the task force realizes that
other values may also be acceptable. In such cases submitters are encouraged
to sumbit values that may differ. The task force will eventually determine
if such values are within the acceptable range.
Webmaster · Last modified:
$Date: 2007/10/04 15:56:22 $ by $Author: aeisenbe2 $
Copyright
© 1994-2005 W3C® (MIT, ERCIM,
Keio), All Rights Reserved. W3C liability,
trademark,
document
use and software
licensing rules apply. Your interactions with this site are in accordance
with our public
and Member
privacy statements.


{{work.description}}
Technologies: {{work.technologies}}
{{work.description}}
Technologies: {{work.technologies}}
{{work.description}}
Technologies: {{work.technologies}}
{{work.description}}
Technologies: {{work.technologies}}
{{work.description}}
Technologies: {{work.technologies}}
{{work.description}}
Technologies: {{work.technologies}}


This demo visualizes numerical solutions of the pendulum equation by 3blue1brown: https://www.youtube.com/watch?v=p_di4Zn4wz4 (14:28).
Instructions:
Position the starting point in the phase space (angle θ, angular velocity θ′) by dragging it. The starting pendulum position (L sin θ, -L cos θ) will be adjusted automatically based on the position in the phase space. Click "animate" to see the solution (2,000 iterations). Please note the current version of vtvt doesn't disable the animation control button while an animation sequence is being played, so it's best not to press the button again until the current animation sequence is over.
The iteration step is 0.005 by default, and can be adjusted in your browser's console by changing variable `step`. The length of the pendulum and the dampening coefficient can be changed with the sliders underneath the canvas.
Please note this demo may run a bit "heavy" on older mobile devices.


There is a problem.
First name
Last name
Email address
Role
Please select...
Organisation
Please select...
Send invitation
Cancel


Go to the first, previous, next, last section, table of contents.
A GNU Fortran installation includes a modified version of the gcc
command.
In a non-Fortran installation, gcc
recognizes C, C++,
and Objective-C source files.
In a GNU Fortran installation, gcc
also recognizes Fortran source
files and accepts Fortran-specific command-line options, plus some
command-line options that are designed to cater to Fortran users
but apply to other languages as well.
See section `Compile C; C++; or Objective-C' in Using and Porting GNU CC,
for information on the way different languages are handled
by the GNU CC compiler (gcc
).
Also provided as part of GNU Fortran is the g77
command.
The g77
command is designed to make compiling and linking Fortran
programs somewhat easier than when using the gcc
command for
these tasks.
It does this by analyzing the command line somewhat and changing it
appropriately before submitting it to the gcc
command.
Use the `-v' option with g77
to see what is going on--the first line of output is the invocation
of the gcc
command.
Go to the first, previous, next, last section, table of contents.


INFO 3402, Spring 2021, Week 13
Internal combustion engines face a fundamental engineering trade-off
More powerful engines are also less fuel efficient.
This relationship is interesting because it is non-linear
Fuel efficiency drops rapidly with the increase in horsepower


Draft.js List Plugin
Demo
You need to enable JavaScript to be able to use Draft.js.
Docs and Code
View the plugin on
GitHub


Nothing wrong with quid pro quo? "Perhaps so", says Trump.
by Rob BeschizzaAs evidence mounts that President Trump tied Ukraine aid to that country announcing a sham investigation into Trump's political rivals, some Republicans are backing off their claim there was no "quid pro quo".  Trump, of course, agrees with them.
Perhaps so.
The context is particularly damning testimony from a highly-placed national security official and GOP aides caught trying to out the original whistleblower's name.
A good example of the goalposts being loudly hauled comes courtesy of Ben Shapiro, the cool kids' philosopher:
The next version of the question is "whether it was a criminal quid pro quo" or simply "whether it is an impeachable quid pro quo" to which the only answer is "no."


Prepare for battle!


참고
Click here to download the full example code
Introduction || Tensors || Autograd || Building Models || TensorBoard Support || Training Models || Model Understanding
Building Models with PyTorch¶
Follow along with the video below or on youtube.
torch.nn.Module
and torch.nn.Parameter
¶
In this video, we’ll be discussing some of the tools PyTorch makes available for building deep learning networks.
Except for Parameter
, the classes we discuss in this video are all
subclasses of torch.nn.Module
. This is the PyTorch base class meant
to encapsulate behaviors specific to PyTorch Models and their
components.
One important behavior of torch.nn.Module
is registering parameters.
If a particular Module
subclass has learning weights, these weights
are expressed as instances of torch.nn.Parameter
. The Parameter
class is a subclass of torch.Tensor
, with the special behavior that
when they are assigned as attributes of a Module
, they are added to
the list of that modules parameters. These parameters may be accessed
through the parameters()
method on the Module
class.
As a simple example, here’s a very simple model with two linear layers and an activation function. We’ll create an instance of it and ask it to report on its parameters:
import torch
class TinyModel(torch.nn.Module):
def __init__(self):
super(TinyModel, self).__init__()
self.linear1 = torch.nn.Linear(100, 200)
self.activation = torch.nn.ReLU()
self.linear2 = torch.nn.Linear(200, 10)
self.softmax = torch.nn.Softmax()
def forward(self, x):
x = self.linear1(x)
x = self.activation(x)
x = self.linear2(x)
x = self.softmax(x)
return x
tinymodel = TinyModel()
print('The model:')
print(tinymodel)
print('\n\nJust one layer:')
print(tinymodel.linear2)
print('\n\nModel params:')
for param in tinymodel.parameters():
print(param)
print('\n\nLayer params:')
for param in tinymodel.linear2.parameters():
print(param)
The model:
TinyModel(
(linear1): Linear(in_features=100, out_features=200, bias=True)
(activation): ReLU()
(linear2): Linear(in_features=200, out_features=10, bias=True)
(softmax): Softmax(dim=None)
)
Just one layer:
Linear(in_features=200, out_features=10, bias=True)
Model params:
Parameter containing:
tensor([[ 0.0792, 0.0999, -0.0114, ..., 0.0356, 0.0941, 0.0888],
[-0.0863, 0.0450, 0.0513, ..., -0.0587, 0.0431, -0.0691],
[ 0.0952, -0.0616, -0.0414, ..., 0.0028, -0.0133, -0.0030],
...,
[ 0.0399, -0.0183, -0.0771, ..., 0.0984, -0.0652, 0.0022],
[ 0.0925, 0.0157, -0.0704, ..., -0.0908, -0.0127, 0.0982],
[ 0.0375, 0.0006, 0.0064, ..., 0.0627, -0.0852, 0.0805]],
requires_grad=True)
Parameter containing:
tensor([ 0.0525, 0.0620, 0.0267, -0.0563, 0.0816, -0.0087, 0.0232, 0.0946,
0.0654, -0.0349, 0.0474, -0.0096, -0.0333, 0.0318, -0.0125, -0.0657,
0.0557, 0.0713, -0.0904, -0.0247, 0.0571, -0.0866, 0.0968, 0.0695,
-0.0280, 0.0723, 0.0137, 0.0556, 0.0400, -0.0953, 0.0100, 0.0016,
-0.0989, 0.0140, 0.0410, 0.0380, 0.0454, -0.0355, -0.0232, 0.0601,
-0.0645, 0.0295, 0.0613, 0.0847, 0.0035, -0.0942, -0.0884, -0.0334,
0.0170, -0.0820, 0.0353, -0.0794, -0.0300, -0.0505, 0.0151, 0.0891,
-0.0366, -0.0720, 0.0305, 0.0474, -0.0697, -0.0476, 0.0713, -0.0250,
0.0122, 0.0461, -0.0442, 0.0578, 0.0056, 0.0346, -0.0228, -0.0070,
0.0265, 0.0146, 0.0725, 0.0668, 0.0194, -0.0696, 0.0984, 0.0033,
-0.0523, 0.0770, -0.0600, -0.0120, -0.0359, 0.0970, -0.0337, 0.0731,
0.0911, -0.0006, 0.0406, 0.0303, -0.0518, 0.0686, -0.0501, -0.0704,
0.0814, -0.0764, 0.0918, 0.0452, -0.0610, -0.0900, -0.0608, -0.0468,
-0.0156, -0.0880, -0.0128, 0.0329, 0.0864, -0.0712, 0.0975, -0.0580,
-0.0129, -0.0504, 0.0784, 0.0462, 0.0310, -0.0464, 0.0982, 0.0156,
-0.0983, -0.0848, 0.0232, -0.0320, -0.0789, -0.0201, -0.0415, -0.0132,
0.0775, -0.0306, 0.0840, 0.0444, 0.0797, -0.0116, 0.0622, -0.0413,
0.0735, -0.0806, 0.0469, 0.0609, -0.0331, -0.0375, -0.0571, -0.0248,
-0.0432, 0.0131, 0.0580, -0.0335, -0.0341, -0.0454, -0.0782, 0.0591,
-0.0840, 0.0158, 0.0210, 0.0447, 0.0415, -0.0525, -0.0525, 0.0382,
0.0018, -0.0950, -0.0209, -0.0451, -0.0731, 0.0943, 0.0515, 0.0809,
-0.0873, -0.0218, -0.0030, -0.0699, -0.0794, -0.0464, 0.0397, 0.0811,
0.0604, -0.0029, -0.0946, 0.0266, -0.0754, -0.0545, -0.0776, -0.0034,
-0.0345, -0.0925, -0.0325, 0.0104, -0.0531, 0.0003, 0.0966, -0.0831,
0.0369, 0.0466, 0.0596, -0.0280, -0.0584, 0.0600, -0.0933, 0.0855],
requires_grad=True)
Parameter containing:
tensor([[ 0.0454, 0.0038, 0.0547, ..., 0.0361, 0.0386, 0.0356],
[ 0.0479, -0.0422, 0.0654, ..., -0.0176, -0.0412, 0.0288],
[ 0.0190, -0.0560, -0.0703, ..., -0.0537, -0.0552, -0.0389],
...,
[-0.0268, 0.0231, -0.0243, ..., -0.0035, 0.0303, -0.0102],
[ 0.0207, 0.0152, -0.0375, ..., 0.0549, -0.0693, -0.0689],
[-0.0148, -0.0496, 0.0250, ..., 0.0354, -0.0679, 0.0582]],
requires_grad=True)
Parameter containing:
tensor([ 0.0364, 0.0559, -0.0374, 0.0205, -0.0149, 0.0225, -0.0392, 0.0347,
0.0197, 0.0382], requires_grad=True)
Layer params:
Parameter containing:
tensor([[ 0.0454, 0.0038, 0.0547, ..., 0.0361, 0.0386, 0.0356],
[ 0.0479, -0.0422, 0.0654, ..., -0.0176, -0.0412, 0.0288],
[ 0.0190, -0.0560, -0.0703, ..., -0.0537, -0.0552, -0.0389],
...,
[-0.0268, 0.0231, -0.0243, ..., -0.0035, 0.0303, -0.0102],
[ 0.0207, 0.0152, -0.0375, ..., 0.0549, -0.0693, -0.0689],
[-0.0148, -0.0496, 0.0250, ..., 0.0354, -0.0679, 0.0582]],
requires_grad=True)
Parameter containing:
tensor([ 0.0364, 0.0559, -0.0374, 0.0205, -0.0149, 0.0225, -0.0392, 0.0347,
0.0197, 0.0382], requires_grad=True)
This shows the fundamental structure of a PyTorch model: there is an
__init__()
method that defines the layers and other components of a
model, and a forward()
method where the computation gets done. Note
that we can print the model, or any of its submodules, to learn about
its structure.
Common Layer Types¶
Linear Layers¶
The most basic type of neural network layer is a linear or fully connected layer. This is a layer where every input influences every output of the layer to a degree specified by the layer’s weights. If a model has m inputs and n outputs, the weights will be an m x n matrix. For example:
lin = torch.nn.Linear(3, 2)
x = torch.rand(1, 3)
print('Input:')
print(x)
print('\n\nWeight and Bias parameters:')
for param in lin.parameters():
print(param)
y = lin(x)
print('\n\nOutput:')
print(y)
Input:
tensor([[0.6331, 0.1163, 0.2535]])
Weight and Bias parameters:
Parameter containing:
tensor([[-0.3508, -0.5556, 0.4382],
[-0.3059, 0.3980, 0.3176]], requires_grad=True)
Parameter containing:
tensor([-0.5099, 0.4478], requires_grad=True)
Output:
tensor([[-0.6856, 0.3809]], grad_fn=<AddmmBackward0>)
If you do the matrix multiplication of x
by the linear layer’s
weights, and add the biases, you’ll find that you get the output vector
y
.
One other important feature to note: When we checked the weights of our
layer with lin.weight
, it reported itself as a Parameter
(which
is a subclass of Tensor
), and let us know that it’s tracking
gradients with autograd. This is a default behavior for Parameter
that differs from Tensor
.
Linear layers are used widely in deep learning models. One of the most common places you’ll see them is in classifier models, which will usually have one or more linear layers at the end, where the last layer will have n outputs, where n is the number of classes the classifier addresses.
Convolutional Layers¶
Convolutional layers are built to handle data with a high degree of spatial correlation. They are very commonly used in computer vision, where they detect close groupings of features which the compose into higher-level features. They pop up in other contexts too - for example, in NLP applications, where a word’s immediate context (that is, the other words nearby in the sequence) can affect the meaning of a sentence.
We saw convolutional layers in action in LeNet5 in an earlier video:
import torch.functional as F
class LeNet(torch.nn.Module):
def __init__(self):
super(LeNet, self).__init__()
# 1 input image channel (black & white), 6 output channels, 5x5 square convolution
# kernel
self.conv1 = torch.nn.Conv2d(1, 6, 5)
self.conv2 = torch.nn.Conv2d(6, 16, 3)
# an affine operation: y = Wx + b
self.fc1 = torch.nn.Linear(16 * 6 * 6, 120) # 6*6 from image dimension
self.fc2 = torch.nn.Linear(120, 84)
self.fc3 = torch.nn.Linear(84, 10)
def forward(self, x):
# Max pooling over a (2, 2) window
x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))
# If the size is a square you can only specify a single number
x = F.max_pool2d(F.relu(self.conv2(x)), 2)
x = x.view(-1, self.num_flat_features(x))
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x
def num_flat_features(self, x):
size = x.size()[1:] # all dimensions except the batch dimension
num_features = 1
for s in size:
num_features *= s
return num_features
Let’s break down what’s happening in the convolutional layers of this
model. Starting with conv1
:
LeNet5 is meant to take in a 1x32x32 black & white image. The first argument to a convolutional layer’s constructor is the number of input channels. Here, it is 1. If we were building this model to look at 3-color channels, it would be 3.
A convolutional layer is like a window that scans over the image, looking for a pattern it recognizes. These patterns are called features, and one of the parameters of a convolutional layer is the number of features we would like it to learn. This is the second argument to the constructor is the number of output features. Here, we’re asking our layer to learn 6 features.
Just above, I likened the convolutional layer to a window - but how big is the window? The third argument is the window or kernel size. Here, the “5” means we’ve chosen a 5x5 kernel. (If you want a kernel with height different from width, you can specify a tuple for this argument - e.g.,
(3, 5)
to get a 3x5 convolution kernel.)
The output of a convolutional layer is an activation map - a spatial
representation of the presence of features in the input tensor.
conv1
will give us an output tensor of 6x28x28; 6 is the number of
features, and 28 is the height and width of our map. (The 28 comes from
the fact that when scanning a 5-pixel window over a 32-pixel row, there
are only 28 valid positions.)
We then pass the output of the convolution through a ReLU activation function (more on activation functions later), then through a max pooling layer. The max pooling layer takes features near each other in the activation map and groups them together. It does this by reducing the tensor, merging every 2x2 group of cells in the output into a single cell, and assigning that cell the maximum value of the 4 cells that went into it. This gives us a lower-resolution version of the activation map, with dimensions 6x14x14.
Our next convolutional layer, conv2
, expects 6 input channels
(corresponding to the 6 features sought by the first layer), has 16
output channels, and a 3x3 kernel. It puts out a 16x12x12 activation
map, which is again reduced by a max pooling layer to 16x6x6. Prior to
passing this output to the linear layers, it is reshaped to a 16 * 6 *
6 = 576-element vector for consumption by the next layer.
There are convolutional layers for addressing 1D, 2D, and 3D tensors. There are also many more optional arguments for a conv layer constructor, including stride length(e.g., only scanning every second or every third position) in the input, padding (so you can scan out to the edges of the input), and more. See the documentation for more information.
Recurrent Layers¶
Recurrent neural networks (or RNNs) are used for sequential data - anything from time-series measurements from a scientific instrument to natural language sentences to DNA nucleotides. An RNN does this by maintaining a hidden state that acts as a sort of memory for what it has seen in the sequence so far.
The internal structure of an RNN layer - or its variants, the LSTM (long short-term memory) and GRU (gated recurrent unit) - is moderately complex and beyond the scope of this video, but we’ll show you what one looks like in action with an LSTM-based part-of-speech tagger (a type of classifier that tells you if a word is a noun, verb, etc.):
class LSTMTagger(torch.nn.Module):
def __init__(self, embedding_dim, hidden_dim, vocab_size, tagset_size):
super(LSTMTagger, self).__init__()
self.hidden_dim = hidden_dim
self.word_embeddings = torch.nn.Embedding(vocab_size, embedding_dim)
# The LSTM takes word embeddings as inputs, and outputs hidden states
# with dimensionality hidden_dim.
self.lstm = torch.nn.LSTM(embedding_dim, hidden_dim)
# The linear layer that maps from hidden state space to tag space
self.hidden2tag = torch.nn.Linear(hidden_dim, tagset_size)
def forward(self, sentence):
embeds = self.word_embeddings(sentence)
lstm_out, _ = self.lstm(embeds.view(len(sentence), 1, -1))
tag_space = self.hidden2tag(lstm_out.view(len(sentence), -1))
tag_scores = F.log_softmax(tag_space, dim=1)
return tag_scores
The constructor has four arguments:
vocab_size
is the number of words in the input vocabulary. Each word is a one-hot vector (or unit vector) in avocab_size
-dimensional space.tagset_size
is the number of tags in the output set.embedding_dim
is the size of the embedding space for the vocabulary. An embedding maps a vocabulary onto a low-dimensional space, where words with similar meanings are close together in the space.hidden_dim
is the size of the LSTM’s memory.
The input will be a sentence with the words represented as indices of
one-hot vectors. The embedding layer will then map these down to an
embedding_dim
-dimensional space. The LSTM takes this sequence of
embeddings and iterates over it, fielding an output vector of length
hidden_dim
. The final linear layer acts as a classifier; applying
log_softmax()
to the output of the final layer converts the output
into a normalized set of estimated probabilities that a given word maps
to a given tag.
If you’d like to see this network in action, check out the Sequence Models and LSTM Networks tutorial on pytorch.org.
Transformers¶
Transformers are multi-purpose networks that have taken over the state
of the art in NLP with models like BERT. A discussion of transformer
architecture is beyond the scope of this video, but PyTorch has a
Transformer
class that allows you to define the overall parameters
of a transformer model - the number of attention heads, the number of
encoder & decoder layers, dropout and activation functions, etc. (You
can even build the BERT model from this single class, with the right
parameters!) The torch.nn.Transformer
class also has classes to
encapsulate the individual components (TransformerEncoder
,
TransformerDecoder
) and subcomponents (TransformerEncoderLayer
,
TransformerDecoderLayer
). For details, check out the
documentation
on transformer classes, and the relevant
tutorial
on pytorch.org.
Other Layers and Functions¶
Data Manipulation Layers¶
There are other layer types that perform important functions in models, but don’t participate in the learning process themselves.
Max pooling (and its twin, min pooling) reduce a tensor by combining cells, and assigning the maximum value of the input cells to the output cell (we saw this). For example:
my_tensor = torch.rand(1, 6, 6)
print(my_tensor)
maxpool_layer = torch.nn.MaxPool2d(3)
print(maxpool_layer(my_tensor))
tensor([[[0.1946, 0.4040, 0.2656, 0.5504, 0.9864, 0.7842],
[0.6388, 0.2671, 0.3512, 0.8099, 0.4837, 0.5473],
[0.5790, 0.5713, 0.7528, 0.0582, 0.4930, 0.1426],
[0.4823, 0.0044, 0.0474, 0.6133, 0.7136, 0.9497],
[0.6022, 0.5227, 0.8922, 0.0538, 0.6912, 0.5902],
[0.6401, 0.4722, 0.3547, 0.9407, 0.3091, 0.6685]]])
tensor([[[0.7528, 0.9864],
[0.8922, 0.9497]]])
If you look closely at the values above, you’ll see that each of the values in the maxpooled output is the maximum value of each quadrant of the 6x6 input.
Normalization layers re-center and normalize the output of one layer before feeding it to another. Centering the and scaling the intermediate tensors has a number of beneficial effects, such as letting you use higher learning rates without exploding/vanishing gradients.
my_tensor = torch.rand(1, 4, 4) * 20 + 5
print(my_tensor)
print(my_tensor.mean())
norm_layer = torch.nn.BatchNorm1d(4)
normed_tensor = norm_layer(my_tensor)
print(normed_tensor)
print(normed_tensor.mean())
tensor([[[ 8.0570, 7.2575, 18.5872, 8.7279],
[20.9974, 7.4343, 5.8082, 14.8036],
[22.7765, 12.8321, 6.0588, 7.6858],
[23.7634, 22.4533, 23.8657, 20.2856]]])
tensor(14.4622)
tensor([[[-0.5644, -0.7379, 1.7210, -0.4188],
[ 1.4376, -0.7942, -1.0618, 0.4184],
[ 1.5998, 0.0757, -0.9624, -0.7131],
[ 0.8116, -0.0961, 0.8824, -1.5979]]],
grad_fn=<NativeBatchNormBackward0>)
tensor(5.9605e-08, grad_fn=<MeanBackward0>)
Running the cell above, we’ve added a large scaling factor and offset to
an input tensor; you should see the input tensor’s mean()
somewhere
in the neighborhood of 15. After running it through the normalization
layer, you can see that the values are smaller, and grouped around zero
- in fact, the mean should be very small (> 1e-8).
This is beneficial because many activation functions (discussed below) have their strongest gradients near 0, but sometimes suffer from vanishing or exploding gradients for inputs that drive them far away from zero. Keeping the data centered around the area of steepest gradient will tend to mean faster, better learning and higher feasible learning rates.
Dropout layers are a tool for encouraging sparse representations in your model - that is, pushing it to do inference with less data.
Dropout layers work by randomly setting parts of the input tensor during training - dropout layers are always turned off for inference. This forces the model to learn against this masked or reduced dataset. For example:
my_tensor = torch.rand(1, 4, 4)
dropout = torch.nn.Dropout(p=0.4)
print(dropout(my_tensor))
print(dropout(my_tensor))
tensor([[[0.7861, 0.9105, 0.0000, 0.2343],
[0.0000, 0.2647, 0.0000, 0.9153],
[1.1048, 0.0000, 1.5985, 0.3216],
[0.0000, 1.1567, 1.0921, 0.6450]]])
tensor([[[0.0000, 0.9105, 0.7220, 0.2343],
[0.0285, 0.2647, 0.4429, 0.0000],
[0.0000, 0.0000, 1.5985, 0.3216],
[1.2779, 0.0000, 0.0000, 0.6450]]])
Above, you can see the effect of dropout on a sample tensor. You can use
the optional p
argument to set the probability of an individual
weight dropping out; if you don’t it defaults to 0.5.
Activation Functions¶
Activation functions make deep learning possible. A neural network is really a program - with many parameters - that simulates a mathematical function. If all we did was multiple tensors by layer weights repeatedly, we could only simulate linear functions; further, there would be no point to having many layers, as the whole network would reduce could be reduced to a single matrix multiplication. Inserting non-linear activation functions between layers is what allows a deep learning model to simulate any function, rather than just linear ones.
torch.nn.Module
has objects encapsulating all of the major
activation functions including ReLU and its many variants, Tanh,
Hardtanh, sigmoid, and more. It also includes other functions, such as
Softmax, that are most useful at the output stage of a model.
Loss Functions¶
Loss functions tell us how far a model’s prediction is from the correct answer. PyTorch contains a variety of loss functions, including common MSE (mean squared error = L2 norm), Cross Entropy Loss and Negative Likelihood Loss (useful for classifiers), and others.
Total running time of the script: ( 0 minutes 0.028 seconds)


| saddle.distn {boot} | R Documentation |
Approximate an entire distribution using saddlepoint methods. This
function can calculate simple and conditional saddlepoint distribution
approximations for a univariate quantity of interest. For the simple
saddlepoint the quantity of interest is a linear combination of
W where W is a vector of random variables. For the
conditional saddlepoint we require the distribution of one linear
combination given the values of any number of other linear
combinations. The distribution of W must be one of multinomial,
Poisson or binary. The primary use of this function is to calculate
quantiles of bootstrap distributions using saddlepoint approximations.
Such quantiles are required by the function control
to
approximate the distribution of the linear approximation to a
statistic.
saddle.distn(A, u = NULL, alpha = NULL, wdist = "m", type = "simp", npts = 20, t = NULL, t0 = NULL, init = rep(0.1, d), mu = rep(0.5, n), LR = FALSE, strata = NULL, ...)
A |
This is a matrix of known coefficients or a function which returns
such a matrix. If a function then its first argument must be the
point |
u |
If |
alpha |
The alpha levels for the quantiles of the distribution which should be returned. By default the 0.1, 0.5, 1, 2.5, 5, 10, 20, 50, 80, 90, 95, 97.5, 99, 99.5 and 99.9 percentiles are calculated. |
wdist |
The distribution of W. Possible values are |
type |
The type of saddlepoint to be used. Possible values are
|
npts |
The number of points at which the saddlepoint approximation should be calculated and then used to fit the spline. |
t |
A vector of points at which the saddlepoint approximations are
calculated. These points should extend beyond the extreme quantiles
required but still be in the possible range of the bootstrap
distribution. The observed value of the statistic should not be
included in |
t0 |
If |
init |
When |
mu |
The vector of parameter values for the distribution. The default is that the components of W are identically distributed. |
LR |
A logical flag. When |
strata |
A vector giving the strata when the rows of A relate to stratified
data. This is used only when |
... |
When |
The range at which the saddlepoint is used is such that the cdf
approximation at the endpoints is more extreme than required by the
extreme values of alpha
. The lower endpoint is found by
evaluating the saddlepoint at the points t0[1]-2*t0[2]
,
t0[1]-4*t0[2]
, t0[1]-8*t0[2]
etc. until a point is
found with a cdf approximation less than min(alpha)/10
, then a
bisection method is used to find the endpoint which has cdf
approximation in the range (min(alpha)/1000
,
min(alpha)/10
). Then a number of, equally spaced, points are
chosen between the lower endpoint and t0[1]
until a total of
npts/2
approximations have been made. The remaining
npts/2
points are chosen to the right of t0[1]
in a
similar manner. Any points which are very close to the centre of the
distribution are then omitted as the cdf approximations are not
reliable at the centre. A smoothing spline is then fitted to the
probit of the saddlepoint distribution function approximations at the
remaining points and the required quantiles are predicted from the
spline.
Sometimes the function will terminate with the message
"Unable to find range"
. There are two main reasons why this may
occur. One is that the distribution is too discrete and/or the
required quantiles too extreme, this can cause the function to be
unable to find a point within the allowable range which is beyond the
extreme quantiles. Another possibility is that the value of
t0[2]
is too small and so too many steps are required to find
the range. The first problem cannot be solved except by asking for
less extreme quantiles, although for very discrete distributions the
approximations may not be very good. In the second case using a
larger value of t0[2]
will usually solve the problem.
The returned value is an object of class "saddle.distn"
. See the help
file for saddle.distn.object
for a description of such
an object.
Booth, J.G. and Butler, R.W. (1990) Randomization distributions and saddlepoint approximations in generalized linear models. Biometrika, 77, 787–796.
Canty, A.J. and Davison, A.C. (1997) Implementation of saddlepoint approximations to resampling distributions. Computing Science and Statistics; Proceedings of the 28th Symposium on the Interface 248–253.
Davison, A.C. and Hinkley, D.V. (1997) Bootstrap Methods and their Application. Cambridge University Press.
Jensen, J.L. (1995) Saddlepoint Approximations. Oxford University Press.
lines.saddle.distn
, saddle
,
saddle.distn.object
, smooth.spline
# The bootstrap distribution of the mean of the air-conditioning # failure data: fails to find value on R (and probably on S too) air.t0 <- c(mean(aircondit$hours), sqrt(var(aircondit$hours)/12)) ## Not run: saddle.distn(A = aircondit$hours/12, t0 = air.t0) # alternatively using the conditional poisson saddle.distn(A = cbind(aircondit$hours/12, 1), u = 12, wdist = "p", type = "cond", t0 = air.t0) # Distribution of the ratio of a sample of size 10 from the bigcity # data, taken from Example 9.16 of Davison and Hinkley (1997). ratio <- function(d, w) sum(d$x *w)/sum(d$u * w) city.v <- var.linear(empinf(data = city, statistic = ratio)) bigcity.t0 <- c(mean(bigcity$x)/mean(bigcity$u), sqrt(city.v)) Afn <- function(t, data) cbind(data$x - t*data$u, 1) ufn <- function(t, data) c(0,10) saddle.distn(A = Afn, u = ufn, wdist = "b", type = "cond", t0 = bigcity.t0, data = bigcity) # From Example 9.16 of Davison and Hinkley (1997) again, we find the # conditional distribution of the ratio given the sum of city$u. Afn <- function(t, data) cbind(data$x-t*data$u, data$u, 1) ufn <- function(t, data) c(0, sum(data$u), 10) city.t0 <- c(mean(city$x)/mean(city$u), sqrt(city.v)) saddle.distn(A = Afn, u = ufn, wdist = "p", type = "cond", t0 = city.t0, data = city)


GDG Space Coast - Brevard County, FL, USA.
Google Developer Group (GDG) Space Coast is a technology user group that meets to discuss the latest Google Technologies, Tools, SDKs, and APIs.
{{ mc.chapter_name }}


jQuery ImageMap Maker (P. Brückner)
Select Tool:
Rectangle (selected by default)
Polygon
Erase
Now you can create a imagemap with the selected tool.
Hover over this image to see the live rendered imagemap:
Generated Area-Tag:


--- layout: post status: publish published: true title: TW Scrum Attack – Volleyball Team at NSW Corporate Games author: display_name: Fabio Pereira login: admin email<EMAIL_ADDRESS>url: http://fabiopereira.me author_login: admin author_email<EMAIL_ADDRESS>author_url: http://fabiopereira.me wordpress_id: 271 wordpress_url: http://fabiopereira.me/blog/2010/03/23/tw-scrum-attack-volleyball-team-at-nsw-corporate-games/ date: '2010-03-23 05:21:11 +0' date_gmt: '2010-03-23 12:21:11 +0' categories: - Technical tags: [] comments: [] ---
Last weekend we played volleyball in Manly-Sydney at the NSW Corporate Games. We gathered a team of thoughtworkers called Scrum Attack.
Juliano Bersano, Benjamin Barnard, Pei Ren Tan, Shelley Beeston, Duana Stanley, Charlotte Chang and me! :)
Our captain Juliano Bersano described the games pretty well:
“It was indeed a pretty fun Saturday, with two losses followed by two wins, Scrum Attack does have an issue with getting points in the first iterations, then our velocity goes up. Next time we're starting with two friendlies at 6am and then it's guaranteed we will be through!”
Thanks everyone, it was a great Saturday. Let’s do it again.
All photos are here.


| 260 | (A) | the romans telles thus at Rome and for relyke it haldis |
| 254 | (C) | That romaynes ryfly at rome . a relyke it holden |
| 255 | (D) | þe romayns rively at Rome a relique hit holde |
| 255 | (E) | Alle þe romaynes at rome . a relik it hoolde . |
| (Ex) | ---- no text ---- | |
| 260 | (L) | þe romaynes hit holdeþ at rome & for a relyk hit holden |
| 252 | (P) | þe Romayns teldys it Rome & for Relyk haldes |
| 252 | (U) | That Romains rifly at Rome / a relyke it holde |
| (V) | ---- no text ---- |


MapClipper
Clip a map into Evernote
×
Save to Evernote
Authorize MapClipper to access your Evernote account, so that it could clip the map image into your notes.
Connect Evernote
Clipped this map into your
note
successfully
An error occurred, please try again later.
Or select one from your last 5 notes updated


Inverted Index Web App
By Azeez Olaniran
Upload Book Files
Select a Book File
Create Index
{{uploadedFiles.length > 0 ? uploadedFiles.length + ' Files Uploaded' : 'No Files Uploaded'}}
{{indexingFeedback}}
{{file}} is invalid.
Welcome to the Inverted Index Web App...
Upload Json Book Files from your machine by clicking the Upload Book Files button on the left
Generate an Index for the book file by clicking on the book in the upload list
Search the Index by entering a search query in the search field and press the search button
Wait for the search results to be displayed
All
File : {{ key.replace('.json', '')}}
Word
{{tableHead}}
{{key2}}


LOADING WORLD RESSOURCES...
What if this window does not change within the next seconds?
See if you have the minimal requirements in order to play.


I've come a long way from a week ago
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
My personal intersests range very wide, to many different catagories. I love to work with cars, which is a hard and very raw environment, but I also love to garden, more of a whole body experience for the senses. I love playing Video games and driving, where I'll sit for hours on end. On the other hand I love to play Tennis and garden, both of which are very active and, at times, very intense.


In this tutorial we are going to learn how to install Keptn in your Kubernetes cluster running in Azure Kubernetes Services (AKS) in the Azure Cloud.
Please download and install the following tools if you do not have them installed on your machine already.
We are going to setup a Kubernetes cluster in Azure. Therefore, please download the az
command line tool. Next, please create a cluser in the Azure Portal.
az login
)1.15.x
(tested version: 1.15.10
)Find a full compatibility matrix for supported Kubernetes versions here.
Every release of Keptn provides binaries for the Keptn CLI. These binaries are available for Linux, macOS, and Windows.
There are multiple options how to get the Keptn CLI on your machine.
curl -sL https://get.keptn.sh | sudo -E bash
This will download and install the Keptn CLI automatically.keptn
binary in the unpacked directorychmod +x keptn
), and move it to the desired destination (e.g. mv keptn /usr/local/bin/keptn
)Now, you should be able to run the Keptn CLI:
keptn --help
.\keptn.exe --help
To install the latest release of Keptn in your AKS cluster, execute the keptn install
command with the platform
flag specifying the target platform you would like to install Keptn on.
keptn install --platform=aks
In the Kubernetes cluster, this command creates the keptn, keptn-datastore, and istio-system namespace. While istio-system contains all Istio related resources, keptn and keptn-datastore contain the complete infrastructure to run Keptn.
Now that you have installed Keptn you can take a look at its user interace aka the Keptn's Bridge.
Expose the bridge via the following command to be able to access on localhost:
kubectl port-forward svc/bridge -n keptn 9000:8080
Open a browser and navigate to http://localhost:9000 to take look. The bridge will be empty at this point but when using Keptn it will be populated with events.
Now that you have successfully installed Keptn, you can explore other tutorials!
Here are some possibilities:


Mushrooms - P. cubensis & Cannabis
Living in Holland, I am used to the highest quality of all drugs, its lucky for me I have taken a shine to psychadelics in a big way. I am 19 now and I have been taking shrooms about once every 3 months for about 2 years, not bragging just offering some background. Generally 1 box of Mexicans, but my maximum until this particular trip was 3 boxes of fresh Mexicans, which was pretty intense visually. However, nothing could have prepared me for the wonders I was about to witness with this cocktail of cubensis.
It was Easter time, and most of my usual tripping buddies were away on holiday, leaving me with probably my best tripping buddy J, and one of my friends O, who has attention deficit disorder. We got bored smoking up in O's free house, and figured a trip to the dam was in order. We stayed there for a good 3 hours squeezing in as much coffeeshop time as was physically possible. We figured a christianing of the Easter break was in order and what better way than to intoxicate ourselves further with some shrooms. We arrived at a smart shop and noticed they were selling fresh Hawaiians. It is rare to find anything other than dried Hawaiians in the Hague where I live so we felt instantly blessed. Me and J being the more experienced decided we would get a box of Mexicans for the mellow feel, a box of Thais for the body trip and a box of Hawaiians for truly intense visuals. O being the least experienced of the group bought a box of Hawaiians and Mexicans.
We hadn't eaten anything all day and mixed up some strawberry nesquik to dampen to rancid taste of the shrooms, and began to chew. It took a good half hour to finish that lot off, and not 5 minutes later the effects were becoming apparant, I could feel the usual watery stomach tingling, and remember feeling very impressed with the swiftness in activation of the shrooms. It was clear to me the effects were hitting O much faster and harder at this point in time than me or J, but I put this down to his small body weight.
Another 30 minutes and we were stationed downstairs in O's basement room, watching as everything was breathing in sync with DJ Shadow, I knew that this was what tripping was all about; the calm shockwaves of resonating objects, the weightless but at the same time pinned down feel, and the tripping induced giggles. I noticed O was becoming increasingly more silent as each minute passed, but I again dismissed this as him just enjoying the trip. Some more time passed (canít really tell you how long), the trip was definately on a steady upward curve towards the ever fathomed peak, O began getting very fidgety and anxious, me and J asked if anything was wrong, and he replied in a state of pure terror, 'We have to leave this room!' me and J looked at each other inquiringly, and decided to keep O happy and moved to the living room.
Here is where the peak set in, all I can remember is lying on the sofa and within an instance of me closing my eyes and opening them everything became intense by a factor of about ten, I remember everything around me was melting, morphing breathing in ways that truly stretched the boundaries of my perception and proportion, I remember the most interesting of these visual experiences was blue circular blobs that made up the pattern on O's living room carpet were extending upwards in a series of oscillating columns, and a giant ball type entity was trying to push its way through the wall behind the carpet in the rolling manner of the old school windows screen saver style. My body was at a state of pure intoxication and bliss.
O once again became extremely agitated, his eyes were darting from one item to the next, and I remember asking him if he was ok, he replied 'Fots t qwik' which I interpreted as 'Thought's too quick'.  However, I can pull myself together when I need to, even though this time it was the most intense experience I had ever had on shrooms, and tried to comfort O. All the fear and panic that had been emitted into the room had gotten J a bit worked up. I had the feeling he was under alot of stress prior to the trip anyway, and he began to feel extremely cold. He left the room and lay down in O's bed. O's fear began to subside and he started pacing up and down in a very hyper sort of way, I tend to like to relax and enjoy the trips and I remember letting out a long sigh which seemed to confuse O a bit, I then thought a joint was in order while O went to annoy J for a bit.
The joint was almost impossible to roll, I can normally fix together some form of cone shape even on stronger psychadelics like LSD, but this appeared almost pointless. I ended up with a diamond shape spliff and headed on outside for a bit of gander in O's garden. I got outside and remember contemplating alot of things, the first being about how I wish I had enjoyed the peak without any hassle, but I came to the conclusion that it happens to some people and felt it better not to judge. I also thought about my life in general, I thought about my family and girlfriend, and associated a sense of security with them, this was a lovely warm feeling that made the bubbling in my stomach subside for a while.
The colour of everything outside was very vibrant, it was dark but a friendly blue glow came from everything, the smoke of my joint lapped out into the cool night air like tentacles and I watched it for what seemed like hours. Everything was still breathing in tandem and I heard the Beatles being put on in the background, I felt overwhelmingly content with myself and the earth around me that I almost forgot about O and J, but it turns out it was J who had put the music on and O appeared much more calm.
We spent the duration of the trip having the most intimate moment with the Beatles, as the music seemed to enter every object in O's living room. The effects wore off and we all shared our experiences and J agreed it was extremely intense, O could only remember fragments of his peak and remembers seeing no astounding visuals (shame really).
This was a brilliant trip for me despite the scares I got from both J and O, I worked alot of problems out in my own sort of way and realised how everything has its worth and purpose rather than just being about pretty colours and visuals.
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.


About
- Many students study alone, and thus, spend more time than necessary on school work because they don’t take advantage of study groups. The wasted time decreases their stamina and potentially their grades.
- We wanted to create a solution that facilitates the communication and selective process needed for study groups to form, so that students can create networks faster and more effectively.
Vision
- Encourage collaborative learning and peer networking
- Facilitate communication for all stages of study group interaction
- Build more effective groups by connecting students based on learning styles and preferences
{{> Modal_Login}}


Note: The mapping shown below doesn't show the exact colors. The purpose here is to identify the shape of
the icon based on selectors for easy identification. For more color information for the icon visit
https://i.icomoon.io/public/13394cc478/EngageTellwise/style.css


Package com.heroiclabs.nakama.api
Interface TournamentOrBuilder
- All Superinterfaces:
com.google.protobuf.MessageLiteOrBuilder
,com.google.protobuf.MessageOrBuilder
- All Known Implementing Classes:
Tournament
,Tournament.Builder
public interface TournamentOrBuilder
extends com.google.protobuf.MessageOrBuilder
-
Method Summary
Modifier and TypeMethodDescriptionboolean
True if the tournament is active and can enter.int
The category of the tournament.The UNIX time when the tournament was created.The UNIX time when the tournament was created.The description of the tournament.com.google.protobuf.ByteString
The description of the tournament.int
Duration of the tournament in seconds.int
The UNIX time when the tournament stops being active until next reset.The UNIX time when the tournament will be stopped.The UNIX time when the tournament will be stopped.getId()
The ID of the tournament.com.google.protobuf.ByteString
The ID of the tournament.int
The maximum score updates allowed per player for the current tournament.int
The maximum number of players for the tournament.Additional information stored as a JSON object.com.google.protobuf.ByteString
Additional information stored as a JSON object.int
The UNIX time when the tournament is next playable.int
getSize()
The current number of players in the tournament.int
ASC or DESC sort mode of scores in the tournament.int
The UNIX time when the tournament start being active.The UNIX time when the tournament will start.The UNIX time when the tournament will start.getTitle()
The title for the tournament.com.google.protobuf.ByteString
The title for the tournament.boolean
The UNIX time when the tournament was created.boolean
The UNIX time when the tournament will be stopped.boolean
The UNIX time when the tournament will start.Methods inherited from interface com.google.protobuf.MessageLiteOrBuilder
isInitialized
Methods inherited from interface com.google.protobuf.MessageOrBuilder
findInitializationErrors, getAllFields, getDefaultInstanceForType, getDescriptorForType, getField, getInitializationErrorString, getOneofFieldDescriptor, getRepeatedField, getRepeatedFieldCount, getUnknownFields, hasField, hasOneof
-
Method Details
-
getId
String getId()The ID of the tournament.
string id = 1;
- Returns:
- The id.
-
getIdBytes
com.google.protobuf.ByteString getIdBytes()The ID of the tournament.
string id = 1;
- Returns:
- The bytes for id.
-
getTitle
String getTitle()The title for the tournament.
string title = 2;
- Returns:
- The title.
-
getTitleBytes
com.google.protobuf.ByteString getTitleBytes()The title for the tournament.
string title = 2;
- Returns:
- The bytes for title.
-
getDescription
String getDescription()The description of the tournament. May be blank.
string description = 3;
- Returns:
- The description.
-
getDescriptionBytes
com.google.protobuf.ByteString getDescriptionBytes()The description of the tournament. May be blank.
string description = 3;
- Returns:
- The bytes for description.
-
getCategory
int getCategory()The category of the tournament. e.g. "vip" could be category 1.
uint32 category = 4;
- Returns:
- The category.
-
getSortOrder
int getSortOrder()ASC or DESC sort mode of scores in the tournament.
uint32 sort_order = 5;
- Returns:
- The sortOrder.
-
getSize
int getSize()The current number of players in the tournament.
uint32 size = 6;
- Returns:
- The size.
-
getMaxSize
int getMaxSize()The maximum number of players for the tournament.
uint32 max_size = 7;
- Returns:
- The maxSize.
-
getMaxNumScore
int getMaxNumScore()The maximum score updates allowed per player for the current tournament.
uint32 max_num_score = 8;
- Returns:
- The maxNumScore.
-
getCanEnter
boolean getCanEnter()True if the tournament is active and can enter. A computed value.
bool can_enter = 9;
- Returns:
- The canEnter.
-
getEndActive
int getEndActive()The UNIX time when the tournament stops being active until next reset. A computed value.
uint32 end_active = 10;
- Returns:
- The endActive.
-
getNextReset
int getNextReset()The UNIX time when the tournament is next playable. A computed value.
uint32 next_reset = 11;
- Returns:
- The nextReset.
-
getMetadata
String getMetadata()Additional information stored as a JSON object.
string metadata = 12;
- Returns:
- The metadata.
-
getMetadataBytes
com.google.protobuf.ByteString getMetadataBytes()Additional information stored as a JSON object.
string metadata = 12;
- Returns:
- The bytes for metadata.
-
hasCreateTime
boolean hasCreateTime()The UNIX time when the tournament was created.
.google.protobuf.Timestamp create_time = 13;
- Returns:
- Whether the createTime field is set.
-
getCreateTime
Timestamp getCreateTime()The UNIX time when the tournament was created.
.google.protobuf.Timestamp create_time = 13;
- Returns:
- The createTime.
-
getCreateTimeOrBuilder
TimestampOrBuilder getCreateTimeOrBuilder()The UNIX time when the tournament was created.
.google.protobuf.Timestamp create_time = 13;
-
hasStartTime
boolean hasStartTime()The UNIX time when the tournament will start.
.google.protobuf.Timestamp start_time = 14;
- Returns:
- Whether the startTime field is set.
-
getStartTime
Timestamp getStartTime()The UNIX time when the tournament will start.
.google.protobuf.Timestamp start_time = 14;
- Returns:
- The startTime.
-
getStartTimeOrBuilder
TimestampOrBuilder getStartTimeOrBuilder()The UNIX time when the tournament will start.
.google.protobuf.Timestamp start_time = 14;
-
hasEndTime
boolean hasEndTime()The UNIX time when the tournament will be stopped.
.google.protobuf.Timestamp end_time = 15;
- Returns:
- Whether the endTime field is set.
-
getEndTime
Timestamp getEndTime()The UNIX time when the tournament will be stopped.
.google.protobuf.Timestamp end_time = 15;
- Returns:
- The endTime.
-
getEndTimeOrBuilder
TimestampOrBuilder getEndTimeOrBuilder()The UNIX time when the tournament will be stopped.
.google.protobuf.Timestamp end_time = 15;
-
getDuration
int getDuration()Duration of the tournament in seconds.
uint32 duration = 16;
- Returns:
- The duration.
-
getStartActive
int getStartActive()The UNIX time when the tournament start being active. A computed value.
uint32 start_active = 17;
- Returns:
- The startActive.
-


Hugo Quick Start
Step 1: Install Hugo
Homebrew, a package manager for macOS, can be installed from brew.sh. See install if you are running Windows etc.
brew install hugo
To verify your new install:
hugo version
Step 2: Create a New Site
hugo new site quickstart
The above will create a new Hugo site in a folder named quickstart.
Step 3: Add a Theme
See themes.gohugo.io for a list of themes to consider. This quickstart uses the Ananke theme.
cd quickstart;\
git init;\
git submodule add https://github.com/budparr/gohugo-theme-ananke.git themes/ananke;\
# Edit your config.toml configuration file
# and add the Ananke theme.
echo 'theme = "ananke"' >> config.toml
Step 4: Add Some Content
hugo new posts/my-first-post.md
Edit the newly created content file if you want. Now, start the Hugo server with drafts enabled:
hugo server -D
Started building sites ...
Built site for language en:
1 of 1 draft rendered
0 future content
0 expired content
1 regular pages created
8 other pages created
0 non-page files copied
1 paginator pages created
0 categories created
0 tags created
total in 18 ms
Watching for changes in /Users/bep/sites/quickstart/{data,content,layouts,static,themes}
Serving pages from memory
Web Server is available at http://localhost:1313/ (bind address <IP_ADDRESS>)
Press Ctrl+C to stop
Navigate to your new site at http://localhost:1313/.
Step 5: Customize the Theme
Your new site already looks great, but you will want to tweak it a little before you release it to the public.
Site Configuration Open up config.toml in a text editor:
baseURL = "https://example.org/"
languageCode = "en-us"
title = "My New Hugo Site"
theme = "ananke"
Replace the title above with something more personal. Also, if you already have a domain ready, set the baseURL. Note that this value is not needed when running the local development server.
Tip: Make the changes to the site configuration or any other file in your site while the Hugo server is running, and you will see the changes in the browser right away.
For theme specific configuration options, see the theme site.


home
portfolio
contact
about
Rochelle and Jonathan
Michael and Elisa
Yuki and John
Mathew and Maria
Jeremiah and Courtney
Rose and Anne


Roboto has a dual nature. It has a mechanical skeleton and the forms are largely geometric. At the same time, the font features friendly and open curves. While some grotesks distort their letterforms to force a rigid rhythm, Roboto doesn’t compromise, allowing letters to be settled into their natural width. This makes for a more natural reading rhythm more commonly found in humanist and serif types.
This is the Condensed family, which can be used alongside the normal Roboto family and the Roboto Slab family.
Updated January 14 2015: Christian Robertson and the Material Design team unveiled the latest version of Roboto at Google I/O last year, and it is now available from Google Fonts. Existing websites using Roboto via Google Fonts will start using the latest version automatically. If you have installed the fonts on your computer, please download them again and re-install.