text:
Q: Partial Template Specialization using enable_if I am trying to understand how to use type traits with std::enable_if to "enable" partial specializations of a class.  Here is the example code I am attempting to get workingL
#include <type_traits>
#include <iostream>

class AbstractFoo {
public:
    virtual const char* name() const = 0;
};

template <typename T, typename Enable = void>
class Foo;

template <>
class Foo<int> : public AbstractFoo{
public:
    const char* name() const override { return "int"; }
};

template <>
class Foo<char> : public AbstractFoo {
public:
    const char* name() const override { return "char"; }
};

template <typename T>
class Foo<T, typename std::enable_if<std::is_enum<T>::value, T>::type> : public AbstractFoo {
public:
    const char* name() const override { return "enum"; }
};

enum class MyEnum {
    VAL1,
    VAL2,
    VAL3
};

int main() {
    Foo<int> v1;
    Foo<char> v2;
    Foo<MyEnum> v3;

    std::cout << "v1.name()=" << v1.name() << std::endl;
    std::cout << "v2.name()=" << v2.name() << std::endl;
    std::cout << "v3.name()=" << v3.name() << std::endl;

    return 0;
};

My goal is to have specific specializations for certain types (e.g., int and char), but, if the type is an enum, to use my partial specialization.  However, when I attempt to compile this code, I get the following error

error: aggregate 'Foo v3' has incomplete type and cannot be
defined

Which I assume means my specialization was not chosen and thus never becomes defined.  What am I doing wrong?

A: In the declaration of Foo the second template parameter defaults to void. That means that the following variable:
Foo<MyEnum> v3;

is actually
Foo<MyEnum, void> v3;

Now the question is: does this correspond to the specialization you want? Not really, because in your specialization for enum:

*

*std::is_enum<T>::value = true when T = MyEnum

*std::enable_if<std::is_enum<T>::value, T>::type = T = MyEnum
when T=MyEnum
So, for T=MyEnum, your give the specialization for Foo<T, T>, which does not match the variable above.
As noted in a comment, a simple fix is to declare the specialization as
class Foo<T, typename std::enable_if<std::is_enum<T>::value>::type>

In this way, the second template parameter is void when T=MyEnum, so it matches the variable declaration of v3.


text:
Q: Implementing a LongPress progress notification in Windows Phone 7 How can I monitor the progress of a long press on a StackPanel with a Silverlight Toolkit context menu attached?
I have a LongListSelector control. An item's template has a StackPanel with:
<toolkit:ContextMenuService.ContextMenu>
                <toolkit:ContextMenu IsZoomEnabled="True">
                    <toolkit:MenuItem Header="Delete" Click="MenuItem_Click" />
                    <toolkit:MenuItem Header="Upload" />
                </toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>

context menu attached in a standard manner. Whenever a user presses and holds the stackpanel, a context menu appears within the next few seconds.
I want a user to be notified, that the countdown for a context menu pop up is on, by showing them a progress bar on top in a stack panel. An example can be seen here:

More presentative in a video: http://www.youtube.com/watch?v=radnJgI88dA
Can I hook-in to the Press progress to implement it with a Silverlight Toolkit Context Menu? If not, how can I achieve this?
I know that I just need to be Setting a ProgessBar value, but how can I get the events of a progress to be fired? Is starting a count-up with my own timer is the only way?

A: There is no such event in ContextMenu control. You can implement it yourself by handling touch events (such MouseLeftButtonDown, etc.) and a DispatcherTimer to measure elapsed time.
Also, Silverlight Toolkit is an open source library, so you can modify ContextMenu control to have such behavior on all attached ContextMenu where you need it.
UPD:
I created simple animation. Result is like on the video
    <Storyboard x:Name="progress">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(RangeBase.Value)" Storyboard.TargetName="progressBar">
            <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
            <EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="100"/>
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="progressBar">
            <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
            <EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="1"/>
            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>

And there is a logic for manage this animation. Rectangle is a parent of ContextMenu
    private void Rectangle_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        progress.Begin();
    }

    private void LayoutRoot_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        progress.Stop();
    }

redpajama_set_name: RedPajamaStackExchange


APC Firm, the leading Business Firm in Hosur having vast experience in the field of dealing Building Material and Supplies. This is a partnership Firm led by Mr.A.Thomas John who has an experience of more than 25 years in this field.
We are always committed to our customers in terms of providing the right quality, right product, and service in selling as well as after sales too. We follow the motto Always Priority to Customer – APC. We were the 4th generation into this field of business, will assure you the best of quality, service and customer satisfaction.
We are one of the leading Distributors and Dealers of Cement, Steels, Tiles, Sanitary, Paints, Roofing sheets, Faucets, Wooden flooring, Interior Decors, Waterproofing chemicals, Doors, Tiling Solutions & all other hardware items.
We do not deal with any non-standard items in our premises. We do not just sell the product which the customers asks for, instead we ask them their need and supply accordingly. We always welcome direct customers only. Not only we are quality conscious, we understand that our customers are also cost conscious, so we give our customers a quality cost-effective alternative in our business.
To be the most sustainable and competitive company in our industry. A company that is respected by customers, suppliers, employees and even competitors.
It is Our Mission to strive for excellence and prosperity for the mutual benefit of our customers, employees, and communities.


text:
import os
import sys
import smbus
import time
import datetime
import RPi.GPIO as GPIO
import PyCmdMessenger
import subprocess
import gpsd
import threading
import runpy

import Adafruit_Nokia_LCD as LCD
import Adafruit_GPIO.SPI as SPI
import lcd_menu as menu

from queue import Queue
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

cam_range=0b00001111

# Set Rpi.GPIO to BCM mode
GPIO.setmode(GPIO.BCM)

# Channel used to receive MCP interrupts
mcp1_inta_pin = 19
mcp1_intb_pin = 16
mcp2_inta_pin = 26
mcp2_intb_pin = 20

# Set these channels as input
GPIO.setup(mcp1_inta_pin, GPIO.IN)
GPIO.setup(mcp1_intb_pin, GPIO.IN)
GPIO.setup(mcp2_inta_pin, GPIO.IN)
GPIO.setup(mcp2_intb_pin, GPIO.IN)

# Channel used for the buzzer
buzzer_pin = 22
GPIO.setup(buzzer_pin, GPIO.OUT)

# Raspberry Pi hardware SPI config:
DC = 23
RST = 24
SPI_PORT = 0
SPI_DEVICE = 0

#bus = smbus.SMBus(0)  # Rev 1 Pi uses 0
bus = smbus.SMBus(1) # Rev 2 Pi uses 1
Keypressed = False
MCP1 = 0x21
MCP2 =  0x20 # Device address (A0-A2)
IODIRA =  0x00   # IO direction  (0 = output, 1 = input (Default))
IODIRB =  0x01
IOPOLA =  0x02   # IO polarity   (0 = normal, 1 = inverse)
IOPOLB =  0x03
GPINTENA =0x04   # Interrupt on change (0 = disable, 1 = enable)
GPINTENB =0x05
DEFVALA = 0x06   # Default comparison for interrupt on change (interrupts on opposite)
DEFVALB = 0x07
INTCONA = 0x08   # Interrupt control (0 = interrupt on change from previous, 1 = interrupt on change from DEFVAL)
INTCONB = 0x09
IOCON =   0x0A   # IO Configuration: bank/mirror/seqop/disslw/haen/odr/intpol/notimp
#IOCON 0x0B  // same as 0x0A
GPPUA =   0x0C   # Pull-up resistor (0 = disabled, 1 = enabled)
GPPUB =   0x0D
INTFA =  0x0E   # Interrupt flag (read only) : (0 = no interrupt, 1 = pin caused interrupt)
INTFB =  0x0F
INTCAPA = 0x10   # Interrupt capture (read only) : value of GPIO at time of last interrupt
INTCAPB = 0x11
GPIOA =   0x12   # Port value. Write to change, read to obtain value
GPIOB =   0x13
OLLATA =  0x14   # Output latch. Write to latch output.
OLLATB =  0x15

# Set some GPA pins as outputs by setting
#  bits of IODIRA register to 0
bus.write_byte_data(MCP2,IODIRA,0xFF)

# Set output all 7 output bits to 0
bus.write_byte_data(MCP2,OLLATA,0)

# Set GPIOA polarity to normal
bus.write_byte_data(MCP2, IOPOLA, 0)

# Set GPIOB pins as inputs
bus.write_byte_data(MCP2,IODIRB, 0x1F)
# Enable pull up resistor on GPIOB
bus.write_byte_data(MCP2, GPPUB, 0x1F)
#Set GPIOB polarity as inverted
bus.write_byte_data(MCP2,IOPOLB, 0x1F)

# Set outputs all 7 output bits to 0
bus.write_byte_data(MCP2,GPIOB, 0x00)

# no mirror interrupts, disable sequential mode, active HIGH
bus.write_byte_data(MCP2, IOCON, 0b00100010)

#Enable interrupt on port A
bus.write_byte_data(MCP2, GPINTENA, 0xFF)

#Enable interrupt on port B
bus.write_byte_data(MCP2, GPINTENB, 0xFF)

# For the MCP1 :

# Set all GPIOA pins as inputs by setting
#  bits of IODIRA register to 1
bus.write_byte_data(MCP1,IODIRA,0xFF)

# Set GPIOA polarity to normal
bus.write_byte_data(MCP1, IOPOLA, 0x00)

# Enable pull up resistor on GPIOA
#bus.write_byte_data(MCP1, GPPUA, 0xFF)

# Set GPIOB 0-1 pins as inputs
bus.write_byte_data(MCP1,IODIRB, 0x03)
# Enable pull up resistor on GPIOB
bus.write_byte_data(MCP1, GPPUB, 0x0F)
#Set GPIOB polarity as inverted
bus.write_byte_data(MCP1,IOPOLB, 0xFF)

# no mirror interrupts, disable sequential mode, active HIGH
bus.write_byte_data(MCP1, IOCON, 0b00100010)

#Configure interrupt on port A as "interrupt-on-pin change"
bus.write_byte_data(MCP1, INTCONA, 0x00)

#bus.write_byte_data(MCP1, DEFVALA, 0xFF)
#bus.write_byte_data(MCP1, INTCONA, 0xFF)

#Enable interrupt on port A
bus.write_byte_data(MCP1, GPINTENA, 0xFF)

#Enable interrupt on port B
bus.write_byte_data(MCP1, GPINTENB, 0x03)

#Enable mcp1 gpiob output 8 for usb charger
#bus.write_byte_data(MCP1, GPIOB, 0x80)

"""
for MyData in range(1,16):
  # Count from 1 to 8 which in binary will count
  # from 001 to 111
  bus.write_byte_data(DEVICE,OLLATA,0x1)
  time.sleep(1)
  bus.write_byte_data(DEVICE,OLLATA,0x0)
  time.sleep(1)
"""

def my_callback(channel):
    #print('This is a edge event callback function!')
    print('Edge detected on channel %s'%channel)
    #print('This is run in a different thread to your main program')
    global Keypressed
    Keypressed = True

# add rising edge detection on a channel
GPIO.add_event_detect(mcp2_intb_pin, GPIO.RISING, callback=my_callback)
#reset interrupt on mcp, or an already active interrupt
#would disable a new one, rendering the mcp unusable.
bus.read_byte_data(MCP2, INTCAPB)
bus.read_byte_data(MCP2, INTCAPA)

#Hall sensor pin
hall_pin=25

# Set this channel as input
GPIO.setup(hall_pin, GPIO.IN)
GPIO.setup(hall_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

#Hall pulse queue
hall_pulse_queue = Queue()

def hall_callback(hall_pin):
  hall_pulse_queue.put(time.time())
  print('Edge detected on MCP1 Hall sensor pin %s' %hall_pin)
  #temp
  #time.sleep(0.5)
  bus.read_byte_data(MCP1, INTCAPA)
  #bus.read_byte_data(MCP1, INTCAPB)

#GPIO.add_event_detect(hall_pin, GPIO.FALLING, callback=hall_callback)

# add rising edge detection on a channel
GPIO.add_event_detect(mcp1_inta_pin, GPIO.RISING, callback=hall_callback)
#reset interrupt on mcp, or an already active interrupt
#would disable a new one, rendering the mcp unusable.
#bus.read_byte_data(MCP1, INTCAPA)

# add rising edge detection on a channel
GPIO.add_event_detect(mcp1_intb_pin, GPIO.RISING, callback=my_callback)
#reset interrupt on mcp, or an already active interrupt
#would disable a new one, rendering the mcp unusable.
bus.read_byte_data(MCP1, INTCAPB)

class shutter_ctrl(threading.Thread):
    """To send shutter to the cameras"""
    def __init__(self, queue, speed_obj, distance_interval = 0, time_interval = 0, mode = "distance", rate = 0):
        """
        param: queue: A queue.Queue object
        param: time_interval: the time interval between each picture in time-base mode
        param: distance_obj: a speedometer class instance
        param: mode: "distance" or "time" base mode
        param: rate: refresh rate
        """
        threading.Thread.__init__(self)
        self.queue = queue
        self.distance_interval = distance_interval
        self.time_interval = time_interval
        self.min_time = 1
        self.speed_obj = speed_obj
        self.mode = mode if mode == "time" else "distance"
        self.rate = rate
        self.prev_distance = 0
        self.prev_time = time.time()
        self.prev_sht_rtn = time.time()
        self.shutter_count = 0
        self.cam_range = 15
        self._pause = True
        self._stop = False

    def run(self):
        while not self._stop:

            while not self._pause:
                if self.mode == "time":
                    self.time_base()
                elif self.mode == "distance":
                    self.distance_base()
                time.sleep(self.rate)
            time.sleep(self.rate)

    def time_base(self):

        if self.prev_time + self.time_interval <= time.time():
            self.prev_time = time.time()
            print("shutter: {0} for cams {1:b}".format(self.shutter_count, self.cam_range))
            pic_return = mycams.takePic(logqueue, self.cam_range)
            self.shutter_count +=1
            # retardement du prochain déclenchement si la réponse des
            # caméras est trop lente. Il faut ajouter 1 seconde au temps
            # de réponse.
            answer_delay = pic_return[1][1]/1000
            if answer_delay + 1 > self.time_interval:
                self.prev_time += (answer_delay + 1) - self.time_interval

            #TODO tenir compte d'un temps minimum entre la réponse et
            # le prochain déclenchement.
            # A voir si ça ne doit pas plutôt être géré du côté de la gestion
            # des caméras
            #TODO reprendre le code qui vérifie que le déclenchement a eu lieu

    def distance_base(self):
        try:
            time_interval = self.distance_interval / self.speed_obj.speed

        except ZeroDivisionError:
            # when speed is 0, add a very long time
            time_interval = time.time() + 360000

        self.time_interval = time_interval
        #control de l'augmentation de la distance.
        if self.speed_obj.total_distance > self.prev_distance:
            self.time_base()
            self.prev_distance = self.speed_obj.total_distance

        #TODO regarder pourquoi le premier déclenchement après un arrêt
        # du vélo (speed = 0), arrive un peu trop vite.

    def stop(self):
        self._pause = True
        self._stop = True

    def pause(self):
        self._pause = True

    def resume(self):
        self._pause = False

class speedometer(threading.Thread):
    """Speed and distance class, which run in a separate thread
    This class read the pulses from a sensor on a wheel, to compute speed and
    distance.
    Each pulse should be a timestamp and is in a queue.
    """
    def __init__(self, wheel_radius, magnet, queue, rate=0.01):
        """init the class with these parameters
        :param wheel_radius: the wheel radius, in meters
        :param magnet: how many magnets are on the wheel
        :param queue: The queue the class should get pulses timestamps from
        :param rate: Refresh speed rate (default to 10 milliseconds)
        """
        threading.Thread.__init__(self)
        self.pulse_distance = wheel_radius*2*3.1415 / magnet
        self.queue = queue
        self.prev_time = time.time()
        self.total_distance = 0
        self.speed = 0
        self.rate = rate
        self._stop = False

    def run(self):
        while not self._stop:
            self.read_queue()
            time.sleep(self.rate)

    def read_queue(self):

        for pulse_count in range(self.queue.qsize() + 1):
            try:
                pulse_timestamp = self.queue.get(timeout = 2)
                elapsed_time = pulse_timestamp - self.prev_time
                self.speed = self.pulse_distance / elapsed_time
                self.total_distance += self.pulse_distance
                self.prev_time = pulse_timestamp

            except queue.Empty:
                self.speed = 0

            finally:
                pass
                #print("Distance : {0} - Vitesse : {1}m/s".format(self.total_distance, self.speed))
        # Revéfifier la pertinence de cette solution dans les différents cas :
        # Il faut tenir compte de la vitesse de la rotation de la roue
        # ainsi que de la fréquence d'appel de cette méthode
        # Il y a plusieurs cas "délicats" :
        # la fréquence d'appel de la méthode est inférieure à celle de l'arrivée des pulses
        # la fréquence d'appel de la méthode est supérieure à celle de l'arrivée des pulses

    def stop(self):
        self._stop = True

"""
void handleKeypress ()
{
  unsigned int keyValue = 0;

  delay (100);  // de-bounce before we re-enable interrupts

  keyPressed = false;  // ready for next time through the interrupt service routine
  digitalWrite (ISR_INDICATOR, LOW);  // debugging

  // Read port values, as required. Note that this re-arms the interrupts.
  if (expanderRead (INFTFA))
    keyValue |= expanderRead (INTCAPA) << 8;    // read value at time of interrupt
  if (expanderRead (INFTFB))
    keyValue |= expanderRead (INTCAPB);        // port B is in low-order byte

  Serial.println ("Button states");
  Serial.println ("0                   1");
  Serial.println ("0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5");

  // display which buttons were down at the time of the interrupt
  for (byte button = 0; button < 16; button++)
    {
    // this key down?
    if (keyValue & (1 << button))
      Serial.print ("1 ");
    else
      Serial.print ("0 ");

    } // end of for each button

  Serial.println ();

  // if a switch is now pressed, turn LED on  (key down event)
  if (keyValue)
    {
    time = millis ();  // remember when
    digitalWrite (ONBOARD_LED, HIGH);  // on-board LED
    }  // end if

}  // end of handleKeypress
"""
def handleKeyPress():
  print("In handleKeyPress function")
  KeyValue = 0
  time.sleep(0.01)
  global Keypressed, keyDown, keyUp, keySelect, keyBack
  Keypressed = False
  if bus.read_byte_data(MCP2, INFTFB):
    KeyValue |= bus.read_byte_data(MCP2, INTCAPB)
    #clear interrupt

    print(bin(KeyValue))
    if KeyValue & 0b1:
        print("Key_Right")
        #power_up(cam_range)
        #lcd_write_text("Powering up...", 10)
        #lcd_write_text("Cams ready", 5)
    elif KeyValue & 0b10:
        print("Key_Up")
        #power_down(cam_range)
        #lcd_write_text("Powering down..", 5)
        keyUp = True

    elif KeyValue & 0b100:
        print("Key_Left")
        #takePic(cam_range, logqueue, pic_count)
        #lcd_write_text("Picture", 1)
        keyBack = True

    elif KeyValue & 0b1000:
        print("Key_Down")
        keyDown = True

    elif KeyValue & 0b10000:
        print("Key_Center")
        keySelect = True

    #reset interrupt on mcp
    bus.read_byte_data(MCP2, INTCAPB)
    bus.read_byte_data(MCP2, INTCAPA)

  if bus.read_byte_data(MCP1, INFTFB):
    KeyValue |= bus.read_byte_data(MCP1, INTCAPB)
    #clear interrupt

    print(bin(KeyValue))
    if KeyValue & 0b1:
      print("Start switch")
      shutter.resume()
      #power_up(cam_range)
      #lcd_write_text("Powering up...", 10)
      #lcd_write_text("Cams ready", 5)

    elif KeyValue == 0b0 or KeyValue == 0b10000000:
      print("Stop switch")
      shutter.pause()
      #power_up(cam_range)
      #lcd_write_text("Powering up...", 10)
      #lcd_write_text("Cams ready", 5)

    elif KeyValue & 0b10:
      print("Shutter Switch")
      mycams.takePic(logqueue, cam_range)

    #reset interrupt on mcp
    bus.read_byte_data(MCP1, INTCAPB)

# Hardware SPI usage:
disp = LCD.PCD8544(DC, RST, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=2000000))

# Software SPI usage (defaults to bit-bang SPI interface):
#disp = LCD.PCD8544(DC, RST, SCLK, DIN, CS)

# Initialize library.
disp.begin(contrast=40)

# Clear display.
disp.clear()
disp.display()

def splash_boot(pause_time=5):
    # Create blank image for drawing.
    # Make sure to create image with mode '1' for 1-bit color.
    boot = Image.new('1', (LCD.LCDWIDTH, LCD.LCDHEIGHT))

    # Get drawing object to draw on image.
    draw = ImageDraw.Draw(boot)

    # Draw a white filled box to clear the image.
    draw.rectangle((0,0,LCD.LCDWIDTH,LCD.LCDHEIGHT), outline=255, fill=255)

    # Load default font.
    font = ImageFont.load_default()

    # Alternatively load a TTF font.
    # Some nice fonts to try: http://www.dafont.com/bitmap.php
    # font = ImageFont.truetype('Minecraftia.ttf', 8)

    # Write some text.
    draw.text((0,8), ' Welcome to ', font=font)
    draw.text((0,16), 'V4MPOD v2.01', font=font)

    # Display image.
    disp.image(boot)
    disp.display()

    time.sleep(pause_time)

# Clear display.
disp.clear()
disp.display()

def lcd_write_text(lcdtext, timeout=None):
    disp.clear()
    disp.display()
    image = Image.new('1', (LCD.LCDWIDTH, LCD.LCDHEIGHT))
    draw = ImageDraw.Draw(image)
    font = ImageFont.load_default()
    draw.rectangle((0,0,LCD.LCDWIDTH,LCD.LCDHEIGHT), outline=255, fill=255)

    # Write some text.
    draw.text((0,8), lcdtext, font=font)
    disp.image(image)
    disp.display()
    if timeout:
        time.sleep(timeout)
        disp.clear()
        disp.display()

def beep(duration=0.2, pause=0.2, repeat=0):
    for rpt in range(repeat +1):
        GPIO.output(buzzer_pin,1)
        time.sleep(duration)
        GPIO.output(buzzer_pin,0)
        time.sleep(pause)

def led_blink():
    bus.write_byte_data(MCP2,GPIOB,0x80)
    time.sleep(0.1)
    bus.write_byte_data(MCP2,GPIOB,0x00)

class Yi2K_cam_ctrl(object):
    # This class control the Yi2K with an arduino where all camera are connected.
    #TODO: Stocker l'état éteint ou allumé des caméras pour éviter de basculer en mode
    # vidéo par inadvertance.

    def __init__(self, ardu_serial, ardu_baud, cam_range):
        self.ardu_serial = ardu_serial
        self.ardu_baud = ardu_baud
        self.cam_range = cam_range
        self.pic_count = 0
        self.shutter_error = 0
        self.c = None

    def connect(self, serial = None, baud = None):
        if serial == None:
            serial = self.ardu_serial
        if baud == None:
            baud = self.ardu_baud

        try:
            print("Connecting Arduino")
            arduino = PyCmdMessenger.ArduinoBoard(serial, baud, timeout=4)
            commands = [
                    ["KCommandList", ""],
                    ["KTakepic", "bI"],
                    ["KPower_up", "b"],
                    ["KPower_down", "b"],
                    ["KWake_up", ""]
                    ]
            # Initialize the messenger
            self.c = PyCmdMessenger.CmdMessenger(arduino,commands)
            print ("Arduino connecté")

        except Exception as e:
            print("Impossible de se connecter à l'Arduino")
            print(e)

    def takePic(self, log_queue, cam = None):
        if cam == None:
            cam = self.cam_range

        #TODO ajouter un retard si le délai entre le déclenchement précédent
        # et le nouveau est trop court.
        timestamp=time.time()
        self.c.send("KTakepic", cam, self.pic_count +1)
        pic_return = self.c.receive(arg_formats="bLI")
        #print(pic_return)
        if (cam ^ pic_return[1][0]) != 0:
            self.shutter_error += 1
            beep(0.4, 0.1, 2)
            status="cam error"
        else:
            led_blink()
            status="ok"

        #version avec datetime

        print(pic_return[0], pic_return[1][1:3], bin(pic_return[1][0])[2:].zfill(8), datetime.datetime.fromtimestamp(pic_return[2]).strftime('%H:%M:%S.%f')[:-3])
        #version avec time.gmtime
        #print(pic_return[0], pic_return[1][1:3], bin(pic_return[1][0])[2:].zfill(8), time.gmtime(pic_return[2]))

        log_queue.put(str(timestamp) + "," + str(pic_return) + "," + str(bin(cam)) + "," + status + "\n")

        self.pic_count += 1
        return pic_return

    def power_up(self, cam=None):
        if cam == None:
            cam = self.cam_range

        self.c.send("KPower_up", cam)
        time.sleep(6)
        start_return = self.c.receive(arg_formats="b")
        logfile.write(str(start_return) + "\n")
        print(start_return)

    def power_down(self, cam=None):
        if cam == None:
            cam = self.cam_range

        self.c.send("KPower_down", cam)
        down_return=self.c.receive()
        logfile.write(str(down_return) + "\n")
        return self.c.receive()

# Initialize an ArduinoBoard instance.  This is where you specify baud rate and
# serial timeout.  If you are using a non ATmega328 board, you might also need
# to set the data sizes (bytes for integers, longs, floats, and doubles).

"""
try:
    arduino = PyCmdMessenger.ArduinoBoard("/dev/ttyACM0",baud_rate=115200, timeout=4)
    commands = [
            ["KCommandList", ""],
            ["KTakepic", "bI"],
            ["KPower_up", "b"],
            ["KPower_down", "b"],
            ["KWake_up", ""]
            ]
    # Initialize the messenger
    c = PyCmdMessenger.CmdMessenger(arduino,commands)

except:
    print("Impossible de se connecter à l'Arduino")

# List of command names (and formats for their associated arguments). These must
# be in the same order as in the sketch.
"""
def takePic(cam, log_queue, pic_id=1):
    #TODO ajouter un retard si le délai entre le déclenchement précédent
    # et le nouveau est trop court.
    timestamp=time.time()
    c.send("KTakepic", cam, pic_id)
    pic_return = c.receive(arg_formats="bLI")
    #print(pic_return)
    if (cam ^ pic_return[1][0]) != 0:
        beep(0.4, 0.1, 2)
        status="cam error"
    else:
        beep(0.1)
        status="ok"
    #version avec datetime
    print(pic_return[0], pic_return[1][1:3], bin(pic_return[1][0])[2:].zfill(8), datetime.datetime.fromtimestamp(pic_return[2]).strftime('%H:%M:%S.%f')[:-3])
    #version avec time.gmtime
    #print(pic_return[0], pic_return[1][1:3], bin(pic_return[1][0])[2:].zfill(8), time.gmtime(pic_return[2]))

    log_queue.put(str(timestamp) + "," + str(pic_return) + "," + str(bin(cam)) + "," + status + "\n")

    global pic_count
    pic_count += 1
    return pic_return

def picLoop(cam, pic_nbr, pause, logqueue):
    t = threading.currentThread()
    for i in range(pic_nbr-1):
        if  getattr(t, "do_run", True):
            takePic(cam, logqueue, i)
            time.sleep(pause)
        else:
            break

def start_Timelapse():
    global timelapsethread
    timelapsethread=threading.Thread(target=picLoop, args=(cam_range, 100000, 1.3, logqueue,), name="Picloop")
    timelapsethread.start()

def stop_Timelapse():
    global timelapsethread
    timelapsethread.do_run = False

def power_up(cam=0b00000001):
    c.send("KPower_up", cam)
    time.sleep(6)
    start_return = c.receive(arg_formats="b")
    logfile.write(str(start_return) + "\n")
    print(start_return)

def power_down(cam=0b00000001):
    c.send("KPower_down", cam)
    down_return=c.receive()
    logfile.write(str(down_return) + "\n")
    return c.receive()

def start_gnss_log():
    subprocess.call(["gpspipe -d -R -o ~/Documents/Sessions_V4MPOD/`date +%Y-%m-%d_%H.%M.%S`.nmea"], shell=True)

def stop_gnss_log():
    subprocess.call(["killall", "gpspipe"])

def show_log():
    lcd_write_text(logfile.readline()[-4:], 5)
    menu.display_img(current_img, disp)

def gnss_fix():
    gpsd.connect()
    mode=0
    while mode < 3:
        try:
            packet=gpsd.get_current()
            mode = packet.mode
        except:
            pass

    print("Gnss Fix")
    time.sleep(10)

def gnss_localization():
    gpsd.connect()
    timer= 0
    while timer < 5:
        try:
            packet=gpsd.get_current()
            gnss_info = str(packet.position()[0]) + "\n" + str(packet.position()[1]) + "\n" + packet.time[-13:]
            lcd_write_text(gnss_info, 1)
        except:
            gnss_info = "Error"
        timer +=1
    menu.display_img(current_img, disp)
    print(packet.position())
    print(packet.time)

def _4Yi_set_clock():
    try:
        runpy.run_path("/home/pi/V4MPod/raspberry/Yi2k_scripts/_4Yi_set_clock.py")
        logfile.write("Yi set clock: OK" + "\n")
        beep(0.1)
    except:
        logfile.write("Yi set clock: Can't set clock, communication error" + "\n")
        beep(0.4, 0.1, 2)

def _4Yi_set_settings():
    try:
        runpy.run_path("/home/pi/V4MPod/raspberry/Yi2k_scripts/_4Yi_set_param.py")
        logfile.write("Yi send settings: OK" + "\n")
        beep(0.1)
    except:
        logfile.write("Yi send settings: Can't send settings, communication error" + "\n")
        beep(0.4, 0.1, 2)

def exit_loop():
    global keepRunning
    keepRunning=False

def power_down_pi():
    exit_prog()
    os.system("sudo shutdown -h now")

def exit_prog():
    #TODO : stop the flush thread
    global keepRunning
    #try:
    #reset interrupt on mcp
    bus.read_byte_data(MCP2, INTCAPB)
    bus.read_byte_data(MCP2, INTCAPA)
    bus.close()
    stop_gnss_log()
    logfile.write("Exiting" + "\n")
    logfile.close()
    flushthread.do_run = False
    GPIO.cleanup()
    print("Exiting program A")
    keepRunning=False
    #except:
    #    print("Erreur en quittant")
    print("Exiting program B")

def open_file():
    global flushthread
    now=datetime.datetime.now()
    filename = os.path.expanduser("~") + "/Documents/Sessions_V4MPOD/cam_log_" + now.strftime("%Y-%m-%d_%H.%M.%S") + ".log"
    logfile=open(filename, "w")
    flushthread=threading.Thread(target=flush_log, args=(logqueue,), name="flushlog")
    flushthread.start()
    return logfile

def flush_log(logqueue):
    #since Python 3.4 file are inheritable. I think it's why
    #flush() alone doesn't work in this thread.

    t = threading.currentThread()
    while getattr(t, "do_run", True):
        time.sleep(10)
        try:
            while not logqueue.empty():
                #logfile.write(logqueue.get())
                logline = logqueue.get()
                print (logline)
                logfile.write(logline)
                logqueue.task_done()
            logfile.flush()
            os.fsync(logfile.fileno())
        except:
            None

def menu_previous_line():
    global menuA
    pos = menuA[-2]
    level = menuA[-1]
    try:
        if pos[level] > 0:
            # monter d'une ligne et rafraichir l'écran
            menuA[-2][menuA[-1]] -= 1  # actualise la position
            if level == 0:
                print(menuA[0][menuA[-2][0]])
            if level == 1:
                print(menuA[menuA[-2][level - 1] + 1][menuA[-2][level]])

    except:
        None

def menu_next_line():
    global menuA
    pos = menuA[-2]
    level = menuA[-1]
    try:
        if level == 0 and (pos[0]+1 < len(menuA[0])):
            menuA[-2][level] += 1  # actualise la position
            print(menuA[0][menuA[-2][0]])
        if level==1 and (pos[level]+1 < len(menuA[pos[level-1]+1])):
            # descendre d'une ligne et rafraichir l'écran
            menuA[-2][level] += 1  # actualise la position
            print(menuA[menuA[-2][level-1]+1][menuA[-2][level]])
    except:
        None

menuA = [[{"Name":"Take Pic", "Func":"mycams.takePic", "Param":"logqueue"},
{"Name":"Power up Cams", "Func":"mycams.power_up", "Param":"cam_range"},
 {"Name":"Power down Cams", "Func":"mycams.power_down", "Param":"cam_range"},
 {"Name":"Start TimeLapse", "Func":"shutter.resume", "Param":""},
 {"Name":"Stop TimeLapse", "Func":"shutter.pause", "Param":""},
 {"Name":"Start cam log", "Func":"logfile=open_file", "Param":""},
 {"Name":"Stop Gnss log", "Func":"stop_gnss_log", "Param":""},
 {"Name":"GNSS Info", "Func":"gnss_localization", "Param":""},
 {"Name":"Set Yi clock", "Func":"_4Yi_set_clock", "Param":""},
 {"Name":"Exit", "Func":"exit_loop", "Param":""},
 {"Name":"Power off PI", "Func":"power_down_pi", "Param":""},

 ],
        [0, 0], 0]

# Main

#splash_boot()
#gnss_fix()
keyDown = False
keyUp = False
keySelect = False
keyBack = False
keepRunning=True
flushthread = None
timelapsethread = None
Timelapse = False

logqueue=Queue(maxsize=0)
back=menu.create_blanck_img()
img_menu_top = menu.create_full_img(menuA[0])
current_img=menu.select_line(img_menu_top, back, 1, disp)
start_gnss_log()
logfile=open_file()

#mybike = speedometer(0.35, 1, hall_pulse_queue)
mybike = None
qq = Queue()
shutter = shutter_ctrl(qq, mybike, time_interval = 1.5, mode = "time")
shutter.start()
mycams = Yi2K_cam_ctrl("/dev/ttyACM0", 115200, 0b00001111)
mycams.connect()

# Loop until user presses CTRL-C

while keepRunning:
    time.sleep(0.05)
    if Keypressed:
        handleKeyPress()
    if keyDown:
        keyDown=False
        menu_next_line()
        current_img=menu.select_line(img_menu_top, back, (menuA[-2][0])+1, disp)
    if keyUp:
        keyUp=False
        menu_previous_line()
        current_img=menu.select_line(img_menu_top, back, (menuA[-2][0])+1, disp)
    if keySelect:
        keySelect=False
        exec(menuA[0][menuA[-2][0]]["Func"] + "(" + menuA[0][menuA[-2][0]]["Param"] +")")
        print("exec done")

print("end of script")

#exit_prog()
#sys.exit()
#TODO ajouter un GPIO.cleanup() à la fermeture du script

redpajama_set_name: RedPajamaGithub


Rate B.O.O.: Bureau of Otherworldly Operations And Earn Movie Points!
B.O.O.: Bureau of Otherworldly Operations is a animation film released in 2015. The film stars Seth Rogen as Jackson Moss, Jennifer Coolidge as Carol Sue and Nigel W. Tierney as Child A.


Modern Steel Construction is the official publication of the American Institute of Steel Construction, Inc. MSC brings its readership in-depth information on the newest and most advanced uses of structural steel in buildings and bridges by focusing on innovative and cost-effective steel designs and the products that help bring them to life. MSC is directed exclusively to professionals in the construction industry who make and influence purchasing decisions—whether they are engineers, architects, building owners, contractors, fabricators, retailers or erectors. MSC is the only magazine in the United States devoted exclusively to the design and construction of steel-framed structures.


text:
Girl Underground Music
Serving locals and cats everywhere
GUM Picks
O.T.R.
All photos specifically taken for GUM must be attributed with Girl Underground Music. Please see 'Terms and Conditions' for more information.
Album Reviews Re-Discover
Mind Monogram Maüs EP Review
by janette
Artwork by: Melissa Reyna
With a well deserved momentum building up this year, Los Angeles dream-pop locals, Mind Monogram, return with a sophomore EP, Maüs, to follow up their 2015 debut EP, Moments in Time, and invite listeners to a personal and exploratory approach this time around.
Edgar A. Ruiz (Vocalist/Guitarist), Christian Caro (Guitar), Bryan Mejia (Drums) and Richard Delgado (Bass) successfully follow-up their last release and continue to push themselves sonically through detail orientated riffs, craft, and of course, intricate story lines. While Moments in Time held exactly that, snapshots of life saved into music notes, the last EP was confined to their one assigned state of time. As beautiful as Moments in Time was, the true artistry is to grow with each installment, musically and individually.
Maüs, ironically, carries freedom in the form of what may weigh a human down, such as fear, insane and dogmatic questioning , temptation and addiction, and lastly self-esteem issues. Each abstract feeling is characterized within the 5 tracks, noting a more personal approach than Moments in Time. Despite the notable gradual approach to stray away from narrative based themes, Mind Monogram's natural talent is with story-telling, and Maüs is a perfect example of the balance between music and tales.
Opening the album, we are welcomed to a dream-state of mind with "Maüs." Hazy, ethereal sounds, introduces the star, Maüs, hero or foe, only disclosing that vultures are waiting for him, a well executed set-up for the EP. With slight sympathy towards the fate of Maüs, the next track "Between the Lines" explodes from the start, becoming one of the stronger, and more fast-paced tracks on the EP. Nothing is held back from each member, and Ruiz's vocals rise in angst against tight, rapid drumming, and psychedelic guitar riffs. Each build becomes stronger than the previous and propels into a torpedo of sonic swirls and maniacal lines: "And to my own surprise, I see / That you will never be free / And now, your mind belongs to me / And when I choose I'll set you free."
Continuing their minimalist approach, similar to "Maüs," the instrumental and vocal driven track "Howls" consumes a listener's attention for it's musical construction and delivery. Of course, the EP includes the single "Weeping Willow" and continues the reflective narrative with dreamy escapades.
Despite the EP's alternative rock approach, a track that stands out for it's pop feel would be "Friend." At first listen, this wasn't a personal favorite, yet as a whole, "Friend" and its placement acts as a refreshing break, and diverse stance for the band's ability. As upbeat as the track is, it's deceitful. Upon reading the lyrics, temptation and addiction come into play as the jingle sings about a "friend" and falls from it's initial greeting as "Good Morning" to an eerie "Good Mouring."
Wrapping up the end of the EP, a bit of rhythmic Latin sounds emerge as a hidden track, featuring Gary Bramlett of Furcast. Tied with a clear visual representation of their sound, artwork done by local Pomona artist Melissa Reyna, Maüs is a well-designed EP in all of its' elements, as Mind Monogram begins to break out of their shell.
Note: Line-up change occurred after the release of Maus, and we have kept Delgado's name for the sake of credit.
Share The Dopeness
Tagsalternative rock • Chamber Pop • dream pop • EP Review • Furcast • inland empire • local music • locals • Los Angeles • Maus • Mind Monogram • minimalist • psych pop
About janette
Janette Ayub is a former disc jockey and wing enthusiast that collects cats in her spare time. She is also a recovering carnivore.
girlundergroundmusic.com
1 comment on "Mind Monogram Maüs EP Review"
Pingback: 'You Can't Half-Ass a Prayer': AM in the PM Bends Time as Mind Monogram Plays Catch-Up – Girl Underground Music
Now Tweetiing
Follow Girl Underground Music on HYPE machine
Follow GUM's SoundCloud
GUM Things

redpajama_set_name: RedPajamaCommonCrawl


Image Title: Propane Fire Bowls Lp Pits Pit Grill Ideas Kick Ady Pertaining To Designs 10. Filename: propane-fire-bowls-lp-pits-pit-grill-ideas-kick-ady-pertaining-to-designs-10.jpg. Image Dimension: 800 x 800 pixels. Images Format: jpg/jpeg. Publisher/Author: Quentin Padberg. Uploaded Date: Monday - May 07th. 2018 16:47:14 PM. Category: Architecture. Image Source: bhg.com.
Tap The Thumbnail Bellow to See Related Gallery of "Propane Fire Bowls Lp Pits Pit Grill Ideas Kick Ady Pertaining To Designs 10"


A compelling and thought provoking feature documentary, UNLIKELY FAMILY tells the heartwarming story of a church in the heart of America's "bible belt" that decided to throw off the shackles of guilt, shame and fear carried in the shadows of the faith community to not only create a place where they are finally free to worship together in the open, but also serve as a beacon of hope to those who share their gut-wrenching experiences of attempting to draw near to a loving God in religious organizations where soul quenching compassion is too often so difficult to find. By displaying "unlikely strength" to bring to fruition their "unlikely idea" in one of the most "unlikely places," UNLIKELY FAMILY does not allow even the most conservative religious zealots the opportunity to ignore the "unlikely faith" of a group of "unlikely disciples," nor the "unlikely triumph" they have achieved.
Logline: Follow this Unlikely Family as it challenges the archaic ideology that being openly gay — and Christian — is incompatible.


One, it is a very large, historic specimen, spanning a winding pedestrian alley, as well as the road and tram tracks on either side. Fun fact, the tree must have been planted around 1870 when the old town wall was demolished. The moat was then filled with rubble and in this section had a rather lovely, mixed-species alignment of trees planted on it.
And the second, the blue monstrosity in the background is the block of flats that my parents moved to back when we move to Switzerland from the UK in the early seventies. I have a vivid memory from when I must have been about three or four years old, watching some guys from the balcony were doing tree work right there in the alley. I seem to remember it involving cavities – which makes sense as these were after all the salad days of tree surgery!
I thought this was rather pleasing, talk about closing the loop! I kept an eye open for a kid watching us from one of the balconies, but maybe this was simply too much to ask for.
As a reminder, here is a teaser that Vito put together for this year's vertical-connect in Meinrigen, Switzerland. For more info go to vertical-connect.ch. Stunning location, loads to do, lots of people to meet and topics to discuss – including simultaneous translation between German, French and English.
Consider yourself warmly invited – oh yes, and you can thank me later.
Here is a live feed of the session I did earlier today with Nick Bonner at the Arborfest in Asheville, NC on his micro rigging set-up. This is as concept I had seen Bernhard Schütte of the Munich School in Germany use before, but not something I have ever had the opportunity to try, so I enjoyed this opportunity to have a play, thanks, Nick.
Quite a few years back we did an inspection on a nineteenth century chimney that was part of an old brewery here in Basel. The chimney had rather disconcertingly started spitting bricks and its condition was… questionable. I will spare you the gory details of the story, but put it this way, it was quite an adventure getting up there and moving around the chimney.
What struck me, as is often the case with old buildings, is how sometimes they only seem to be holding together out of habit. In this case the mortar between the bricks was being washed out, climbing up the inside of the chimney you could see chinks of light in many places where there was simply no mortar left. Give me a tree any day!
The parallel that struck me was to the wear you can sometimes find when inspecting equipment. Friction hitch cordage, for instance. Oftentimes you will look at the eye to eye sling, think it looks a bit weary but otherwise fine, for the mantle to then fall apart soon after. What is going on here? Well, in the Ocean Polyester eye to eye slings, for instance, the mantle is braided, made up of Aramid and Polyester, the core is braided Polyester (PES). You cannot die Aramid, so that is the yellow-ish part of the mantle, the PES is the green.
I have written this before, but what seems to give you the ability to dose the exact degree of friction in friction hitch cordage is the PES. High-modulus cordage on the other hand tends to be much more on/ off and less easy to dose. The reason for having Aramid in a friction hitch cord is heat resistance. The combination of PES and Aramid gives you the characteristics you are looking for, responsive handling as well as heat-resistance. By and by in use, the PES part of the mantel will be melted away, leaving you with Aramid, at which point in time the hitch starts to run less nicely on the line, you start to lose function – whilst still retaining the full strength of the core!
The link to the chimney above is how cordage can also apparently be intact, but that once you start plucking apart the mantle of a friction hitch cord which seems well-used but otherwise ok, the whole thing will simply disintegrate. This shows how Aramid – besides all its strengths – is a brittle fibre, which that has the tendency break when bent frequently. Yet that is acceptable in a wear part that will be replaced on a regular basis, the same is true of its low UV tolerance. Before this becomes an issue the hitch will be due to be replaced. Conversely, the same cannot be said of a device or assembly with a longer intended life-span, such as a lanyard or a false crotch.
Then there was the bridge below, which I came across during a gear inspection of a treeMOTION, it had been in use about one and a half years. I take every opportunity I get to pull apart old bridges to try to gain a better understanding of the variables which are in play when it comes to how they age. In this instance, the mantle was quite worn and distinctly flattened. The intermediate cover also showed quite a bit of wear, though no material was lost on either of them. The core showed similar wear.
I would suggest that this is quite a long time to wait before replacing a bridge, yet was positively surprised by the condition of the cordage.
When it comes to assessing wear parts in your PPE, I would strongly encourage you to identify and understand them, to heed manufacturer recommendations, inspect and maintain them diligently – and to replace them sooner rather than later – after all, the cost of the replacement parts is not that high, especially considering the potential risks that not doing so could entail.
Do not use as an indicator the fact that a component looks ok to draw the conclusion that it is ok. Do not be shy to dig a bit deeper and to look closer.
On crane removals always use the same crane company, usually the same type of crane, the MK80, and the same operator. This has proven to be a good combination, meaning you do not have to redefine procedures every time before you can get started. This was also the crane we used for the removal of the beech beginning of February I wrote about a couple of days ago.
Friday there were intermittent gusts of wind of quite variable strength, one of these caught the MK at precisely the wrong moment, almost shearing the boom off. In view of the fact that the crane was set up right next to the motorway and the boom was now hanging over traffic, this led to the busy motorway having to be closed for the whole of Friday afternoon. Far from ideal.
I am not quite sure what the take-away lesson from this is. Well, obviously, that cranes and wind do not mix well. But to be fair these were tricky conditions, it was not as though there was continuous gusts, they were few and fairly spaced out – but when they came they were strong. I also suspect that what happened here was a perfect storm in the sense that a strong gust caught the crane at exactly the wrong moment.
The main thing I take away from seeing a tool I am familiar with looking so very broken is that thinking positive is all very well, yet sometimes it can be a good idea to consider situations from a glass half empty point of view, not assuming everything will go as well as possible or as planned.
Interestingly I had cancelled a job the day before due to the weather forecast: a very large London plane right in the centre of town that is due for a canopy reduction, removal of dead wood etc. The canopy is very wide, spanning a road, two tramlines with overhead power lines, a busy pedestrian area and the entrance and exit to a public underground parking space. For organisational reasons we were really committed to do this last Thursday, as that was the day after the carnival ended here and the bicycle parking spaces below the tree would be clear, which would be convenient. The forecast for Thursday remained obstinately bad during the whole week, strong winds and rain from mid-morning onwards. The client for this job is the council, they had their crew lined up, also a security person for the public transport company to supervise the work around the power lines and the trams, so quite a bit of organisation had gone into the job already.
The closer the date came the uneasier I became, working scenarios back and forth in my head. Then I realised I was applying glass half full-type planning optimism. Ok, it will be a bit wet, but we will bosh it out, everything will go perfectly and we'll be fine.
This kind of thinking has to be a red flag. The tree in question is a good thirty meters tall, fine to climb when dry, less easy in the wet, add wind into the mix and things start to look more than just a bit sketchy. I realised that my assessment of the situation was being biased due to trying to accommodate a date dictated by (justified) organisational concerns of the council. Taking a step back though brought back to the front of my mind the facts that this is challenging climbing in a challenging environment – and that therefore from a risk-assessment point of view I could not justify performing this kind work in adverse conditions. When weighing up operational versus organisational considerations, the safety aspect of the operational angle trumps the organisational one of having to shuffle dates.
I am not saying any of the considerations above are relevant to the crane accident, yet it brought home to me how easy it is to get fixated on a target, especially if you are already invested in it and you "only" need to do this or that to achieve it. This is the moment to take a deep breath, maybe get a second opinion on it, consider alternatives or options – and most certainly not to cut corners. In this case, the responsible people in the council were very understanding when I explained what the issue was, so we have rescheduled the work on the tree for in two weeks, hopefully in better conditions – this makes it more fun, and safer.


text:
Tomás Palacios named new Director of the Microsystems Technology Laboratories (MTL)
The Microsystems Technology Laboratories (MTL) will now be helmed by a new director.
MIT Circuits and Systems Seminar Series
Title: Tools for designing some exciting chips Speaker: Borivoje Nikolić Host: Vivienne Sze Date: Wednesday, November 30, 2022Time: 10:00 AM to 11:00 AM Location: 36-462 (Allen Room) For zoom link,…
Recent chair announcements within EECS
The Department of Electrical Engineering and Computer Science (EECS) recently announced the following crop of chair appointments, all effective July 1, 2022. Karl Berggren has been named the…
Massachusetts Microelectronics Internship Program: a big focus on critical tiny components
EECS Alliance–backed program seeks to get more Massachusetts students into the microelectronics game
2022 MacVicar Faculty Fellows named
Professors Kamrin, Lang, McGee, and Shoulders are honored for exceptional undergraduate teaching.
School of Engineering welcomes new faculty
Sixteen new professors join the MIT community, with research areas ranging from robotics and machine learning to health care and agriculture.
Asada, Daniel, Shah Named Fellows of IEEE
Among the newly selected Fellows of the Institute of Electrical and Electronics Engineers (IEEE) are three members of the MIT community: Harry Asada, Ford Professor of Engineering in…
Meet the 2021-22 Accenture Fellows
The 2021-22 Accenture Fellows are bolstering research and igniting ideas to help transform global business.
Tiny machine learning design alleviates a bottleneck in memory usage on internet-of-things devices
New technique applied to small computer chips enables efficient vision and detection algorithms without internet connectivity.
2021 EECS Awards
It's nearing the end of 2021, and we want to celebrate the accomplishments and contributions of our incredible EECS community by sharing some of the awards given by…


This page contains links to pages of interest to developers.
Mercurial -- Version control scheme.
MXE -- Cross-compiling to Windows.
gdb -- debugger. Useful to obtain stack traces.
Debugging Octave -- particularly .oct files using gdb.
valgrind -- memory leak detector, profiler etc.
ccache -- cache compilation across builds.
This page was last edited on 3 October 2018, at 10:49.


The Royalton Condominiums at 1700 Duke Street is a four-story condominium building. It features 116 units, with efficiency, one- and two-bedroom floor plans.
Each residence at the Royalton Condominiums includes a chef-caliber kitchen with 42-inch cabinets, granite countertops, and premium appliances. Enclosed by dramatic window walls, the condominiums feature 10-foot ceilings and an abundance of closet space. The ground floor of the building houses a lobby as well as a cutting edge fitness center, high-tech residential library, and a grocery store. Clark also built two-and-a-half levels of below-grade parking.


Bob took Henry to Brick Fair this weekend. It's in Chantilly, Virginia, and is a huge Lego festival.
Henry has been excited to go for days, and has been busy building all sorts of original spaceships in anticipation (although visitors can't bring in their own builds).
Henry and Bob got caught in the rain waiting to get in, and had to get themselves some new matching t-shirts, and then they looked all around.
Henry ended up leaving today with two new kits (one pictured above). I can't wait to hear what tomorrow brings!


text:
STRESS POSITION - Review By Greg Klymkiw - Creepy Canuck Avant-Garde Thriller with Guantanamo overtones serves up visceral shocks and astounding, imaginative visuals in its claustrophobic space. An interesting bourgeois perspective that isn't wholly exploited keeps the pic from being a solid grand slam.
Just a little higher & this fella's getting an unwanted penile implant
or a very uncomfortable butt-plug.
This is a very sick man.
VERY, VERY sick.
Stress Position (2013) ***
Dir. A.J. Bond, Scr. A.J. Bond
Starring: A.J. Bond, David Amito, Margeurite Moreau
At first you think you're possibly watching an Ulrich Seidl-inspired documentary with delightfully youthful pretensions as two young gentlemen face each other in gorgeously lit and composed profile shots. They engage in a casual conversation about who they are, how they met, what they do and how they've been inspired to engage in a perverse psychological experiment. Their inspiration to plunge into this experiential enterprise was borne out of previous conversations about enhanced torture methods in the notorious Guantanamo Bay and how they might be able to conduct and survive such inhuman and immoral torments. A.J. (writer-director Bond) happily wins a rock, paper, scissors toss and his pal David (David Amito) must be the first to succumb to the torture. There is a substantial cash prize at stake, but also the strength of character victory achieved by the person who doesn't crack first. When we enter an elaborately designed movie set with a bizarre metallic (and delectably phallic) structure in the middle of a blazing white room, adorned with a huge two-way mirror and populated with hooded figures manning a variety of cameras, we pretty much abandon the notion of this being a twee mock-doc and feel we're entering the world of a nasty thriller - a kind of Michael Haneke on crack, if you will. And then, the torture begins.
It's harrowingly vicious and personal. From simple spitting in the face, through to denial of washroom privileges to bondage and demands of self-inflicted pain to generate self portraits upon the white floor with bodily parts and, uh, fluids. As the torture intensifies, the friendship between the men appears to have a lot left unsaid until now.
Entering the mix is a chilly babe-o-licious ice goddess (Margeurite Moreau) behind the scenes. She's A.J.'s partner in torture and she's the arbiter of what's real and what isn't. She pushes A.J. to not fake it, so that David will, in turn, not be faking it. She demands that she has to believe what she's seeing. A.J. comes to his senses (if one wishes to call them that) and begins to push the torture to such extremes that even our Valkyrie-like babe is taken aback.
Eventually, the tables turn.
And it ain't pretty.
This man is a sick-fuck!
Stress Position is, for the most part an effective and entertaining thriller. It's unfortunate that the tale doesn't push the political implications of the two male characters and their actions within the bourgeois context they're both clearly derived from. There's a sense of a wasted opportunity to take this so much further. As well, it sometimes feel like the film is actually holding back on really going the distance in terms of the sick-o-meter.
Given that it's a low budget affair with little of the usual nonsense that plagues even indies, one keeps waiting for us to travel along the paths of true demented nastiness like, for example, the brilliant Carré blanc by Jean-Baptiste Léonetti or the Soska Sisters' astonishing American Mary. By hammering home both their respective political bents with utter extremities of depravity, both of those movies take us to genuinely shocking places that eventually yield surprising cores of humanity. Stress Position never goes there and yet it feels like a movie that wants to go there. In the end, the movie feels a lot colder and clinical than I think it needed to be.
In spite of this, though, the movie is dazzlingly shot and designed and the performances, especially by Bond (this guy could surely moonlight as a character actor in roles of total scumbaggery), are always engaging. Even more happily, the film is bereft of that horrendous Canadian tweeness that plagues so much of the country's output and importantly, one feels like we're watching the work of a filmmaker with a voice as opposed to that annoying tendency of too many Canadian directors looking to generate their "Look Ma, I can use a dolly and direct series television" calling card nonsense.
Watching the film, you at least feel you're on the ground floor of a filmmaker who's new and exciting, rather than some competent loser-hack looking for a gig.
Stress Position opens theatrically at the Magic Lantern Carlton Cinema in Toronto on April 18, 2014 and will hopefully roll out across the rest of the country soon.
Published by Greg Klymkiw at 4/16/2014 07:37:00 pm
Labels: 2013 , A.J. Bond , Avant-Garde , Canada , Greg Klymkiw , Magic Lantern Carlton Cinemas , Psychological Thriller , Thriller
▼ Apr ( 32 )
METAL MACHINE MUSIC ON LITHIUM: Greg Klymkiw's Ful...
SURVIVAL LESSONS: THE GREG KLYMKIW STORY - Review ...
UKRAINE AND WOMEN at HOT DOCS 2014 - Part One and ...
PINE RIDGE - Review By Greg Klymkiw - HOT DOCS 201...
UKRAINE IS NOT A BROTHEL - Review By Greg Klymkiw ...
UKRAINE IS NOT A BROTHEL Review By Greg Klymkiw - ...
LOVE ME - Review By Greg Klymkiw - HOT DOCS 2014 -...
DIVIDE IN CONCORD - Review By Greg Klymkiw - HOT D...
OLGA, TO MY FRIENDS - Review By Greg Klymkiw - HOT...
THE ENGINEER - Review By Greg Klymkiw - HOT DOCS 2...
THE CONDEMNED - Review By Greg Klymkiw - Hot Docs ...
THE BOY FROM GEITA - Review By Greg Klymkiw - HOT ...
JUST EAT IT: A FOOD WASTE STORY - Review By Greg K...
THE SECRET TRIAL 5 - Review By Greg Klymkiw - HOT ...
ART AND CRAFT - Review By Greg Klymkiw - HOT DOCS ...
WHITEY: THE UNITED STATES OF AMERICA V. JAMES J. B...
THE FACE OF LOVE - Review By Greg Klymkiw and Juli...
STRESS POSITION - Review By Greg Klymkiw - Creepy ...
THE BATTERY - Review By Greg Klymkiw - Clearly tal...
INVESTIGATION OF A CITIZEN ABOVE SUSPICION - Petri...
TARANTULA - Review By Greg Klymkiw - Food, Gloriou...
SORCERER (New Digital Restoration of the 1977 Clas...
OCULUS - Review By Greg Klymkiw - "ABSENTIA" Direc...
DOWNTIME - Review By Greg Klymkiw - The forgotten,...
THE GALAPAGOS AFFAIR: SATAN CAME TO EDEN - Review ...
THE TERMINAL MAN - Review By Greg Klymkiw - Neglec...
CAPTAIN AMERICA: THE WINTER SOLDIER - Review By Gr...
THE GREAT BEAUTY (Criterion Blu-Ray) - Review By G...
THE LOST HIGHWAY (Theatrical Directors' Cut) - Rev...
THE GREAT FLOOD - Review By Greg Klymkiw - B/W foo...
THE UNKNOWN KNOWN - Review By Greg Klymkiw - Moe D...
ICE SOLDIERS - Review By Greg Klymkiw - Dreadful C...


Is there room for lifting when you are training for a half marathon?
This past weekend, I met up in Memphis with Coach Jenny to run the St. Jude Half Marathon. The run was really an excuse to go see her, meet her family, and vacation. And by vacation, I mean eat at all the great places in Memphis!
I try to run most weekends whether I have a race or not. It keeps up my lung capacity and helps my asthma. It has its purpose but I don't love running; I love lifting. The change I experience from lifting is more tangible. I can see it, feel it.
I wrote up my own running plan to taper up a mile every few weeks before the race, topping out at 12 miles. Unfortunately, I got sick and wasn't able to run for the 3 weeks before the race. I saved what energy I did have for lifting. It took priority.
I did a pretty good job of maintaining my metrics. I stayed within a half inch. I tried to make sure to save extra calories for the day of the run and the day after to help with hunger. I kept up with my weekday lifting schedule, although some days there just was not much gas in the tank.
I didn't have a personal best time for the race but it was not my slowest half either! I finished the half marathon in 2:05 which was a pleasant surprise. John has always said that a strong muscle is a fast muscle. Lifting does pay off for running!
The best part of the race was the course. It was amazing! We ran by the Mississippi River, down Beale Street, and through the St. Jude campus where millions of children have been and will continue to be cared for. I will never forget it.
Though Jenny and I have hung out many times together as we have become close friends, our families had never met. Our kids and husbands became fast friends. We hit all the sites and spent our down time learning how to finger knit along with the kids. We even went to an NBA game. Everyone had a blast!
It was an amazing trip! I am so thankful for the friends I have found through Venus and I look forward to more trips in the future.
Randy and I both laughed at how I found probably the 10,000 ways how not to lose weight! Although the victory is still sweet for me, you don't have to take 15 years and wait until you are 50 years old like I did.
As a young child I grew up in a poor family with four siblings and a single mom who tried her hardest to care for us under extreme adversity. This was in the 1960's and although we lived in the land of abundance it did not always make it to our table.
This was back when bringing food stamps to the store felt shameful yet my mom held her head high and did what she could to provide for us. I remember how she treated all the food in the refrigerator as a precious commodity.
Circa 1969, I am on the far left and that is my identical twin on the far right.
We didn't go out to eat much and she prepared healthy meals for us and packed our school lunches. She would get mad if we tried to skip breakfast and she was always there in the morning to cook something simple like one fried egg and a piece of toast with butter.
We didn't have a lot of snacks. On occasion we might get a treat and go to taco bell. I laugh at the memory of it because there were 5 or 6 menu items to choose from, all pictured up on the overhead wall. Looking back, I think she had it right back then.
But I also remember her making us popcorn and placing it in a big bowl in the middle of a round table. All of us kids sat around the table and scarfed it down as quickly as we could afraid that others would get more.
Overall I think this season of my life taught me to appreciate the food we had and to not mindlessly eat.
The next season of learning about food happened for me in the foster homes I lived in after that. I was fortunate to live with a Filipino family and an Italian family who both taught me how to cook their ethnic foods.
I was always ambitious and loved to be the one who cooked dinner and receive the praise for the meal. We prepared our food at home and going out to eat was a rare treat. At this point I started eating more and eating seconds was encouraged in both families, but I was young enough and luckily wasn't too chubby (yet).
This was probably where learning about food portions started becoming distorted for me.
Me at California International Marathon a while back.
My first high school job was as a summer camp counselor and I decided then that I loved the outdoors and being physically active.
I started my first full time job at a high tech company during my senior year of high school. The company I worked for encouraged physical activity and the work environment was like a college campus. There was a par course and running trail, gyms, locker rooms, showers, basketball and volley ball courts, and even a softball park.
I took an aerobics class in the campus gym when I was 19 years old and that is when I met a 50 year old instructor who had the body of a teenager.
The image of her always stuck in my mind and I decided I wanted to be like her when I was 50.
I didn't stick with the aerobics class because it didn't fit my schedule but I learned that music made exercise more fun.
I started running outside and lifting weights at the gym and bought my first Walkman. Walkman's were expensive and it was a big clunky thing that used cassette tapes and ran on double A batteries but it was well worth the investment. It helped me look forward to exercise (If you are not feeling like working out, music will always give you that needed pump).
If you are like me then you may also hate running and even weight lifting. However, if you stick to it for some time, you will start seeing some amazing results and the positive effect exercise can have on your mood and life in general, and you WILL LOVE IT.
The Slow Weight Gain Creeping up, Sounds Familiar?
The fact that I spent my lunch hour exercising meant I had to pack my food rather than go to lunch with other employees.
For years I packed my food and ate when I could during breaks. These were habits that serve me well today. What I didn't realize was that my portions were still too big and I ate too much.
I exercised hard and at one point realized I had run six miles a day, six days a week for 10 years, along with weight lifting and other physical activities.
This was in the 1980's when eating fat free and high carb was the in thing and so I did this for many years. The memory makes me cringe now. All the running made me hungry and I ate too much.
I ate this way for years while running marathons and couldn't figure out why I was not the athlete that I wanted to be.
As time went on my weight kept doing the slow creep up so I tried several popular diets which only worked temporarily and some didn't work at all.
I finally just got sick of it all and made up my own diet with healthy foods I enjoy and smaller portions.
I ate my meals from small desert plates and bowls. I stopped eating in the evenings. I started calling what I did mini-meals and mini-fasts and I lost 40 lbs. Then I found Eat Stop Eat, The Venus Index Workout, and the Venus Index Community.
I recently read the Anything Goes Diet. I highly recommend this book to anyone interested in losing weight or maintaining fitness. I found this book to be amazingly insightful and John Barban covers all bases. Honestly the book is so good that I can't see how you wouldn't succeed if you actually read the book and followed the principles. It gave me some new ideas for my own maintenance plan.
Even though we still have so much diet confusion and conflicting advice in the media it seems like the simple truth is buried there, eat less, move more.
After attempting various diets and eating restrictions over the years I have learned to cherry pick from them and found what works for me. Some days I temporarily change things up and eat low carb or try something different.
Still, my all-time favorite books about thinking of successful ways to eat are John Barban's Anything Goes Diet, Brad Pilon's Eat Stop Eat, and Bethenny Frankel's "Naturally Thin".
Before and After. Slowly the weight crept up year after year, but the Venus Factor gives you hope.
Don't get discouraged by failures.
Every successful person has failures and part of why they are successful is that they learn from their mistakes.
It is just like Thomas Edison inventing the light bulb. You don't have to reinvent the light bulb or the wheel.
The tools are right here right now. Using the available tools may not stop you from all your mistakes, but you can keep your chin up and learn from them. Most likely these tools will prevent some wasted effort and you won't have to wait until you are 50 years old to achieve your dream.
If I find 10,000 ways something won't work, I haven't failed. I am not discouraged, because every wrong attempt discarded is another step forward.
Since you don't have to learn the 10,000 ways how not to lose weight like I did, what are you waiting for?
It is never too late to follow your dreams!


text:
package org.apache.gearpump.streaming.state.impl

import org.scalacheck.Gen
import org.scalatest.mock.MockitoSugar
import org.scalatest.prop.PropertyChecks
import org.scalatest.{Matchers, PropSpec}

import org.apache.gearpump.Time.MilliSeconds

class WindowSpec extends PropSpec with PropertyChecks with Matchers with MockitoSugar {

  val windowSizeGen = Gen.chooseNum[Long](1L, 1000L)
  val windowStepGen = Gen.chooseNum[Long](1L, 1000L)
  val timestampGen = Gen.chooseNum[Long](0L, 1000L)
  property("Window should only slide when time passes window end") {
    forAll(timestampGen, windowSizeGen, windowStepGen) {
      (timestamp: MilliSeconds, windowSize: Long, windowStep: Long) =>
        val window = new Window(windowSize, windowStep)
        window.shouldSlide shouldBe false
        window.update(timestamp)
        window.shouldSlide shouldBe timestamp >= windowSize
    }
  }

  property("Window should slide by one or to given timestamp") {
    forAll(timestampGen, windowSizeGen, windowStepGen) {
      (timestamp: MilliSeconds, windowSize: Long, windowStep: Long) =>
        val window = new Window(windowSize, windowStep)
        window.range shouldBe(0L, windowSize)

        window.slideOneStep()
        window.range shouldBe(windowStep, windowSize + windowStep)

        window.slideTo(timestamp)
        val (startTime, endTime) = window.range
        if (windowStep > windowSize) {
          timestamp should (be >= startTime and be < (startTime + windowStep))
        } else {
          timestamp should (be >= startTime and be < endTime)
        }
    }
  }
}


text:
Сяо Цуйцзюань (род. 19 апреля 1986 года, Фучжоу, Фуцзянь, Китай) — китайская пауэрлифтерша-паралимпийка. Чемпион летних Паралимпийских игр 2008 в Пекине. Серебряный призёр летних Паралимпийских игр 2020 в Токио. Бронзовый призёр летних Паралимпийских игр 2004 в Афинах, летних Паралимпийских игр 2012 в Лондоне, летних Паралимпийских игр 2016 в Рио-де-Жанейро.

Спортивные результаты

Примечания

Пауэрлифтеры Китая
Бронзовые призёры летних Паралимпийских игр 2004 года
Пауэрлифтеры на летних Паралимпийских играх 2004 года
Чемпионы летних Паралимпийских игр 2008 года
Пауэрлифтеры на летних Паралимпийских играх 2008 года
Бронзовые призёры летних Паралимпийских игр 2012 года
Пауэрлифтеры на летних Паралимпийских играх 2012 года
Бронзовые призёры летних Паралимпийских игр 2016 года
Пауэрлифтеры на летних Паралимпийских играх 2016 года
Серебряные призёры летних Паралимпийских игр 2020 года
Пауэрлифтеры на летних Паралимпийских играх 2020 года

redpajama_set_name: RedPajamaWikipedia


text:
Theater Production: Metamorphosis
[N] Men's Track and Field at NCAA Division III Indoor Track & Field Championships »
The St. Olaf College Theater Department presents a production of Franz Kafka's The Metamorphosis, which tells the story of Gregor Samsa after his abrupt transformation into a bug. This adaptation will explore the experience of being an outsider in one's own home and the role of personal responsibility in fate.
It is adapted and directed by St. Olaf student Aaron Lauby '19.
Performances are in Haugen Theater with general seating. Tickets are $10 for the general public and may be reserved by calling the box office at 507-786-8987.
Theater Building, Haugen Theater
Theater Department
hatle@stolaf.edu
CANCELLED: St. Olaf Choir in Andover, MN
St. Olaf Choir Tour – Eau Claire, WI
Junior Recital: Anne Amen


Is this correct? Is it was not correct, then what is the correct thing to do? What is the ruling on those who did not do the second prostration with them?.
If the imam forgets something during the prayer, then the Prophet (peace and blessings of Allaah be upon him) commanded the members of the congregation to remind him. He said: "I am only human like you, and I forget as you forget, so if I forget then remind me." Narrated by al-Bukhaari, 401. So the congregation in the mosque should have said tasbeeh ("Subhaan Allaah") so that the imam would notice and would do the second prostration.
Both the first and second prostrations are pillars or essential parts of the prayer, without which the prayer is not valid. Whoever deliberately omits one or both of them has sinned, and his prayer is invalid. Whoever forgets one or both of them has to do what he forgot when he remembers it, whether he is leading a congregation, following an imam or praying on his own. Whoever does not do that, his prayer is invalid.
The pillars or essential parts (of the prayer) are obligatory and more important than the waajibat (obligatory parts of prayer), but they differ from then in that the pillars are not waived if one forgets them whereas the waajibaat are waived in that case and may be made up for by doing the prostration of forgetfulness (sujood al-sahw), unlike the pillars. Hence whoever forgets a pillar, his prayer is not valid without it.
The evidence that the pillars cannot be made up for by the prostration of forgetfulness is the fact that when the Prophet (peace and blessings of Allaah be upon him) said the salaam after praying two rak'ahs of Zuhr or 'Asr, he completed it and did what he had omitted, and did the prostration of forgetfulness. This indicates that the pillars of prayer cannot be waived by doing the prostration of forgetfulness, and they must be done.
With regard to what your imam did by repeating the final rak'ah in full after being reminded, this is in accordance with one of the two scholarly opinions on this matter, which is that the one who omits a pillar or essential part of the final rak'ah and does not realize it until after saying the tasleem should do the rak'ah in full. This is the view of Imam Ahmad (may Allaah have mercy on him). See al-Mughni, 1/658.
This view was favoured by Shaykh Ibn Baaz (may Allaah have mercy on him), who was asked about an imam who forget the final prostration in 'Asr prayer. He stood up and offered a complete rak'ah, then he said the tashahhud and the tasleem, then he did the prostration of forgetfulness. He said: This is what is prescribed in Islam. If the imam forgot a prostration and said the tasleem, then he remembered it or it was pointed out to him, he should stand up and do a full rak'ah, then say the salaam, then do the prostration of forgetfulness after saying the salaam. This is better. The same ruling applies to one who is praying alone. But if he does the prostration of forgetfulness before the salaam, there is nothing wrong with that, but doing it after the salaam is preferable.
The second view concerning this matter is that he does not have to do the rak'ah in full, rather he should do the pillar that he forgot and whatever comes after it. This is the view of Imam al-Shaafa'i (may Allaah have mercy on him). See al-Majmoo', 4/33. This view was favoured by Shaykh Ibn 'Uthaymeen (may Allaah have mercy on him). See Sharh al-Mumti', 3/374.
The point is that the prayer of the imam, and the prayer of those who completed the prayer with him, is valid.
But for those who did not complete the prayer and did not do the prostration that was omitted, their prayer is not valid, and they have to repeat it.


A Delhi NCR based Interior Design company specializing in residential and office interiors from conceptualization, designing, planning, procurement, supervision to completion. At Eagle Decor, we emphasize more on maintaining the quality of work subjecting every aspect of interior designing to a threadbare analysis, to ensure the needs and tastes of our clients are addressed effectively.The designs developed by us focus on utility, ambiance and aesthetics, besides the cost factor. More time is spent understanding the requirements of the client, for ultimately the end result is that the client has to get what they want. Our interior designers design the layout according to the client's requirements, which is translated into functional and comfortable interiors through our team within the stipulated time. While designing we always stress the importance of optimum utilization of space & color. We have stood firm in the belief to provide the best value to our client's budget. With our vast experience in the yesteryear, we hope to meet your expectation in the present and in the years to come.


Geomancy, a three-thousand-year-old form of earth divination, can answer your questions about relationships, career, money, and all aspects of life.
In this comprehensive, easy-to-follow introduction to the topic, bestselling author Richard Webster presents eight different methods you can try, from astrological geomancy to Arthurian divination to a version attributed to Napoleon. Each method is based on making a random number of marks, then interpreting the message based on the resulting pattern. Geomancy for Beginners also includes simple instructions on how to craft your own geomantic tools.
With Webster?s sample readings and diagrams, it?s easy to begin practicing this age-old form of divination to receive guidance and insight.


text:
Tintin and the hunt for box-office treasure
By Andreas Wiseman2011-09-01T14:43:00+01:00
Can the unusual global release strategy of Sony and Paramount's The Adventures Of Tintin: The Secret Of The Unicorn pay off to mark the beginning of a thrilling new franchise?
An animation film directed for the first time by Steven Spielberg, produced by Peter Jackson and based on a beloved children's comic-book character would appear to be box-office gold. But the release of The Adventures Of Tintin: The Secret Of The Unicorn faces some significant challenges. Biggest of all is that the character of Tintin, based on Belgian author Hergé's titular series, is not known widely in the US.
To help build awareness, Sony and Paramount, which are sharing most territories, are releasing Tintin in the major European territories from October, two months ahead of its rollout in the US. The aim is to arrive in the US with the wind of a European blockbuster hit behind it.
"The late October launch coincides with a number of European holidays, including in the UK, France and Germany," says Andrew Cripps, president of Paramount Pictures International. "When we started looking at release dates in conjunction with Sony, we felt like the best and biggest opportunity for Europe was releasing in that late October holiday period rather than getting caught up in the congestion that is year's end.
"That coincides with the UK half-term [school holidays], and that late October, early November launch period has traditionally been a very strong launch period for big event movies."
Spielberg's film is a conflation of three well-known Tintin stories, produced by Jackson with Spielberg's regular collaborator Kathleen Kennedy. It is written by three in-demand UK talents, directors Edgar Wright (Shaun Of The Dead) and Joe Cornish (Attack The Block) and writer Steven Moffat (the Doctor Who TV series). The film features the voices and body movements (through motion-capture) of Jamie Bell, Daniel Craig, Andy Serkis and Simon Pegg, and has been filmed in 3D.
A huge global brand
Hergé's 23-title comic-book series The Adventures Of Tintin, has sold more than 230 million copies worldwide and been translated into 70 languages. The books are noted for their universal appeal, combining action-packed storylines, swashbuckling adventure, slapstick humour and even a cute dog.
"Tintin is very well known in Europe and less well known in other parts of the world," says Cripps. "The best thing for this film is to do very well in Europe and then move into the US on the back of huge success."
However, Tintin is something of an unknown quantity as it does not lend itself easily to box-office comparisons. The material is very different to the Marvel and DC Comics spin-offs, with the scope, popularity and origin of the story bearing closest resemblance to the Asterix series, a much-loved French property that has seen various film adaptations.
The most recent, 2008's Asterix At The Olympic Games, a big-budget French-language, live-action comedy starring Gérard Depardieu, failed to ignite outside Europe, which accounted for $130.7m of the film's $132.4m worldwide total.
Although Pirates Of The Caribbean: On Stranger Tides is the latest release to prove the international gross can carry a film — less than 25% of its total box office came from the US — success is essential in all corners of the globe, particularly the US and Asia, for a film to push towards the $1bn mark.
Cripps believes Tintin has the potential. "The animation and Spielberg factor will be big in Asia," he says. "France and Belgium will also be huge. But this film has huge global appeal, whether or not you are a Tintin fan, from the cast to the talent behind the camera. It will be a huge global event. A big part of this story is Peter Jackson and Steven Spielberg working together for the first time. For film fans around the world, that says this is big and special."
Paramount is taking English-language and Asian markets for the film — excluding Japan (Toho-Towa), South Korea (Lotte) and India (Sony) — while Sony has the rest of the world, including France and Belgium. Brussels gets the world premiere in the afternoon of October 22, with a second premiere in Paris that evening. As Screen went to press, the studios had kept most of the marketing materials under wraps, with footage unveiled at Comic-Con in July. Spielberg and Jackson were in attendance and the online buzz suggests fans have been mostly impressed by the quality of the motion-capture ("This ain't The Polar Express," as one blogger puts it).
The studios have also signed a robust roster of consumer products and publishing licences tied to the film.
Shaking up the old order
If it pays off, Tintin's Europe-led release strategy could herald a rethink on the US-first approach of most big releases. But Cripps is cautious. "Tintin is a unique property. I'm not sure we're going to see many films with the same characteristics this has, just given its history in Europe," he explains. "But as the world becomes more of a global marketplace, it is incumbent on distributors to find the best single release date for individual territories or regions. That's part of what you're seeing in this."
Franchises reign supreme at the box office, accounting for 37 of the top 50 films all time. And 10 of the top 20 are adaptations of popular fiction properties aimed primarily at children. Paramount and Sony are hoping Tintin has enough appeal to join those ranks.
Tintin goes to the cinema
International rollout UK, France, Belgium October 26
Germany October 27
Spain, Italy October 28
Russia November 3
Japan December 3
US December 23
Australia December 26
Brazil January 20, 2012
Rotterdam director champions sustainability, power of film in 2020 opening speech
This year's festival is Bero Beyer's fifth and final as director.
Berlin completes 2020 Generation line-up; 58% of titles directed by women
Final titles revealed for the Generation Kplus and Generation 14plus strands.
1 Readers' comment


text:
Twitter Ban:FG Infringes On The Right Of Millions -CITAD
The center f or information technology and development CITAD says the twitter ban by the federal government is an ill-advised and unacceptable action by the federal government.
The executive director of the centre Malam Y Z Ya'u made the statement during a press conference held in Kano.
According to Malam Y Z Yau the Federal Government, through its Minister of Information, Mr. Lai Mohammed announced the suspension of the operations of Twitter in Nigeria. This suspension followed the action of Twitter in deleting a tweet by President Mohammed Buhari which the platform concluded had violated its community standards.
He pointed out that CITADexpresses shock with such an ill-advised action by the Government.
The Head further said they are surprised that the president could allowed himself to be wrongly advised. The quality of advice that he received shows an extremely level of ignorance of the working of Over the top (OTTs) in the world.
"First, Twitter does not need to be in Nigeria for its business to strive. By suspending its operation in the country the government is not hurting the interests of Twitter but rather jeopardising the jobs of the Nigerian staff of Twitter and more fundamentally, derogating the right of Nigerians to freedom of expression which is guaranteed in both our constitution and in the Africa Peoples and Human Rights which Nigeria is a signatory to, among other covenants of human rights.
Twitter Ban: FG Orders Prosecution of Offenders
The platforms of OTTs are important component of the internet, access to which the UN has decided as constituting a fourth generation of rights that all citizens should enjoy.
By shutting down access to Twitter for the millions of Nigerians, the government has totally curtailed the rights of Nigerians to this service.
Second, it shows the lack of understanding of the state of technology in the world. Many countries have unsuccessfully tried to block social media access for their citizens, but the increasing number of by-pass technologies means that such an action is fruitless and rather a drain on useful resource that could be used to support educating citizens on how to use the internet.
Third, when government argues that Twitter was selective in punishing misuse of its platform, it betrays a lack of understanding of the issues at hand. Twitter like, any other OTTs, has its community standards. Violating any of these standards elicits punishment which ranges from deletion to suspension and to even outright ban on the platform. One of the standards is that no message that is threatening violence against other people should be allowed on the platform. "
YZ Yau said the Presidents message was a threat to violence. It does not matter that he was responding to a violent situation. That other people had in the past made similar messages and were not so punished is not an argument for two wrongs do not make a right.
The statement further said the ban illustrates the fourth nativity of the government. When the Government or the President noticed that some people were spreading messages inciting or inviting violence, what they ought to do was to flag this off with Twitter. Once a message is flagged the relevant OTT (in this case Twitter) is duty bound to respond to it by taking action. When it is dissatisfied with the action taken, it can appeal the case and in the case of Facebook, it has a global Independent Board of Oversight which deals with controversial appeals and whose decisions or rulings are binding on the OTT."
The other aspect of the naivety of the government response is that it does not understand the nature of hate speech for which it has over a long period been pushing for a legislation. One of the key attributes of hate speech for it to catalyse into violence is that it should have a powerful speaker. That powerful speaker can earn his or her status on the basis of statutory power (such as a President) or love such as celebrity or cultural assets such respected community leaders or even religious capital in the case of religious leaders. What a powerful speaker does is that he makes the audience to commit the call to action embedded in his or her message. They could act the call to action either because they fear the speaker or love her or him or has institution of violence that could do his or her bidding. In the Nigerian context, clearly President Buhari is a powerful speaker who earned his status because of the office he occupies but also, additionally, because he has political and probably, ethnic followers. His message has a clear call to action which is to incite violence against his target. It is clear that his message, given his position as President has the potential to catalyse violence. It is entirely different from a riffraff ranting on twitter.
However, all these are by the way, the substantive issue for us is that we see in the act of the president a vicious intolerance of dissenting views. What Twitter had done was a mild criticism of the President but the president responded with an over kill. Clearly if President Buhari where the President of USA when twitter banned President Trump, he probably could have ordered the army to take over the company and dragged its management and owners to prison.
This intolerance of dissenting views is dangerous to democracy and unacceptable. It also is unnecessary and uncalled for given the situation that Nigeria is in, a situation that requires building bridges through effective communication rather than one of responding in kind.
We also fear that this act is preamble to the long ambition of the government to control access to the social media in the country.
Over the last six years, it has tried to do this through legislation unsuccessfully and now it wants use the response by Twitter to start a piece meal effort.
This is acceptable, undemocratic and unconstitutional.
We call on the government to withdraw its suspension and allow Twitter to carry out its legitimate business unhindered.
The government should allow Nigerians unhindered access to the platform. What the Government ought to do is to begin to educate and enlighten citizens on how to use the social media and not how to prevent them from using it.
We join millions of other well-meaning and patriotic Nigerians in demanding an immediate restoration of access to Twitter and a proactive safeguard against similar action to other OTTs.
We call on the National Assembly to declare the act of the president as illegal and unconstitutional and proceed to provide a legal clarify by enacting a law that prohibits presidents or any other authority from blocking any internet platform.
As an organization dedicated to the use of information technology to promote development and good governance, we are prepared to help in the campaign for better use of the internet but even more, we are ready to help Nigerians reclaim their right to access to twitter, among other OTT platforms by building their capacity on by bypass technologies."
Related Topics:BanTwitter
Over 1,700 NYSC members in Kano match for Nigeria's unity
Breaking:Kano Suspends Tricycle Restrictions On Major Roads
Breaking :Saudi Arabia Suspends Direct Flight Entry Ban For Nigeria
NAHCON Begs Saudi Arabia To Reconsider Entry Ban
Kano Sets To Establish Anti-Street Begging Agency
FG Should Ban Afenifere In One Week – ADC Chairman
TWITTER: Is Okonjo-Iweala Supporting IPOB?
Important Tips For Northerners On Twitter
Sallah: Governor Sani Bello Bans Festivities


text:
Нижче наведено музичні альбоми, що посіли 1-шу сходинку чарту Billboard Top Rap Albums у 2006 р.

Див. також
2006 у музиці

Посилання

2006


Topical NSAIDs For the Win!
Andrew and Jake tackle recent literature comparing efficacy of oral and topical NSAIDs. And, GOOD NEWS! Topical NSAIDs can be used to treat many conditions without the systemic side effects associated with oral NSAIDs.
Review common presentations of the painful elbow in the pediatric population.


Michael Phelps by a fraction!
This article contains a mini-lesson to help you help your students understand the significance of roundiing to the correct significant digits.
Start by having students watch this short you-tube video: Michael Phelps Wins!
Recap the event, highlighting the fact that Phelps won by only 0.01 seconds, one one-hundreth of a second.
If your students are anything like mine, some of them will round the last example to 0. The idea that the zero after the decimal but before an integer is just a place holder is difficult for some to understand. This is when you play the Michael Phelps card. Point out that he won the race by 0.01 seconds. If that zero after the decimal was considered significant, we'd have to round the amount of his victory off to 0.0, and that's no margin to win by.
Those placeholder zeros can confuse students. By giving them a real-life example to relate back to it will be easier for them to comprehend and remember.
The touchpad that Michael Phelps hit at the end of his race was calibrated to read to the hundreths place. Therefore, the results of his race could only accurately be reported to two decimal places. It would be inaccurate and dishonest to claim that he won by 0.005 seconds because the touchpad can't measure with that precision. Remind students that the way they record and report their measured numbers reflects the quality of the tools they used. "Liar, Liar, pants on fire" is an appropriate song for any who disregard their significant figures.


As an entrepreneur, your behavior and daily activities should be congruent with your personal core values in order to create and experience an enriched life beyond your business.
Moreover, your personal and business goals in life must be specific and conform as well with these core values. Otherwise, you'll feel dissatisfied, never be truly happy, and keep looking back upon your life's wake with regrets.
Do you know what are your honest and true inner beliefs? It took me being older and wiser before I took time out from the day-to-day to figure out my true inner self-identity, and to change my behavior and activities accordingly for an enriched life.
Here are five ways to create an enriched life beyond your business.
1. Step back and take time to contemplate what the "gut meaning" of life is for you, and in what ways you specifically want to be satisfied and enriched.
2. Repeatedly monitor to make sure that you are staying true to your core values and that they have not changed.
3. Be cognizant that procrastination is a major roadblock for enriching your life, as is finding private uninterrupted time for critical thinking.
4. Choose to be more conscious about how productively you are spending your time.
5. If you're not succeeding with self discovery and the enrichment process on your own, hire a life coach to help motivate and guide you.
It's never too late for a "life" change. Make sure you're diligent about knowing and being true to yourself, and don't die with your best music still inside you.


text:
Essential Products for Healthy Farming!
Jerry's Legacy
Crop Catalog
Crop Protocols
Graziers Essentials
Jerry Brunetti
Click to purchase Jerry's book
In 1979, Jerry Brunetti founded Agri-Dynamics with a vision of providing a line of holistic animal remedies for farm livestock, equine and pets. After witnessing first-hand the devastating results of conventional, chemically dependent, grain-based rationed farming practices, Jerry embarked on a crusade to educate and consult for farmers making the wise choice of transitioning to ecologically responsible and sustainable farming.
In 1991, Jerry co-founded Earthworks Natural Organic Products, a company which provides products and consulting services to the golf course and landscaping industries. Jerry's aspiration was once again to encourage the implementation of ecological principles of balancing soils, reducing the use of pesticides and eliminating dependence on chemical fertilizers.
In 1999, Jerry was diagnosed with non-Hodgkin's Lymphoma and given as little as six months to live without aggressive chemotherapy. He instead chose a holistic path of nutrition, detoxification and immune modulation and applied his vast experience with farming and animal nutrition to his own health. The links between healthy soil, truly nutritious food and profitable, sustainable farming techniques were clearly evident in his personal and professional experiences and his skill for communicating this to people has won him extensive praise from holistic health professionals, sustainable farming organizations and countless farmers and consumers.
Jerry was a highly demanded lecturer and speaker, both nationally and internationally, on topics that included soil fertility, animal nutrition and livestock health. He often spoke to audiences about the relationship of "Food as Medicine" and "Farm as Farmacy." Jerry bridged natural and scientific understandings of plant and animal "ecosystems," such as digestion in soils (decomposition), digestion of foods (fermentation) and the digestion that takes place in the GI tract of animals/humans. Jerry's "connect-the-dots" systems approach helped farmers and ranchers understand how the health of people and their communities are linked to healthy land, healthy animals and healthy produce.
Prior to launching Agri-Dynamics, Jerry studied Animal Science at North Carolina State University and then moved to western Virginia to run a cow/calf operation. He served as Regional Dairy Director of the National Farmers Organization in the Northeast for five years. He served on the Lower Mt. Bethel Township Environmental Advisory Council for several years, the board of Pennsylvania Association of Sustainable Agriculture (PASA), was an honorary board member of the Weston A. Price Foundation as well as a steering committee member for the Lehigh Valley Chapter of the Weston A. Price Foundation and was also active in other community based organizations devoted to rebuilding local food systems and local democracy. In 2008, Jerry received the Leadership Award from PASA and the Eco-Agriculture Achievement Award from Acres USA. His DVD's include "Keys to Herd Health," "Holistic Veterinary Care" with Hugh Karreman, VMD and "Cancer, Nutrition and Healing" and his book The Farm as Eco-System was published in 2014.
Jerry courageously faced a second round of non-Hodgkin's Lymphoma and his earthly existence ended on December 20, 2014, leaving behind a huge void in the eco-agricultural community. His "voice" is missed but his legacy continues. Lower Mt. Bethel Township has named their visitor and environmental center after Jerry to honor his efforts in having it built and also bringing three PA Scenic Byways to their township. PASA has named the new farmer training element of the SOIL institute after Jerry. Agri-Dynamics continues Jerry's legacy and his vision by serving the sustainable farming community.
Clink for info on the Soil Initiative
Equine Products
Desert Dynamin™