text:
Q: Работа с COM-объектами .NET Framework Пытаюсь использовать функцию GetApplicationVolume из примера https://gist.github.com/sverrirs/d099b34b7f72bb4fb386 вот так:
public static float? GetApplicationVolume(int pid)
{
    ISimpleAudioVolume volume = GetVolumeObject(pid);
    if (volume == null)
        return null;

    float level;
    volume.GetMasterVolume(out level);
    Marshal.ReleaseComObject(volume);
    return level * 100;
}

private static ISimpleAudioVolume GetVolumeObject(int pid)
{
    IMMDeviceEnumerator deviceEnumerator = null;
    IAudioSessionEnumerator sessionEnumerator = null;
    IAudioSessionManager2 mgr = null;
    IMMDevice speakers = null;
    try
    {
        // get the speakers (1st render + multimedia) device
        deviceEnumerator = (IMMDeviceEnumerator)(new MMDeviceEnumerator());
        deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia, out speakers);

        // activate the session manager. we need the enumerator
        Guid IID_IAudioSessionManager2 = typeof(IAudioSessionManager2).GUID;
        object o;
        speakers.Activate(ref IID_IAudioSessionManager2, 0, IntPtr.Zero, out o);
        mgr = (IAudioSessionManager2)o;

        // enumerate sessions for on this device
        mgr.GetSessionEnumerator(out sessionEnumerator);
        int count;
        sessionEnumerator.GetCount(out count);

        // search for an audio session with the required process-id
        ISimpleAudioVolume volumeControl = null;
        for (int i = 0; i < count; ++i)
        {
            IAudioSessionControl2 ctl = null;
            try
            {
                sessionEnumerator.GetSession(i, out ctl);

                // NOTE: we could also use the app name from ctl.GetDisplayName()
                int cpid;
                ctl.GetProcessId(out cpid);

                if (cpid == pid)
                {
                    volumeControl = ctl as ISimpleAudioVolume;
                    break;
                }
            }
            finally
            {
                if (ctl != null) Marshal.ReleaseComObject(ctl);
            }
        }

        return volumeControl;
    }
    finally
    {
        if (sessionEnumerator != null) Marshal.ReleaseComObject(sessionEnumerator);
        if (mgr != null) Marshal.ReleaseComObject(mgr);
        if (speakers != null) Marshal.ReleaseComObject(speakers);
        if (deviceEnumerator != null) Marshal.ReleaseComObject(deviceEnumerator);
    }
}

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(AudioManager.GetApplicationVolume(5992).ToString());
    }
}

и получаю "Необработанное исключение: System.Runtime.InteropServices.InvalidComObjectException: Объект COM, который был отделен от своего базового RCW, использоваться не может.
При гуглении залез в какие дебри про потоки и совсем запутался. Помогите! C C# и .NET до этого не работал, так что не кидайтесь тапками)

A: Вот смотрите, в C# есть IDisposable объекты. Смысл этого интерфейса в том чтобы помочь разработчику правильно очищать неуправляемые ресурсы даже при возникновении исключений в управляемом коде. Либо отдать контроль своими неуправляемыми ресурсами сборщику мусора, но это уже другая история про финализаторы.
Для того, чтобы гарантированно вызвать какой-то код даже при возникновении исключения, используется конструкция try-finally или конкретно для IDisposable есть ее упрощенный синтаксис using. Почитать больше можно здесь: Использование объектов, реализующих IDisposable.
Так к чему я всё это. COM-объекты, это по сути вызов неуправляемого кода, например написанного на C++, но сделанного так, чтобы с ним можно было взаимодействовать через специальное API операционной системы под названием COM (Component Object Model). Так вот, если у реализующего IDisposable класса надо обязательно вызывать Dispose(), то у COM-объекта надо обязательно вызывать Marshal.ReleaseComObject(), при чём используя ту же самую конструкцию try-finally, чтобы не быть причиной утечек памяти в случае, если возниколо исключение в управляемом коде и выполнение кода дальше не пошло.
try
{
    var obj = getComCobject();
    // работаем с COM-объектом
}
finally
{
    Marshal.ReleaseComObject(obj);
}

И разработчик этого класса AudioManager очень строго следует этим принципам, и он перестарался.
Дело в том, что строки кода в методе GetVolumeObject выполняются (при попадании в нужный PID) в следующем порядке
// найден нужный COM-объект
if (cpid == pid) // true
{
    volumeControl = ctl as ISimpleAudioVolume;
    break;
}

// возврат результата
return volumeControl;

// и следом срабатывает
finally
{
    if (ctl != null) Marshal.ReleaseComObject(ctl);
}

И при возврате в метод, вы пытаетесь обратиться к COM-объекту, для которого получается, что ранее уже был вызван Marshal.ReleaseComObject.
volume.GetMasterVolume(out float level);

Говоря дотнетовским языком, пытаетесь воспользоваться уже ранее уничтоженным объектом.
Что же делать? Самый простой способ - обмануть конструкцию блоке finally
finally
{
    if (ctl != null) Marshal.ReleaseComObject(ctl);
}

Вот так
if (cpid == pid)
{
    volumeControl = ctl as ISimpleAudioVolume;
    ctl = null; // эту строчку нужно добавить в класс
    break;
}

В этом случае volumeControl вернется из метода GetVolumeObject в метод GetApplicationVolume в рабочем состоянии.
Я проверил подставив PID одного из своих процессов, для наглядности уменьшил немного громкость приложению, с которого её считывал.
Console.WriteLine(AudioManager.GetApplicationVolume(24240) ?? 0);

Вывод в консоль:
93,61702

Ну и вот это тоже работает
Console.WriteLine(AudioManager.GetMasterVolume());

47

Для будущих посетителей вставлю исправленный код целиком
Структуры данных
[ComImport]
[Guid("BCDE0395-E52F-467C-8E3D-C4579291692E")]
internal class MMDeviceEnumerator
{
}

internal enum EDataFlow
{
    eRender,
    eCapture,
    eAll,
    EDataFlow_enum_count
}

internal enum ERole
{
    eConsole,
    eMultimedia,
    eCommunications,
    ERole_enum_count
}

[Guid("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IMMDeviceEnumerator
{
    int NotImpl1();

    [PreserveSig]
    int GetDefaultAudioEndpoint(EDataFlow dataFlow, ERole role, out IMMDevice ppDevice);

    // the rest is not implemented
}

[Guid("D666063F-1587-4E43-81F1-B948E807363F"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IMMDevice
{
    [PreserveSig]
    int Activate(ref Guid iid, int dwClsCtx, IntPtr pActivationParams, [MarshalAs(UnmanagedType.IUnknown)] out object ppInterface);

    // the rest is not implemented
}

[Guid("77AA99A0-1BD6-484F-8BC7-2C654C9A9B6F"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IAudioSessionManager2
{
    int NotImpl1();
    int NotImpl2();

    [PreserveSig]
    int GetSessionEnumerator(out IAudioSessionEnumerator SessionEnum);

    // the rest is not implemented
}

[Guid("E2F5BB11-0570-40CA-ACDD-3AA01277DEE8"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IAudioSessionEnumerator
{
    [PreserveSig]
    int GetCount(out int SessionCount);

    [PreserveSig]
    int GetSession(int SessionCount, out IAudioSessionControl2 Session);
}

[Guid("87CE5498-68D6-44E5-9215-6DA47EF883D8"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface ISimpleAudioVolume
{
    [PreserveSig]
    int SetMasterVolume(float fLevel, ref Guid EventContext);

    [PreserveSig]
    int GetMasterVolume(out float pfLevel);

    [PreserveSig]
    int SetMute(bool bMute, ref Guid EventContext);

    [PreserveSig]
    int GetMute(out bool pbMute);
}

[Guid("bfb7ff88-7239-4fc9-8fa2-07c950be9c6d"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IAudioSessionControl2
{
    // IAudioSessionControl
    [PreserveSig]
    int NotImpl0();

    [PreserveSig]
    int GetDisplayName([MarshalAs(UnmanagedType.LPWStr)] out string pRetVal);

    [PreserveSig]
    int SetDisplayName([MarshalAs(UnmanagedType.LPWStr)] string Value, [MarshalAs(UnmanagedType.LPStruct)] Guid EventContext);

    [PreserveSig]
    int GetIconPath([MarshalAs(UnmanagedType.LPWStr)] out string pRetVal);

    [PreserveSig]
    int SetIconPath([MarshalAs(UnmanagedType.LPWStr)] string Value, [MarshalAs(UnmanagedType.LPStruct)] Guid EventContext);

    [PreserveSig]
    int GetGroupingParam(out Guid pRetVal);

    [PreserveSig]
    int SetGroupingParam([MarshalAs(UnmanagedType.LPStruct)] Guid Override, [MarshalAs(UnmanagedType.LPStruct)] Guid EventContext);

    [PreserveSig]
    int NotImpl1();

    [PreserveSig]
    int NotImpl2();

    // IAudioSessionControl2
    [PreserveSig]
    int GetSessionIdentifier([MarshalAs(UnmanagedType.LPWStr)] out string pRetVal);

    [PreserveSig]
    int GetSessionInstanceIdentifier([MarshalAs(UnmanagedType.LPWStr)] out string pRetVal);

    [PreserveSig]
    int GetProcessId(out int pRetVal);

    [PreserveSig]
    int IsSystemSoundsSession();

    [PreserveSig]
    int SetDuckingPreference(bool optOut);
}

// http://netcoreaudio.codeplex.com/SourceControl/latest#trunk/Code/CoreAudio/Interfaces/IAudioEndpointVolume.cs
[Guid("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IAudioEndpointVolume
{
    [PreserveSig]
    int NotImpl1();

    [PreserveSig]
    int NotImpl2();

    /// <summary>
    /// Gets a count of the channels in the audio stream.
    /// </summary>
    /// <param name="channelCount">The number of channels.</param>
    /// <returns>An HRESULT code indicating whether the operation passed of failed.</returns>
    [PreserveSig]
    int GetChannelCount(
        [Out][MarshalAs(UnmanagedType.U4)] out uint channelCount);

    /// <summary>
    /// Sets the master volume level of the audio stream, in decibels.
    /// </summary>
    /// <param name="level">The new master volume level in decibels.</param>
    /// <param name="eventContext">A user context value that is passed to the notification callback.</param>
    /// <returns>An HRESULT code indicating whether the operation passed of failed.</returns>
    [PreserveSig]
    int SetMasterVolumeLevel(
        [In][MarshalAs(UnmanagedType.R4)] float level,
        [In][MarshalAs(UnmanagedType.LPStruct)] Guid eventContext);

    /// <summary>
    /// Sets the master volume level, expressed as a normalized, audio-tapered value.
    /// </summary>
    /// <param name="level">The new master volume level expressed as a normalized value between 0.0 and 1.0.</param>
    /// <param name="eventContext">A user context value that is passed to the notification callback.</param>
    /// <returns>An HRESULT code indicating whether the operation passed of failed.</returns>
    [PreserveSig]
    int SetMasterVolumeLevelScalar(
        [In][MarshalAs(UnmanagedType.R4)] float level,
        [In][MarshalAs(UnmanagedType.LPStruct)] Guid eventContext);

    /// <summary>
    /// Gets the master volume level of the audio stream, in decibels.
    /// </summary>
    /// <param name="level">The volume level in decibels.</param>
    /// <returns>An HRESULT code indicating whether the operation passed of failed.</returns>
    [PreserveSig]
    int GetMasterVolumeLevel(
        [Out][MarshalAs(UnmanagedType.R4)] out float level);

    /// <summary>
    /// Gets the master volume level, expressed as a normalized, audio-tapered value.
    /// </summary>
    /// <param name="level">The volume level expressed as a normalized value between 0.0 and 1.0.</param>
    /// <returns>An HRESULT code indicating whether the operation passed of failed.</returns>
    [PreserveSig]
    int GetMasterVolumeLevelScalar(
        [Out][MarshalAs(UnmanagedType.R4)] out float level);

    /// <summary>
    /// Sets the volume level, in decibels, of the specified channel of the audio stream.
    /// </summary>
    /// <param name="channelNumber">The channel number.</param>
    /// <param name="level">The new volume level in decibels.</param>
    /// <param name="eventContext">A user context value that is passed to the notification callback.</param>
    /// <returns>An HRESULT code indicating whether the operation passed of failed.</returns>
    [PreserveSig]
    int SetChannelVolumeLevel(
        [In][MarshalAs(UnmanagedType.U4)] uint channelNumber,
        [In][MarshalAs(UnmanagedType.R4)] float level,
        [In][MarshalAs(UnmanagedType.LPStruct)] Guid eventContext);

    /// <summary>
    /// Sets the normalized, audio-tapered volume level of the specified channel in the audio stream.
    /// </summary>
    /// <param name="channelNumber">The channel number.</param>
    /// <param name="level">The new master volume level expressed as a normalized value between 0.0 and 1.0.</param>
    /// <param name="eventContext">A user context value that is passed to the notification callback.</param>
    /// <returns>An HRESULT code indicating whether the operation passed of failed.</returns>
    [PreserveSig]
    int SetChannelVolumeLevelScalar(
        [In][MarshalAs(UnmanagedType.U4)] uint channelNumber,
        [In][MarshalAs(UnmanagedType.R4)] float level,
        [In][MarshalAs(UnmanagedType.LPStruct)] Guid eventContext);

    /// <summary>
    /// Gets the volume level, in decibels, of the specified channel in the audio stream.
    /// </summary>
    /// <param name="channelNumber">The zero-based channel number.</param>
    /// <param name="level">The volume level in decibels.</param>
    /// <returns>An HRESULT code indicating whether the operation passed of failed.</returns>
    [PreserveSig]
    int GetChannelVolumeLevel(
        [In][MarshalAs(UnmanagedType.U4)] uint channelNumber,
        [Out][MarshalAs(UnmanagedType.R4)] out float level);

    /// <summary>
    /// Gets the normalized, audio-tapered volume level of the specified channel of the audio stream.
    /// </summary>
    /// <param name="channelNumber">The zero-based channel number.</param>
    /// <param name="level">The volume level expressed as a normalized value between 0.0 and 1.0.</param>
    /// <returns>An HRESULT code indicating whether the operation passed of failed.</returns>
    [PreserveSig]
    int GetChannelVolumeLevelScalar(
        [In][MarshalAs(UnmanagedType.U4)] uint channelNumber,
        [Out][MarshalAs(UnmanagedType.R4)] out float level);

    /// <summary>
    /// Sets the muting state of the audio stream.
    /// </summary>
    /// <param name="isMuted">True to mute the stream, or false to unmute the stream.</param>
    /// <param name="eventContext">A user context value that is passed to the notification callback.</param>
    /// <returns>An HRESULT code indicating whether the operation passed of failed.</returns>
    [PreserveSig]
    int SetMute(
        [In][MarshalAs(UnmanagedType.Bool)] bool isMuted,
        [In][MarshalAs(UnmanagedType.LPStruct)] Guid eventContext);

    /// <summary>
    /// Gets the muting state of the audio stream.
    /// </summary>
    /// <param name="isMuted">The muting state. True if the stream is muted, false otherwise.</param>
    /// <returns>An HRESULT code indicating whether the operation passed of failed.</returns>
    [PreserveSig]
    int GetMute(
        [Out][MarshalAs(UnmanagedType.Bool)] out bool isMuted);

    /// <summary>
    /// Gets information about the current step in the volume range.
    /// </summary>
    /// <param name="step">The current zero-based step index.</param>
    /// <param name="stepCount">The total number of steps in the volume range.</param>
    /// <returns>An HRESULT code indicating whether the operation passed of failed.</returns>
    [PreserveSig]
    int GetVolumeStepInfo(
        [Out][MarshalAs(UnmanagedType.U4)] out uint step,
        [Out][MarshalAs(UnmanagedType.U4)] out uint stepCount);

    /// <summary>
    /// Increases the volume level by one step.
    /// </summary>
    /// <param name="eventContext">A user context value that is passed to the notification callback.</param>
    /// <returns>An HRESULT code indicating whether the operation passed of failed.</returns>
    [PreserveSig]
    int VolumeStepUp(
        [In][MarshalAs(UnmanagedType.LPStruct)] Guid eventContext);

    /// <summary>
    /// Decreases the volume level by one step.
    /// </summary>
    /// <param name="eventContext">A user context value that is passed to the notification callback.</param>
    /// <returns>An HRESULT code indicating whether the operation passed of failed.</returns>
    [PreserveSig]
    int VolumeStepDown(
        [In][MarshalAs(UnmanagedType.LPStruct)] Guid eventContext);

    /// <summary>
    /// Queries the audio endpoint device for its hardware-supported functions.
    /// </summary>
    /// <param name="hardwareSupportMask">A hardware support mask that indicates the capabilities of the endpoint.</param>
    /// <returns>An HRESULT code indicating whether the operation passed of failed.</returns>
    [PreserveSig]
    int QueryHardwareSupport(
        [Out][MarshalAs(UnmanagedType.U4)] out uint hardwareSupportMask);

    /// <summary>
    /// Gets the volume range of the audio stream, in decibels.
    /// </summary>
    /// <param name="volumeMin">The minimum volume level in decibels.</param>
    /// <param name="volumeMax">The maximum volume level in decibels.</param>
    /// <param name="volumeStep">The volume increment level in decibels.</param>
    /// <returns>An HRESULT code indicating whether the operation passed of failed.</returns>
    [PreserveSig]
    int GetVolumeRange(
        [Out][MarshalAs(UnmanagedType.R4)] out float volumeMin,
        [Out][MarshalAs(UnmanagedType.R4)] out float volumeMax,
        [Out][MarshalAs(UnmanagedType.R4)] out float volumeStep);
}

AudioManager.cs
/// <summary>
/// Controls audio using the Windows CoreAudio API
/// from: http://stackoverflow.com/questions/14306048/controling-volume-mixer
/// and: http://netcoreaudio.codeplex.com/
/// </summary>
public static class AudioManager
{
    /// <summary>
    /// Gets the current master volume in scalar values (percentage)
    /// </summary>
    /// <returns>-1 in case of an error, if successful the value will be between 0 and 100</returns>
    public static float GetMasterVolume()
    {
        IAudioEndpointVolume masterVol = null;
        try
        {
            masterVol = GetMasterVolumeObject();
            if (masterVol == null)
                return -1;

            masterVol.GetMasterVolumeLevelScalar(out float volumeLevel);
            return volumeLevel * 100;
        }
        finally
        {
            if (masterVol != null)
                Marshal.ReleaseComObject(masterVol);
        }
    }

    /// <summary>
    /// Gets the mute state of the master volume.
    /// While the volume can be muted the <see cref="GetMasterVolume"/> will still return the pre-muted volume value.
    /// </summary>
    /// <returns>false if not muted, true if volume is muted</returns>
    public static bool GetMasterVolumeMute()
    {
        IAudioEndpointVolume masterVol = null;
        try
        {
            masterVol = GetMasterVolumeObject();
            if (masterVol == null)
                return false;

            masterVol.GetMute(out bool isMuted);
            return isMuted;
        }
        finally
        {
            if (masterVol != null)
                Marshal.ReleaseComObject(masterVol);
        }
    }

    /// <summary>
    /// Sets the master volume to a specific level
    /// </summary>
    /// <param name="newLevel">Value between 0 and 100 indicating the desired scalar value of the volume</param>
    public static void SetMasterVolume(float newLevel)
    {
        IAudioEndpointVolume masterVol = null;
        try
        {
            masterVol = GetMasterVolumeObject();
            if (masterVol == null)
                return;

            masterVol.SetMasterVolumeLevelScalar(newLevel / 100, Guid.Empty);
        }
        finally
        {
            if (masterVol != null)
                Marshal.ReleaseComObject(masterVol);
        }
    }

    /// <summary>
    /// Increments or decrements the current volume level by the <see cref="stepAmount"/>.
    /// </summary>
    /// <param name="stepAmount">Value between -100 and 100 indicating the desired step amount. Use negative numbers to decrease
    /// the volume and positive numbers to increase it.</param>
    /// <returns>the new volume level assigned</returns>
    public static float StepMasterVolume(float stepAmount)
    {
        IAudioEndpointVolume masterVol = null;
        try
        {
            masterVol = GetMasterVolumeObject();
            if (masterVol == null)
                return -1;

            float stepAmountScaled = stepAmount / 100;

            // Get the level
            masterVol.GetMasterVolumeLevelScalar(out float volumeLevel);

            // Calculate the new level
            float newLevel = volumeLevel + stepAmountScaled;
            newLevel = Math.Min(1, newLevel);
            newLevel = Math.Max(0, newLevel);

            masterVol.SetMasterVolumeLevelScalar(newLevel, Guid.Empty);

            // Return the new volume level that was set
            return newLevel * 100;
        }
        finally
        {
            if (masterVol != null)
                Marshal.ReleaseComObject(masterVol);
        }
    }

    /// <summary>
    /// Mute or unmute the master volume
    /// </summary>
    /// <param name="isMuted">true to mute the master volume, false to unmute</param>
    public static void SetMasterVolumeMute(bool isMuted)
    {
        IAudioEndpointVolume masterVol = null;
        try
        {
            masterVol = GetMasterVolumeObject();
            if (masterVol == null)
                return;

            masterVol.SetMute(isMuted, Guid.Empty);
        }
        finally
        {
            if (masterVol != null)
                Marshal.ReleaseComObject(masterVol);
        }
    }

    /// <summary>
    /// Switches between the master volume mute states depending on the current state
    /// </summary>
    /// <returns>the current mute state, true if the volume was muted, false if unmuted</returns>
    public static bool ToggleMasterVolumeMute()
    {
        IAudioEndpointVolume masterVol = null;
        try
        {
            masterVol = GetMasterVolumeObject();
            if (masterVol == null)
                return false;

            masterVol.GetMute(out bool isMuted);
            masterVol.SetMute(!isMuted, Guid.Empty);

            return !isMuted;
        }
        finally
        {
            if (masterVol != null)
                Marshal.ReleaseComObject(masterVol);
        }
    }

    private static IAudioEndpointVolume GetMasterVolumeObject()
    {
        IMMDeviceEnumerator deviceEnumerator = null;
        IMMDevice speakers = null;
        try
        {
            deviceEnumerator = (IMMDeviceEnumerator)new MMDeviceEnumerator();
            deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia, out speakers);

            Guid IID_IAudioEndpointVolume = typeof(IAudioEndpointVolume).GUID;
            speakers.Activate(ref IID_IAudioEndpointVolume, 0, IntPtr.Zero, out object o);
            IAudioEndpointVolume masterVol = (IAudioEndpointVolume)o;

            return masterVol;
        }
        finally
        {
            if (speakers != null) Marshal.ReleaseComObject(speakers);
            if (deviceEnumerator != null) Marshal.ReleaseComObject(deviceEnumerator);
        }
    }

    public static float? GetApplicationVolume(int pid)
    {
        ISimpleAudioVolume volume = GetVolumeObject(pid);
        if (volume == null)
            return null;

        volume.GetMasterVolume(out float level);
        Marshal.ReleaseComObject(volume);
        return level * 100;
    }

    public static bool? GetApplicationMute(int pid)
    {
        ISimpleAudioVolume volume = GetVolumeObject(pid);
        if (volume == null)
            return null;

        volume.GetMute(out bool mute);
        Marshal.ReleaseComObject(volume);
        return mute;
    }

    public static void SetApplicationVolume(int pid, float level)
    {
        ISimpleAudioVolume volume = GetVolumeObject(pid);
        if (volume == null)
            return;

        Guid guid = Guid.Empty;
        volume.SetMasterVolume(level / 100, ref guid);
        Marshal.ReleaseComObject(volume);
    }

    public static void SetApplicationMute(int pid, bool mute)
    {
        ISimpleAudioVolume volume = GetVolumeObject(pid);
        if (volume == null)
            return;

        Guid guid = Guid.Empty;
        volume.SetMute(mute, ref guid);
        Marshal.ReleaseComObject(volume);
    }

    private static ISimpleAudioVolume GetVolumeObject(int pid)
    {
        IMMDeviceEnumerator deviceEnumerator = null;
        IAudioSessionEnumerator sessionEnumerator = null;
        IAudioSessionManager2 mgr = null;
        IMMDevice speakers = null;
        try
        {
            // get the speakers (1st render + multimedia) device
            deviceEnumerator = (IMMDeviceEnumerator)new MMDeviceEnumerator();
            deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia, out speakers);

            // activate the session manager. we need the enumerator
            Guid IID_IAudioSessionManager2 = typeof(IAudioSessionManager2).GUID;
            speakers.Activate(ref IID_IAudioSessionManager2, 0, IntPtr.Zero, out object o);
            mgr = (IAudioSessionManager2)o;

            // enumerate sessions for on this device
            mgr.GetSessionEnumerator(out sessionEnumerator);
            sessionEnumerator.GetCount(out int count);

            // search for an audio session with the required process-id
            ISimpleAudioVolume volumeControl = null;
            for (int i = 0; i < count; ++i)
            {
                IAudioSessionControl2 ctl = null;
                try
                {
                    sessionEnumerator.GetSession(i, out ctl);

                    // NOTE: we could also use the app name from ctl.GetDisplayName()
                    ctl.GetProcessId(out int cpid);

                    if (cpid == pid)
                    {
                        volumeControl = ctl as ISimpleAudioVolume;
                        ctl = null;
                        break;
                    }
                }
                finally
                {
                    if (ctl != null) Marshal.ReleaseComObject(ctl);
                }
            }

            return volumeControl;
        }
        finally
        {
            if (sessionEnumerator != null) Marshal.ReleaseComObject(sessionEnumerator);
            if (mgr != null) Marshal.ReleaseComObject(mgr);
            if (speakers != null) Marshal.ReleaseComObject(speakers);
            if (deviceEnumerator != null) Marshal.ReleaseComObject(deviceEnumerator);
        }
    }
}

redpajama_set_name: RedPajamaStackExchange


text:
Australian Cinema
Archives For Australian Cinema
Movie Review: Pimped (2018)
Over at Screen Realm, I review Aussie thriller Pimped.
https://screenrealm.com/pimped-movie-review/
In Blog, Film, Film Reviews	Australian Cinema, Pimped
Amiel Courtin-Wilson: In Art, As In Life (Interview)
Since the age of 19, with his accomplished documentary about his aunt, Chasing Buddha, Amiel Courtin-Wilson has been swimming through a sea of never-ending work ("I just really love what I do, so I try to do as much as I can.") When FilmInk catches up with him in Paris, he is working with composer and sound designer Nicholas Becker (Batman Begins), about to board a plane to return to hometown Melbourne as part of the Melbourne International Film Festival (MIFF) for a screening of his new film The Silent Eye, as well as a 10th anniversary screening of his documentary Bastardy.
Running just over an hour, The Silent Eye is a contemplative performance piece that sees Japanese dancer, 72-year-old Min Tanaka collaborating with free jazz pioneer, 88-year-old Cecil Taylor; the pair having known each other for over 30 years. It's a stripped back affair that contrasts with Amiel's previous narrative work.
"I've been doing these shoots that take years and years, I wanted to do something that was discreet and very contained," he explains. "I was really interested to see if I could shoot a feature in a few days, in a single room and setting those kind of creative constraints."
In Blog, Film, Interviews	Amiel Courtin-Wilson, Australian Cinema, Bastardy, Independent Cinema, The Invisible Eye
Bastardy (2008)
Amiel Courtin-Wilson pretty much sets up the tone of 2008's Bastardy within its opening moments. "If I were to hide any of this," says indigenous actor 'Uncle' Jack Charles as he lays out his drug paraphilia. "I don't think this would be a true depiction of my lifestyle." It's a powerful image and not the last time we see Charles this open and frank.
Courtin-Wilson shoots Charles from a distance as he wanders around the streets of Melbourne leaving the larger than life character to seem tiny and insignificant in the world around him. In the best possible way, Bastardy shows the mass of contradictions that make up the then-homeless actor. As he waxes lyrical about his addiction, his lost love and his criminal record, Charles can leave his audience humble by his cheerfulness. He is happy to share his tales and is good for a philosophical thought or two. And yet, with the demons that run rife in Charles' life, this kind of optimism doesn't continue all the way through Bastardy.
Read the rest of the review here.
In Blog, Film, Film Reviews	Australian Cinema, Bastardy, Independent Cinema
Three Summers (2017)
August 26, 2017 — 1 Comment
In Ben Elton's second film as director, the writer and comedian uses the microcosm of a WA folk festival to pick at the scabs of Australia's political climate both past and present. Elton has always been known for his politics, so his desire to sink his teeth into something like this is not surprising. What is surprising is how he wraps up the political back and forth in the form of a romantic comedy which sees overly serious theremin player, Roland (Robert Sheehan) and down to earth fiddle player Keevey (Rebecca Breeds) pretend they don't fancy each other over three years.
Without this 'will they? won't they?' as the main thrust of the film, Three Summerscould come across a little overwrought and perhaps even on-the-nose. That said, the film's backdrop is a smart choice on Elton's part; allowing characters of differing POVs to rub shoulders, without it feeling like they've been crowbarred into the scenario.
In Blog, Film, Film Reviews	Australian Cinema, Ben Elton, Three Summers
Housewife Pornographer Doco Launches Kickstarter Campaign With a Bang
Perhaps all of us at some time have wanted to reinvent ourselves; to be reborn a new person. For former housewife Morgana Muses, the desire came when she was at her absolute worst. Recently divorced and feeling isolated from her conservative community, Morgana, sadly, wanted to end her life. Before doing so, she hired a male escort for one last stab of intimacy. It was from this point onwards her life took on a whole new meaning. Seizing a later opportunity to make an erotic film about her experience, Morgana lit the touchpaper to a new life as a feminist adult actress.
The documentary, Morgana, follows the titular subject as she takes ownership of her sexuality and identity and is directed by Melbourne filmmakers, Josie Hess and Isabel Peppard. Isabel is an award-winning animator whose short Butterflies won great acclaim on the festival circuit. Josie, along with writing and producing the short film Sunroom, has worked on numerous indie erotica projects including Morgana's Permission4Pleasure label.
"Josie had approached me to direct Morgana's 50th birthday present to herself, which was to be suspended in a giant bondage installation," Isabel explains. "It wasn't something I would have directed, because I only direct my own visions and the stories I write. However, Josie told me about Morgana's story, that three years ago she was a housewife from rural Australia and now she's a pornographer and I thought 'wow, that's an incredible story'."
In Blog, Film, Interviews	Adult film industry, Australian Cinema, Independent Cinema, Morgana documentary
The Space Between Australian and Italian Cinema (Interview)
The Space Between is the feature length debut from director Ruth Borgobello and the first to come out of the Italian/Australian co-production treaty signed way back in the '90s. A potent blend of second chances, love and stunning scenery, the film is likely to resonate with the Europhiles of Australia.
Filmmaker Ruth Borgobello hadn't always wanted to be a director. Growing up she had her heart set on being an actress or a writer. Discovering films like A Clockwork Orange and The Graduate in her teens, led her to wanting to study film at VCA. A word from her careers guidance counselor led her down a different path however.
"He gave me a disapproving look," Ruth explains "and said, 'if you want to study arts, then at least do Arts/Commerce so you have a back-up.' I took his advice to heart and ended up at Melbourne Uni studying Commerce, sneaking in a few cinema subjects and getting involved in theatre. Marketing was the most creative of the majors on offer so I did that."
In Blog, Film, Interviews	Australian Cinema, Independent Cinema, Interview, The Space Between

redpajama_set_name: RedPajamaCommonCrawl


double pointed knitting needles nz.
durkee ez frames hooping pro bundle janome.
blocking wires for knitting the magic of before i blocked it sample on right was make.
size 35 knitting needle big needles circular us blanket.
circular knitting needles sizes the minimum stitches needed to go around a needle size 50 for sale.
recollections paper all occasions pad x sheets and available punch.
cake decorating kits for beginners topper kit trains basic supplies.
interchangable circular knitting needles knit pro interchangeable chunky set wooden south africa.
susan bates knitting needles storage oh my word is this what future holds size 9.
chiaogoo knitting needles spin bamboo interchangeable needle 5 tip set large from on studio complete.


Baroness Van Wrangell; Sotheby's London, 26 November 1970, lot 67.
A. Morassi, Guardi, Tutti i Disegni, Venice, 1975, p. 173.
Geneva, Musée d'Art et d'Histoire, Art Vénitien en Suisse et au Liechtenstein, 1978, no. 176.
Brussels, Palais des Beaux-Arts, Dessins Vénitiens du XVIIIème siècle, 1983, no. 107.
Related to a picture formerly belonging to Lady Leyton and now in a private collection, New York, A. Morassi, Guardi, I Dipinti, Venice, 1984, I, no. 782, fig. 713. A drawing of the same composition was with Cailleux in 1971, while another without figures is in the Boymans-van Beuningen Museum, Rotterdam, and a third in the Museo Correr, A. Morassi, Tutti i Disegni, Venice, 1975, (respectively) nos. 542, 544, and 573, illustrated. The composition was later re-used by Giacomo in a drawing exhibited at Springfield, Museum of Fine Arts, Francesco Guardi, 1937, no. 46.


The accepted manuscript can be downloaded from here, the paper in it`s final mode is avalible here.
The source code ver. 1.1 of the algorithm SIMPLE-TS written in C++ and the short help (release date: August, 2011).
- The parallel organization is according .
- The parallel efficiency is improved according v1.0 (see ).
- The bugs of the code, when are used more then 20 CPU are solved.
The source code ver. 1.0 of the algorithm SIMPLE-TS written in C++ and the short help (release date: January, 2010).
Increasing velocity at the channel inflow from Mach number 2.43 to Mach number 4.86, for Knudsen number 0.05.
To download .avi file of animation click here.
Unsteady subsonic, compressible, viscous, heat-condictive fluid flow past a confined square in a micro-channel - Mach number 0.1 and Knudsen number 0.00194 (according to Reynolds number 85) .
Unsteady supersonic, compressible, viscous, heat-condictive fluid flow past a confined square in a micro-channel - Mach number 2.43 and Knudsen number 0.00283 (according to Reynolds number 1415) .
1. K. Shterev and S. Stefanov, Pressure based finite volume method for calculation of compressible viscous gas flows, Journal of Computational Physics 229 (2010) pp. 461-480, doi:10.1016/j.jcp.2009.09.042 - the accepted manuscript can be downloaded from here, the paper in it`s final mode is avalible here.
2. K. S. Shterev and S. K. Stefanov, A Parallelization of Finite Volume Method for Calculation of Gas Microflows by Domain Decomposition Methods, 7th Internnational Conference - Large-ScaleScientific Computations, Sozopol, Bulgaria, June 04-08, 2009.
3. K. S. Shterev, S. K. Stefanov, Finite Volume Calculations of Gaseous Slip Flow Past a Confined Square in a Two-Dimensional Microchannel, Proceedings of the 1st European Conference on Microfluidics - Microfluidics 2008 - Bologna, December 10-12, 2008.
4. K. S. Shterev, S. K. Stefanov, E.Atanasov, A parallel algorithm with improved performance of Finite Volume Method (SIMPLE-TS), 8th Internnational Conference - Large-ScaleScientific Computations, Sozopol, Bulgaria, June 06-10, 2011.


text:
Q: jQuery.each and setTimeout don't play together well (possibly)? So, I read a lot about the issue. Nothing I was able to find online resolved my problem. Here is a bit of code:
jQuery( 'input:not([type=submit]):not([type=hidden]), textarea' ).on( 'click', function() {

    $this = jQuery( this );
    parentWrap = $this.parents( 'label' );
    inputLabel = parentWrap.find( '.label' );
    otherInput = jQuery( 'input:not([type=submit]):not([type=hidden]), textarea' ).not( this );

    if ( ! parentWrap.is( '.focused' ) ) {
        parentWrap.addClass( 'focused' );
        setTimeout( function() {
            inputLabel.addClass( 'focused' );
        }, 1000 );
    }

    otherInput.each( function( index, elem ) {
        elem = jQuery( elem );
        elemVal = elem.val();
        elemParentWrap = elem.parents( 'label' );
        elemInputLabel = elemParentWrap.find( '.label' );
        if ( elemParentWrap.is( '.focused' ) ) {
            if ( 0 === jQuery.trim( elemVal ).length ) {
                elemParentWrap.removeClass( 'focused' );
                setTimeout( function() {
                    elemInputLabel.removeClass( 'focused' );
                }, 1000 );
            }
        }
    });
});

The process:

*

*I click the input, two elements related to that input have .focused classes added. One of those classes is added with delay.

*Second part of the function goes through every input on page, except
of the clicked one, checking, if its elements got class .focused. When no class found it doesn't execute anything.

*I click another input on the same page, it goes through point 1. everything works ok. Every two elements (label and .label) related to any other input (other than the one clicked) are supposed to have their class .focused removed, (one of those related elements to have class removed with delay), but removing with delay doesn't happen.

How to sort it out?
PS, hope I put everything clear. If not please ask a question. There is also small input value check in the code. Please ignore it as it's not relevant for the question.
PS2, when I remove timeout from second function both elements related to the input have their classes removed.

A: The problem is that you do not declare your variables, and so they are global. For instance, take elemInputLabel. The each loop will set that variable to its last value, and then 1 second later all the timers trigger their callbacks, which all reference the same variable, which has the same value.
The solution is to use var like var elemInputLabel =. Now you have separate variables for each callback of the each method. Make sure to declare all your variables so they are local to their functions.


Move over Kardashians and contouring – there's a new trend gaining momentum on social media and we're digging it. The #NoMakeup movement is sweeping Hollywood, with starlets taking to Instagram and Twitter to share an au naturel side with fans.
A-listers like Alicia Keys, Megan Fox and even Gwyneth Paltrow are just a few who've recently shared their fresh-faced, makeup-free looks. The response has been overwhelmingly positive.
DERMAFLASH - The new DERMAFLASH device takes at-home exfoliation to the next level. With a subtle sonic vibration, the device refines skin, removing debris, dead skin cells, vellus hair/peach fuzz and other complexion-dulling culprits. Viola – super smooth skin in just 10 minutes a week!
Lumixyl Revitaleyes - The first and only eye cream formulated with decapeptide-12 as part of a truly comprehensive treatment to treat all five signs of aging eyes. The all-in-one miracle worker corrects dark circles, eye-area lines and wrinkles, dryness and inflammation. Bye bye raccoon rings and caked on cover-up!
Exuviance Skin Caring Foundation SPF 20 – For fresh-faced light coverage, this water based, oil-free formula visibly reduces signs of aging while providing all-day coverage, treatment, and protection from the sun. Over time, clinically proven and highly effective Polyhydroxy and Bionic Acids reveal younger looking skin.
SilkPeel – Celebsare obsessed with this facial because of its skin-perfecting benefits. The treatment combines high-quality diamond-assisted microdermabrasion with infusion of targeted serums to diminish dark spots and photo damage without irritation. It delivers an insta-glow, making it perfect for a pre-date night pick-me-up.
HALO – With Sciton's latest laser, you can improve the appearance pore size, eliminate brown spots, rejuvenate skin texture and tone while stimulating new collagen all in one treatment. A single 30-minute session generates more youthful skin that glows. There's very little downtime, and you can apply makeup and be back at work the very next day.
BBL FOREVER YOUNG - BBL (broad band light)is anon-ablative laser that targets the unwanted melanin in skin. Using multiple filters, BBL can treat a multitude of problem issues. It's great for conditions such as brown spots and freckles, vascular lesions and rosacea, active acne, and even hair removal.


You've done the calculations, you've read the benefits, you've weighed up the negatives, and you've decided that IT contracting is the next step in your career. Now, you want to know how to successfully take the jump from the standard 9 - 5 into an exciting and unknown world of IT contracting job opportunities, and at Evolution Recruitment Solutions we know how.
What are the benefits of IT contracting?
We know that you know the benefits of IT contracting over permanent employment, but those last-minute doubts are natural. So, before we jump into how to become a successful IT contractor, we'll recap on why you want to become an IT contractor in the first place.
Flexibility - deciding when you work and when you play.
Variety - working on different projects, with different teams and at different companies.
Higher pay - as a short-term resource, businesses are willing to pay more for your presence.
Networking - you will meet and work with a variety of professionals in the IT world.
Plus, with opportunities, control and a wealth of experiences, IT contracting jobs are a lucrative alternative to permanent employment - but how do you switch successfully?
At Evolution Recruitment Solutions, we have seen the number of IT contracting jobs increase substantially, but with more than 4.8 million self-employed individuals in the UK, we know that your success as an IT contractor depends on how you execute the move.
Having successfully placed thousands of IT contractors, we've gathered together our top tips in making a success of your IT contracting career.
Businesses recruiting for IT contractors in the UK are searching for a specific skillset for a particular project or period. Time is of the essence, and you'll be expected to hit the ground running, not wasting time upskilling or training.
Be honest about where your specialisms and skills lie, including transferable qualities such as project management, team leadership and problem-solving. Then speak to a dedicated recruitment consultant about the demand for, and market strength of, these skills.
Without a formalised plan (and budget) for continuous professional development, you'll need to dedicate time to keeping your skills relevant. Attend regular seminars, network with industry professionals, subscribe to industry-relevant publications and regularly speak to your recruitment consultant to ensure that your skills are always of a quality in demand.
Your CV might be regularly updated, or not have seen the light of day since your last interview. Either way, you'll need to redesign your CV, LinkedIn profile and adapt your interview techniques for the contracting world. An increased focus on skills, achievements and problem solving is key, as is researching the client you'll be interviewing for.
Companies look to IT contractors to fix a specific problem for their business. Heavily research any business that you interview for to show that you understand them and their problems, explain how you are the solution, and clarify how you'll make an impact.
Handing in and working your employment notice, then walking straight into an IT contracting position, isn't easy - but it also isn't impossible. Create a timeline and action plan of when you'll hand in your notice, connect with a specialist IT recruitment agency and commence your job search. Be wary of any post-termination restrictions in your current contract and be open about when you can start a contracting position.
Are you going to operate as a limited company? Will you complete your own accounts or hire an accountant? Do you understand the implications of IR35? Equipment, insurance, pension, website, telephone number, health care, business account - these are all things you might take for granted in permanent employment but as a contractor, they are things you need to be on top of. Take the time out now to prepare for self-employment and everything that comes with it.
Calculate how much money you need to survive and want to play with. Following this, find a niche IT recruitment agency that has the facts, figures and experience to help you to understand current pay trends and set realistic day rates.
Being an IT contractor in the UK is incredibly rewarding and fun, but it is also not without its challenges. Starting the journey with a specialist IT recruitment consultancy makes the adventure easier.
Evolution Recruitment Solutions works with you from the beginning, helping to secure your first IT contracting position and developing a life-long relationship, so that you are always on the radar and ready to move from one contracting position into the next.
Contact us to discuss your jump into the contracting world with one of our consultants today.


We hire seasonal interpretive naturalists to present programs and staff our interpretive centers during the summer season. Find out more about what it means to be an interpretive naturalist. View a brochure explaining how to apply for a summer interpretive naturalist position. A location map provides an overview of where our parks and lakes are located.


§ I start with the economic background.
Once again, we can look back on a year of steady growth and low inflation. During 1984 as a whole, inflation remained at around 5 per cent. Output grew by a further 2.5 per cent., with investment up by 6.5 per cent. and non-oil exports by 9 per cent., to reach all-time record levels in each case.
Manufacturing industry recovered particularly strongly, with output up by 3.5 per cent.—the biggest rise in any single year since 1973—exports up by 10 per cent. and investment by 13 per cent. The current account of the balance of payments has remained in surplus, for the fifth successive year. By international standards, too, the economy has performed well. Our growth was above, and our inflation below, the European Community average.
Moreover, this progress has been achieved in the teeth of the coal strike, for which, in the short term, the nation has had to pay a heavy price. In the current financial year, the coal strike has reduced the level of national output by over 1.25 per cent. and worsened the balance of payments by some £4 billion. It has increased public expenditure by £2.5 billion and public sector borrowing by £2.75 billion. It has cost us confidence abroad and jobs at home.
But the costs, both economic and constitutional, of submitting to this strike would have been infinitely greater than the costs that have been incurred in successfully 784 resisting it, and it is a remarkable tribute to the underlying strength of the British economy that it has been able to withstand so long and damaging a strike in such good shape.
Looking ahead, we are now about to embark on what will be the fifth successive year of steady growth, with output in 1985 as a whole set to rise by a further 3½ per cent. Inflation may edge up for a time, perhaps to 6 per cent. by the middle of the year, but should then fall back to 5 per cent. by the end of the year and lower still in 1986.
While there can be no disputing the strength and durability of the economic upswing, there is equally no disputing the fact that it is marred by an unacceptably high level of unemployment—and this despite the fact that the latest figures suggest that employment has risen by half a million over the past two years, with a further increase likely over the year ahead.
If at home the past year has been overshadowed by the coal strike, internationally it has been dominated by the relentless surge of the dollar, which rose by a further 30 per cent. against all the major European currencies. To finance its massive budget deficit, the United States is importing a large part of the rest of the world's savings and exporting some of its own inflation.
This is not a sustainable state of affairs. As Federal Reserve chairman Paul Volcker last month testified to Congress, the United States is living on borrowed money and borrowed time; but meanwhile, it is not only America that is paying the interest.
All this has led to one of the most turbulent years in the financial markets within living memory. It has been, and will continue to be, a time for strong nerves and sound policies.


Read a message from Larry Brown Jr, NAACP ACT-SO National Director.
Toolkits, guides, calendars and updates for local ACT-SO leaders, students and parents.
ACT-SO was founded in 1978 by journalist Vernon Jarrett.
Including 32 competitions, students can select up to 3 competitions from a total of 29 offerings.


Until now, the standard screening test for diagnosing diabetic kidney disease has been to check the level of albumin in the urine. Now, however, a new indicator may be setting the bar higher for improved diagnosis. A new study suggests that earlier diagnosis for diabetic kidney disease may be possible through the analysis of the blood's uric acid levels.2 Elevated levels of uric acid may be an indicator of kidney disease.
The study, led by Dr. Elizabeth T. Rosolowsky at the Joslin Diabetes Center in Boston, found that the kidney function for people with Type 1 diabetes was directly related to the level of uric acid in the bloodstream. As the level of uric acid increased, the level of kidney function decreased. Scientists on the study further speculated that reducing the concentration of uric acid in the bloodstream may have the effect of warding off potential kidney damage. Such results could be achieved through the use of medications or altering the diet to include less protein. Further studies are being pursued to determine whether reducing levels of uric acid does indeed have a positive effect on kidney function.
In the meantime, there are many things that people with diabetes can do to keep their kidneys as healthy as possible. The most important is to control the diabetes so that further damage is not caused. Controlling blood pressure is also important, as is keeping the urinary system in top shape. For further information about kidney damage and diabetes, speak with your health care provider.
How many ounces of protein per day is safe for a diabetic with slightly elevated kidney numbers? How do you convert grams of protein into ounces? My mother will not consult with a dietician and we are trying to help her. Please advise. Thank you.


BOSTON (CBS) – One of the Boston Globe reporters made famous in the movie "Spotlight" has a new bombshell story on the Catholic Church – thousands of people claim they were fathered by priests.
"We know there are many more than people assume, probably in the thousands. Just recently, about two years ago, a son of a priest in Ireland set up a website called Coping International and he's heard from scores of people from all over the world who are the sons and daughters of Catholic priests," Rezendes said.
Rezenedes first heard from a man named Jim Graham, who's profiled in the Globe story.
"Jim spent many years tracking down evidence that a priest was his father. I was impressed with what he suffered, the pain he endured, and I was impressed with his detective work, but still it was just one person and it wasn't until Vincent Doyle called me and gave me the information he collected through his website that I realized this was a systemic situation and deserved my full attention," Rezendes said.
Many of these children of priests struggle in silence and secrecy as they grow up.
"I think they suffer emotionally, I think they suffer financially, I think they suffer spiritually by not having a loving father and very often by not having a father who provides adequate child support," Rezendes told CBS.
The Vatican declined to comment on the Boston Globe story.
"If a priest fathers a child, he has a moral obligation to step aside from ministry and provide for the care and needs of the mother and child. In such a moment, their welfare is the highest priority," Boston Cardinal Sean O'Malley said in a statement to CBS News.
"I think Cardinal O'Malley's statement is important because I think more often than not the first reaction of a priest is to cover up the fact that he has become a parent. And what Cardinal O'Malley is saying, and I think this is in line with some of the things Pope Francis has said is, 'No, if you're a priest and you father a child, your first responsibility is no longer to the church, it's to your child," Rezendes said.
Part two of the Spotlight report can be found in the Boston Globe Thursday.


text:
Q: Summation for more than once of the dataset using proc sql My data
data mydata;
input
Category $
Item
type
amount;
datalines;
A  1 100 11111
A  2 900 11111
A  3 123 11111
B  1 113 11111
B  2 900 11111
C  1 111 11111
C  2 900 11111
;

My attempt
proc sql;
create table want as
    select *, sum(amount and item <> 900) as without900, sum(amount) as total from mydata
group by category
;
quit;

Result
Category    Item    type    amount  without900  total
  A          3       123     11111       3      33333
  A          1       100     11111       3      33333
  A          2       900     11111       3      33333
  B          2       900     11111       2      22222
  B          1       113     11111       2      11111
  C          2       900     11111       2      11111
  C          1       111     11111       2      11111

Expected result
Category    Item    type    amount  without900  total
  A          3       123     11111    22222     33333
  A          1       100     11111    22222     33333
  A          2       900     11111    22222     33333
  B          2       900     11111    11111     22222
  B          1       113     11111    11111     11111
  C          2       900     11111    11111     11111
  C          1       111     11111    11111     11111

I know this can be easily achieved by creating another table and maybe hence using left join. I wonder how to achieve the expected using as least proc SQL step as possible. Thank you very much.

A: You are comparing item to 900, when you should be comparing type.  The conditional sum can be accomplished using a case clause within.
Example
data mydata;
  input Category $ Item type amount;
datalines;
A  1 100 11111
A  2 900 11111
A  3 123 11111
B  1 113 11111
B  2 900 11111
C  1 111 11111
C  2 900 11111
;

proc sql;
  create table want as
  select
    *
    , sum(case when type ne 900 then amount end) as without900
    , sum(amount) as total
  from
    mydata
  group by
    category
;
quit;


The 76-year-old actor is known as one of Hollywood's most outspoken environmental activists and has repeatedly taken veiled swipes at President Donald Trump and other Republican leaders for their skepticism of the man-made climate change theory.
Ford, of course, has produced a massive carbon footprint, piloting vintage, carbon-spewing airplanes for decades. In 2015, Ford crash-landed a vintage World War II-era airplane after the engine failed. He suffered only minor injuries. The Blade Runner star also owns a fleet of planes, cars, motorcycles, and a Bell 407 helicopter.
That's right, he took a long fossil fueled flight to a nation whose entire economy is based almost solely on fossil fuels.
Hypocrisy matters. If your doctor told you to give up smoking, eat better, and exercise, while at the same time being vastly overweight and out of shape, smoking a cigarette while examining you, would you listen?
This entry was written by William Teach and posted on at 10:00 am and filed under Climahypocrites, Global Warming. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
If global warming is a hoax because Harrison Ford flies a plane, is illegal immigration a hoax because DJ tRump hires illegal workers?
Real Americans will believe illegal immigration is a crisis when those who say it's a crisis start acting like it's a crisis.
When the tRump's are arrested for violating immigration law we'll take it seriously.
The Donald doesn't hire illegals. Maybe some of the people who work in his organization might, but that's another story.
And Teach is making the point, which Bugs sedulously tries to avoid (I wonder why) that many tree huggers are hypocrites on the subject of using fossil fuels, Dr Jones, who resides in MT with Ally McBeal but ventures away from the Big Sky on occasion, being clearly one of them.
And real Americans, not closet Communists like Hermione, rate it at the top.
Of course, the Trumps will be arrested for violation of immigration law right after Mule Ears releases his devastating report.
Glad to see your coming around to the fact AGW is a HOAX.
Another few years of Trump and you must might start wearing a maga hat and shouting BUILD THAT WALL!
What would we do without Han Solo? I guess we'd be watching TV in the dark.
Hey Elwood, Trump has never in his career deliberately hired an illegal alien. He does not hire that level of employee, managers do. Saying Trump hires illegals is like saying if an employee robs a bank Trump hires bank robbers. Technically true but actually deceitful. Which, as usual is what you are being: deceitful.
Unlike you I've actually been to Mar-a-Lago many times. They employ hundreds of workers from executive management (like HR in charge of hiring) down to busboys and lawn trimmers. I'm friendly with many of them. Trump doesn't even hire the executive management there let alone any possible illegals.
When you make an erroneous and accusatory statement like "Trump hires illegals" you display a complete lack of business understanding and how hiring at those levels is done.
Now you know how it works. To repeat the lie will mean you acknowledge you are lying deliberately. You need to be better than that.
He visits often, he collects money from it, he'll live there is he's not in the WH or prison. It's his responsibility. The Buck Stops Here, not Over There.
If you think the executives of a corporation have no obligation other than getting paid – it's you that doesn't understand business.
You're either lying or a fool if you think his staff was hiring illegal workers without him suspecting anything. He looked the other way. It's his responsibility.
He visits often, he collects money from it, he'll live there is he's not in the WH or prison. It's his responsibility.
He goes there and physically is paid? He has a responsibility to stay there?
Wow! Harvey is venturing in Gropin' Joe territory.
And, of course, Cordelia is a captain of industry who has the laws of what an executive's responsibilities are always on her. The little voices wrote it.
You're either lying or a fool if you think his staff was hiring illegal workers without him suspecting anything.
Yes, he sees every application that his organization processes.
He looked the other way. It's his responsibility.
Just like Zippy did when Holder was running F&F or when those guys were pinned down in Benghazi.
Why don't you tell us" You seem to know everything else. Let's have those names, dates, and places.
Yeah, that's why he's worth billions and is President of the United States.
6 bankruptcies. The only person to go bankrupt with a casino.
No, lots of people went bust in their AC casino ventures after states started allowing Indian reservations from getting into the casino biz. And it was 4 times.
Okay Elwood. You just keep on shuckin' and jivin' about Trump hiring illegals. You are now officially a liar in my book. BTW at least 5 casinos in Atlantic City alone have gone bankrupt . The Trump Plaza, The Trump Taj Mahal (owned by Carl Ichan at the time), Revel, Showboat and Atlantic Club Casino that I know of. All business even undertakers can go bankrupt and everybody has to die. If you want I can list the ones that went bankrupt in Reno and Las Vegas too. All you need to do is DuckDuckGo. Why perpetuate lies when the truth is out there? Just being mean I guess. Typical.
BTW, the reason for Trump Plaza as well as most of the others going out was 1) Employee unions killed them, 2)the corruption that is Democrat controlled Atlantic City and 3)the amount of red tape even on a daily basis.
When a person has been in the real estate and construction, casino, restaurant and club businesses over six decades a mere six bankruptcies is nothing. He's owned scores of businesses and done hundreds of projects and I think only six bankruptcies is a damn good track record. Most people who go into bankruptcy in business do it on their first time out.
I'd also like to point out that Trump does practice what he preaches. There is a high and continuous wall around Mar-a-Largo.
And it's filled with illegal workers!! Doesn't he learn from his mistakes?
So you're really going to perpetuate a lie even when you know it to be so? You should be a better person than that, Elwood. I run across many liberal and even leftist posters on blogs but very, very few are willing to stand behind a lie they know not to be true. You should be ashamed of yourself. Even if some illegals did happen to work for a Trump company you know he didn't hire them and it's not the point of AGW hypocrisy now is it? One has nothing to do with the other.
It's a non sequitur. Nignorant uses that fallacy all the time when he has lost the argument.
We're pointing out the flaw in Teach's argument that people such as Harrison Ford shouldn't be taken seriously on climate change 'cause airplanes, or cars, or A/C.
DJ tRump's companies hire illegal workers, yet DJ tRump rails against illegal immigrants.
We'll believe illegal immigration is a crisis when those who claim it is start acting like it. See?
Remember, Do as I say, not as I do? That's tRump on illegal immigration.
So which is he? A lousy businessman who doesn't understand all the criminal behavior going on in his companies or an executive who countenances his companies' crimes? It has to be one or the other.
Just Babbling nonsense. The world is gonna END if we dont contain global warming.
the USA is not going to end but it certainly will be much less safe if ICE Is abolished.
See the difference? Probably not.
Let me explain. We are gonna drown, burn up, perish. The world is gonna over populate and die off because of AGW. Yet the left does nothing about it.
Even when Obama had all the votes he worked on health care and dodd/frank for 2 years. NOT AGW.
AOC says were all gonna die in 12 years but she wants Universal health care, free education, get rid of farting cows, rebuild all the buildings in America.
AGW proponents get on planes and jet to conferences whose job is to scare people into believing were all gonna die from AGW. See the Difference? Probably not.
Illegal immigration and those hiring them used to be HUGE for the Democrats. They hated the idea rich people were hiring illegals because it was taking jobs from their constituents. Now they hate those who are opposed to illegal immigration because it means votes for them.
See the difference? The rest of us do. I'm sure you don't in your trollish and lonely world of calling all Hispanics Animals because they happen to be Roman Catholics and yet, you want them to flood into America. You want to fill our land with Despicable people. See the difference? No probably not.
Nignorant can only use logical fallacies to argue.
Bugs pushes this line knowing nobody buys it or really cares. Most people know about this thing called HR that hires and just lets the board know how many people are on board.
According to her little voices, angel moms and border ranchers are all racists.
Do as I say, not as I do? That's tRump on illegal immigration.
No, that's the Left on everything.
A lousy businessman who doesn't understand all the criminal behavior going on in his companies or an executive who countenances his companies' crimes? It has to be one or the other.
How many lousy businessmen are worth billions? And why didn't the Demos drag him into court when they controlled Congress and the Rainbow Bathhouse?
How many billionaires started with a $400 million nest egg from daddy?
Please, give us a headcount. How many out of the total positions?
Harrison Ford cant even land his plane on a runway. Hollywood actors are nothing more than people who can pretend to be other people. Somehow that makes them special and intelligent and wise beyond their years.
For your information you just landed on the taxiway Mr. Ford. You need to meet our people and fill out the necessary reports.
Wait, I couldn't see the runway it was covered in sea level rise.
Hollywood celebs should STFU about things they are ignorant and have no special expertise.
Because were it not for their ability to entertain us, they are of no practical value.
No. It is not hypocritical to turn on a light bulb, even if the electricity is generated in a coal-fired plant. The solution to climate change is not to live in the dark.
Ford probably flew his Cessna Citation jet to this Dubai conference.
Pirate's Cove is powered by Pure Neocon Pirate Evil. Oh, and WordPress 5.1.1. Delivered to you in 0.674 seconds.


text:
SBC celebrates its fifth birthday with new publication to showcase its
Published on 5th September 2017
Five Years of Innovation with Impact' highlights SBC influence on UK biotech sector
Stevenage, UK, September 6 2017 – Stevenage Bioscience Catalyst (SBC), the open innovation campus driving collaboration to improve healthcare, is marking its fifth birthday with the launch of an activity review, 'Five Years of Innovation with Impact'. Following developments since 2011, the publication draws a vibrant picture of the UK's first open innovation biomedical campus through figures, case studies and testimonials. The report, which is available below, shows how SBC has delivered on its vision of becoming a world-leading hub for life sciences activity.
Highlights of the report include case studies of the University of Cambridge innovation hub at SBC, the open innovation neurodegenerative disease challenge, and cell and gene therapy activities on campus. Companies featured include award-winning Plasticell, inward investor Aglaris and SBC alumnus Avacta Life Sciences.
Also in the report, SBC's founder stakeholders GSK, Wellcome and BEIS/Innovate UK highlight the incubator's impact.
'Since being established five years ago, the Stevenage Bioscience Catalyst and the many scientists involved have created a vibrant scientific community at Stevenage, which has been a key part of a growing open innovation network.', according to GSK.
'Stevenage Bioscience Catalyst offers the collaborative environment essential for innovator-entrepreneurs to transform discoveries into treatments and products to improve our lives.',Wellcome notes.
'Stevenage Bioscience Catalyst has proven to be an exciting scientific and commercially successful world class open innovation pharma campus.', says Innovate UK.
Ian Tomlinson, Independent Chairman of SBC, said, 'With its diverse range of case studies and comment, 'Five Years of Innovation with Impact' highlights the ways in which SBC has worked to catalyse innovation in the UK. In delivering on the vision of our stakeholders, whom we thank for their invaluable support, SBC has created a strong platform and community from which we will continue to collaborate to improve healthcare. The announcement last week of £12m of Government funding for increased capacity at the Cell and Gene Therapy Catapult Manufacturing Centre also recognises the potential of the campus and will be an important driver of its future growth.'
sbc-brochure-final-digital.pdf
--ENDS--
Stevenage Bioscience Catalyst
Miranda Knaggs, Interim CEO +44(0)1438 906906
Emma Palmer Foster, Strategic Communications Consultant +44(0)7880 787185
comms@stevenagecatalyst.com
About Stevenage Bioscience Catalyst
Stevenage Bioscience Catalyst (SBC) opened as the UK's first open innovation biomedical campus in 2012, and combines a unique blend of infrastructure and virtual networks to drive collaboration. Backed by a novel partnership between Government,GlaxoSmithKline and Wellcome, the remit was, and remains, to catalyse innovation for patient benefit in a phased development. SBC has a strong commitment to companies that focus on high quality science and share its vision, and its development of activity clusters and direct access to the expertise of a major pharmaceutical company are among its unique characteristics. There is start-up and grow-on space for companies, plus a commercially focused management team viewed as a leader in UK incubation. With Phase 1 at capacity, the next phase is in development for the continuation of the collaborative vision. Co-located with GlaxoSmithKline in Stevenage, Stevenage Bioscience Catalyst is located close to both London and Cambridge. For more information, please go to www.stevenagecatalyst.com. Follow us on twitter @SteBioCat
About Stevenage Bioscience Catalyst's stakeholders
Stevenage Bioscience Catalyst's stakeholders are GlaxoSmithKline (www.gsk.com), Wellcome (www.wellcome.ac.uk), the Department for Business, Energy and Industrial Strategy (www.gov.uk/government/organisations/department-for-business-energy-and-industrial-strategy; formerly the Department for Business, Innovation and Skills), and Innovate UK (formerly the Technology Strategy Board; www.innovateuk.org).


PixelFlow includes powerful real-time collaboration features for those who work in teams.
Open the right hand sidebar to see a list of PixelFlow users. The blue chat button indicated the user is online. You can send them a message to open a video or just click on the video they are watching. If the user is not online, they will receive an email or text notification.
Enable playback sync to share control of the playback transport.
PixelFlow also supports Skype to help you save on long distance charges.
This article explains how to connect with others and watch a video together.


text:
Asian-Australian Indie Pop Chanteuse Teagan Releases New Single 'Feeling Good'
With those sultry vocals and some skilful songwriting chops, Asian-Australian pop artist Teagan Goh is the one to watch as she releases her latest single 'Feeling Good'.
The third single she's ever released, 'Feeling Good' reveals a depth and maturity past the 21 year-old's young years; both musically and lyrically.
Teagan shares the message behind the song:
"Feeling Good is an analogy for pretending to be over something that clearly still bothers us. It's a catchy dance beat crafted to conceal how we truly feel."
Indeed, the catchy chorus repeated over and over layered on top of the lofi R&B arrangement produced by Spike Leo suggests that all is not as it seems.
Goh's muted, velveteen vocals are perfect on this track; weaving a subtle hint of melancholy and unwillingness to move on into her performance.
This, alongside her beautifully crafted lyrics "I'm feeling great/I'm feeling good/Do you believe me" and intelligent melody lines tastefully and clearly present the nuanced topic Goh and Leo intended to discuss within this piece.
The music video beautifully brings the song to life, creating pockets of space within a happening rave scene where time slows down, and Teagan is alone with her thoughts.
Whether you're an introvert who's been dragged to one too many parties, or someone going through something and being pushed to go on a night out you never wanted, this song's for you.
Check out the music video for 'Feeling Good' above, and check out the song, now available on all major streaming platforms such as Apple music, Spotify and KKBOX. Follow Teagan on her Instagram, Twitter or website for more information.
Check out Teagan's Study Playlist
[Exclusive Premiere] Third-Culture Kid Takkin德堅 Releases Debut Bilingual Single 'Stay Together'
By Jocelle Koh
Third-culture kid Takkin 德堅 has set his creative axis onto another trajectory with his debut single 'Stay Together'; released both with English and Mandarin versions.
The young creative who borrowed his stage name from his father has always moved around; spending his childhood in Singapore, Hong Kong, Rochester and Michigan. Now based in NYC, music has always been his grounding force; something that is clearly evident in the uniquely chilled and layered atmosphere he's created within his new single 'Stay Together'.
"It's accessible, and it has a pulse that many can identify with: a positive message heralding the value of longevity in relationship. Things can be fixed. Nothing is beyond repair. It showcases the movement of the narrative and highlights the unique vocal delivery. It's my flag in the ground; my way of saying: I'm here to stay."
Previously releasing with a three-piece folk band Northern, Takkin turned his focus onto his own cultural identity and exploring it through his music when a dear member of the band moved away. Of the change in direction, Takkin says:
"Creating music influenced by my own heritage has been an exciting change. There's a stir of new energy in the air, in the ground. The world is opening up to Asian artists, especially more so in the United States. People are eager for new faces, new interpretations, new formulas. I feel the pulse. I'm here to answer the call."
With the vocals of a learned crooner (very Eric Chou styles) and melodic hooks which subtly catch your attention and reel you in, 'Stay Together' is a sensitive, beautifully haunting R&B/Soul piece which you won't soon forget.
Listen to Takkin's new single 'Stay Together', now out on all major streaming platforms including Spotify, Apple Music, and Soundcloud. Follow Takkin on all his social medias (Facebook, Instagram) to stay tuned for his upcoming regular releases!
Check out Takkin's Choice PIcks_ Playlist
Dawen Wang returns with unique space-themed album "The International Space Station'
By: C.P Ching
After almost four years, Dawen Wang (王大文) returns with a unique space-themed album "The International Space Station" (國際太空站), officially released on March.29th, 2019.
This album was inspired while on a trip in Taitung, Wang looked at the sky and imagined being in outer space, and envisioned how lonely it would be looking back down on earth.
Through this idea, the concept of the album was born. It conveys the idea that "being in space can create infinite possibilities including the thoughts of seeing the world from a dark place (Black hole). "
As a result, each song in the album can be viewed as an independent story highlighting darker times of Wang's life, which metaphorically connects and summarises his mission in space.
The songs offer different perspectives on life, including his love for the earth, advocacy for environmental protection and his ideas on love and romance.
This is Wang's first full album since 2015 "Happy or not" (快樂不快樂), and through the process of creating this album, Wang was able to rediscover his passion and love for music again.
The album is available on all stores including Spotify, KKBOX and iTunes/Apple Music. Be sure to follow Dawen on his socials for more info!


text:
Editors • Редколлегия
Authors • Авторам
Contacts • Контакты
Review • Рецензии
Access • Доступ
ISSUE | АРХИВ ВЫПУСКОВ
Положение об этике
Шаблоны Joomla 3 здесь: http://www.joomla3x.ru/joomla3-templates.html
ON ESTABLISHING OF THE YEARLY PERIODICAL
"METHODOLOGICAL PROBLEMS OF THE CIVIL LAW RESEARCHES"
The Faculty of Law of the Perm State National Research University has been actively studying the methodological issues of the civil law science in recent years. The academic community of almost every large scientific and educational center of Russia was involved with this work. Professors from Moscow, Volgograd, Yekaterinburg, Irkutsk, Kazan, Kaliningrad, Krasnodar, Nizhniy Novgorod, Novosibirsk, Saransk, Saratov, Chelyabinsk, Ulyanovsk, Ufa participated in researching the methodological issues of the civil science. In the light of the complexity of the civil law methodology problematics, mostly doctors of law and heads of the civil law chairs of the higher educational establishments were invited for researching.
The first scientific results of this multi-apect and longstanding work of the large team of scientists were published in the magazine "Perm University Herald. Juridical Sciences" (ISSN 1995-4190): 2013. No. 4; 2014. No. 4; 2015. No. 3.
Even at that time it was clear that the problematics of the civil law methodology is popular among the new generation of legal scholars, it inspires topical discussions and publications of both beginning researchers of law and known civil law scientists.
In subsequent years of researching, the importance and relevancy of the affected methodological issues required to disclose them to a wider public. For this reason, one of the largest Russian juridical publishing houses – the Statut Publishing House (from Moscow) – was invited to be a media partner in our research work. It published three yearly collections of scientific articles covering methodological issues of the civil law researches. As of today, three issues of the yearly periodical have come out – in 2016 (ISBN 978-5-8354-1215-0), 2017 (ISBN 978-5-8354-1309-6), 2018 (ISBN 978-5-8354-1412-3) that were highly praised by the Russian legal scientists.
We have also noticed that the results of our scientific work are interesting for both Russian and foreign scientists in the sphere of both the law methodology and the civil law.
The annual "Methodological Problems of the Civil Researches" of 2017 is included into international citation database Web of Science Core Collection (identification number: WOS:000402694300001), together with one more scientific periodical of the Perm University – "Perm University Herald. Juridical Sciences" (ISSN 1995-4190).
However, with regard to the constantly growing interest for the methodological problematics in the civil law, the necessity of the maximum public reach, the importance of the popularization of the civil law science methodology as a science, the editors in charge decided to establish periodic annual "Methodological Problems of the Civil Law Researches". The first issue of the annual is kindly brought to your notice. With this we would like to emphasize that in scientific and organizational aspects, the periodic annual is a true successor of the civil science methodological research that was started in separate annuals of 2016–2018.
Hundreds of juridical scientific magazines are being published in Russia today. Each of them fills a definite scientific niche from the point of view of the problems discussed, legal science branch, presentation of the specific juridical school or region and etc. With this, there are no magazines among them that would deal with the civil law methodology which is considered to be a multi-branch science and the "first mother" of the civil law science, which explains the mechanism of the civil law knowledge formation and allows the civil law science to self-reflect and recognize itself as an independent branch of learning.
The periodic annual will be limited to methodological civil law problematics for the purpose of the strategic development of the civil law science theory.
The founders of the annual scientific magazine "Methodological Problems of the Civil Law Researches" see its mission in:
– raising the status of the civil law science methodology as a fundamental and practice-oriented juridical science in Russia and abroad;
– creating new subjects and programs for developing the civil law science methodology as a multi-branch sphere of the legal researches;
– integrating the Russian and the world-wide thinking in the sphere of the civil law researches;
– creating new trends for methodological researches in the civil law science;
– providing with discussion platform for extensive discussion of methodological issues in the civil law science;
– strengthening the correlation between the civil law methodology, scientometrics and attesting the scientific manpower of private law sciences.
We think that specific methodological issues require constant researcher's attention, because they set important guidelines for understanding the civil science on the whole and civil law science methodology in particular. The fundamental topic of the researches will allow to see the methodological landscape from a wider perspective and understand the development prospects.
In view of this, the editorial policy of the annual scientific magazine "Methodological Problems of the Civil Law Researches" includes supporting the researches on the following major topics:
– methodology of the civil law science, its achievements and strategy of development;
– methods and techniques of civil law research;
– interdisciplinary research at the intersection of gnoseology, science study, general scientific methodology and civil law methodology;
– the role of achievements in economy, sociology, psychology, cultural studies and other related sciences in civil law researches;
– discussions on the challenging issues of fundamental and applied research in the sphere of civil law methodology.
The intended readers of the magazine include the legal scientists, practicing civilists, representatives of the scientific expert community; specialists in attesting scientific staff, teachers of higher educational establishments, postgraduates, master degree candidates.
We think that the gained all-Russia and international acknowledgment of the articles published in "Perm University Herald. Juridical Sciences" (2013 through 2015) and in annual collected volume (2016 through 2018) proves their novelty and timeliness features. These articles were the result of the civil law methodology issues study. The above circumstances make it possible for us to propose our readers to continue the initiated discourse in new periodic annual scientific magazine "Methodological Problems of the Civil Law Researches". The magazine accepts publications of the "scientific article" type (surveys, reviews, comments, theses, conference works and so on are not accepted). Manuscripts of articles shall be submitted annually strictly by February 25, prepared in compliance with the requirements of the magazine, and are subject to mandatory review. There is no fee for publication.
ISSN 2619-0559 (print-version)
ISSN 2658-5863 (web-version)
The journal is published 1 time a year (annual)
614990, Perm, Bukireva st., 15
✉ methodology59@mail.ru
☎ +7 (342) 2-396-275
614990, Пермь, ул. Букирева, 15
* our data preserved in in this service
Official informations:
The certificate on registration:
ПИ № ФС77-73465 (17.08.2018)
Регистрационный номер (Роскомнадзор):
ISSN 2619-0559 (печатное издание)
ISSN 2658-5863 (сетевое издание)
© Научный журнал "Методологические проблемы цивилистических исследований", 2018
Лицензия Creative Commons с указанием авторства 4.0 Всемирная
The complete license terms can be found here


text:
Q: kotlin member reference - grabbing child object data (using kotlin JS btw)
if i have a class that looks like this
data class AppUserDTO(
    override val email:String,
    override val client: DTOMin? = null
)

and the DTOmin looks like
data class DTOMin(
override val id: Int,
override val display: String)

is there any way to access client.display via a member reference?
i can access AppUserDTO::email
would love to basically do something like AppUserDTO::client::display
I am trying to build out a generic data table with sorting/filtering and it is working great for AppUserDTO::email but i need something similar to AppUserDTO::client::display


text:
CyberU's Cornerstone OnDemand Suite Offers State-of-the-Art Learning Management, Employee Performance Management, and Succession Planning Capabilities
Santa Monica, CA - November 17, 2004 - CyberU, the leading provider of on-demand applications for human capital management (HCM), today announced the launch of the industry's first integrated, on-demand HCM suite that bridges the gap between employee development and performance. With CyberU's Cornerstone OnDemand suite, enterprises can now leverage the next generation of human capital software with fully-integrated Learning, Performance and Succession Planning components - making Cornerstone the first HCM application to seamlessly link state-of-the-art performance management tools to a world-class learning management system. The integrated Cornerstone OnDemand HCM suite can be implemented all at once, or on an as-needed basis, minimizing the costs and risks associated with enterprise-wide human capital management.
"Enterprises are beginning to realize the key to capitalizing on their employee assets is through leveraging technology investments that provide an integrated approach to learning, performance management and succession planning," said Jim Holincheck, Research Director, Gartner. "These suites delivered in an on demand model can simplify this undertaking by providing a cost-effective solution that is capable of being rolled out in phases and with minimal IT resources."
By enabling an organization to identify the strengths and weaknesses of individual employees, then place those employees on personalized development plans, and identify career paths for the high-potential employees among them, Cornerstone OnDemand enables corporations to maximize their organizational capability.
"CyberU has always impressed us at Randstad with their dedication to innovation and the natural evolution of their Cornerstone OnDemand HCM solution," said Vince Eugenio, Chief Learning Officer, Randstad North America. "When looking for a fully-integrated solution that would outperform our previous LMS we realized that Cornerstone was the perfect fit. The newly added integration capabilities provide us with the ability to integrate our learning efforts with future performance management and succession planning initiatives. And because Cornerstone is modular, we are able to cost-effectively manage a controlled deployment to our global population."
The Cornerstone OnDemand learning management system provides robust e-learning, instructor-led training, virtual classroom, and knowledge management functionality, as well as immediate access to over 10,000 online training titles from the top e-learning providers. Cornerstone's employee performance management system offers industry-leading tools to enable corporate best practices such as cascading goal alignment, 360-degree competency assessments, and the automatic generation of individualized development plans for each employee. Cornerstone's succession planning system provides career profiling, team building, internal recruiting, and talent management capabilities to help corporations identify their high-potential employees, minimize retention risk, meet EEOC requirements, and maximize their organizational capabilities.
CyberU designed virtually all of Cornerstone OnDemand's 4,000 features in direct collaboration with Fortune 500 HR and training executives.
"Managing an employee's development based on his or her individual performance and competencies seems obvious, but before today, it has been virtually impossible at the enterprise level," said Adam Miller, President and CEO of CyberU. "The typical human resources department has been forced to operate in independent silos because of the limitation of the systems that were available, preventing organizations from leveraging the benefits of coordinated employee performance management and development. In addition there was no means of identifying high potential employees early on and placing them on accelerated development tracks. With Cornerstone OnDemand, those days are over."


Welcome to this website, which is the result of over twenty years' research into the paper currency of the Mexican state of Sonora. A companion website is dedicated to the neighbouring state of Chihuahua.
though I have not considered this definition sacrosanct.
As such, the history of paper currency in Sonora probably began with colonial documents but its heyday ranged from the scarce company scrips of the 1880s to the emergency issues of 1935 and 1943. Within this period Sonora also had one bank of issue, the appropriately named Banco de Sonora, and saw currency issued by various factions during the revolution, in particular two issues by Maytorena's administration.
It should always be remembered that there were other types of currency in use, especially Mexican and American coins, notes issued by other Mexican banks and even American dollar bills, and that this history will be lopsided until these are brought into the picture. In particular, it should be noted that during the revolution both Carrancista and Villista currency were widely used, as is evidenced not only by documentary records but also by the resellos on Ejército Constitucionalista, Tesorería General de Chihuahua and Estado de Chihuahua notes.
For the sake of brevity I have presumed a knowledge of Mexican history and of the course of the revolution and apart from the explanations of how politics in Sonora affected the course of numismatics the few historical references are "to point a moral or adorn a tale".
This website also includes galleries of most Sonoran notes and the texts of most of the important documents (in Documents).


text:
50 Years of Transforming Lives: The History and Future of Heart Transplant...
by Stanford Historical Society
Tue, May 22, 2018, 5:30 PM – 7:30 PM PDT
Sales Have Ended
Registrations are closed
Registration for the program, 50 Years of Transforming Lives: The History and Future of Heart Transplant at Stanford, is now closed. If you'd like to contact the event organizer, please email Stanford Historical Society at historicalsociety@stanford.edu.
5:30 PM – 7:30 PM PDT
Knight Management Center
655 Knight Way
Stanford Historical Society 42nd Annual Members' Meeting
5:30 – 6:00PM | Annual Meeting (open to all)
6:10 – 7:30PM | Program and Q&A (open to all)
Members' Reception to Follow
In 1968, the very concept of transplanting a beating heart from one human to another seemed like science fiction. A visionary Stanford cardiothoracic surgeon named Dr. Norman E. Shumway set about to change that; and in the process created the standard by which nearly 2,000 life-saving surgeries are performed annually today. However Shumway's legacy is cemented not only for those three hours of surgery in January 1968, but in his team's decades-long commitment to further transforming transplant protocols and the translational science to lower patient rejection and increase survival rate.
Led by Dr. Joseph Woo, the current chair of Cardiothoracic Surgery at Stanford, this remarkable session will feature insights from several pioneering leaders in the field who were trainees on Dr. Shumway's team, including one of the first females in cardiovascular medicine, the inventor of the first mechanical heart device, as well as Shumway's partner in the first-ever heart-lung transplant. We will explore the impact of this historic innovation at Stanford on human health and the extraordinary new directions in cardiovascular medicine that Stanford is leading today.
Joseph Woo, MD
Norman E. Shumway Professor
Chair, Department of Cardiothoracic Surgery
Stanford University School of Medicine
Sharon Hunt, MD
Professor of Cardiovascular Medicine, Emerita
Phil Oyer, MD, PhD
Roy B. Cohn-Theodore A. Falasco Professor in Cardiothoracic Surgery
Former Chair, Department of Cardiothoracic Surgery
Bruce Reitz, MD
Norman E. Shumway Professor, Emeritus
United States Events California Events Things to do in Palo Alto, CA Palo Alto Seminars Palo Alto Other Seminars
50 Years of Transforming Lives: The History and Future of Heart Transplant at Stanford at CEMEX Auditorium
Knight Management Center 655 Knight Way, Stanford, CA 94305
50 Years of Transforming Lives: The History and Future of Heart Transplant at Stanford
Stanford Historical Society
Mon, Nov 11 8:00 AM
Advanced Technologies in Diabetes Research and Therapy (pgr)
Venue will be informed to the Registered Participants, San Francisco
#Seminar
Wed, Sep 4 7:30 AM
2019 Stanford Respiratory Care Symposium
LPCH, Freidenrich Auditorium, 1st Floor, Stanford
Wed, Nov 13 8:00 AM
Global Congress on Cancer Immunology and Epigenetics (pgr)
Sat, Jul 20 8:00 AM
Wet Vet Weekend 1
Best Western Seacliff Inn, Aptos
#Networking
Thu, Aug 8 6:00 PM
Exploring Narrative Medicine: Workshop with Kim Marcellino
California Institute of Integral Studies, San Francisco
8th Annual California Anesthesiology Medical Student Symposium
Stanford Medical School, Stanford
Sat, Oct 12 6:00 PM
University of Colorado Department of Ophthalmology Alumni Reception
St Regis San Francisco, San Fancisco
Tue, Jul 23 12:00 PM
Civil SF: The Urgency of Now, San Francisco Human Rights Commission's 55 Anniversary Celebration
San Francisco War Memorial, Green Room, San Francisco
Sat, Aug 3 12:00 PM
How to Write Stunning Sentences that Break the Rules with Nina Schuyler
Sausalito Public Library, Sausalito
Browse Stanford Events


text:
THE REVIEW OF "THE GUEST" BY SEBASTIAN WEBER
The review of short documentary "The Guest" by Sebastian Weber that has its international premiere at Doclisboa in Portugal.
"You should look for a soul mate, life would be easier", says a priest visiting an old bachelor in his farmhouse around Christmas. A wife would take care of the cooking and ironing. There would be someone to talk to or share the labour with. Yes, there is a lot to do on the farm each year, but Wojciech somehow makes it on his own. His parents died several years ago. He had a girlfriend twice, but it didn't work out. He's alone now but he's not living just for himself. There's also Paweł, a young man suffering from an alcohol addiction, and Wojciech is like an older brother for him. He visits him in hospital, supports him in his struggle with addiction or sits on the sofa with him, watching television and sharing his life stories. And there is the third person, observing their unusual relationship: the Swiss director.
Weber keeps his distance, watching the farmer's everyday life, but then again he becomes a character in the story, introducing himself to the priest or asking about the country life.
There is a time for observing church worship and for dancing to the rhythm of popular disco polo hits. The peaceful life in the Polish countryside revolves around the four seasons and Catholic holidays.
Guest shows the mundane life of a Polish village. It's dirty and repulsive, in a cowshed or a cluttered attic, but it's also beautiful, such as when we look out the window at an idyllic landscape of snow-covered fields or grazing cows. The film is warm and honest, just like the main character, who has accepted his fate and solitude. The presence of the director with a camera doesn't disturb the course of Wojciech's life but it adds to its meaning.
THE REVIEW OF "CONNECTED" BY ALEKSANDRA MACIEJCZYK
THE REVIEW OF THE FILM "THE BRIEFING" BY FILIP DRZEWIECKI
THE REVIEW OF "HORSE RIDERS" BY ANNA GAWLITA
THE REVIEW OF "SYMPHONY OF THE URSUS FACTORY" BY JAŚMINA WÓJCIK


Today kicks off a week of guest comics all based on the basic template of strip #629! That comic came about because I knew I would be traveling and I was unsure how much time I would have at the computer — so I took printouts of the empty template on my trip and finished the comic by hand. But I also enlisted some of my friends to make comics of their own based on the same template!
This strip is by Anthony Clark of Nedroid, one of the most charming and friendly comics on the ol' interwob. I recommend taking a hearty peek at it!