text:
Q: Android application connecting to wifi printer to take print I am new to android programming,I got a chance to work with (wifi printers).In my application I have a pdf file which needs to be taken a printout by using wifi printer
I didnt have much idea on this,but after doing a research  I got that,there are 3 things to be done for doing this
1)getting the list of devices which are connected to wifi network which my mobile is using right now.
2) Then,select a device and make a connection with that device.
3) Transfer data to a printer
    I hope these are the steps which I need to use.

I worked on first point,but I am getting the (Wifi networks like Tata communications,vonline etc) but not the devices which are connecting to that networks.
Here is the code I used.........
public class WiFiDemo extends Activity implements OnClickListener
 {
    WifiManager wifi;
    ListView lv;
    TextView textStatus;
    Button buttonScan;
    int size = 0;
    List<ScanResult> results;

    String ITEM_KEY = "key";
    ArrayList<HashMap<String, String>> arraylist = new ArrayList<HashMap<String, String>>();
    SimpleAdapter adapter;

    /* Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

//        textStatus = (TextView) findViewById(R.id.textStatus);
        buttonScan = (Button) findViewById(R.id.buttonScan);
        buttonScan.setOnClickListener(this);
        lv = (ListView)findViewById(R.id.list);

        wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        if (wifi.isWifiEnabled() == false)
        {
            Toast.makeText(getApplicationContext(), "wifi is disabled..making it enabled", Toast.LENGTH_LONG).show();
            wifi.setWifiEnabled(true);
        }
        this.adapter = new SimpleAdapter(WiFiDemo.this, arraylist, R.layout.row, new String[] { ITEM_KEY }, new int[] { R.id.list_value });
        lv.setAdapter(this.adapter);

        registerReceiver(new BroadcastReceiver()
        {
            @Override
            public void onReceive(Context c, Intent intent)
            {
               results = wifi.getScanResults();
               size = results.size();
            }
        }, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
    }

    public void onClick(View view)
    {
        arraylist.clear();
        wifi.startScan();
        checkWifi();
        Toast.makeText(this, "Scanning...." + size, Toast.LENGTH_SHORT).show();
        try
        {
            size = size - 1;
            while (size >= 0)
            {
                HashMap<String, String> item = new HashMap<String, String>();
                item.put(ITEM_KEY, results.get(size).SSID + "  " + results.get(size).capabilities);

                arraylist.add(item);
                size--;
                adapter.notifyDataSetChanged();
            }
        }
        catch (Exception e)
        { }
    }
    private void checkWifi(){
        IntentFilter filter = new IntentFilter();
        filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
        final WifiManager wifiManager =
                            (WifiManager)this.getSystemService(Context.WIFI_SERVICE);;
                             registerReceiver(new BroadcastReceiver(){
           @Override
           public void onReceive(Context arg0, Intent arg1) {
               // TODO Auto-generated method stub
               Log.d("wifi","Open Wifimanager");

               String scanList = wifiManager.getScanResults().toString();
               Log.d("wifi","Scan:"+scanList);
           }
         },filter);
           wifiManager.startScan();
         }
}

please suggest for the solution
Thanks in advance friends

A: Refer this Android-wifi-print - Github, Which contains a demo application I created for the same.
Edit :
As @NileshThakkar said. we may lost connection to that link in future so, I am posting code here.. with flow.

*

*checks connectivity.

*If connected in WiFi.. am storing that WiFi configuration.

*Now checking whether I already have printer's information (WiFi configuration of WiFi printer) is available or not. If available, I'll scan and get list of WiFi ScanResults and connects to that else.. It'll showing list of WiFi and clicking on that, user will connect to printer and stores that WiFi configuration for future printing jobs.

*After print job completes, I'm connecting to my previous WiFi or Mobile data connection.

*Now going back to 2nd step.

*If user connected in Mobile data, I'm just enabling WiFi and following 3rd step.

*After Print job completes, I'm just disabling WiFi. so that, We'll be connected back to Mobile data connection. (That is android default).

Libraries : gson-2.2.4, itextpdf-5.4.3
MyActivity.java
public class MyActivity extends Activity implements PrintCompleteService {

    private Button mBtnPrint;

    private WifiConfiguration mPrinterConfiguration, mOldWifiConfiguration;
    private WifiManager mWifiManager;
    private List<ScanResult> mScanResults = new ArrayList<ScanResult>();
    private WifiScanner mWifiScanner;

    private PrintManager mPrintManager;
    private List<PrintJob> mPrintJobs;
    private PrintJob mCurrentPrintJob;

    private File pdfFile;
    private String externalStorageDirectory;

    private Handler mPrintStartHandler = new Handler();
    private Handler mPrintCompleteHandler = new Handler();
    private String connectionInfo;

    private boolean isMobileDataConnection = false;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        try {
            externalStorageDirectory = Environment.getExternalStorageDirectory().toString();
            File folder = new File(externalStorageDirectory, Constants.CONTROLLER_RX_PDF_FOLDER);
            pdfFile = new File(folder, "Print_testing.pdf");
        } catch (Exception e) {
            e.printStackTrace();
        }

        mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);

        mWifiScanner = new WifiScanner();

        mBtnPrint = (Button) findViewById(R.id.btnPrint);

        mBtnPrint.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                connectionInfo = Util.connectionInfo(MyActivity.this);

                if (connectionInfo.equalsIgnoreCase(Constants.CONTROLLER_MOBILE)) {
                    isMobileDataConnection = true;

                    if (mWifiManager.isWifiEnabled() == false) {
                        Toast.makeText(getApplicationContext(), "Enabling WiFi..", Toast.LENGTH_LONG).show();
                        mWifiManager.setWifiEnabled(true);
                    }

                    mWifiManager.startScan();

                    printerConfiguration();

                } else if (connectionInfo.equalsIgnoreCase(Constants.CONTROLLER_WIFI)) {
                    Util.storeCurrentWiFiConfiguration(MyActivity.this);

                    printerConfiguration();

                } else {
                    Toast.makeText(MyActivity.this, "Please connect to Internet", Toast.LENGTH_SHORT).show();
                }

            }
        });

    }

    @Override
    protected void onResume() {
        super.onResume();
        try {
            registerReceiver(mWifiScanner, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
            mWifiManager.startScan();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        try {
            unregisterReceiver(mWifiScanner);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void printerConfiguration() {

        mPrinterConfiguration = Util.getWifiConfiguration(MyActivity.this, Constants.CONTROLLER_PRINTER);

        if (mPrinterConfiguration == null) {
            showWifiListActivity(Constants.REQUEST_CODE_PRINTER);

        } else {

            boolean isPrinterAvailable = false;

            mWifiManager.startScan();

            for (int i = 0; i < mScanResults.size(); i++) {
                if (mPrinterConfiguration.SSID.equals("\"" + mScanResults.get(i).SSID + "\"")) {
                    isPrinterAvailable = true;
                    break;
                }
            }

            if (isPrinterAvailable) {

                connectToWifi(mPrinterConfiguration);

                doPrint();

            } else {
                showWifiListActivity(Constants.REQUEST_CODE_PRINTER);
            }

        }
    }

    private void connectToWifi(WifiConfiguration mWifiConfiguration) {
        mWifiManager.enableNetwork(mWifiConfiguration.networkId, true);
    }

    private void showWifiListActivity(int requestCode) {
        Intent iWifi = new Intent(this, WifiListActivity.class);
        startActivityForResult(iWifi, requestCode);
    }

    @Override
    public void onMessage(int status) {

        mPrintJobs = mPrintManager.getPrintJobs();

        mPrintCompleteHandler.postDelayed(new Runnable() {
            @Override
            public void run() {

                mPrintCompleteHandler.postDelayed(this, 2000);

                if (mCurrentPrintJob.getInfo().getState() == PrintJobInfo.STATE_COMPLETED) {

                    for (int i = 0; i < mPrintJobs.size(); i++) {
                        if (mPrintJobs.get(i).getId() == mCurrentPrintJob.getId()) {
                            mPrintJobs.remove(i);
                        }
                    }

                    switchConnection();

                    mPrintCompleteHandler.removeCallbacksAndMessages(null);
                } else if (mCurrentPrintJob.getInfo().getState() == PrintJobInfo.STATE_FAILED) {
                    switchConnection();
                    Toast.makeText(MyActivity.this, "Print Failed!", Toast.LENGTH_LONG).show();
                    mPrintCompleteHandler.removeCallbacksAndMessages(null);
                } else if (mCurrentPrintJob.getInfo().getState() == PrintJobInfo.STATE_CANCELED) {
                    switchConnection();
                    Toast.makeText(MyActivity.this, "Print Cancelled!", Toast.LENGTH_LONG).show();
                    mPrintCompleteHandler.removeCallbacksAndMessages(null);
                }

            }
        }, 2000);

    }

    public void switchConnection() {
        if (!isMobileDataConnection) {
            mOldWifiConfiguration = Util.getWifiConfiguration(MyActivity.this, Constants.CONTROLLER_WIFI);

            boolean isWifiAvailable = false;

            mWifiManager.startScan();

            for (int i = 0; i < mScanResults.size(); i++) {
                if (mOldWifiConfiguration.SSID.equals("\"" + mScanResults.get(i).SSID + "\"")) {
                    isWifiAvailable = true;
                    break;
                }
            }

            if (isWifiAvailable) {
                connectToWifi(mOldWifiConfiguration);
            } else {
                showWifiListActivity(Constants.REQUEST_CODE_WIFI);
            }
        } else {
            mWifiManager.setWifiEnabled(false);
        }
    }

    public void printDocument(File pdfFile) {
        mPrintManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);

        String jobName = getString(R.string.app_name) + " Document";

        mCurrentPrintJob = mPrintManager.print(jobName, new PrintServicesAdapter(MyActivity.this, pdfFile), null);
    }

    public void doPrint() {
        mPrintStartHandler.postDelayed(new Runnable() {
            @Override
            public void run() {

                Log.d("PrinterConnection Status", "" + mPrinterConfiguration.status);

                mPrintStartHandler.postDelayed(this, 3000);

                if (mPrinterConfiguration.status == WifiConfiguration.Status.CURRENT) {
                    if (Util.computePDFPageCount(pdfFile) > 0) {
                        printDocument(pdfFile);
                    } else {
                        Toast.makeText(MyActivity.this, "Can't print, Page count is zero.", Toast.LENGTH_LONG).show();
                    }
                    mPrintStartHandler.removeCallbacksAndMessages(null);
                } else if (mPrinterConfiguration.status == WifiConfiguration.Status.DISABLED) {
                    Toast.makeText(MyActivity.this, "Failed to connect to printer!.", Toast.LENGTH_LONG).show();
                    mPrintStartHandler.removeCallbacksAndMessages(null);
                }
            }
        }, 3000);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == Constants.REQUEST_CODE_PRINTER && resultCode == Constants.RESULT_CODE_PRINTER) {
            mPrinterConfiguration = Util.getWifiConfiguration(MyActivity.this, Constants.CONTROLLER_PRINTER);
            doPrint();
        }
    }

    public class WifiScanner extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            mScanResults = mWifiManager.getScanResults();
            Log.e("scan result size", "" + mScanResults.size());
        }
    }

}

WiFiListActivity.java
public class WifiListActivity extends Activity implements View.OnClickListener {

    private ListView mListWifi;
    private Button mBtnScan;

    private WifiManager mWifiManager;
    private WifiAdapter adapter;
    private WifiListener mWifiListener;

    private List<ScanResult> mScanResults = new ArrayList<ScanResult>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wifi_list);

        mBtnScan = (Button) findViewById(R.id.btnNext);
        mBtnScan.setOnClickListener(this);

        mListWifi = (ListView) findViewById(R.id.wifiList);

        mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);

        if (mWifiManager.isWifiEnabled() == false) {
            Toast.makeText(getApplicationContext(), "wifi is disabled.. making it enabled", Toast.LENGTH_LONG).show();
            mWifiManager.setWifiEnabled(true);
        }

        mWifiListener = new WifiListener();

        adapter = new WifiAdapter(WifiListActivity.this, mScanResults);
        mListWifi.setAdapter(adapter);

        mListWifi.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                connectToWifi(i);
            }
        });

    }

    @Override
    public void onClick(View view) {
        mWifiManager.startScan();
        Toast.makeText(this, "Scanning....", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onResume() {
        super.onResume();
        try {
            registerReceiver(mWifiListener, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
            mWifiManager.startScan();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        try {
            unregisterReceiver(mWifiListener);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void connectToWifi(int position) {

        final ScanResult item = mScanResults.get(position);

        String Capabilities = item.capabilities;

        if (Capabilities.contains("WPA")) {
            AlertDialog.Builder builder = new AlertDialog.Builder(WifiListActivity.this);
            builder.setTitle("Password:");

            final EditText input = new EditText(WifiListActivity.this);
            input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
            builder.setView(input);

            builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    String m_Text = input.getText().toString();
                    WifiConfiguration wifiConfiguration = new WifiConfiguration();
                    wifiConfiguration.SSID = "\"" + item.SSID + "\"";
                    wifiConfiguration.preSharedKey = "\"" + m_Text + "\"";
                    wifiConfiguration.hiddenSSID = true;
                    wifiConfiguration.status = WifiConfiguration.Status.ENABLED;
                    wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.WPA); // For WPA
                    wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.RSN); // For WPA2
                    wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
                    wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP);
                    wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
                    wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
                    wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
                    wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
                    wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
                    wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
                    int res = mWifiManager.addNetwork(wifiConfiguration);
                    boolean b = mWifiManager.enableNetwork(res, true);

                    finishActivity(wifiConfiguration, res);

                }
            });
            builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();
                }
            });

            builder.show();

        } else if (Capabilities.contains("WEP")) {
            AlertDialog.Builder builder = new AlertDialog.Builder(WifiListActivity.this);
            builder.setTitle("Title");

            final EditText input = new EditText(WifiListActivity.this);
            input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
            builder.setView(input);

            builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    String m_Text = input.getText().toString();
                    WifiConfiguration wifiConfiguration = new WifiConfiguration();
                    wifiConfiguration.SSID = "\"" + item.SSID + "\"";
                    wifiConfiguration.wepKeys[0] = "\"" + m_Text + "\"";
                    wifiConfiguration.wepTxKeyIndex = 0;
                    wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
                    wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
                    int res = mWifiManager.addNetwork(wifiConfiguration);
                    Log.d("WifiPreference", "add Network returned " + res);
                    boolean b = mWifiManager.enableNetwork(res, true);
                    Log.d("WifiPreference", "enableNetwork returned " + b);

                    finishActivity(wifiConfiguration, res);
                }
            });
            builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();
                }
            });

            builder.show();

        } else {

            WifiConfiguration wifiConfiguration = new WifiConfiguration();
            wifiConfiguration.SSID = "\"" + item.SSID + "\"";
            wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
            int res = mWifiManager.addNetwork(wifiConfiguration);
            Log.d("WifiPreference", "add Network returned " + res);
            boolean b = mWifiManager.enableNetwork(res, true);
            Log.d("WifiPreference", "enableNetwork returned " + b);

            finishActivity(wifiConfiguration, res);
        }

    }

    private void finishActivity(WifiConfiguration mWifiConfiguration, int networkId) {

        mWifiConfiguration.networkId = networkId;

        Util.savePrinterConfiguration(WifiListActivity.this, mWifiConfiguration);
        Intent intent = new Intent();
        setResult(Constants.RESULT_CODE_PRINTER, intent);
        finish();
    }

    public class WifiListener extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            mScanResults = mWifiManager.getScanResults();
            Log.e("scan result size ", "" + mScanResults.size());
            adapter.setElements(mScanResults);
        }
    }
}

WifiAdapter.java
public class WifiAdapter extends BaseAdapter {

    private Activity mActivity;
    private List<ScanResult> mWifiList = new ArrayList<ScanResult>();

    public WifiAdapter(Activity mActivity, List<ScanResult> mWifiList) {
        this.mActivity = mActivity;
        this.mWifiList = mWifiList;
    }

    @Override
    public int getCount() {
        return mWifiList.size();
    }

    @Override
    public Object getItem(int i) {
        return mWifiList.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {

        LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.custom_wifi_list_item, null);

        TextView txtWifiName = (TextView) view.findViewById(R.id.txtWifiName);
        txtWifiName.setText(mWifiList.get(i).SSID);

        return view;
    }

    public void setElements(List<ScanResult> mWifis) {
        this.mWifiList = mWifis;
        notifyDataSetChanged();
    }
}

PrintCompleteService.java
public interface PrintCompleteService {
    public void onMessage(int status);
}

PrintServiceAdapter.java
public class PrintServicesAdapter extends PrintDocumentAdapter {
    private Activity mActivity;
    private int pageHeight;
    private int pageWidth;
    private PdfDocument myPdfDocument;
    private int totalpages = 1;
    private File pdfFile;
    private PrintCompleteService mPrintCompleteService;

    public PrintServicesAdapter(Activity mActivity, File pdfFile) {
        this.mActivity = mActivity;
        this.pdfFile = pdfFile;
        this.totalpages = Util.computePDFPageCount(pdfFile);
        this.mPrintCompleteService = (PrintCompleteService) mActivity;
    }

    @Override
    public void onLayout(PrintAttributes oldAttributes,
                         PrintAttributes newAttributes,
                         CancellationSignal cancellationSignal,
                         LayoutResultCallback callback,
                         Bundle metadata) {
        myPdfDocument = new PrintedPdfDocument(mActivity, newAttributes);

        pageHeight =
                newAttributes.getMediaSize().getHeightMils() / 1000 * 72;
        pageWidth =
                newAttributes.getMediaSize().getWidthMils() / 1000 * 72;

        if (cancellationSignal.isCanceled()) {
            callback.onLayoutCancelled();
            return;
        }

        if (totalpages > 0) {
            PrintDocumentInfo.Builder builder = new PrintDocumentInfo
                    .Builder(pdfFile.getName())
                    .setContentType(PrintDocumentInfo.CONTENT_TYPE_DOCUMENT)
                    .setPageCount(totalpages);

            PrintDocumentInfo info = builder.build();
            callback.onLayoutFinished(info, true);
        } else {
            callback.onLayoutFailed("Page count is zero.");
        }
    }

    @Override
    public void onWrite(final PageRange[] pageRanges,
                        final ParcelFileDescriptor destination,
                        final CancellationSignal cancellationSignal,
                        final WriteResultCallback callback) {
        InputStream input = null;
        OutputStream output = null;

        try {
            input = new FileInputStream(pdfFile);
            output = new FileOutputStream(destination.getFileDescriptor());
            byte[] buf = new byte[1024];
            int bytesRead;

            while ((bytesRead = input.read(buf)) > 0) {
                output.write(buf, 0, bytesRead);
            }

            callback.onWriteFinished(new PageRange[]{PageRange.ALL_PAGES});

        } catch (FileNotFoundException ee) {
            //Catch exception
        } catch (Exception e) {
            //Catch exception
        } finally {
            try {
                input.close();
                output.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        cancellationSignal.setOnCancelListener(new CancellationSignal.OnCancelListener() {
            @Override
            public void onCancel() {
                mPrintCompleteService.onMessage(Constants.PRINTER_STATUS_CANCELLED);
            }
        });
    }

    @Override
    public void onFinish() {
        mPrintCompleteService.onMessage(Constants.PRINTER_STATUS_COMPLETED);
    }
}

Util.java
public class Util {

    public static String connectionInfo(Activity mActivity) {
        String result = "not connected";

        ConnectivityManager cm = (ConnectivityManager) mActivity.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo[] netInfo = cm.getAllNetworkInfo();

        for (NetworkInfo ni : netInfo) {
            if (ni.getTypeName().equalsIgnoreCase(Constants.CONTROLLER_WIFI)) {
                if (ni.isConnected()) {
                    result = Constants.CONTROLLER_WIFI;
                    break;
                }
            } else if (ni.getTypeName().equalsIgnoreCase(Constants.CONTROLLER_MOBILE)) {
                if (ni.isConnected()) {
                    result = Constants.CONTROLLER_MOBILE;
                    break;
                }
            }
        }

        return result;
    }

    public static void saveWifiConfiguration(Activity mActivity, WifiConfiguration mWifiConfiguration) {
        Gson mGson = new Gson();
        Type mType = new TypeToken<WifiConfiguration>() {
        }.getType();
        String sJson = mGson.toJson(mWifiConfiguration, mType);
        SharedPreferences mSharedPrefs = mActivity.getSharedPreferences(Constants.DEMO_PREFERENCES, Context.MODE_PRIVATE);
        mSharedPrefs.edit().putString(Constants.CONTROLLER_WIFI_CONFIGURATION, sJson).commit();
    }

    public static void savePrinterConfiguration(Activity mActivity, WifiConfiguration mPrinterConfiguration) {
        Gson mGson = new Gson();
        Type mType = new TypeToken<WifiConfiguration>() {
        }.getType();
        String sJson = mGson.toJson(mPrinterConfiguration, mType);
        SharedPreferences mSharedPrefs = mActivity.getSharedPreferences(Constants.DEMO_PREFERENCES, Context.MODE_PRIVATE);
        mSharedPrefs.edit().putString(Constants.CONTROLLER_PRINTER_CONFIGURATION, sJson).commit();
    }

    public static WifiConfiguration getWifiConfiguration(Activity mActivity, String configurationType) {
        WifiConfiguration mWifiConfiguration = new WifiConfiguration();
        Gson mGson = new Gson();
        SharedPreferences mSharedPrefs = mActivity.getSharedPreferences(Constants.DEMO_PREFERENCES, Context.MODE_PRIVATE);
        Type mWifiConfigurationType = new TypeToken<WifiConfiguration>() {
        }.getType();
        String mWifiJson = "";
        if (configurationType.equalsIgnoreCase(Constants.CONTROLLER_WIFI)) {
            mWifiJson = mSharedPrefs.getString(Constants.CONTROLLER_WIFI_CONFIGURATION, "");
        } else if (configurationType.equalsIgnoreCase(Constants.CONTROLLER_PRINTER)) {
            mWifiJson = mSharedPrefs.getString(Constants.CONTROLLER_PRINTER_CONFIGURATION, "");
        }
        if (!mWifiJson.isEmpty()) {
            mWifiConfiguration = mGson.fromJson(mWifiJson, mWifiConfigurationType);
        } else {
            mWifiConfiguration = null;
        }
        return mWifiConfiguration;
    }

    public static void storeCurrentWiFiConfiguration(Activity mActivity) {
        try {
            WifiManager wifiManager = (WifiManager) mActivity.getSystemService(Context.WIFI_SERVICE);
            final WifiInfo connectionInfo = wifiManager.getConnectionInfo();
            if (connectionInfo != null && !TextUtils.isEmpty(connectionInfo.getSSID())) {
                WifiConfiguration mWifiConfiguration = new WifiConfiguration();
                mWifiConfiguration.networkId = connectionInfo.getNetworkId();
                mWifiConfiguration.BSSID = connectionInfo.getBSSID();
                mWifiConfiguration.hiddenSSID = connectionInfo.getHiddenSSID();
                mWifiConfiguration.SSID = connectionInfo.getSSID();

                // store it for future use -> after print is complete you need to reconnect wifi to this network.
                saveWifiConfiguration(mActivity, mWifiConfiguration);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static int computePDFPageCount(File file) {
        RandomAccessFile raf = null;
        int pages = 0;
        try {
            raf = new RandomAccessFile(file, "r");

            RandomAccessFileOrArray pdfFile = new RandomAccessFileOrArray(
                    new RandomAccessSourceFactory().createSource(raf));
            PdfReader reader = new PdfReader(pdfFile, new byte[0]);
            pages = reader.getNumberOfPages();
            reader.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return pages;
    }
}


text:
Ibrahim Hamidi (; also transliterated Ebrahim Humaydi) is a Syrian journalist who is a senior diplomatic editor for the Arabic daily Asharq Al-Awsat, and who contributes to severalinternational media outlets and think tanks. Previously, he served as head of the Lebanese Broadcasting Corporation (LBC) office in Damascus, and  of the Damascus bureau of Arab daily newspaper Al-Hayat, and as a senior writer for Forward Magazine in Damascus. Hamidi's work focuses on strategic issues in the Middle East, with special insight into Syria's internal and regional politics. He is also a Research Fellow and co-founder of the Syrian Studies Center at the University of St Andrews in Scotland. Hamidi is also a co-founder of the Arab Investigative Journalism Program (ARIJ).

Hamidi is married to writer and novelist Dima Wannous.

Early life
Hamidi was born in 1969 in Idlib Governorate. In 1986, Hamidi was able to move to Damascus to study journalism at Damascus University through a government stipend. His English professor at the time, Abdullah Dardari, was also a correspondent for the London-based Arab daily al-Hayat. Dardari, who later became Deputy Prime Minister of Syria in 2005, helped Hamidi find work as a secretary at his al-Hayat bureau in Damascus.

Career
Hamidi replaced Dardari as al-Hayat correspondent when the latter left to work for the United Nations Development Programme (UNDP). His 1996 coverage of the Arab League Summit in Cairo and the US presidential election, was highly acclaimed and helped bring him to a prominent place between Syrian journalists. Hamidi also delved into the Kurdish issue, interviewing Abdullah Öcalan, leader of the Kurdistan Workers' Party (PKK). Syrian authorities responded by suspending his journalism credentials but he continued to meet and interview Kurdish politicians, most of whom, like Jalal Talbani and Massoud Barzani, rose to power in Iraq after downfall of Saddam Hussein in 2003. Hamidi also conducted interviews with high-profile Palestinian leaders including Fathi Shaqaqi, head of the Islamic Jihad Movement in Palestine who was assassinated in Malta days after his interview with al-Hayat, his successor Ramadan Shalah, and Khaled Mashal, head of the political bureau of Hamas. As an independent correspondent his credentials have been suspended by the Syrian government several times.

Hamidi went on to cover the death of Syrian President Hafez al-Assad and the subsequent inauguration of his son Bashar al-Assad as president. His coverage of the following period, known as the Damascus Spring, and his interviews with Syrian opposition figures earned him the reprimand of the Syrian government and his journalist credentials were suspended several times. In 2002 he reported on Syria's preparations for the Iraq War. The government accused him of spreading "false information" and he was arrested on 23 December 2002. He remained in solitary confinement until 25 May 2003 and was later acquitted in court in 2005.

References

Syrian journalists
1969 births
Damascus University alumni
Academics of the University of St Andrews
People from Idlib Governorate
Living people

redpajama_set_name: RedPajamaWikipedia


New York's Jack Shainman Gallery will expand to 32,000 square feet of new exhibition space by adding two satellite venues. Joining its flagship location at 513 West 20th Street, the gallery will soon include a new Chelsea venue at 524 West 24th Street and an old schoolhouse in Kinderhook, N.Y., two hours north of Manhattan.
The auxiliary 2,400 square foot Chelsea space will display supplementary works that complement the shows running in the gallery's original location. "We had been looking for a secondary space with more height than our 20th Street facility," Shainman said. That facility was previously home to Marc Jancou gallery, which has moved to Midtown.
The schoolhouse upstate will include a sculpture park on its 5 acres of outdoor space.
Jack Shainman Gallery has moved from Washington, D.C. to various venues around New York City since its founding in 1984.
"Heart Hands and Minds," a show of work by artist Barkley L. Hendricks will open this Saturday at the new Chelsea location, and run through Apr. 6th.


La funzione di download di questo video è stata disattivata da KingNKween.
Horny blonde can't keep her hands off herself!
Jayde comes to discuss her next trip and can't keep her hands off you.
Dirty little girl can't keep her hands off herself.
My new toy can't escape, I'm going to keep him & play with him when I want.


text:
SceneTreeFilterModelV2::SceneTreeFilterModelV2(DAVA::ContextAccessor* accessor_)
    : accessor(accessor_)
{
}

const QString& SceneTreeFilterModelV2::GetFilter() const
{
    return filter;
}

void SceneTreeFilterModelV2::SetFilter(const QString& filter_)
{
    if (filter == filter_)
    {
        return;
    }

    filter = filter_;
    Refilter();
}

QVariant SceneTreeFilterModelV2::data(const QModelIndex& index, int role) const
{
    if (index.isValid() == false && role == Qt::BackgroundRole && (filter.isEmpty() == false || filtersChain.empty() == false))
    {
        QHash<QModelIndex, FilterData>::const_iterator iter = filtrationData.constFind(mapToSource(index));
        DVASSERT(iter != filtrationData.cend());
        if (iter.value().isMatched == true)
        {
            return QBrush(QColor(0, 255, 0, 20));
        }
    }

    return QSortFilterProxyModel::data(index, role);
}

bool SceneTreeFilterModelV2::filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const
{
    if (inForceFetchState == true || (filter.isEmpty() == true && filtersChain.empty() == true))
    {
        return true;
    }

    QModelIndex itemIndex = sourceModel()->index(sourceRow, 0, sourceParent);

    QHash<QModelIndex, FilterData>::const_iterator iter = filtrationData.constFind(itemIndex);
    if (iter == filtrationData.cend())
    {
        PrepareFiltrationData(sourceModel(), itemIndex);
        iter = filtrationData.constFind(itemIndex);
    }
    DVASSERT(iter != filtrationData.constEnd());
    return iter.value().isVisible;
}

bool SceneTreeFilterModelV2::PrepareFiltrationData(QAbstractItemModel* model, const QModelIndex& index) const
{
    bool isSomeChildIsMatched = false;
    int rowCount = model->rowCount(index);
    for (int i = 0; (i < rowCount) && (isSomeChildIsMatched == false); ++i)
    {
        isSomeChildIsMatched |= PrepareFiltrationData(model, model->index(i, 0, index));
    }

    FilterData data;
    QString displayName = index.data(Qt::DisplayRole).toString();
    QString filterItemData = index.data(ToItemRoleCast(eSceneTreeRoles::FilterDataRole)).toString();
    data.isMatched = displayName.contains(filter, Qt::CaseInsensitive) || filter == filterItemData;

    if (data.isMatched == true && index.isValid())
    {
        for (DAVA::SceneTreeFilterBase* filterBase : filtersChain)
        {
            if (filterBase->IsEnabled())
            {
                DAVA::Selectable internalObject = DAVA::Selectable(index.data(ToItemRoleCast(eSceneTreeRoles::InternalObjectRole)).value<DAVA::Any>());
                bool isMatched = filterBase->IsMatched(internalObject, accessor);
                if (filterBase->IsInverted())
                {
                    isMatched = !isMatched;
                }

                data.isMatched &= isMatched;
            }

            if (data.isMatched == false)
            {
                break;
            }
        }
    }

    data.isVisible = isSomeChildIsMatched || data.isMatched;

    filtrationData.insert(index, data);
    return data.isVisible;
}

void SceneTreeFilterModelV2::FullFetchModel(QAbstractItemModel* model, const QModelIndex& index)
{
    if (model->canFetchMore(index) == true)
    {
        model->fetchMore(index);
    }

    int rowCount = model->rowCount(index);
    for (int i = 0; i < rowCount; ++i)
    {
        FullFetchModel(model, model->index(i, 0, index));
    }
}

const DAVA::Vector<DAVA::SceneTreeFilterBase*>& SceneTreeFilterModelV2::GetFiltersChain() const
{
    return filtersChain;
}

void SceneTreeFilterModelV2::AddFilterToChain(const DAVA::ReflectedType* filterType, const FilterState& state)
{
    for (DAVA::SceneTreeFilterBase* filterBase : filtersChain)
    {
        const DAVA::ReflectedType* filterBaseType = DAVA::ReflectedTypeDB::GetByPointer(filterBase);
        if (filterBaseType == filterType)
        {
            return;
        }
    }

    DAVA::SceneTreeFilterBase* createdFilter = filterType->CreateObject(DAVA::ReflectedType::CreatePolicy::ByPointer).Cast<DAVA::SceneTreeFilterBase*>();
    createdFilter->SetEnabled(state.enabled);
    createdFilter->SetInverted(state.inverted);
    createdFilter->changed.Connect(this, &SceneTreeFilterModelV2::Refilter);
    filtersChain.push_back(createdFilter);

    Refilter();
}

void SceneTreeFilterModelV2::DeleteFilter(DAVA::int32 filterIndex)
{
    DVASSERT(filterIndex < static_cast<DAVA::int32>(filtersChain.size()));
    DAVA::SceneTreeFilterBase* filterToDestroy = filtersChain[filterIndex];
    const DAVA::ReflectedType* filterType = DAVA::ReflectedTypeDB::GetByPointer(filterToDestroy);
    if (filterType->GetDtor() != nullptr)
    {
        DAVA::Any valueToDestroy(filterToDestroy);
        filterType->Destroy(std::move(valueToDestroy));
    }
    else
    {
        delete filterToDestroy;
    }
    filtersChain.erase(filtersChain.begin() + filterIndex);
    Refilter();
}

void SceneTreeFilterModelV2::Refilter()
{
    bool infoWasEmpty = filtrationData.empty();
    filtrationData.clear();
    if (filter.isEmpty() == false || filtersChain.empty() == false)
    {
        {
            DAVA::ScopedValueGuard<bool> guard(inForceFetchState, true);
            FullFetchModel(sourceModel(), QModelIndex());
        }
        PrepareFiltrationData(sourceModel(), QModelIndex());
    }

    if (filtrationData.empty() == false || infoWasEmpty == false)
    {
        invalidate();
    }
}

redpajama_set_name: RedPajamaGithub


text:
Q: Whats the wrong in this code? Hi everyone I am a new to jQuery. While learning I am following this link:
http://api.jquery.com/browser/. When I am trying to do this example in VS 2010 I'm not getting the exact output. But when I was copying the code which is in this link I was getting the correct output. Please could any one help me?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

        <base href="http://docs.jquery.com" />
        <title>index(subject) function</title>

            First Div

            Second Div

            Third Div

A: You can't use self closing tags for :

redpajama_set_name: RedPajamaStackExchange


text:
Q: Showing a progress bar for a database insertion I have an application in which the user uploads an Excel file containing several hundreds rows and when he hits upload the file is converted to a DataTable and sent to the database to be inserted by a stored procedure.  The upload is taking too much time and I want to display progress for the number of rows that have been inserted.  Is there anyway to do that?
List<DataTable> tb = Helper.SplitTableToManyTables(FileTb, 50); // this is a function that split the Main dataTable to several Dt each have 50 rows
        int importedRowsCount = 0;
        for (int KLoop = 0; KLoop < tb.Count; KLoop++)
        {
            string[] ContctInfoCols = { "First Name", "Last Name", "Nickname", "Job Title", "Birthday", "Gender", "E-mail Address", "E-mail Address 2", "E-mail Address 3", "Web Page", "Mobile", "Mobile 2", "Mobile 3", "Home Phone", "Home Phone 2", "Business Phone", "Business Phone 2", "Other Phone", "Business Fax", "Home Fax", "Home Street", "Business Street", "Notes", "Company" };//the order of fields is very important
            string contact = "";
            DataTable resTb = new DataTable("ContactsTb");
            resTb.Columns.Add("ContactInfo");
            for (int iLoop = 0; iLoop < tb[KLoop].Rows.Count; iLoop++)
            {
                contact = ";";
                DataRow dr = resTb.NewRow();
                for (int jLoop = 0; jLoop < ContctInfoCols.Length; jLoop++)
                {
                    if (ContctInfoCols[jLoop] != "" && tb[KLoop].Rows[iLoop][ContctInfoCols[jLoop]].ToString() != "")
                        contact += (jLoop + 1).ToString() + "~" + tb[KLoop].Rows[iLoop][ContctInfoCols[jLoop]].ToString().Replace("/", "") + ";";
                }
                dr["ContactInfo"] = contact;
                resTb.Rows.Add(dr);
            }
            if (QueriesDataHelper.ImportContacts(resTb, int.Parse(TxtHiddenGroupId.Value), Session)) // here is the stored procedure call
            {
                importedRowsCount += resTb.Rows.Count;
                var script = "DisplayProgressMsg(" + importedRowsCount + ")";
                ScriptManager.RegisterStartupScript(this, GetType(), "MyScript", script, true); // here i am trying to display the currently inserted rows but it's not working
                if (KLoop == tb.Count - 1)
                    MessageBox.Show(importedRowsCount.ToString()+" Contacts imported successfully");
            }
            //else
            // MessageBox.Show("Sorry,an error occured during contacts upload.");
        }

     function DisplayProgressMsg(msg) {
        alert(msg);
     }

A:
The upload is taking too much time and I want to display progress for the number of rows that have been inserted. Is there anyway to do that?

It depends on how you're inserting the data.

sent to the database to be inserted by a stored procedure.

If you're using SqlDbType.Structured parameters you might take note of how far along enumerating the parameter's IEnumerable<SqlDataRecord> value you are.
If you're calling a stored procedure once per row then count how many stored procedure calls you've made so far.
If you're using SqlBulkCopy you can use the SqlRowsCopied event to receive feedback on the number of rows inserted.
If you're using SqlDataAdapter you can look at the RowUpdated and RowUpdating events.
Using something else? Read the fine manual for what feedback options are available to you.
Although you might be missing the real problem:

several hundreds rows ... taking too much time

Review how you're inserting the rows, you should be able to insert thousands of rows per second which could render your need to provide feedback moot.


Any small things can be done with the products and services offered by Timac Limited Company.
On holidays, holidays, etc., reply may be delayed, but we will contact you by e-mail within 3 business days.
"Name" "E-mail address" "Inquiry content" is required input.
When input is completed, please click "Send" button.


text:
In Turkey, problems for press
Ginsburg holds court
"Reporting is not happening now. Everybody's afraid," said Ferai Tinç, who after 28 years left her position as foreign news editor and columnist for the daily Hürriyet, one of Turkey's major newspapers, in July 2011.
Editor says government increasingly is muzzling, jailing journalists
By Lucia Huntington Harvard Staff Writer
Date February 6, 2013 May 1, 2019
In Turkey, the concept of a free press has devolved to a "Pravda-like" state, with 91 journalists in jail on charges of terrorist activity, and stories about corruption suppressed by the government, a prominent former editor said at the Harvard Kennedy School on Tuesday.
"Reporting is not happening now. Everybody's afraid," said Ferai Tinç, who after 28 years left her position as foreign news editor and columnist for the daily Hürriyet in July 2011.
Tinç said that since Prime Minister Recep Tayyip Erdoğan and his ruling Justice and Development Party (AKP) came to power a decade ago, Turkey's thriving newspaper landscape has been reduced to a half-dozen pro-government media conglomerates and a handful of other papers that face pressure and censorship. "There are only official statements, only Pravda-like journalists," she said.
The International Press Institute, of which she is a board member, has reported that Turkey has more journalists in prison than any other country, and "provisions set forth in the country's Anti-Terrorist Act conveniently implicate the work of investigative journalists as elements of alleged plots to overthrow the government."
While noting that human rights and press freedom are jeopardized not only in Turkey but in many other parts of the world, Tinç told the small group, "I believe press freedom is the pillar of democracy. Without press freedom, Turkey cannot go ahead. We cannot solve our problems."
Tinç opened her talk with a quote from a leader of the AKP: "We have built very big palaces of justice, but today we are looking after justice itself." The mistake the party made, she said, was "forgetting to put the justice in them."
Tinç cited two landmark trials: the ongoing Ergenekon investigation, which since 2007 has seen the arrests of scores of military leaders and led to the incarcerations — some without trial, she said — of academics, journalists, and politicians; and the Sledgehammer trials of 2010-11, in which 244 people were charged with attempting to overthrow the government in an alleged secularist military coup, and 184 were kept in pre-trial detention. The cases, she said, have created "strong tension" in Turkey.
"We have had operations, confiscations of books, and investigations toward morning going into the homes and offices of NGOs [nongovernmental organizations]," she said. In addition, "We had a very suspicious judicial process. Most of the proofs [used as evidence] turned out to be false and fabricated."
Tinç said the government is also limiting the free expression of artists and academics, in whose work she said the AKP now has a say.
"The situation is hell for young academics," she said. "Some are pushed to leave their work, some silence themselves. Academic independence is under jeopardy."
Tinç linked freedom of the press to a healthy society, and said that when journalism is suppressed, human rights are also at risk. She said student and worker protesters in Turkey are often met with disproportionate police force, conscientious objectors face discrimination, and LGBT rights activists are harassed by police. Citing figures from opposition party reports, Tinç said that last year, nine elected politicians from opposition parties were imprisoned before they could take their seats; 802 workers died in workplace accidents; 148 women were killed by domestic violence; 1,831 activists were detained or arrested; and 321 prisoners were tortured or abused.
"This is not the image Turkey wants to give to the world," she said. "Is this a new phenomenon? No, I don't think so. But we have a government that claims to be democratic, while we are still far from being a democratic country where human rights are respected."
The talk was co-sponsored by the Carr Center for Human Rights Policy and the Joan Shorenstein Center on the Press, Politics and Public Policy.
Legal scholar and tireless defender of equal rights Ruth Bader Ginsburg reflected on her career during a discussion with Harvard Law School Dean Martha Minow on Monday before a packed room in Wasserstein Hall.
Photo by Martha Stewart

redpajama_set_name: RedPajamaCommonCrawl


text:
Imprint Contact French English Deutsch
W.E.B
W.E.B-News
W.E.B Newsletter
Change address data
This webpage is not available in English.
Home › Info Service › W.E.B-News › 2016 › 11.10.2016
Austrian Federal Forests rely on W.E.B know-how
WEB Windenergie AG takes over the operations management at Pretul Wind Farm
In the last few months, Austrian Federal Forests got a highly impressive project up and running. Just ten months was all it took for them to build 14 wind power plants with a total capacity of 42 MW in the Styrian Pretulalpe Mountain Range. As of November 2016, W.E.B will be responsible for the operations management of the new wind farm.
As the Austrian Federal Forests were interested in ensuring smooth operations of the power plants on the Pretulalpe Mountain Range, they were looking for a company that could take over the wind farm's technical operations management. WEB Windenergie AG was ultimately able to convince them with know-how and international experience, which paved to way for the promising cooperation between Austrian Federal Forests and W.E.B.
"W.E.B was able to prove both nationally and internationally that its operations management approach ensures high plant availability, and completely won us over with its strategic and operational objectives," as Robert Nusser, CEO of Windpark Pretul GmbH, explains.
This project once more demonstrates that renewable energy sources play an increasingly important role in the overall supply of energy. The wind farm generates about 84 GWh of clean electricity, which corresponds to 22,000 households. "Wind energy can and will be a central pillar of our energy supply in the future. We are more than happy that the Austrian Federal Forests set such a great example, and even more delighted that they entrust the operations management of the wind farm to W.E.B," W.E.B CEO Frank Dumeier expresses his satisfaction about the two companies working together in the future.
In terms of selecting the right power plants for this project, Austrian Federal Forests had to take the difficult winter weather conditions on the Pretulalpe Mountain Range into account. In consequence, they chose wind power plants of the type Enercon E-82 E4, as they are particularly well suited for such climatic conditions and were originally developed for plant sites with strong winds. The turbines feature a hub height of 78 meters with rotor blades of 82 meters in diameter. Operating the wind farm will save up to 74,000 tons of CO2 emissions per year, thus taking another important step towards the decentralized energy transition.
WEB Windenergie AG
Davidstraße 1, A-3834 Pfaffenschlag, Telefon: +43 2848 6336, Telefax: +43 2848 6336-14, web@windenergie.at, www.windenergie.at


Because I'm a numpty, I forgot about the Levi's Jeans that I purchased in a black and blue rinse, it's not yet in my possession since I had to get them taken up and that takes a week. Also, a side note the items I got from Colourpop is huge therefore I couldn't put all the items on here since I made three separate orders. Whoops, and I am very excited for them to arrive!.
What has been your wild purchases this month/so far?
God I haven't really bought anything for myself in such a long time! I really like that white v-neck you bought though.


Hitachi Industrial Technology (Thailand) Ltd. [HITT] was founded in 1989 and producing Induction Motors, Vortex Blowers , Molded Case Circuit Breakers and Magnetic Switches for industrial use. HITT's products are in great demand backed by Hitachi Industrial Equipment Systems Co.,Ltd.(Japan) and HITT has built up a highly experienced management team and a skilled Thai workforce. All products have to achieve the strict requirement of the internationally recognized ISO 9001:2000.
To maximize efficiency and productivity in the work place, HITT has implemented the [5S] philosophy. And HITT implements the environment management system ISO 14001:2004 to further its commitment to protecting the environment. HITT will expand its operation and widen products range to meet the increasing demand of customers for high quality electric products.


text:
Chris Wood
"Dad, look!" I followed Wylie's arm and saw a big bald eagle perched in a tree. It was one of 10 sightings that week. Wylie, 13, has grown taller than my 6'2". When we go back-to-back, it is only a mother who remembers her first baby, and his hyper-competitive brothers who refuse to allow their older brother to be taller than I.
He is a quiet kid, and, as is likely the case with all first kids, I worry about him. Perhaps because he is always the first; first to go to school, first to play a sport, and this year, first to go to High School. Perhaps because he is so careful and never went through the goofball phase within which my own brothers claim I remain. Perhaps because he simply keeps such close counsel. He's a very good baseball player and athlete with broader shoulders but similar features to mine. Until this fishing trip to Canada, unlike his younger brothers, he had rarely been overnight alone with just me.
We were on the fourth day of our trip to Shabuskwia Lake in Ontario Province when Wylie spotted the eagle. Walleye and pike were the catch of the trip with an errant yellow perch and white sucker. We fished for seven days with my old boss, Mike, two of Mike's nephews, and kids aged 21, 17, and another 13-year old.
Although I love to spin-fish, I stubbornly insisted on fly-fishing for walleye. The pike were a lot more willing on the fly than the walleye, initially. Three tricks improved my productivity. First, I used a full sink line with a weighted clouser-minnow. After Wylie mastered the art of jigging with a twister tail, on the fourth day, I sheepishly added the end of a twister-tail to my clouser. That worked well. But the superior innovation was sweetening the streamer with a little leech. Purists would turn up their nose, but for catching dinner, it worked.
We slept two to a room, and fished two to a boat. At bedtime, Wylie would say, "hey Dad, think we should go to sleep?" I would wake, and remove the book perched on my chest, and we would turn off our headlamps. Other than having the Canadian fish police fly-in to check our licenses, and then losing our way before Wylie remembered a feature on the lake and guided us back to camp, we fell into a set-routine. Breakfast. Make lunch. Clean up. Fish-hard. Play catch in the evening. Have dinner. Clean-up. Plan for the next day.
Mike wanted to switch fishing partners each day, but I guarded my time with Wylie. On the fifth day, Mike and I fished the afternoon together. Before he entered the Forest Service, Mike was a walleye and musky guide in Wisconsin for 11 years, so we caught plenty of fish. After a while, we were surprised to see another boat on the lake. It was Wylie and Joe, the 17 year old. We could hear them hooting and hollering and catching fish.
We went back to camp on the heels of a storm. Joe and Wylie came in right behind us. They then proceeded to clean the day's catch. On the last evening at camp, I fished with Mike's nephews, and we caught our limit in two hours. When we got back, Mike already had the kids pull the boats, clean the house, and pack bags for the morning's flight out. Mike came up to me and said, "Wylie and the kids were running around, and having fun. He's a great kid."
Before the trip, many told me how Wylie would remember this trip for the rest of his life. I hope so. But in a funny way, I think it was more important for me than Wylie. I will never stop worrying about him, but think Wylie will be just fine.
By Chris Wood.


The "cooked" buttercream in this cake is an old-fashioned method that yields delicious results. The "praline" is one of the South's most beloved sweets, and in this show-stopping layer cake, it certainly does not disappoint. Candied pecans add a toasty crunch to the top of the cake, while the soft layers are held together with a dark brown, nutty filling and a light buttercream.
Had this for my birthday. It takes time and expensive ingredients but is just right and keeps well. The taste on day 3 is possibly better than day 1. The cooked frosting is not nearly as sweet as most butter creams and kept well and never hardened in 3 days. Will make this many more times. Now to true variants of this cake, using maple and walnuts.
Such a delicious cake for pecan lovers!
So, I didn't bake it because my friend did. But I ate it twice in 3 hours because it was great! She just toasted the decorative pecans. The filling, cake and buttercream textures were all delicious. This is real buttercream, so different texture than confectioners sugar frosting. I would spend 3-4 hours making this cake. It's worth it because it is that good.
I made this cake yesterday. It took just over 3 hours, but it was worth it. I admit that I was worried about how the buttercream would turn out, but I thought it went perfectly with this cake. The praline filling was amazing. I couldn't find pecan liqueur at the store so I substituted with almond extract, which I thought gave the cake a very nice flavor. Loved it!
My husband requested this as his birthday cake and after seeing the reviews online I was worried he would hate it and all the work would be for nothing. However, he declared it one of the best cakes he's ever eaten and he's picky so that says a lot (and he's pretty honest with me about new recipes). He always orders a Smith Island layer cake for his birthday but thinks this might be the new choice! All that being said, 2/3 of our young kids didn't care for it so I'd say it's for a more sophisticated palette and not to be wasted on children; I found it rich but good. My only gripe is that the "hands on time" is a joke and the reason for the 4 stars, not 5. I started this cake yesterday by making the candied pecans and spent a huge chunk of today making the cake, filling and icing. This cake was undoubtably made with lots of love and many hours of time!*also to note: I didn't bother with the pecan liqueur when I couldn't find it at any stores nearby and just subbed in extra vanilla extract. I also subbed in cup4cup for all the flour to make it gluten free for my husband and daughter. I didn't have any issues with over-rising or being too dry (often issues with gluten free baking).
Way too much time and trouble for the result. Cake had very little flavor, and I don't care for the buttercream icing at all. The best and most favorable part of the cake was the filling. Will not make this cake again.
It took most of the day to make this cake. Found bottle of Pecan Praline Liqueur enough of it to taster, large bottle, but cost to much to buy it and I would be stuck with a bottle and probably would never use it again. I used all vanilla extract. Cake should be baked in 3 pans. I did mine in 2 and over flowed into oven. Did not care for the Buttercream icing. Will never make it again. We ate enough just to taste and it went into the garbage.
I spent most of the afternoon making this cake. It is beautiful, but falls way short in the flavor department. It was not worth the time and effort or the 17.99 special order of Pecan Praline Liqueur needed for the cake. I was so disappointed with the lackluster taste. I will not make this cake again!


text:
Hosts of 'The Talk' Address Les Moonves' Exit From CBS
By CBS News 12:53 PM PDT, September 10, 2018
The hosts of The Talk did not shy away from talking about CBS CEO Leslie Moonves' exit from the company amid multiple accusations of sexual assault and harassment. Co-host Julie Chen, Moonves' wife, was notably absent from the live show on Monday, saying in a statement that she was "taking a few days off" to be with family. But her colleagues addressed the issue head-on.
Sharon Osbourne spearheaded the discussion and seemed uncomfortable as she opened the episode, which was also the premiere of the show's ninth season. She called it a "bittersweet" day to kick off the season.
"We're about to talk about something that affects everybody's life here at CBS," she started. "I've never been nervous in my life, but I'm kind of very nervous right now. As you all know, Julie's husband is in the news and she's taking off time to be with her family."
Osbourne introduced a montage of clips about Moonves' departure from various morning shows first. Afterward, she talked about her relationship with both Chen and Moonves, who she said she does not know well. Osbourne paused and glanced at her cue cards as she spoke.
"Whatever times I've had of hardship over the last eight years, Julie has always been there for me," said Osbourne. "She's been a friend. She's been somebody I admire and respect greatly and it's very embarrassing and upsetting to have to talk about her husband, but we do. We feel it's right and I personally know Les Moonves in a superficial way. It was, 'Hello, how are you?' Nothing more. I know nothing about the man other than he's Julie's husband and he was the head of the biggest network in the world and the most powerful man in TV."
Osbourne said that she was asked "a couple of months ago" to make a statement in support of Moonves when the first wave of accusations came to light. She said she did so in a way that she thought was "as diplomatic as I could be."
But the host continued, "Now after seven more women have come out, the stories are so similar, the pattern is so similar, that for me, it's not being convicted of any crime, but obviously the man has a problem and I'd like to say, Mr. Moonves should step down, and Mr. Moonves is an extremely wealthy man and good luck to him ... He has worked hard. He made this network number one."
Osbourne said, "Everybody here at CBS is nervous about their jobs," and added that she is particularly concerned about the crew. "I care about, as Mr. Moonves would say, 'The little people,'" she said.
As she wrapped up, she implored of her co-hosts, "Anybody else got anything to say? Throw me a bone!"
Co-host Sara Gilbert jumped in and said, "Julie is our friend. This is our ninth season and we've been together since the beginning. I love her. I support her always. However, this is an important time in our culture, and just because this hits close to home, it doesn't change the story. All women's stories matter and these women's stories matter. This is very serious and the appropriate actions need to take place and so I am happy women are heard, because for a long time they haven't been."
Co-host Eve said, "I support Julie and I'm praying for her and praying for her family ... I hope and pray we get to a place where we don't have to talk about this anymore, where women are equal, where this won't have to happen anymore."
Osbourne added that Phyllis Golden-Gottlieb's story in particular broke her heart. Golden-Gottlieb, now a retired television executive, told The New Yorker that one afternoon in 1986, Moonves drove her to a secluded area and forcibly held her head to engage in oral sex.
Osbourne said, "It really broke my heart, and I don't care whether it was yesterday, 20 or 30 years ago, but somebody that breaks somebody's life like that has to be accountable ... I have to agree that Phyllis said in her story, 'Who would believe me? I'm a nothing. This man is everything and powerful.'"
Co-host Sheryl Underwood, fighting back tears, said that she saw Moonves' exit as a blessing in disguise as it allowed the truth to emerge.
"I think this is a blessing from God to be unburdened from secrets and unchained from lies and now is the time for everyone to look inside themselves and become better people and treat people the way they should be treated," she said. "And women should not feel they have to carry secrets and burdens. ... Today we say enough is enough, and today we say we believe you, we hear you, go on with your life."
CBS announced Moonves' departure hours after the report by Ronan Farrow was published Sunday by The New Yorker, in which six women described in detail several disturbing instances of alleged sexual misconduct. The claims came six weeks after Farrow first published allegations against Moonves by six other women.
CBSi and Entertainment Tonight are both owned by CBS.
Julie Chen


Deck Builder: Why Buy A Deck With Your Tax Refund?
Tax Day is just around the corner. Whether you filed early or are waiting until the last second, we hope that you're getting a nice refund from Uncle Sam. Have you given any thought to what that extra cash will go toward? Sure, you could put it in your savings account or retirement fund like every year. Another responsible idea would be to knock down some high-interest debt with your refund. On the other hand, what if you did something out of the ordinary this year? No, we're not saying you should gamble away your refund or buy some crazy gadget you'll ultimately never use. What about using your tax refund to buy a deck? Hear us out on this one: a deck makes the perfect addition to any home. Keep reading as we explain why you should purchase one of our premade decks.
They're dependable – You wouldn't waste your money on something that breaks down in a few years, would you? Rest assured that our prefab decks are constructed using only premium-grade, treated lumber. Not only that, but they're built to meet or exceed federal safety standards. With Ready Decks, your family's safety is never compromised. It's our belief that when you invest in a deck, the finished product should be completely dependable.
They provide unmatched value – Few other premade decks are reliable. That's not the case with Ready Decks products. Simply take into account the combination of high-quality materials we use and a patent-pending building system. Not to mention, our decks look better and last longer than many outdoor products on the market. You can expect to enjoy your deck for years to come.
They expand your living space – Nothing beats relaxing on a deck with friends and family. Once the installation is complete, don't be surprised if you find yourself wanting to host parties, barbecues, and other gatherings on a regular basis. Feel free to get creative by adding potted plants, outdoor furniture, and storage options to achieve your desired look.
They're environmentally friendly – Our deck contractors make it a point to use the most environmentally friendly and green building materials available. Such an effort doesn't prevent us from building decks that withstand years of harsh sunlight and storms. One more thing here: Ready Decks donates a tree for every deck built. It's yet another reason to buy from us!
They're affordable – More than two decades ago, our founder realized the need for quality decks at an affordable price. It was also apparent that homeowners were either getting ripped off with awful products or their daily lives were getting interrupted for weeks at a time. It's our belief that every homeowner deserves a beautiful deck without breaking the bank.
If you're debating what to do with your tax refund, a new deck could be the answer. Our team at Ready Decks can help make your dream of having a deck a reality. We even have flexible financing options available for your convenience. Contact us today.


text:
Apateon is an extinct genus of temnospondyl amphibian within the family Branchiosauridae.

Species

†Apateon caducus
†Apateon dracyi
†Apateon flagrifer
†Apateon gracilis
†Apateon kontheri
†Apateon pedestris von Meyer 1840
†Apateon umbrosus

Fossil record
Fossils of Apateon  are found in freshwaters strata of Permian of Germany (age range: from 295.0 to 290.1 million years ago.).

Description
 These amphibians could reach a length of about , while the length of the skull could reach . They resembled a salamander and had a laterally flattened tail with a long fin. The body was completely covered with rounded scales. The portion of the skull behind the eyes was quite short. On opposite sides of the head there are three pairs of long, spiral-shaped external gills. They had a weakly ossified skeleton and a wide, short skull, with huge eye holes. The teeth were small and peaked. On the hands are present four fingers.

Biology and lifestyle
Apateon  were sexually mature in the larval state, with the retention by adults of traits seen in the young (neoteny). This fully aquatic animals lived in semi-permanent lakes and ponds. They fed on microorganisms.

Bibliography
 Cyril Walker & David Ward (1993) - Fossielen: Sesam Natuur Handboeken, Bosch & Keuning, Baarn.
 Gaining Ground: The Origin and Early Evolution of Tetrapods
 Hermann von Meyer, 1844: Briefliche Mittheilung an Prof. Bronn gerichtet. Neues Jahrbuch für Geognosie, Geologie und Petrefakten-Kunde 1844: 329–340.
 Hermann von Meyer, 1848: Apateon pedestris aus der Steinkohlenformation von Münsterappel. – Palaeontographica 1: 153–154.
 Jürgen Boy, 1972: Die Branchiosaurier (Amphibia) des saarpfalzischen Rotliegenden (Perm, SW-Deutschland). Abhandlungen des hessischen Landes-Amtes für Bodenforschung 65: 1–137.
 Jürgen Boy, 1987: Studien uber die Branchiosauridae (Amphibia: Temnospondyli; Ober-Karbon-Unter-Perm) 2. Systematische Übersicht. Neues Jahrbuch für Geologie und Paläontologie, Abhandlungen 174: 75-104.
 Rainer Schoch und Andrew Milner, 2014: Temnospondyli. In: Sues, H.D. (Hrg): Encyclopedia of Paleoherpetology, Band 3A2. Pfeil: München.
 Rainer Schoch, 1992: Comparative ontogeny of Early Permian branchiosaurid amphibians from Southwestern Germany. Developmental stages. Palaeontographica A 222: 43–83.
 Ralf Werneburg, 1991: Die Branchiosaurier aus dem Unterrotliegend des Döhlener Beckens bei Dresden. Veröffentlichungen des Naturhistorischen Museums Schleusingen 6: 75–99.

References

Branchiosaurids
Permian temnospondyls of Europe
Taxa named by Christian Erich Hermann von Meyer
Fossil taxa described in 1844