text:
Q: Looping through class ltraj? Apologies if this is not the best forum to inquire this question.
Has anyone been able to loop/iterate though multiple GPS collared individuals that are in class ltraj (adehabitatlt)?
I've been trying to calculate Prox (https://cran.r-project.org/web/packages/wildlifeDI/vignettes/wildlifeDI-vignette.pdf) for multiple individuals but am struggling with how exactly to loop class ltraj because it's different than dataframe (which I'm accustomed to).
Thanks in advance.
install.packages('wildlifeDI', dependencies=TRUE)
library(wildlifeDI)
library(adehabitatLT)
chupacabra <- structure(list(CollarID = structure(c(1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L), .Label = c("A4116F", "A4117M", "A4118F"), class =       "factor"),
DateTime = structure(c(1433653200, 1433667600, 1433682060,
1433682300, 1433682600, 1433682900, 1433683200, 1433683500,
1433683800, 1433684100, 1433684400, 1433684700, 1433685000,
1433685300, 1433685600, 1433685900, 1433686200, 1433686500,
1433686800, 1433687100, 1433687400, 1433687700, 1433688000,
1433688300, 1433688600, 1433688900, 1433689200, 1433689500,
1433689800, 1433690100, 1433690400, 1433690700, 1433691000,
1433691300, 1433691600, 1433691900, 1433692200, 1433692500,
1433692800, 1433693100, 1433693400, 1433693700, 1433694000,
1433694300, 1433694600, 1433694900, 1433695200, 1433695500,
1433695800, 1433696100, 1433696400, 1433710860, 1433714400,
1433714700, 1433715000, 1433715300, 1433715600, 1433715900,
1433716200, 1433716500, 1433716800, 1433717100, 1433717400,
1433717700, 1433718000, 1433718300, 1433718600, 1433718900,
1433719200, 1433719500, 1433719800, 1433720100, 1433720400,
1433720700, 1433721000, 1433721300, 1433721600, 1433721900,
1433722200, 1433722500, 1433722800, 1433723100, 1433723400,
1433723700, 1433724060, 1433724300, 1433724600, 1433724900,
1433725200, 1433653200, 1433667660, 1433682060, 1433682300,
1433682600, 1433682900, 1433683200, 1433683500, 1433683800,
1433684100, 1433684400, 1433684700, 1433685000, 1433685300,
1433685660, 1433685900, 1433686200, 1433686500, 1433686800,
1433687100, 1433687400, 1433687700, 1433688000, 1433688300,
1433688660, 1433688900, 1433689200, 1433689500, 1433689800,
1433690100, 1433690400, 1433690700, 1433691000, 1433691300,
1433691600, 1433691900, 1433692200, 1433692500, 1433692800,
1433693100, 1433693400, 1433693700, 1433694060, 1433694300,
1433694600, 1433694900, 1433695200, 1433695500, 1433695800,
1433696100, 1433696400, 1433710860, 1433714400, 1433714700,
1433715000, 1433715300, 1433715600, 1433715900, 1433716200,
1433716500, 1433716800, 1433717100, 1433717400, 1433717700,
1433718000, 1433718300, 1433718600, 1433718900, 1433719200,
1433719500, 1433719800, 1433720100, 1433720400, 1433720700,
1433721000, 1433721300, 1433721600, 1433721900, 1433722200,
1433722500, 1433722800, 1433723100, 1433723400, 1433723700,
1433724000, 1433724300, 1433724600, 1433724900, 1433725200,
1433653249, 1433667666, 1433682089, 1433682349, 1433682632,
1433682936, 1433683234, 1433683536, 1433683837, 1433684144,
1433684443, 1433684739, 1433685031, 1433685370, 1433685634,
1433685935, 1433686236, 1433686536, 1433686826, 1433687142,
1433687448, 1433687736, 1433688034, 1433688337, 1433688649,
1433688936, 1433689236, 1433689531, 1433689827, 1433690139,
1433690433, 1433690736, 1433691048, 1433691336, 1433691634,
1433691941, 1433692236, 1433692535, 1433692833, 1433693129,
1433693434, 1433693735, 1433694028, 1433694373, 1433694642,
1433694931, 1433695234, 1433695542, 1433695831, 1433696148,
1433696448, 1433710908, 1433714437, 1433714737, 1433715036,
1433715366, 1433715636, 1433715969, 1433716234, 1433716536,
1433716827, 1433717137, 1433717435, 1433717733, 1433718048,
1433718336, 1433718636, 1433718973, 1433719272, 1433719530,
1433719837, 1433720136, 1433720431, 1433720736, 1433721031,
1433721336, 1433721640, 1433721946, 1433722236, 1433722528,
1433722842, 1433723137, 1433723434, 1433723730, 1433724035,
1433724370, 1433724634, 1433724936, 1433725236), class = c("POSIXct",
"POSIXt"), tzone = ""), UTM_X = c(636979.2503, 636977.6583,
637402.4471, 637400.3063, 637402.3105, 637407.1977, 637406.3305,
637408.2991, 637407.1907, 637407.8414, 637406.7617, 637407.1614,
637409.8019, 637431.5235, 637465.9644, 637495.9583, 637525.2219,
637573.6033, 637645.3501, 637683.3844, 637691.6229, 637693.4815,
637693.4973, 637691.2483, 637691.9061, 637693.6377, 637692.1106,
637692.3169, 637690.9989, 637691.4503, 637693.6252, 637692.4915,
637694.9434, 637692.6685, 637692.8116, 637694.6787, 637694.4404,
637695.9109, 637696.8945, 637695.2403, 637695.4283, 637694.6085,
637693.4962, 637695.6229, 637734.7283, 637773.2897, 637774.9891,
637787.6573, 637792.285, 637807.0486, 637834.6231, 637497.3348,
637149.9982, 637145.0345, 637178.159, 637181.8251, 637181.1075,
637178.023, 637175.327, 637179.9138, 637180.2833, 637181.5512,
637185.8749, 637181.0011, 637177.401, 637177.4498, 637176.787,
637176.0093, 637175.5126, 637177.9578, 637178.5819, 637188.3911,
637188.7303, 637189.496, 637204.3885, 637195.2063, 637204.9823,
637201.5235, 637212.3355, 637274.4294, 637293.0009, 637296.3954,
637331.3382, 637358.4369, 637365.1677, 637357.5562, 637355.3896,
637345.4827, 637339.1054, 628920.3789, 628869.9781, 630028.6781,
630156.4557, 629878.756, 629658.9786, 629412.6432, 629257.5965,
629405.8967, 629113.4479, 628955.5124, 628852.0231, 628711.9202,
628632.7134, 628621.7724, 628622.2565, 628683.6018, 628771.1182,
628790.8437, 628867.7592, 628881.9794, 628830.9898, 628681.9202,
628575.3395, 628578.1836, 628656.4902, 628659.2271, 628656.689,
628660.4677, 628657.294, 628657.077, 628689.6585, 628727.0131,
628716.6979, 628703.8397, 628678.6953, 628679.3594, 628681.3549,
628625.6275, 628563.1372, 628488.425, 628482.5023, 628469.2209,
628417.9697, 628407.7352, 628405.374, 628393.143, 628394.0092,
628396.2344, 628395.05, 628395.7787, 627684.7989, 627704.889,
627702.5528, 627702.0422, 627708.7906, 627706.9374, 627687.0371,
627622.0573, 627605.7932, 627603.5707, 627587.8803, 627606.0471,
627603.2967, 627602.954, 627603.5844, 627604.1232, 627601.697,
627581.6104, 627599.7062, 627616.327, 627661.7402, 627889.446,
627883.5896, 627803.1167, 627792.5918, 627716.0886, 627720.8854,
627671.8217, 627666.9994, 627586.7035, 627584.4273, 627532.492,
627502.6326, 627430.6781, 627408.8845, 627357.5049, 627406.0466,
627427.1382, 636666.3215, 636629.7032, 637179.9041, 637187.7067,
637183.5281, 637193.2082, 637227.2331, 637290.2543, 637347.9311,
637373.0887, 637368.8923, 637371.0722, 637383.95, 637480.1799,
637510.543, 637558.428, 637676.2714, 637682.3564, 637680.8591,
637682.8516, 637680.8317, 637680.8341, 637681.9818, 637681.2897,
637681.3658, 637681.9234, 637681.8824, 637682.0629, 637684.8756,
637681.602, 637682.7548, 637680.8578, 637682.9887, 637680.2496,
637681.4629, 637682.3731, 637682.2223, 637684.1076, 637681.7127,
637681.1249, 637681.6758, 637681.595, 637682.5253, 637702.3094,
637728.9487, 637784.0853, 637776.5727, 637785.2538, 637786.6413,
637807.9935, 637834.8672, 637485.5191, 637148.5674, 637139.2974,
637174.9104, 637191.9371, 637179.4262, 637175.7715, 637176.3455,
637174.5459, 637174.2012, 637173.7462, 637177.3967, 637176.6907,
637177.8458, 637178.0774, 637178.4151, 637178.3272, 637178.2442,
637177.6655, 637176.734, 637186.2713, 637185.0998, 637197.4201,
637197.9147, 637204.1485, 637203.1784, 637204.4993, 637205.3515,
637279.9058, 637303.773, 637303.5724, 637330.3473, 637354.416,
637366.5627, 637340.7274, 637357.5505, 637350.709, 637349.689
), UTM_Y = c(3365828.581, 3365826.066, 3364992.673, 3364991.006,
3364989.036, 3364990.816, 3364989.486, 3364991.849, 3364991.37,
3364990.059, 3364989.58, 3364991.403, 3364991.536, 3364985.614,
3365030.733, 3365054.446, 3365091.064, 3365138.444, 3365289.033,
3365390.111, 3365398.839, 3365387.124, 3365390.427, 3365386.696,
3365387.104, 3365379.344, 3365386.131, 3365388.805, 3365385.152,
3365385.158, 3365386.394, 3365385.637, 3365385.48, 3365386.071,
3365385.397, 3365387.416, 3365387.269, 3365389.505, 3365389.971,
3365387.833, 3365389.676, 3365390.685, 3365385.96, 3365384.934,
3365352.152, 3365369.878, 3365376.795, 3365390.013, 3365382.689,
3365382.189, 3365410.939, 3365683.847, 3365620.829, 3365574.121,
3365527.084, 3365501.513, 3365502.801, 3365512.739, 3365514.733,
3365512.885, 3365511.016, 3365512.562, 3365510.255, 3365511.235,
3365509.494, 3365509.439, 3365509.431, 3365509.388, 3365510.678,
3365509.534, 3365511.083, 3365511.85, 3365514.659, 3365513.371,
3365525.476, 3365526.036, 3365529.429, 3365528.676, 3365513.172,
3365507.793, 3365514.623, 3365512.105, 3365504.477, 3365512.401,
3365495.238, 3365490.863, 3365441.075, 3365411.542, 3365403.003,
3371496.516, 3371594.382, 3370587.966, 3370380.241, 3370270.012,
3370346.817, 3370433.295, 3370488.189, 3370225.222, 3370122.896,
3370174.202, 3370232.298, 3370192.371, 3370255.722, 3370283.548,
3370283.21, 3370305.674, 3370344.002, 3370354.4, 3370348.973,
3370200.353, 3370078.071, 3370123.589, 3370194.686, 3370393.878,
3370500.265, 3370498.635, 3370498.882, 3370497.663, 3370499.687,
3370500.172, 3370633.763, 3370704.904, 3370839.426, 3370879.943,
3370950.842, 3370957.988, 3370963, 3371031.496, 3371082.487,
3371109.89, 3371112.17, 3371118.807, 3371167.072, 3371168.581,
3371170.127, 3371178.074, 3371177.097, 3371178.11, 3371176.777,
3371178.482, 3371566.662, 3371622.632, 3371621.252, 3371619.772,
3371623.975, 3371627.245, 3371636.71, 3371612.734, 3371598.776,
3371590.192, 3371636.009, 3371656.352, 3371656.719, 3371656.471,
3371656.755, 3371659.1, 3371656.401, 3371688.243, 3371717.065,
3371741.492, 3371755.505, 3371618.156, 3371595.308, 3371615.82,
3371560.55, 3371552.166, 3371572.884, 3371547.544, 3371530.616,
3371559.755, 3371591.63, 3371612.877, 3371657.663, 3371727.149,
3371739.263, 3371823.645, 3371912.149, 3371969.549, 3366104.602,
3365712.344, 3365494.627, 3365496.045, 3365484.575, 3365475.02,
3365485.304, 3365467.377, 3365477.805, 3365507.809, 3365510.682,
3365519.888, 3365527.19, 3365491.394, 3365490.37, 3365468.274,
3365393.413, 3365389.355, 3365386.964, 3365391.977, 3365389.125,
3365388.937, 3365389.35, 3365389.375, 3365387.159, 3365387.133,
3365386.578, 3365386.735, 3365386.161, 3365387.472, 3365387.487,
3365387.064, 3365387.977, 3365385.016, 3365387.836, 3365388.036,
3365387.048, 3365389.909, 3365387.074, 3365384.939, 3365387.717,
3365388.026, 3365388.16, 3365385.728, 3365344.996, 3365374.693,
3365377.679, 3365387.866, 3365389.823, 3365391.779, 3365410.631,
3365698.174, 3365622.297, 3365571.954, 3365511.957, 3365510.265,
3365505.086, 3365509.196, 3365512.44, 3365513.438, 3365508.777,
3365509.049, 3365509.838, 3365506.403, 3365507.748, 3365510.711,
3365509.075, 3365507.666, 3365508.152, 3365505.285, 3365498.401,
3365508.531, 3365508.483, 3365513.538, 3365520.783, 3365519.376,
3365523.92, 3365529.634, 3365529.866, 3365498.661, 3365512.941,
3365509.801, 3365503.056, 3365513.548, 3365502.683, 3365482.215,
3365438.852, 3365412.317, 3365406.363)), .Names = c("CollarID",
"DateTime", "UTM_X", "UTM_Y"), row.names = c(NA, -267L), class = "data.frame")

Commenting out incorrect transformation
# chupacabra$DateTime <-as.POSIXct(strptime(chupacabra$DateTime, format='%m/%d/%Y %H:%M:%S'),origin='1970-01-01')

chupacabra2<-as.ltraj(chupacabra[, c("UTM_X","UTM_Y")], date=chupacabra$DateTime,id=chupacabra$CollarID, typeII=TRUE)

monster1<-chupacabra2[1] #extract the first chupacabra

monster2<-chupacabra2[2] #extract the second chupacabra

proxdf <-Prox(monster1,monster2, tc=0.5*60,dc=210, local =TRUE)

Here's a sample of chupcabras that we've been tracking. We'd like to examine how often they interact with each other. This dataset has 3 individuals (but we have many many more chupcabras) and it is inefficient to pull out the animals/creatures 1 by 1 to calculate proximity. I'd like to do a for loop (for i in unique ID, perhaps) but I don't understand how to do this when the data is in ltraj format. Any assistance would be appreciated.

A: After removing the harmful code that incorrectly reformatted the DateTime value, I plotted the "trajectory" for the 3 2-animal combinations. Clearly animal1 did not interact with animal 2 since their ranges were disjoint. Animal 1 and animal 3 do appear to interact, since about halfway through their joint sojourns they have the roughly same trajectory:
 plot( chupacabra2[[1]]$x, chupacabra2[[1]]$y, type="l",
       xlim=range( c(chupacabra2[[1]]$x, chupacabra2[[3]]$x)),
       ylim= range(c(chupacabra2[[1]]$y, chupacabra2[[3]]$y)))
 lines( chupacabra2[[3]]$x, chupacabra2[[3]]$y, col="red")

This appears in proxdf13 as:
> monster1<-chupacabra2[1]
>
> monster3<-chupacabra2[3]
>
> proxdf13 <-Prox(monster1,monster3, tc=0.5*60,dc=210, local =TRUE)
> proxdf13
                  date       prox
1  2015-06-07 06:01:00 549.074863
2  2015-06-07 07:20:00 104.169909
3  2015-06-07 08:10:00   6.205875
4  2015-06-07 09:05:00  14.409016
5  2015-06-07 09:20:00  11.189309
6  2015-06-07 15:40:00   6.481131
7  2015-06-07 16:25:00   4.259042
8  2015-06-07 17:15:00  10.648210
9  2015-06-07 17:35:00   4.181297
10 2015-06-07 17:41:00   7.574566

So a guess that "interact" (might) means something along the lines of "is within 15 distance units for more than 2 days in succession". So a natural function to consider would be rle:
> rle( proxdf13$prox < 15 )
Run Length Encoding
  lengths: int [1:2] 2 8
  values : logi [1:2] FALSE TRUE
> RL13 <- rle( proxdf13$prox < 15 )
> max( RL13$lengths [ RL13$values] )
[1] 8

And test whether this is greater than some value, say 2?
So that was the method to handle  a single 2way animal-animal combination. The comments of the questioner below suggest I may have lost him in the material that follows. To get the 2way combinations of a sequence use combn:
> combn(1:3, 2)
     [,1] [,2] [,3]
[1,]    1    1    2
[2,]    2    3    3

That is a matrix that will be use to generate the index values for pulling two single animal "trajectory" dataframes at a time from the 'ltraj' object using each column separately. When the apply function is used it can "loop" over etiehr rows or columns of a matrix and using 2 as the index value to apply specifieds the columns.
So putting this all together (using apply to loop over the column indices of combn-result to get the two-way combinations):
( max.days.prox <-  apply( combn( seq(length(chupacabra2)), 2 ), 2,
                           # loops over columns of the "combinations matrix"
                          function(x) {
                              proxcomb <- Prox( chupacabra2[ x[1] ], chupacabra2[ x[2] ],
                                                 tc=0.5*60,dc=210, local =TRUE)
                              RLcomb <- rle( proxcomb$prox < 15 )
                              Interact.days <- max( RLcomb$lengths [ RLcomb$values] ) }  ) )
# [1] -Inf    8 -Inf

We rbind that to the result to look at the items of interest:
> rbind(combn( seq(length(chupacabra2)), 2 ) , max.days.prox)
              [,1] [,2] [,3]
                 1    1    2
                 2    3    3
max.days.prox -Inf    8 -Inf

So only the pairing of animal1 and animal3 provided evidence of an interaction. This would generalize to larger instances of ltraj-objects


The difficulty level of a thesis paper rises undoubtedly with the rise in the educational scale. For instance, you simply cannot compare the writing standards of a college paper and a Masters paper. The effort required to complete a Master's thesis paper would be much more than a college paper. You would have to dig real deep into the topic and use a large number of sources. Along with that, you would be expected to meet higher quality standards in tighter timeframes. In such a situation, you can opt for much easier options as well. You can avail our reliable custom thesis paper writing services at affordable rates.
You can buy custom thesis papers on history, buy custom thesis papers on geography, buy custom thesis papers on mathematics, buy custom thesis papers on advanced mathematics, buy custom thesis papers on pure accounting, buy custom thesis papers on policy making, buy custom thesis papers on relationship management, buy custom thesis papers on cost-benefit analysis, buy custom thesis papers on core computing systems, buy custom thesis papers on literature, buy custom thesis papers on developmental finance, buy custom thesis papers on developmental economics, buy custom thesis papers on strategic finance, buy custom thesis papers on application programming, buy custom thesis papers on application analysis, buy custom thesis papers on sociology, buy custom thesis papers on numerical computing, buy custom thesis papers on political science, buy custom thesis papers on psychological treatments, buy custom thesis papers on development of business intelligence systems, buy custom thesis papers on financial analysis techniques, buy custom thesis papers on microeconomics, buy custom thesis papers on macroeconomics, buy custom thesis papers on data management, buy custom thesis papers on systems analysis, buy custom thesis papers on additional mechanics, buy custom thesis papers on advanced mathematics, buy custom thesis papers on organizational policy making, and all other academic subject thesis papers.
We have a team of highly experienced writing professionals who have a lifetime of experience. How do we hire the best employees for our writing firm? Which selection techniques do we use in this relation?
1. We do not pick an academic writer only because he holds an undergraduate or postgraduate degree? His academic institution, grades, and previous experience create a massive difference.
2. We do not hire inexperienced writers as they do not have pressure-handling abilities. These writers never fail to deliver the paper even if the customer wants his paper to be completed urgently.
3. Our company has a rigorous large-scale testing system. Only the best writing sources are successful in getting through this testing system.
4. We pick thesis writers who have the proper expertise of using all the citation formats as our clients want their papers to be written using APA, MLA, Chicago, and various other referencing styles.


Hindsight, while extremely valuable, is not a reason to continue to do something that is not sensible. For a lot of people, landing on the Moon was the goal that was required to achieve victory in the Space Race. I would make the economist who investigated.
Given the scope of the surrounding circumstances, the Arms Race's products were the fruit of that rivalry.
What if the capitalists won every civil-war during the Cold War. It really depends upon the criteria that one sets for winning the Space Race. Held back by domestic financial constraints, Britain and France had lagged behind. This collapse was preceded by revolutions in Poland and Czechoslovakia, as well as the fall of the Berlin Wall. This therefore led both nations to create new arms which would, given that neither country could agree on or restore diplomatic relations, act as deterrence to the other nation.
How do I type with PC keyboard. No matter who won the Space Race, it was clear that the West had won the Cold War. American-Soviet competition in the Third World intensified once again, this time during the civil war in Angola and the Somali-Ethiopian war over the Ogaden region.


text:
Junior Kindergarten
Grammar (1st-6th)
Logic (7th-8th)
Rhetoric (9th-12th)
Athletic Calendars
Visit BCS
History of Bloomfield Christian School
Bloomfield Christian School had its beginning in 1993 as a group of five mothers began to meet and pray for God's wisdom in starting a Christian school. That first year and a half was spent in prayer and preparation as they visited schools from Virginia to Texas to Idaho.
These families were seeking to found a school which operated as a servant to the family under the assumption that the education of young people is the responsibility of parents and the immediate family rather than that of the State. They desired a program which provided a Biblical-based curriculum and taught subjects as parts of an integrated whole with the Scriptures at the center.
In September of 1994, they opened their new school under the name Christian Leadership Academy. When the doors first opened CLA had eight students enrolled and by the end of the year, there were thirteen students in five different grades. Two years later, in 1996, CLA began to add the secondary program and graduated its first class in 2000.
Seeking a permanent location for the school, in 2013 the school moved to its current facility on Telegraph Road in Bloomfield Hills and in 2015 changed its name to Bloomfield Christian School.
Although academics have always been the main emphasis at BCS, an extramural sports program was started in 2001 and continues to grow. BCS now supports basketball, volleyball, cross country, soccer, golf, and baseball teams, as well as an active House Council.
Wondering if Bloomfield Christian School is right for your child?
✉ info@bloomfieldchristian.com
⚲ 3570 Telegraph Road
Bloomfield Hills, MI, 48302
✆ 248.499.7800
© 2022 Bloomfield Christian School

redpajama_set_name: RedPajamaCommonCrawl


El Nacional Barcelona restaurant emporium on Passeig de Gracia 24 in Eixample area of Barcelona. El Nacional restaurant emporium is a fabulous and exceptional new food hall on Passeig de Gracia very close to Barcelona's downtown central square Plaza Catalunya. El Nacional can accommodate 770 diners and is open daily from noon 365 days a year. El Nacional has 2 entrances on Passeig de Gracia down a short passageway and on Pau Claris. They both lead to 4 specialised bars and 4 culinary areas in a renovated 19th century industrial modernist era factory building.
El Nacional began life in 1870 as a modernist cafe-theatre, then later was a textile and dye factory, a car dealership, a food warehouse after the Spanish civil war and finally a car park before being abandoned. Now it is reborn as a chic, modernist styled food emporium with four restaurants and four bars to choose from. The renovation work is superbly done with fine attention to detail and quality and guest can now enjoy wonderful food and drink in beautiful neo-modernist surroundings with ceramic wall art from Valencia and incredible glass lamps from Galicia.
Each restaurant and bar serve different culinary delights from the Iberian penisula.
Seafood. La Llotja has a superb fish market display counter where guests can choose ingredients and purchase by weight. The fish can be prepared using 5 different cooking methods: in the oven, charcoal-grilled, steamed, fried or on the griddle.La Llotja also offers fried foods, salads, vegetables, fish soups, shellfish, stews and a few basic meat dishes for those who prefer not to eat fish on that particular day. Try the anchovies from L'Escala or sea bream baked in Formentera sea salt, among other delicious recipes.
Meat. La Braseria. The glass cabinet for meat ageing is a unique feature of the brasería, specialised in meats. The star of the show is the charcoal grill, although there is also a wood-fired oven and a griddle. All meat is cooked in front of the customers. Choose from a large selection of starters and meat, to have with salad or vegetable side dishes. On the menu you will also find beef from El Capricho, once declared the best ox meat in the world by Time magazine. Try the beef burger and hand-minced Steak Tartare among other delicious dishes.
Tapas. La Taperia serving exquisite tapas including rice and noodle dishes which are auctioned "Malaga-style" by our waiters. A swift form of service which allows you to order cold tapas from our waiters while the hot ones come out of the kitchen in an endless flow. La Tapería offers a variety of cold tapas, hot tapas, rice dishes, paella fideuá. Try the delicious Tombet – a vegetable dish from Mallorca, or the classic black rice, two of the specialities on their varied menu.
Snacks. La Paradeta. A deli snack restaurant where you can enjoy some excellent sandwiches, delicious coca pastries and light meals. La Paradeta offers a varied menu: sweet and savoury pastries, cheese, vegetables, smoked and cured products. You will also find classic sandwiches here as well as a variety of salads, sliced fruit, natural juices, milkshakes, pastries, homemade ice cream, drinks and coffee. Try the "Xató" pastry, our mushroom and onion confit pasty.
El Nacional bars are equally diverse; one serves caviar and oysters; another is cheese and wine:one is a cocktail bar and beer and preserves bar. Great selection with meals and snacks for everyone all day every day.
El Nacional is fabulous but they plan to offer even more with loft areas, a gourmet food shop and cafe-tearoom in the near future.
Visit El Nacional in Barcelona.


In this Aug. 27, 2015, file photo, former Hawaii Gov. George Ariyoshi, left, and and Princess Abigail Kawananakoa, center, arrive before oral arguments at the Hawaii State Supreme Court in Honolulu.
91-year-old multimillionaire heiress Abigail Kawananakoa, a descendant of Hawaiian royalty, is considered by many to be Hawaii's last princess.
Now a court battle is playing out for her $215 million fortune, which she has used to fund various charities.
Kawananakoa's longtime attorney successfully petitioned to become her trustee last year after arguing that she'd been left impaired by a stroke.
But Kawananakoa's new lawyers are arguing that she is healthy.
HONOLULU (AP) — Every day, tourists flock to a downtown Honolulu palace for a glimpse of the way Hawaii's royal family lived, marveling at its gilded furniture, lavish throne room and grand staircase made from prized koa wood.
But few know Iolani Palace — America's only royal residence — has relied in part on the generosity of a descendant of that family while the relic of the monarchy's rule now serves as a museum.
Multimillionaire heiress Abigail Kinoiki Kekaulike Kawananakoa, considered by many to be Hawaii's last princess, has paid the palace's electric bills for the past six years.
But the intensely private Native Hawaiian, whose $215 million fortune includes race horses and real estate, is no longer in a position to fund her pet charities, including the palace and various Native Hawaiian causes.
A court struggle is playing out for the 91-year-old's fortune.
Kawananakoa's longtime lawyer persuaded a judge to appoint him trustee, arguing a stroke over the summer left the heiress impaired. She claims she's fine, and has since fired that lawyer and married her girlfriend of 20 years.
Since the court battle began, the electricity payments have stopped, Iolani Palace Executive Director Kippen de Alba Chu said. Officials who run the palace completed in 1882 have relied on a backup plan to pay the light bill and stay open.
This Friday, Jan. 26, 2018 photo shows the throne room of Iolani Palace in Honolulu. Furor erupted in the 1990s after Native Hawaiian heiress, Abigail Kawananakoa, sat on one of the thrones for a Life magazine photo shoot and damaged some of its fragile threads, though repairs were made, and the throne was returned to the throne room. The uproar led to her ouster as president of Friends of Iolani Palace, a position she held for more than 25 years.
Also disrupted, according to court documents, were funds earmarked for a Native Hawaiian nursing student's scholarship and materials to repair a damaged crypt at the Royal Mausoleum, where members of Hawaiian royalty are buried.
Over the years, Kawananakoa has used her money to fund protesters fighting a giant telescope on a mountain some Native Hawaiians consider sacred; to challenge a contentious Honolulu rail project; and to support the Merrie Monarch Festival, a prestigious hula competition.
She also has donated items owned by King Kalakaua and Queen Kapiolani for public display, including Kalakaua's nearly 14-carat diamond pinky ring.
Kawananakoa has no official title or power, but many Native Hawaiians see her as a link to when Hawaii was its own nation.
Kawananakoa is the granddaughter of the late Prince David Kawananakoa, who was named an heir to the throne. She has no official title or real power in the state, but that doesn't matter to many Native Hawaiians, who see her as a link to when Hawaii was its own nation — before American businessmen, backed by U.S. Marines, overthrew the Hawaiian kingdom 125 years ago.
"She was always called princess among Hawaiians because Hawaiians have acknowledged that lineage," said Kimo Alama Keaulana, assistant professor of Hawaiian language and studies at Honolulu Community College. "Hawaiians hold dear to genealogy. And so genealogically speaking, she is of high royal blood."
Some note that Prince David has other living descendants and say the heiress is held up as the last tie to the monarchy simply because of her wealth. Kawananakoa's riches come from being the great-granddaughter of James Campbell, an Irish businessman who made his fortune as a sugar plantation owner and one of Hawaii's largest landowners.
But Kawananakoa's supporters say she is the closest connection to the throne because, although they were already related, the prince's widow formally adopted her as a daughter.
Last princess or not, Kawananakoa's inheritance wields tangible power — and some worry about it falling into the wrong hands.
In July, her longtime attorney James Wright filed an emergency petition seeking to be named successor trustee to all of her trust assets, saying in court documents that Kawananakoa is "impaired as a result of an acute stroke."
Two days later, a judge granted the request.
In August, attorney Michael Lilly wrote a letter to the judge saying he now represents Kawananakoa and he strongly contests any contention she is incompetent.
Lawyers for the heiress dispute she had a stroke, saying in court papers it was a transient ischemic attack, which has similar symptoms but caused no permanent damage.
Wright's court filings also raise allegations that Veronica Gail Worth, Kawananakoa's 64-year-old wife, physically abused her.
Neither Kawananakoa nor Worth responded to requests for comment from The Associated Press. However, Kawananakoa's attorney said in court papers the abuse claims are false and that Kawananakoa fell and "struck furniture, which caused the bruising, which is not uncommon at someone her age."
A judge in September appointed a special master to independently investigate the heiress's mental capacity and the abuse allegations.
Kawananakoa is intensely private, only fueling intrigue into her life.
Kawananakoa largely avoids airing her personal life, and some who know her say even her Oct. 1 wedding at the home of a retired state Supreme Court justice came as a surprise.
But she has occasionally drawn attention over the years, including in 1993, when one of her horses won $1 million in New Mexico's All American Futurity.
Five years later, furor erupted after Kawananakoa sat on a palace throne for a Life magazine photo shoot. She damaged some of its fragile threads, but repairs were made and the throne was returned to the palace throne room. Still, the uproar led to Kawananakoa's ouster as president of Friends of Iolani Palace, a position she held for more than 25 years.
Some Hawaiians, such as well-known activist Walter Ritte, aren't interested in revering her genealogy or wealth. Hawaiians, especially those who live in poverty, can't relate to her, Ritte said.
"She has given some money here and there," he said. "She could have done a lot more for Hawaiians."
The court battle focusing on Kawananakoa's age and health has others reflecting on her as a final living reminder of Hawaii's monarchy and as a symbol of a proud Hawaiian national identity that has endured.
"It is fair to say that Abigail Kawananakoa is the last of our alii," said Keaulana, using the Hawaiian word for royalty. "She epitomizes what Hawaiian royalty is — in all its dignity and intelligence and art."
Palace officials will be watching the case. A hearing is tentatively scheduled for Feb. 8.


text:
A Contestant On "The Bachelorette" Pleaded Guilty To A Sex Crime
Lincoln Adim groped a woman on a cruise ship right before Becca Kufrin's season aired.
By Stephanie McNeal
Stephanie McNeal BuzzFeed News Reporter
Posted on June 15, 2018, at 1:29 p.m. ET
A contestant on the current season of The Bachelorette pleaded guilty to assault and battery of a woman shortly before the show aired last month, causing some viewers to call for changes in the show's vetting process.
Lincoln Adim's conviction stemmed from an incident involving an unidentified woman on a cruise ship in 2016.
Jake Wark, the press secretary for the Suffolk County District Attorney's Office in Massachusetts, told BuzzFeed News that Adim was a passenger on the ship in Boston Harbor when the incident occurred on May 30, 2016.
The victim reported to police that Adim "groped and assaulted" her, Wark said, adding that the woman was a stranger to Adim.
State police arrested Adim that same day, and he was arraigned the next day.
On May 21, Adim pleaded guilty to indecent assault and battery charges, Wark said. A judge sentenced him to a year in jail on a suspended sentence for two years.
This means that if Adim abides by the conditions set by the judge, he will not serve his prison time. These conditions include staying away from the victim and attending three Alcoholics Anonymous meetings per week, Wark said.
The conviction was first reported by blogger Reality Steve.
The studio behind the show, Warner Bros., told BuzzFeed News in a statement that the incident was missed in a background check performed on Adim:
No one on The Bachelorette production had any knowledge about the incident or charges when Lincoln Adim was cast, and he himself denied ever having engaged in or having been charged with any sexual misconduct. We employ a well-respected and highly experienced third party who has done thousands of background checks consistent with industry standards to do a nationwide background check in this case. The report we received did not reference any incident or charge relating to the recent conviction - or any other charges relating to sexual misconduct. We are currently investigating why the report did not contain this information, which we will share when we have it.
The news of the conviction has some fans of the show calling for more stringent vetting of contestants by the network.
Kelsey Bourgeois, a fan of the show, started a petition on Change.org calling on Warner Bros. to do better. It now has over 4,000 signatures.
"I am sick right now after learning that one of Becca's suitors on the Bachelorette is a convicted felon who committed a sex crime," she wrote. "How in the world did Warner Bros let such a person as Lincoln Adim on the show?"
Adim is still on the show, as of this week's episode, and has been featured multiple times throughout the season with the show's current star, Becca Kufrin.
His bio on the show's website says Adim, 26, is originally from Nigeria but now lives in Los Angeles.
Stephanie McNeal is a social news editor for BuzzFeed News and is based in New York.
Contact Stephanie McNeal at stephanie.mcneal@buzzfeed.com.


The objective is to move through the level, collect gold and defeat the boss. After dying or restarting after a game over you will enter a new random level.
A simplified version of a traditional RPG, designed for mobile devices. You have been shipwrecked, and you need to make your way across an island.
Fight enemies, find treasure and make your way through randomized levels.
This is a very early version at this point, but it shows some of what the game will become.


Here are 4 free online scrolling text GIF maker websites for you. These sites let you add text content of your choice and then you can create scrolling text GIF in vertical or horizontal direction. It depends on the website if it supports horizontal scrolling or vertical scrolling for output GIF. There won't be any watermark in the output GIF which makes these websites more useful.
These sites have their unique features also. For example, you can use some other effects to generate a cool animated text GIF, set background and foreground color of your choice, add custom height n width for output GIF or use pre-defined size, preview GIF, etc.
Let's check these free online scrolling text GIF makers one by one.
Select font, outline, and other font effects in step 1. Just use the available drop down and select a font and style.
Choose a font color or text color of your choice for the output scrolling text GIF in this step.
Use step 3 to select the output size. You can either select standard banner size, LED banner size, default size, or set a custom width and height for output.
Go to step 4 to select animation effect for GIF which would be slide right or slide left. Other effects like swing, flip backward, forward, rotate right, rotate left, etc., are also available, but since we need to create scrolling text GIF, so we must choose slide left or slide right option.
Use the final step to add the custom text.
After that, use Make 3D Text! button and you can preview output scrolling text GIF on the top part. If the output is not good, you can try other options and then finally save the GIF using right-click context menu.
Signbot is a simple website but it generates a very good scrolling text GIF. The output is visible as a scrolling LED display and text is displayed with red color which looks really beautiful. The GIF text or scrolling direction is from right to left.
This website lets you create scrolling text GIF in large, small, or medium size. Everything is very simple. You need to write the text of your choice in the given field, select the width size, and use Generate Sign button. The good thing is you can preview the output before saving it to PC.
Another feature that I like about this website is you can upload the scrolling text GIF to Imgur. The GIF is uploaded publicly. If that's OK for you, then you can try this feature also.
Add long or small text in the text box.
Set maximum width for the output GIF. Preset sizes (100px, 300px, 600px, or 450px) are available to choose from.
Set font size (15px, 30px, 40px, 20px, 45px, etc.) for the output GIF.
Background color by entering color code.
Set these options and use Create Screed button. The output looks really good but I find the scrolling speed is a bit slower than normal. I wish there would be some option to adjust that scrolling speed. Once the output is ready, you can save it to PC or upload it on Imgur and Flickr publicly.
Animizer.net website has some really good features to create a useful scrolling text GIF. Though the number of characters are limited for input text (which is not specified), you can generate a meaningful output. You can select vertical (top to bottom) scrolling animation template from the drop down menu and add text in the associated field. The preview of output scrolling text GIF is also visible on its interface which is a good feature.
Select whether you want to keep the background transparent.
Set a custom foreground color by adding the color code.
Adjust output animation speed using the slider.
Flip output vertically or horizontally.
Play with options and use Generate animation button to preview the output. If the output has come as per your expectations, you can save it to your PC.
Here I close this list which has some very good online scrolling text GIF makers. I like "Signbot" website which is very easy to use and gives output as scrolling LED text. But, based on features, "3DTextMaker" website is better than others. So, you can try all these sites and decide which one would be good for you to create scrolling text GIF.


text:
Q: Qt y Linux - QGraphicsItems con rendimiento bajo Estoy teniendo problemas de rendimiento con el pintado en Qt y los QGraphicsItems en Linux. Se pone muy "trabado" cuando agrego cosas al pintado (grillas y demas). Puse un qDebug en el paint para ver que zona esta dibujando:
void TrackFarmGraph::paint(QPainter *painter, const QStyleOptionGraphicsItem *item, QWidget *widget)
{
    Q_UNUSED(widget);

    qpenOld = painter->pen();

    painter->setClipRect(item->exposedRect);
    painter->setClipping(true);
    qDebug() << item->exposedRect;

    for(int x = 0; x < polys.count(); x++)
    {
        PolyTrack pl = polys.at(x);
        painter->setPen(penRect);
        painter->drawPolygon(pl.p);
        painter->setPen(penLines);
        painter->drawLine(pl.l);
    }
    painter->setPen(qpenOld);
}

Y la salida del qDebug es siempre la misma, siendo que yo hago zoom y escalo la vista. Es correcto lo que estoy haciendo?. Por otro lado, definir variables en el paint, tambien es motivo para que el rendimiento sea malo?. En caso de ser inevitable la definición de variables en el paint, es conveniente que sean punteros (son mas veloces)?. Gracias por aclararme estas dudas, dado que el sistema es en tiempo real y necesito que pinte con mayor fluidez.

A: Los problemas de rendimiento pueden venir por varias vías:

*

*Bounding boxes: No has indicado cómo calculas el tamaño del QGraphicsItem. Si el tamaño es excesivo se lanzarán eventos de repintado más a menudo y los mismos involucrarán más pixeles... hecha cuentas. Siempre y cuando su coste no sea totalmente privativo es preferible reducir el bounding box al mínimo imprescindible.

*Uso de cliping: Ya lo estás aplicando... así que esta parte me la ahorro. Lo único que la llamada a setClipping es redundante e innecesaria.

*Antialiasing: Vale que los gráficos quedan más chulos... pero esta capa de procesamiento tiene un coste que puede resultar excesivo. Al igual que sucede con el primer punto, no indicas nada al respecto, así que ignoro si lo estás aplicando o no.

*No preguntes por el tamaño del vector en cada iteración. Aunque los vectores pueden estar bastante optimizados... no tiene por qué ser así. Si en cada iteración tienes que preguntar por el tamaño del vector estás malgastando unos ciclos que pueden resultar preciosos:
for( int x=0, max=polys.count(); x<max; x++ )

*No hagas copias innecesarias. En cada iteración del bucle estás creando una copia de un objeto de tipo PolyTrack y esto es algo no solo innecesario sino además contraproducente. Considera usar referencias (constantes a poder ser):
PolyTrack const& pl = polys.at(x);

*Conjugando los dos últimos puntos, si usas C++11 o superior plantéate usar el for basado en rangos:
for( PolyTrack const& pl : polys )

*No uses Q_UNUSED. Esta macro está pensada, principalmente, para evitar warnings al usar RAII. Si no vas a usar un parámetro de la función es preferible comentar el propio parámetro. Con esto puedes conseguir liberar un registro del procesador y reducir la necesidad de tirar de la pila (más lenta):
void TrackFarmGraph::paint(QPainter *painter, const QStyleOptionGraphicsItem *item, QWidget * /*widget*/)

Dicho esto:

Es correcto lo que estoy haciendo?

El escalado es algo que realiza el siguiente nivel. Es ajeno a QGraphicsItem, luego el debe dar siempre las mismas coordenadas.

Por otro lado, definir variables en el paint, ¿también es motivo para que el rendimiento sea malo?

Depende... Si se acaban usando registros para gestionar esas variables y su construcción es gratuita (como sucede con los tipos nativos)... el rendimiento no se va a ver penalizado.

En caso de ser inevitable la definición de variables en el paint, es conveniente que sean punteros (son mas veloces)?

Eso de que los punteros son más veloces que las variables es mentira, al menos si se toma como una respuesta canónica.
Por supuesto que es más rápido copiar un puntero que un objeto pesado:
struct POO
{
  int array[100];
};

POO var1, var2, *ptr1, *ptr2;
POO var2 = var1; // Se copia el array -> pesado
ptr1 = ptr2;     // Se copian direcciones de memoria -> ligero

Pero los tiempos son los mismos cuando se trabaja con tipos más pequeños:
int var1, var2;
int *ptr1, *ptr2;

// Ambas operaciones consumen los mismos ciclos de reloj
var1 = var2;
ptr1 = ptr2;

Y, por otro lado, los punteros añaden una indirección que debe ser resuelta cada vez que se pretenda acceder a información del objeto apuntado. Dicho de otra forma, los punteros penalizan el acceso al objeto:
POO objeto;
POO* ptr;

objeto.funcion(); // Llamada directa -> más rápido
ptr->funcion(); // Añade indirección -> más lento

Una posible excepción a este caso serían las funciones virtuales... pero no creo que sea un tema que se vaya a aplicar en tu caso.

redpajama_set_name: RedPajamaStackExchange


The Virtue is one killer looking sunglass. The frame is durable and functional, offering rubber temples and nose pieces. The matte black frame wraps slightly around the face and the smoked lenses have a special coating to keep smudges and water off for clear vision. The shatter resistant polycarbonate lenses also have an anti-fog coating to ensure visual clarity. The Virtue comes with a microfiber pouch and zipper carrying case.


text:
Q: travis setup heroku command yields repository not known error I am working through the Raild 4 In Action book.  On Chapter 13: Deployment, page 464 it is having you do the final configuration for a deployment hook for travis to push to your heroku app upon passing specs.
The book already had me do the following:

*

*I entered the .travis.yml file in the root of my app.

*I then went to https://travis-ci.org/ and signed in via my Github account.

*I then flipped the switch to on for my project.

*Now when I do a git push I notice on travis that it does a build and it runs all my specs.  It looks like it all passes.  At the bottom it says Done. Your build exited with 0.
Ok now the deployment hook with heroku.

*

*I do gem install travis to get the gem onto my computer

*I then do travis login with a github token and it says: Successfully Logged in!
Now I run travis setup heroku and here is the error:
repository not known to https://api.travis-ci.org/:my_repo_name/my_app_name

The book does not mention this error message.  I attempted looking around and couldn't find anyone who had run into this problem.
How can I get the travis setup heroku command to do what it is supposed to do?
Update
The issue is that my repo's name on Github is Ticketee and travis-ci for some reason thought it was ticketee.  The answer was to open up the following file from the root of my app:
vim .git/config

At the bottom I saw the following
[travis]
    slug = my_git_user_name/ticketee

and I had to change it to this:
[travis]
    slug = my_git_user_name/Ticketee

A: Looks like you're having a similar issue as described in this travis ci issue
To solve this issue, add the following in your .git/config file:
[travis]
    slug = <user/org>/<repo>

make sure slug matches the case-sensitive URL structure you see in Travis.


text:
Home Tags 4.22
Tag: 4.22
The CW has released nineteen Promotional Photos of Supergirl episode "The Quest for Peace" (4.22) that will be aired Sunday, May 19 at 08:00-09:00...
The CW has released a 20-seconds Teaser Trailer of Supergirl episode "The Quest for Peace" (4.22) that was aired Sunday, May 19 at 08:00-09:00...
The CW reveals Official Synopsis Of Supergirl episode The Quest for Peace
D. Bevers - May 4, 2019
The CW has released the Official Synopsis of Supergirl episode "The Quest for Peace" (4.22) that will be aired Sunday, May 19 at 08:00-09:00...
Fox released Preview Clip of Gotham episode No Man's Land
Fox has released four Preview Clip of Gotham SEASON FINALE episode "No Man's Land" (4.22) that was aired on Thursday, May 17 at 08:00-09:00...
The CW released Preview Clip of The Flash episode Think Fast
The CW has released a 90-seconds Preview Clip of The Flash episode "Think Fast" (4.22) that will be aired on Tuesday, May 15 at...
Fox released Teaser Trailer of Gotham episode No Man's Land
Fox has released a 20-seconds Teaser Trailer of Gotham SEASON FINALE episode "No Man's Land" (4.22) that will be aired on Thursday, May 17...
The CW released Teaser Trailer of The Flash episode Think Fast
The CW has released a 30-seconds Teaser Trailer video of The Flash episode "Think Fast" (4.22) that will be aired on Tuesday, May 15...
The CW released Promotional Photos Of The Flash episode Think Fast
The CW has released thirteen Promotional Photos of The Flash episode "Think Fast" (4.22) that will be aired on Tuesday, May 15 at 08:00-09:00...
Fox released Promotional Photos of Gotham episode No Man's Land
Fox has released nineteen Promotional Photos of Gotham SEASON FINALE episode "No Man's Land" (4.22) that will be aired on Thursday, May 17 at...
The CW reveals Official Synopsis of The Flash episode Think Fast
D. Bevers - April 27, 2018
The CW has released the Official Synopsis of The Flash episode "Think Fast" (4.22) that will be aired on Tuesday, May 15 at 08:00-09:00...


Scenes From Last Night's Sold-Out Amanda Palmer Show At Granada Theater.
Amanda Palmer fans aren't quite like those of any other artist. When she asks them for money to make a new album? They break online crowd-funding records. When she needs them to join her band on stage? They oblige. When she needs some art drawn on her body? They show up ready, Sharpies in hand.
And while each of these things has drawn heaps of criticism from grumpy fucks in the industry and fellow mid-level musicians alike, none of that backlash has appeared to effect Palmer much. Nor has it put any type of dent into her fans' fervent support of her efforts.
So it was to be expected that there would be plenty of meeting and greeting between Palmer and her fans as the noted musician, speaker, blogger, renaissance woman extraordinaire performed in front of sold-out crowd at the Granada last night. Hey, it just comes with the territory. Her fans love her, and she loves them right back.
Previous ArticleDumps Like a Truck.
Next ArticleThrown For A Loop.


text:
Ambulance bomb kills 95, wounds 158 in Kabul: official
The blast happened in an area where several high-profile organizations, including the European Union, have offices.
Afghan war widows pay heavy price for husband's sacrifice
Afghan women have lost not only a loved one, but also their main income earner.
Kidnapped US-Canadian couple returns to Canada
They had three children while in captivity.
October 14, 2017 | 10:48 am GMT+7
Obama approves broader role for U.S. forces in Afghanistan
President Barack Obama has approved giving the U.S. military greater ability to accompany and enable Afghan forces battling a resilient Taliban insurgency, in a move to assist them more proactively on the battlefield, a U.S. official told Reuters.
U.S. says late Taliban leader was planning attacks on Americans
U.S. President Barack Obama approved the drone strike that killed Mullah Akhtar Mansour because the Taliban leader was overseeing plans for new attacks on American targets in Kabul, the Afghan capital, U.S. officials said on Monday.
May 24, 2016 | 09:16 am GMT+7
Obama in Hanoi: Taliban leader is dead
U.S. President Barack Obama confirmed on Monday that the leader of the Afghan Taliban had been killed in an American air strike, an attack likely to trigger another leadership tussle in a militant movement already riven by internal divisions.
May 23, 2016 | 02:05 pm GMT+7
Afghans confirm death of Taliban leader in U.S. drone strike, many details remain unexplained
Afghan officials have confirmed the death of Taliban leader Mullah Akhtar Mansour in a U.S. drone strike, but many details remain unexplained.
Afghan Taliban meets on succession after U.S. drones target leader: Taliban sources
The Afghan Taliban's leadership council met on Sunday to start considering succession after a U.S. drone strike in Pakistan targeted its commander, two Taliban sources told Reuters, in the strongest sign yet the insurgency had accepted he was dead.
Afghan Taliban leader likely killed in US drone strike in Pakistan
The United States conducted a drone strike on Saturday against the leader of Afghan Taliban, likely killing him on the Pakistan side of the remote border region with Afghanistan in a mission authorized by U.S. President Barack Obama, officials said.
China eyes deeper military ties with Afghanistan
China wants to have deeper military ties with Afghanistan, including counter-terrorism intelligence cooperation and joint drills, a senior Chinese officer told a visiting Afghan envoy.
April 21, 2016 | 10:18 am GMT+7


Corned Beef Hash is a hearty way to start off your day, and the perfect, simple use for leftover corned beef.
The origins of a simple breakfast hash trace their roots to England, so, really, we're getting closer to Irish heritage with this breakfast than we do with a Corned Beef and Cabbage dinner.
Americans adopted this hearty breakfast dish during the World War II era, when it became a popular breakfast dish in New England and across the country.
A hash was an easy way to re-purpose fresh meats and other staples during a time when those ingredients were being rationed heavily. Corned beef is an affordable cut, so it was quite commonly chopped up with potatoes and other vegetables to make this dish.
It's the chopping that is truly key to a hash, since we get the term hash from the French word hacher, meaning to chop. How finely chopped the ingredients are varies by cook, some leave their ingredients diced, like we do, while others will finely mince the meat or use shredded potatoes. The options lead quite a bit of variety in how the final state of this dish appears.
We've taken the concept of hash and added in leftovers from our Corned Beef and Cabbage dinner. The corned beef gives this hash a wonderful, salty, corned-beef flavor, which mingles perfectly with the mild potatoes and hearty eggs.
Toast up some Irish Soda Bread, and you have yourself a tasty (and easy) breakfast!
In a large, cast iron skillet, heat onions with 2 Tbsp water. Sweat for 1-2 min over medium high heat.
Remove the lid and mix in the corned beef, salt, and pepper. Cook for 2-3 minutes, until corned beef is heated through.
Make 3 indentations in the hash mixture and crack an egg into each. Cover and cook 3-5 minutes, until the eggs are done to your liking.
Serve warm with some Irish Soda Bread.
Thank you for this recipe! My husband loves corned beef hash from a can. I've tried to discourage the cans because of the high sodium and fat content. I'm fixing ruebens for the kids when the come in Wednesday. This will be great for Thanksgiving morning breakfast. My husband will be thrilled! Thank you again!!
Wonderful! We hope you all enjoy it!
This is a dish I want to try. My mum used to cook a similar dish when I was a child, only we called it Corned Beef Pie. She would mince the onion & corned beef, & then mixed them into freshly cooked homemade mashed potato. The mixture then went into a dish & put in the oven until the top of the pie was nicely browned & slightly crispy. For me, it was 'heaven on a plate'.
Denise, Thanks for sharing your memory! Your mom's version sounds like a fun cross between corned beef hash and shepherd's pie. It does sound like heaven on a plate!


We listen carefully to fully understand your needs and aspirations. We will then work with you to find a unique and tailored solution to your requirements.
Our goal is to do an excellent job for you and be your No 1 partner in delivering successful projects together.
Priority Engineering Ltd was established to service the Electrical, Mechanical and Instrumentation sectors. Our guiding principles are Safety, Quality & Delivery.
Here at Priority we believe there is a void in the market place for a company who can offer a focused service delivery to a number of key clients. The company has been founded with the core values of honesty, integrity and collaborative working at the centre of everything we do.
We share the same goals as our clients. A safe and successfully delivered project.


Advisors: On-Site Registration and Liability Release Forms for the 2018 National Conference – UNITY, Inc.
Advisors, please download the attached forms. The Medical Authorization and Liability Release form must be signed by a parent or legal guardian if the participant is a minor. Keep the completed form with you during the conference.
The On-Site Registration form is only for those registering at the conference. This form includes signature lines for: Commitment to Participate and Liability Release, Medical Authorization and Liability Release, and Photographic Release. The conference is expected to have the largest number of attendees in UNITY's history, so to save time, please complete before starting the on-site registration process.


Many clients come to see Leonie after a visit to their General Practitioner who has suggested having a Better Access Mental Health Care Plan, which allows eligibility for a Medicare rebate and helps with the out of pocket costs of psychology sessions. Many private health insurance companies also offer a rebate.
The medical model which psychology is a part of, is focussed on disease and not well being and rarely on preventative care. Whatever are the issues you are seeking help for, there is also an opportunity to explore and make changes in both your inner and outer worlds in a supportive and professional space designed for you.
Through exploring your past and current life story or narrative, you become aware of unhelpful outdated thoughts and beliefs that effect how you feel and behave. These beliefs are usually formed when we are children and need to be examined and updated to who you are today and also who you want to be, in line with your values.
Leonie's focus in your therapy together is your empowerment: helping you "change your mind" and learn highly effective strategies. These strategies can become life-long tools to help you navigate life's challenges. Skills such as Cognitive Behavioural Therapy (CBT), helps you understand the connection between your thoughts feelings and behaviour. Emotional Freedom Technique, Mindfulness, relaxations skills, meditation and Self Compassion skills enable you to develop a healthy relationship with yourself which then flows out positively to your other relationships and all aspects of your life.


text:
package printer

import (
	"context"
	"fmt"

	"github.com/pkg/errors"
	corev1 "k8s.io/api/core/v1"
	rbacv1 "k8s.io/api/rbac/v1"
	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
	"k8s.io/client-go/kubernetes/scheme"

	"github.com/vmware-tanzu/octant/internal/util/kubernetes"
	"github.com/vmware-tanzu/octant/pkg/store"
	"github.com/vmware-tanzu/octant/pkg/view/component"
)

// ServiceAccountListHandler is a printFunc that prints service accounts
func ServiceAccountListHandler(ctx context.Context, list *corev1.ServiceAccountList, options Options) (component.Component, error) {
	if list == nil {
		return nil, errors.New("service account list is nil")
	}

	cols := component.NewTableCols("Name", "Labels", "Secrets", "Age")
	ot := NewObjectTable("Service Accounts",
		"We couldn't find any service accounts!", cols, options.DashConfig.ObjectStore())
	ot.EnablePluginStatus(options.DashConfig.PluginManager())
	for _, serviceAccount := range list.Items {
		row := component.TableRow{}
		nameLink, err := options.Link.ForObject(&serviceAccount, serviceAccount.Name)
		if err != nil {
			return nil, err
		}

		row["Name"] = nameLink
		row["Labels"] = component.NewLabels(serviceAccount.Labels)
		row["Secrets"] = component.NewText(fmt.Sprint(len(serviceAccount.Secrets)))
		row["Age"] = component.NewTimestamp(serviceAccount.CreationTimestamp.Time)

		if err := ot.AddRowForObject(ctx, &serviceAccount, row); err != nil {
			return nil, fmt.Errorf("add row for object: %w", err)
		}
	}

	return ot.ToComponent()
}

type serviceAccountObject interface {
	Config(ctx context.Context, options Options) error
	PolicyRules(ctx context.Context, options Options) error
	Secrets(ctx context.Context, options Options) error
}

type serviceAccountHandler struct {
	serviceAccount  *corev1.ServiceAccount
	configFunc      func(context.Context, *corev1.ServiceAccount, Options) (*component.Summary, error)
	policyRulesFunc func(context.Context, *corev1.ServiceAccount, Options) (*component.Table, error)
	secretsFunc     func(context.Context, *corev1.ServiceAccount, Options) (*component.Table, error)
	object          *Object
}

var _ serviceAccountObject = (*serviceAccountHandler)(nil)

func newServiceAccountHandler(serviceAccount *corev1.ServiceAccount, object *Object) (*serviceAccountHandler, error) {
	if serviceAccount == nil {
		return nil, errors.New("can't print a nil service account")
	}

	if object == nil {
		return nil, errors.New("can't print service account using a nil object printer")
	}

	s := &serviceAccountHandler{
		serviceAccount:  serviceAccount,
		configFunc:      defaultServiceAccountConfig,
		policyRulesFunc: defaultServiceAccountPolicyRules,
		secretsFunc:     ServiceAccountSecrets,
		object:          object,
	}
	return s, nil
}

func (s *serviceAccountHandler) Config(ctx context.Context, options Options) error {
	out, err := s.configFunc(ctx, s.serviceAccount, options)
	if err != nil {
		return err
	}
	s.object.RegisterConfig(out)
	return nil
}

func (s *serviceAccountHandler) Secrets(ctx context.Context, options Options) error {
	table, err := s.secretsFunc(ctx, s.serviceAccount, options)
	if err != nil {
		return err
	}

	if table == nil {
		return nil
	}

	s.object.RegisterItems(ItemDescriptor{
		Func: func() (component.Component, error) {
			return table, nil
		},
		Width: component.WidthFull,
	})

	return nil
}

// ServiceAccountSecretCols are columns for a service account secrets table.
var ServiceAccountSecretCols = component.NewTableCols("Name", "Type")

// ServiceAccountSecretPlaceholder is the table placeholder for service account secrets.
const ServiceAccountSecretPlaceholder = "No secrets"

// ServiceAccountSecrets generates a service account secrets table. It will return a nil
// table if there are no secrets.
func ServiceAccountSecrets(
	ctx context.Context,
	account *corev1.ServiceAccount,
	options Options) (*component.Table, error) {
	if account == nil {
		return nil, fmt.Errorf("service account is nil")
	}

	if len(account.Secrets) == 0 {
		return nil, nil
	}

	table := component.NewTable("Secrets", ServiceAccountSecretPlaceholder, ServiceAccountSecretCols)

	for _, ref := range account.Secrets {
		key := store.Key{
			Namespace:  account.Namespace,
			APIVersion: "v1",
			Kind:       "Secret",
			Name:       ref.Name,
			Selector:   nil,
		}
		secret, err := options.DashConfig.ObjectStore().Get(ctx, key)
		if err != nil {
			return nil, fmt.Errorf("unable to get secret %s: %w", key, err)
		}
		secretType, _, err := unstructured.NestedString(secret.Object, "type")
		if err != nil {
			return nil, fmt.Errorf("get secret type: %w", err)
		}

		secretLink, err := options.Link.ForObject(secret, secret.GetName())
		if err != nil {
			return nil, fmt.Errorf("generate link for object ref: %w", err)
		}

		row := component.TableRow{
			"Name": secretLink,
			"Type": component.NewText(secretType),
		}
		table.Add(row)
	}

	return table, nil
}

// ServiceAccountHandler is a printFunc that prints ServiceAccounts
func ServiceAccountHandler(ctx context.Context, serviceAccount *corev1.ServiceAccount, options Options) (component.Component, error) {
	o := NewObject(serviceAccount)
	o.EnableEvents()

	s, err := newServiceAccountHandler(serviceAccount, o)
	if err != nil {
		return nil, err
	}

	if err := s.Config(ctx, options); err != nil {
		return nil, errors.Wrap(err, "print service account configuration")
	}

	if err := s.Secrets(ctx, options); err != nil {
		return nil, fmt.Errorf("print service account secrets")
	}

	if err := s.PolicyRules(ctx, options); err != nil {
		return nil, fmt.Errorf("print policy results")
	}

	return o.ToComponent(ctx, options)
}

// ServiceAccountConfiguration generates a service account configuration
type ServiceAccountConfiguration struct {
	context        context.Context
	serviceAccount *corev1.ServiceAccount
	objectStore    store.Store
}

// NewServiceAccountConfiguration creates an instance of ServiceAccountConfiguration
func NewServiceAccountConfiguration(ctx context.Context, serviceAccount *corev1.ServiceAccount, options Options) *ServiceAccountConfiguration {
	return &ServiceAccountConfiguration{
		context:        ctx,
		serviceAccount: serviceAccount,
		objectStore:    options.DashConfig.ObjectStore(),
	}
}

// Create creates a service account configuration summary
func (s *ServiceAccountConfiguration) Create(options Options) (*component.Summary, error) {
	if s == nil || s.serviceAccount == nil {
		return nil, errors.New("service account is nil")
	}

	serviceAccount := s.serviceAccount

	sections := component.SummarySections{}

	var pullSecrets []string

	for _, s := range serviceAccount.ImagePullSecrets {
		pullSecrets = append(pullSecrets, s.Name)
	}

	if len(pullSecrets) > 0 {
		view, err := generateServiceAccountSecretsList(serviceAccount.Namespace, pullSecrets, options)
		if err != nil {
			return nil, err
		}

		sections.Add("Image Pull Secrets", view)
	}

	tokens, err := serviceAccountTokens(s.context, *serviceAccount, s.objectStore)

	if err != nil {
		return nil, errors.Wrap(err, "get tokens for service account")
	}

	if len(tokens) > 0 {
		view, err := generateServiceAccountSecretsList(serviceAccount.Namespace, tokens, options)
		if err != nil {
			return nil, err
		}
		sections.Add("Tokens", view)
	}

	summary := component.NewSummary("Configuration", sections...)
	return summary, nil
}

func generateServiceAccountSecretsList(namespace string, secretNames []string, options Options) (*component.List, error) {
	var items []component.Component
	for _, name := range secretNames {
		nameLink, err := options.Link.ForGVK(namespace, "v1", "Secret", name, name)
		if err != nil {
			return nil, err
		}
		items = append(items, nameLink)
	}
	return component.NewList([]component.TitleComponent{}, items), nil
}

func serviceAccountTokens(ctx context.Context, serviceAccount corev1.ServiceAccount, o store.Store) ([]string, error) {
	key := store.Key{
		Namespace:  serviceAccount.Namespace,
		APIVersion: "v1",
		Kind:       "Secret",
	}
	secretList, _, err := o.List(ctx, key)
	if err != nil {
		return nil, errors.Wrap(err, "find secrets for service account")
	}

	var tokens []string

	for i := range secretList.Items {
		secret := &corev1.Secret{}

		if err := kubernetes.FromUnstructured(&secretList.Items[i], secret); err != nil {
			return nil, errors.Wrap(err, "convert unstructured secret to structured")
		}

		if secret.Type == corev1.SecretTypeServiceAccountToken {
			name := secret.Annotations[corev1.ServiceAccountNameKey]
			uid := secret.Annotations[corev1.ServiceAccountUIDKey]

			if name == serviceAccount.Name && uid == string(serviceAccount.UID) {
				tokens = append(tokens, secret.Name)
			}
		}
	}

	return tokens, nil
}

// ServiceAccountPolicyRules generates a service account policy rule
type ServiceAccountPolicyRules struct {
	context     context.Context
	namespace   string
	name        string
	objectStore store.Store
}

// NewServiceAccountPolicyRules creates an instance of ServiceAccountPolicyRules
func NewServiceAccountPolicyRules(ctx context.Context, serviceAccount *corev1.ServiceAccount, options Options) *ServiceAccountPolicyRules {
	if err := options.DashConfig.Validate(); err != nil {
		return nil
	}

	return &ServiceAccountPolicyRules{
		context:     ctx,
		namespace:   serviceAccount.Namespace,
		name:        serviceAccount.Name,
		objectStore: options.DashConfig.ObjectStore(),
	}
}

// Create generates a service account policy rule table
func (s *ServiceAccountPolicyRules) Create() (*component.Table, error) {
	if s.namespace == "" || s.name == "" {
		return nil, errors.New("serviceaccount is nil")
	}

	var roleRefs []rbacv1.RoleRef

	roleBindingRoleRefs, err := s.listRoleBindings()
	if err != nil {
		return nil, err
	}

	roleRefs = append(roleRefs, roleBindingRoleRefs...)

	clusterRoleBindingRefs, err := s.listClusterRoleBindings()
	if err != nil {
		return nil, err
	}

	roleRefs = append(roleRefs, clusterRoleBindingRefs...)

	var policyRules []rbacv1.PolicyRule

	for _, roleRef := range roleRefs {
		key := store.Key{
			APIVersion: "rbac.authorization.k8s.io/v1",
			Kind:       roleRef.Kind,
			Name:       roleRef.Name,
		}
		switch kind := roleRef.Kind; kind {
		case "ClusterRole":
			object, err := s.objectStore.Get(s.context, key)
			if err != nil {
				return nil, err
			}

			if object == nil {
				return nil, errors.Errorf("unable to find %s", key)
			}

			clusterRole := &rbacv1.ClusterRole{}
			if err := scheme.Scheme.Convert(object, clusterRole, nil); err != nil {
				return nil, err
			}

			policyRules = append(policyRules, clusterRole.Rules...)

		case "Role":
			key.Namespace = s.namespace

			object, err := s.objectStore.Get(s.context, key)
			if err != nil {
				return nil, err
			}

			if object == nil {
				return nil, errors.Errorf("unable to find %s", key)
			}

			role := &rbacv1.Role{}
			if err := scheme.Scheme.Convert(object, role, nil); err != nil {
				return nil, err
			}

			policyRules = append(policyRules, role.Rules...)

		default:
			return nil, errors.Errorf("unable to handle role ref kind %q", kind)
		}
	}

	return printPolicyRules(policyRules)
}

func (s *ServiceAccountPolicyRules) listRoleBindings() ([]rbacv1.RoleRef, error) {
	roleBindingKey := store.Key{
		Namespace:  s.namespace,
		APIVersion: "rbac.authorization.k8s.io/v1",
		Kind:       "RoleBinding",
	}

	objects, _, err := s.objectStore.List(s.context, roleBindingKey)
	if err != nil {
		return nil, err
	}

	var list []rbacv1.RoleRef

	for i := range objects.Items {
		roleBinding := &rbacv1.RoleBinding{}
		if err := scheme.Scheme.Convert(&objects.Items[i], roleBinding, nil); err != nil {
			return nil, err
		}

		if s.isMatchSubjects(roleBinding.Subjects) {
			list = append(list, roleBinding.RoleRef)
		}
	}

	return list, nil
}

func (s *ServiceAccountPolicyRules) listClusterRoleBindings() ([]rbacv1.RoleRef, error) {
	roleBindingKey := store.Key{
		APIVersion: "rbac.authorization.k8s.io/v1",
		Kind:       "ClusterRoleBinding",
	}

	objects, _, err := s.objectStore.List(s.context, roleBindingKey)
	if err != nil {
		return nil, err
	}

	var list []rbacv1.RoleRef

	for _, object := range objects.Items {
		roleBinding := &rbacv1.ClusterRoleBinding{}
		if err := scheme.Scheme.Convert(&object, roleBinding, nil); err != nil {
			return nil, err
		}

		if s.isMatchSubjects(roleBinding.Subjects) {
			list = append(list, roleBinding.RoleRef)
		}
	}

	return list, nil
}

func (s *ServiceAccountPolicyRules) isMatchSubjects(subjects []rbacv1.Subject) bool {
	subjectMatched := false
	for _, subject := range subjects {
		if s.isSubject(subject) {
			subjectMatched = true
			break
		}
	}

	return subjectMatched
}

func (s *ServiceAccountPolicyRules) isSubject(subject rbacv1.Subject) bool {
	inNamespace := fmt.Sprintf("system:serviceaccounts:%s", s.namespace)

	apiGroup := "rbac.authorization.k8s.io"

	if subject.Kind == "ServiceAccount" && subject.Name == s.name {
		return true
	} else if subject.Kind == "Group" && subject.Name == inNamespace && subject.APIGroup == apiGroup {
		return true
	} else if subject.Kind == "Group" && subject.Name == "system:serviceaccounts" && subject.APIGroup == apiGroup {
		return true
	}

	return false
}

func defaultServiceAccountConfig(ctx context.Context, serviceAccount *corev1.ServiceAccount, options Options) (*component.Summary, error) {
	return NewServiceAccountConfiguration(ctx, serviceAccount, options).Create(options)
}

func (s *serviceAccountHandler) PolicyRules(ctx context.Context, options Options) error {
	s.object.RegisterItems(ItemDescriptor{
		Width: component.WidthFull,
		Func: func() (component.Component, error) {
			return s.policyRulesFunc(ctx, s.serviceAccount, options)
		},
	})

	return nil
}

func defaultServiceAccountPolicyRules(ctx context.Context, serviceAccount *corev1.ServiceAccount, options Options) (*component.Table, error) {
	return NewServiceAccountPolicyRules(ctx, serviceAccount, options).Create()
}

redpajama_set_name: RedPajamaGithub


text:
Media Center Happenings
Whiteboard Quotes
Whiteboard Art
Equipment for Checkout
Online Video Databases
Internet Site for Streaming Video
Documentary Reviews Complete List
Movie Reviews Complete List
TV Show Reviews Complete List
Streaming Documentaries Complete List
LinkedIn Learning Reviews
Software Training Class Reviews
Streaming Documentary Reviews
Find us on Our Social Media
Documentary Review | Tupperware!
October 1, 2019 by mediacenterblog
A story of American ingenuity and the willpower to make something out of nothing. Tupperware! explores the story of two unlikely business partners. A shy, timid inventor and a determined entrepreneur. Two people from enormously different backgrounds use their skills to create a sales empire that would dominate the American economy for decades.
I gave this film a 4 out of 5 stars because it did an amazing job of telling a story through testimonials and videos. The story is told clearly and concisely all while highlighting important people and events that transpired. The only concern I had was how rushed the story was towards the end. \
Written by: Tomas Barriga
Movie Review | Intervista
Intervista ( PN 1995.97 .I7 I73int 2005) is a very peculiar movie about a Japanese film crew that is interviewing an Italian director who is filming his own film. Sound confusing? It was! The film, for the most part, follows this Japanese film crew as they talk with the Italian director. I am not sure how accurate this film is in portraying what it is like to be on a movie set and produce a film, but I did find how they showed it to be quite interesting.
I gave this film a 1/5 star rating because frankly, it did not make very much sense. There was little background information for any of the "characters", and it ended up being quite boring. Imagine this…you are watching a film about a documentary that is being shot by a third party who are interviewing the "actors" you are watching. The film had almost no progression. I would only recommend this film to those who are heavily invested in learning about the media arts.
Written by: Jared McGrail
Movie Review | Corpse Bride
Corpse Bride is a classic Tim Burton movie that is somewhat comparable to his well-known movie, The Nightmare Before Christmas. The movie is about Victor, a young man from a wealthy family, who has been arranged to marry Victoria, a young woman striving to find happiness despite a difficult family situation. On the eve of the wedding, Victor is taken to the underworld where he learns of his new marriage to a Corpse Bride. Victor is caught between these two worlds as he begins to care for his new underworld bride and friends, while still longing to make it back to Victoria.
This is my favorite of all the Tim Burton movies I have seen. It has the signature, Halloween-like feel that we find it Burton's other movies, but is also very unique. I loved the plot of the movie and was hooked from start to finish. The movie has a fun love story tied in and shows a more light-hearted underworld than is traditionally shown in the film industry. There are some important lessons taught throughout such as the power of loyalty and friendliness, and the truth that treating others unkindly leads to ultimate despair. I would recommend this movie to anyone looking for a good Halloween movie, but I would also watch it any other time of the year.
Written by: Jeff Stolk
Documentary Review | Exploring Space: The Quest for Life
September 24, 2019 by mediacenterblog
This documentary tackles the interesting question of whether or not life is possible off of Earth. The documentary features interviews with several experts as they discuss the possibility of other life-forms in the universe. Much of the documentary is centered on the possibility of finding life on Mars, and making Mars habitable for future generations of humans. There are varying opinions and evidences cited throughout, and I feel that there is a good case made for both sides (some supporting the theory of whether Mars could be made habitable, and some claiming that it is not at all reasonable in the foreseeable future).
I thought that this documentary covered an interesting topic and certainly includes thoughts of some very knowledgeable scientists. I enjoyed learning about the research that has already gone into studying the question of whether life exists, or can exist off of planet Earth. While there was certainly some interesting information shared, I found this documentary to be dry. That being said, it was well-made and someone who is more interested in the subject matter would likely find the documentary to be quite enjoyable.
Movie Review | Back to the Future Part II
Back to the Future Part II (PN 1995.9 .S26 B33 2010 pt. 2) is the second film in the Back to the Future trilogy. It starts at the end of the first film in 1985, when Marty's (the main character) friend Emmet Brown "Doc" comes and tells him that he's been to the future. He continues to tell Marty that there is a big problem with his kids in the future and that Marty is the only one who can fix it. Marty must go 30 years into the future to the year 2015 in order to save his kids. This leads to a complex situation involving his son, his dad's nemesis, flying cars, a hover board, and a truckload of manure.
I really liked this movie. I like how it closely ties to the other two movies in the trilogy, and the more you watch the series, the more connections you can find between the films. It is a fast paced movie that keeps you on your toes from start to finish. It takes no time jumping straight into the storyline, which makes things interesting. There are parts in the movie that you think everything has been resolved, and that Marty can return to his own time period, but it always seems to be a false sense of security. I guess that is the problem with time travel. There is always something else that you have to think about! I would give this a 4 out of 5 stars, and recommend it to anyone looking for a fun science-fiction film.
Written by: Kevin Hamilton
Movie Review | Invictus
In this inspiring film we follow Nelson Mandela after he has just been elected president and the South African Rugby team in their efforts to turn everything around in time for the World Cup. Mandela is an extraordinary man who is determined to change South Africa; after having been imprisoned for 27 years, he was now ready to lead the nation, and lead it by example. After he was elected there were some people that wanted to get rid of the national rugby team's colors and name because it represented oppression to them, but Mandela wouldn't allow it as it would only feed the cycle of fear and revenge. The rugby team was saved but they were still terrible and in need of much improvement for the world cup. We get to experience history as Mandela and the Springbok's come together for the good of South Africa.
I thought that this movie was amazing! In my book this is definitely one of the greatest sports films. It had a good balance between sports and the world outside of sports and it was also great to learn about Nelson Mandela and see the inspiring person that he was. I thought that the acting was good; any movie with Matt Damon and Morgan Freeman has to be good. Overall this is a great inspiring film that I would recommend.
Written by: Aaron Conrad
Movie Review | Rocky III
In Rocky III, Balboa is beginning to taste the fruits of his success. While he spends his time enjoying the perks of fame, a new competitor is working his way to the top. Will he have the strength and endurance to take on this new menacing challenger, Clubber Lang? There will be training montages, blood, sweat, more than enough muscle, more sweat, and even more training montages.
This film is a Sylvester Stallone classic, featuring the one and only Mr. T. This classic is filmed well and the acting is at the peak of 80's acting. Because of this, I rated it 5 out of 5 stars and highly recommend it, If you like action, if you enjoy boxing, if you pity da fool, then this is the movie for you. Will Rocky find the eye of the tiger, will he come out on top? Watch it to find out!
Written by: Hannah McBride
Movie Review | The Hobbit: The Battle of the Five Armies
The Battle of the Five Armies is the final installment in The Hobbit trilogy. After finally reclaiming the Lonely Mountain, Thorin Oakensheild falls into a deep sickness of greed as he and the dwarves try to find the arkenstone. As Laketown survivors must deal with the terrible aftermath of the desolation of Smaug, several parties set their eyes on the mountain and it's wealth.
I definitely enjoyed this movie, but it wasn't my favorite in the series. I thought that the fight with Smaug in the beginning was a weird way to start a movie, and would have been better as a finale in the last one. The special effects were still very impressive, as well as all the fight scenes. I also thought that the conclusion of The Hobbit did an excellent job of setting up The Lord of the Rings. I would for sure watch all the movies again.
Written by: Michelle Greenwood
Documentary Review | Legacy
Legacy is a stirring documentary about a family's struggle to overcome hardships on a journey to a better life. At the tragic loss of a loved one, this family's whole life is flipped upside down. Throughout the years following the tragedy, the family is faced with two options—they can either stay dependent on welfare just trying to survive in a dangerous neighborhood, or they can work against the odds to earn a more stable, happier way. The documentary offers an in-depth look at the struggles of gang violence, drug addiction, and poverty and how this family works hard to avoid and overcome these things.
This is a very well-made documentary. It offers a great insight into the life of a family that has had so many hardships thrown its way. For me, the crowning aspect of this documentary is its portrayal of hard work, unity, and hope for a better future (for self and for loved ones) becoming the perfect motivating influences for change. The documentary tackles very real issues and the film-makers chose the perfect family for the desired effects/story. I would recommend this documentary to anyone who may be interested in what life is like in some of the more dangerous neighborhoods of the United States.
Movie Review | The Hobbit: The Desolation of Smaug
After the thrilling ending of The Unexpected Journey comes The Desolation of Smaug, the second installment of The Hobbit series. As the pack of dwarves continue their journey to the Lonely Mountain to reclaim their lost home, Bilbo Baggins falls deeper into the clutches of the Ring. The group must prepare for their encounter with the terrifying dragon, Smaug, who is guarding the mountain and its' treasures. But it appears that other evils are at work, and it is unclear whether the ragtag team will defeat the dragon and restore hope, or perish at the claws of Smaug.
The Desolation of Smaug has been my favorite movie in the trilogy so far. I thought that all the scenes with Smaug in the mountain were terrifying and exciting. The special effects on the dragon looked pretty good too. All fans of the Lord of the Rings and the Hobbit should definitely watch this movie.
Check-out Periods
Audiobooks – 3 weeks
DVDs – 1 week.
DVDs – 2 weeks.
Media References
Film Indexes Online
Library guide for film/media arts
Search for CDs and Audio Recordings
Search for DVDs and Videos on the Film Finder
Reserve a Viewing Room
Reserve a Production Studio
Software Training Lab
Special Collections Motion Picture Archives Film Series
Media Sites
Chat requires JavaScript.


On this 21st edition of SUPERSTAR SCORES, we take a look at one of the most dominant stars in professional wrestling history who went on an unprecedented undefeated streak of 160-0, BILL GOLDBERG.
If you're unfamiliar with how the segment works, here is a quick breakdown: Each edition, a wrestler will be put under the spotlight and rated on a 0-100 scale based on 10 categories that have been broken up into 5 umbrella sections: In the Ring Skills, On the Mic Skills, Appearance, Behavior, and Crowd Reaction. The rating scale is as basic as you can get: 0-1-2-3-4 | 5 | 6-7-8-9-10. It follows the Three-Count Critique method of green being the good, yellow being in the middle, and red being the bad. A perfect 100 is the goal.
Athleticism: Does the person have a good signature moveset and finisher? Can they perform a wide variety of moves on a regular basis and not botch them?
Goldberg was always doing a power game where he didn't need to jump around doing cruiserweight moves, but he also was pretty nimble at times for a guy his size, catching people, tossing them around and such. Sure, his spears sometimes were odd, but everyone has their bad spears from time to time.
Psychology: The wrestler's ability to tell a story in the ring. Do they make you believe it's real or do they forget to sell their injuries properly? Can they make a long match stay interesting and not get boring?
Just with the Athleticism category, Goldberg's matches were built around the concept of him being dominant more than anything else. Very rarely was he booked to do anything other than destroy his opponents, and he understood how to have a fun match doing the same thing over and over again. People ate it up for 160+ matches even though they knew it would just basically be a few slams, a spear and a Jackhammer.
Charisma: If they get a mic, can they cut a promo without stuttering? Are they repetitive or do they keep things fresh?
Goldberg was never a talker, at all. He's pretty bad on the mic. "You're next" was about the best he could muster up and even then, it felt a bit awkward.
Character: Is their gimmick(s) interesting? Can they pull off being both a heel and a face?
I have a problem giving him both a negative and a positive score here, because his gimmick was just "guy who wins" and that's not really good, nor bad. He was normally a babyface, but only because he went up against heels most of the time, so it isn't really a character as much as it is an alignment.
Physique: Are they in the proper shape for their gimmick or are they out of shape? (note: someone like Mabel isn't supposed to look like John Morrison, but Matt Hardy gaining weight deducts his points).
Just look at him. The dude is tall, muscular, and not weird looking.
Entrance: Their music, the pyro if they have any, whatever taunts or actions they do to make it interesting.
I love his WCW theme, his pyro was awesome, and his entrance coming through the back is iconic.
Backstage Professionalism: Are they a locker room leader or do they cause problems behind the scenes? Are they bogged down in politics? Do they put other people over or screw people over?
He's had his problems over the years, complaining about not being used properly, getting into the fight with Chris Jericho and so on. However, I don't remember hearing tons of things that seemed too outrageous.
Public Relations: Does this wrestler project a bad image onto the company with arrests and such, or are they someone that promotes the company well, does charities, talk shows, etc?
He's involved with the ASPCA, started Combat Crate, and even though he's talked some negative stuff about WWE in the past, he doesn't completely trash them like others, which made it easier for him to make his return. I don't recall him ever getting arrested or anything like that, either.
Popularity: How loud are the cheers and boos for them? Do they sell merchandise? Are ratings up or down when they're on screen? How many Twitter and Facebook followers do they have?
If we were doing this score in 1998, he'd be a 10, but his popularity waned a bit over the years. Still, he's one of the biggest stars in WCW history and he was still a big deal in WWE when he came over. Now that he's main eventing Survivor Series against Brock Lesnar, his stock has risen once more.
Credibility: Is this person someone you would see as a main eventer and a future legend or are they doomed to forever be a jobber?
The dude had a 160 match winning streak and only lost it due to a stun gun and interference. Even after that, he very rarely lost and only really due to odd circumstances. He's one of the most protected wrestlers in the history of sports entertainment and a former 2x United States champion, 1x tag champion, 2x world champion and a Triple Crown winner due to that. This guy is the epitome of credible.
FINAL THOUGHTS: This is a damn good score for someone who is a one-trick pony and had a short career. He's one of the biggest stars to ever exist in the business and that helps him a lot, along with being the right guy in the right place at the right time, but whatever the formula consisted of, it worked for what it was supposed to do.
WHAT DID YOUR SCORE TALLY UP TO?
WHO SHOULD WE RATE NEXT?


Just like in most parts of the world, at any tournament or pickup game, there is always a shortage of women in Indian Ultimate. Even a hugely popular tournament like Chennai Heat seems to often struggle finding enough women for all the teams. This in spite of all the clubs in India focusing on mixed Ultimate only!
I cannot begin to fully fathom how frustrating it must be to work hard to get open, have a guy look you off, only for him to immediately throw an incredibly difficult I/O break into the grass, intended for a guy.
It must be incredibly hard to have the same 2-3 guys on your team not throw to you. They'll make a 50/50 throw to some guy who is clearly well guarded. Experiences like that would probably make me not feel valued or a part of the team. Unless I am a determined individual, it is likely that I will find a different team or worse, quit the sport.
If you're trying to recruit and keep ladies make sure you include them and remind those on your team who don't. New women who do not get involved in disc play will not come back to the next practice session. Learn and also encourage the other men on your team to recognize and reward a good cut, and respect women for their abilities.
Usually, new women players tend not to make nearly as many cuts as new men, and so inherently they aren't open as often.
If you are a male player being guarded by an equally athletic male player you'd often have to be open by more than 4-5 yards to ensure that the defender doesn't bid and get to the disc before you. But if you are a woman player it is highly likely that your defender wont make a huge bid for the disc and hence a couple of yards is often all it takes to be open. (Women can and do layout but Indian Ultimate isn't there as yet.) As a handler, don't look for daylight separation – Its not required for a 'safe' throw.
Also, handlers generally are more willing to make risky throws to male receivers because there is a greater 'throwing window' AKA margin for error. The big male receivers, with buckets for hands often bring down anything in the vicinity. Women players, especially beginners, need understanding handlers who can understand their strengths and utilize them.
It is probably somewhat of a handicap trying to demonstrate just how good you are at the sport when you are not involved in the play. The next time she makes a good cut and gets open, throw to her and watch her pouch it safely with a clap catch, textbook style!
Pickup games in Chennai are attended by a lot of male players who have just graduated from college or are 'converting' from football. It is a challenge to explain the "co-ed" aspect of Ultimate to them, let alone the non-contact part. Most of them struggle to embrace the new concepts and have trouble for the first few months. Acknowledge the problem, talk to your team and be supportive, they will come around. Show them what difference a good teammate can make.
Many men, who are good players, seem to be unaware of what to do with their new women. They make some attempt to explain rules and strategies, but, often, won't take the initiative to take it further.
New women players, like all new players, need to have someone they feel comfortable talking to about any questions they have while learning. It is important that they have someone they feel comfortable to go practice throwing with on the weekends, and they have someone to encourage them both on the field and at the party.
This is probably the biggest reason why women who get into ultimate because someone they are close to plays ultimate are far more likely to stick with the sport. Recruiting women is not the issue; retaining them is.
How can you and I change this?
Involve the women players in each game. Encourage them on the field, and give them helpful feedback on the sideline, even if they aren't asking for it.
Foster a team environment that is conversational and be open to ask if players have questions.
Take time out to practice throwing with them on the off days – Solid throws + confidence only come with repetitive practice.
Keep Ultimate fun and help them learn the game – Today, they might have fun and enjoy the social aspects this game brings but they probably won't stick around if they can't stay involved and be competitive on the field.
Stop shouting at people on the pitch. The only players who will stick around are the few who thrive in an environment of being shouted at. Is this what you want for your team?
I find that having women who can handle can change the whole game up. If you are just setting goals for the year – Trying to up the number of women handling could be a useful focus area for your team.
Until we can get this sport to a place where women are valued for their skill rather than their numbers or presence, this problem is likely to continue.
I usually find that it takes a long time for new women players to gain the confidence of the men on a team. Sometimes, even going many games without touching the disc. IMHO, the single biggest thing that can help you and the team is good communication. Conversations with the senior players on your team will help you build your confidence and up your level of understanding of the game. This will also make you feel more a part of the team. Try and understand how the team functions and what the handlers expect to see when on the disc. Getting on the same page as them will ensure that your cuts are rewarded sooner than later. If you still have trouble, seek the support of senior players – On the field, ask if you should look to come in closer or move to another position. After the point, follow up with them and get tips on how to better position myself.
Videotaping games is fantastic way to learn. Sit with your handler and make them walk you through each throw they made to you / looked you off. Listen with an open mind and understand how you can increase your chances of receiving the throw. Understand that the throwing decision is up to the guy with the disc and he cannot reward every cut even if you are open by 40 yards.
Take time out to practice your catching and throwing.
Information Sources: Read up some forums and blogs to further my understanding but drew from my own experiences as well. I have certainly learnt a ton of this from interacting with the women players on the teams I have played on around the world. I have learnt what works and what doesn't thanks in no small part to every woman who has ever played alongside me on Chakraa. I have pissed them off more times than even they can remember. Just ask LP! It IS true that the best way to learn is to teach.
Indian player on a personal mission to keep Ultimate fun and Spirited, his proudest moment in the sport, justifiably, came at The World Championships of Beach Ultimate 2011 (WCBU '11) in Italy, where he represented India in the open division and they won the Spirit Award. Abhinav serves as the Secretary at Chennai Ultimate Frisbee Club, the largest club in the country. Every October, he helps conceptualize and run BULA certified tournament Chennai Heat (A 7v7 co-ed Beach tournament on full size flood-lit fields that draws crowds of over 5000 people!) He trains with fitness coach Arvind Ashok (co-founder of The Quad).
@ultimaterob Don't forget the power that veteran women have in recruiting/retaining new women. Coed teams need leaders of both genders.
Hey great insights! From my experience, having women in positions of leadership is HUGE for retaining women. It may not be even be formal positions of leadership. But women are more likely to notice when other women are being looked off or otherwise disrespected. When the veteran women speak up, it makes a huge difference.
In Lancaster more than a few times we've actually had equal numbers of women and men. One day we had a pickup where we played 5/2 with five women/2 men gender ratio! I can't claim to know exactly how we pulled this off. We have a great community of cool guys here. That helps. At the time I was organizing pickup we also began pickup with 20-30 minutes of skills and drills. Though most people just wanted to play and I got a lot of crap for doing it, I think it had an impact on our retention of women because it gave everyone the opportunity to get a lot of touches on the disc and to improve even when they weren't getting those opportunities in pickup.
Great article! I think your comments and thoughts are applicable to many places in the world where number of women players are still low, not just India, and even some points are applicable even when numbers are high. I agree with Melissa that having women in leadership is hugely important.