text:
/****************************************************************************
 * Included Files
 ****************************************************************************/
/*
 * Memory Analyses
 *
 *              total       used       free    largest
 * Mem:         16560      11144       5416       5384
 * PID   SIZE   USED   THREAD NAME
 *     0      0      0 Idle Task
 *     1    876    772 init
 *     2    604    588 c3b
 *     3    236    220 <pthread0>
 *
 *     8    364    348 <pthread0>
 *
 *     9    260    196 <pthread>
 *    10    380    364 Telnet dd
 *    11    860    844 Telnet sd
 */

 #include <nuttx/config.h>

#include "board.h"
#include <stdio.h>
#include <string.h>
#include <syslog.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdbool.h>
#include <sys/time.h>
#include <arpa/inet.h>
#include <nuttx/arch.h>
#include <nuttx/wireless/cc3000/nvmem.h>
#include <nuttx/wireless/cc3000/include/sys/socket.h>
#include <nuttx/wireless/cc3000/wlan.h>
#include <nuttx/wireless/cc3000/hci.h>
#include <nuttx/wireless/cc3000/security.h>
#include <nuttx/wireless/cc3000/netapp.h>
#include "shell.h"

/****************************************************************************
 * Public Function Prototypes
 ****************************************************************************/

void Initialize(void);
void helpme(void);
int execute(int cmd);
void ShowBufferSize(void);
void StartSmartConfig(void);
void ManualConnect(void);
void ManualAddProfile(void);
void ListAccessPoints(void);
void PrintIPBytes(uint8_t *ipBytes);
void ShowInformation(void);

/****************************************************************************
 * Pre-processor Definitions
 ****************************************************************************/

#define MS_PER_SEC 1000
#define US_PER_MS  1000
#define US_PER_SEC 1000000

/****************************************************************************
 * Private Data
 ****************************************************************************/

static uint8_t isInitialized = false;

#ifdef CONFIG_EXAMPLES_CC3000_MEM_CHECK
static struct mallinfo mmstart;
static struct mallinfo mmprevious;
#endif

/****************************************************************************
 *  Private Functions
 ****************************************************************************/

#ifdef CONFIG_EXAMPLES_CC3000_MEM_CHECK
static void show_memory_usage(struct mallinfo *mmbefore,
                              struct mallinfo *mmafter)
{
  int diff;

  printf("              total       used       free    largest\n");
  printf("Before:%11d%11d%11d%11d\n",
             mmbefore->arena, mmbefore->uordblks, mmbefore->fordblks, mmbefore->mxordblk);
  printf("After: %11d%11d%11d%11d\n",
             mmafter->arena, mmafter->uordblks, mmafter->fordblks, mmafter->mxordblk);

  diff = mmbefore->uordblks - mmafter->uordblks;
  if (diff < 0)
    {
      printf("Change:%11d allocated\n", -diff);
    }
  else if (diff > 0)
    {
      printf("Change:%11d freed\n", diff);
    }

#ifdef CONFIG_EXAMPLES_CC3000_STACK_CHECK
  stkmon_disp();
#endif
}
#endif

#ifdef CONFIG_EXAMPLES_CC3000_STACK_CHECK
static char buff[CONFIG_TASK_NAME_SIZE+1];
static void _stkmon_disp(FAR struct tcb_s *tcb, FAR void *arg)
{
#if CONFIG_TASK_NAME_SIZE > 0
  strncpy(buff,tcb->name,CONFIG_TASK_NAME_SIZE);
  buff[CONFIG_TASK_NAME_SIZE] = '\0';
  syslog(LOG_INFO, "%5d %6d %6d %s\n",
         tcb->pid, tcb->adj_stack_size, up_check_tcbstack(tcb), buff);
#else
  syslog(LOG_INFO, "%5d %6d %6d\n",
         tcb->pid, tcb->adj_stack_size, up_check_tcbstack(tcb));
#endif
}
#endif

static bool wait(long timeoutMs, volatile unsigned long *what,
                 volatile unsigned long is)
{
  long t_ms;
  struct timeval end, start;

  gettimeofday(&start, NULL);

  while (*what != is)
    {
      usleep(10*US_PER_MS);
      gettimeofday(&end, NULL);
      t_ms = ((end.tv_sec - start.tv_sec) * MS_PER_SEC) + ((end.tv_usec - start.tv_usec) / US_PER_MS) ;
      if (t_ms > timeoutMs)
        {
        return false;
        }
    }

  return true;
}

static bool wait_on(long timeoutMs, volatile unsigned long *what,
                    volatile unsigned long is, char * msg)
{
  printf(msg);
  printf("...");
  fflush(stdout);
  bool ret = wait(timeoutMs,what,is);
  if (!ret)
    {
      printf(" FAILED:Timeout!\n");
    }
  else
    {
      printf(" Succeed\n");
    }

  fflush(stdout);
  return ret;
}

/****************************************************************************
 * Public Functions
 ****************************************************************************/

#ifndef CONFIG_EXAMPLES_CC3000_STACK_CHECK
#  define stkmon_disp()
#else
void stkmon_disp(void)
{
#if CONFIG_TASK_NAME_SIZE > 0
  syslog(LOG_INFO, "%-5s %-6s %-6s %s\n", "PID", "SIZE", "USED", "THREAD NAME");
#else
  syslog(LOG_INFO, "%-5s %-6s %-6s\n", "PID", "SIZE", "USED");
#endif
  sched_foreach(_stkmon_disp, NULL);
}
#endif

void AsyncEventPrint(void)
{
  printf("\n");
  switch (lastAsyncEvent)
    {
      printf("CC3000 Async event: Simple config done\n");
      break;

    case HCI_EVNT_WLAN_UNSOL_CONNECT:
      printf("CC3000 Async event: Unsolicited connect\n");
      break;

    case HCI_EVNT_WLAN_UNSOL_DISCONNECT:
      printf("CC3000 Async event: Unsolicted disconnect\n");
      break;

    case HCI_EVNT_WLAN_UNSOL_DHCP:
      printf("CC3000 Async event: Got IP address via DHCP: ");
      printf("%d", dhcpIPAddress[0]);
      printf(".");
      printf("%d", dhcpIPAddress[1]);
      printf(".");
      printf("%d", dhcpIPAddress[2]);
      printf(".");
      printf("%d\n", dhcpIPAddress[3]);
      break;

    case HCI_EVENT_CC3000_CAN_SHUT_DOWN:
      printf("CC3000 Async event: OK to shut down\n");
      break;

    case HCI_EVNT_WLAN_KEEPALIVE:
      /* Once initialized, the CC3000 will send these keepalive events
       * every 20 seconds.
       */

      printf("CC3000 Async event: Keepalive\n");
      return;
      break;

    default:
      printf("AsyncCallback called with unhandled event! (0x%lx)\n",
             (unsigned long)lastAsyncEvent);
      break;
    }
}

void helpme(void)
{
  printf("\n+-------------------------------------------+\n");
  printf("|      Nuttx CC3000 Demo Program            |\n");
  printf("+-------------------------------------------+\n\n");
  printf("  01 - Initialize the CC3000\n");
  printf("  02 - Show RX & TX buffer sizes, & free RAM\n");
  printf("  03 - Start Smart Config\n");
  printf("  04 - Manually connect to AP\n");
  printf("  05 - Manually add connection profile\n");
  printf("  06 - List access points\n");
  printf("  07 - Show CC3000 information\n");
  printf("  08 - Telnet\n");
  printf("\n Type 01-07 to select above option: ");
}

int execute(int cmd)
{
  int ret = 0;
  if (asyncNotificationWaiting)
    {
      asyncNotificationWaiting = false;
      AsyncEventPrint();
    }

  printf("\n");
  switch(cmd)
    {
    case '1':
      Initialize();
      break;

    case '2':
      ShowBufferSize();
      break;

    case '3':
      StartSmartConfig();
      break;

    case '4':
      ManualConnect();
      break;

    case '5':
      ManualAddProfile();
      break;

    case '6':
      ListAccessPoints();
      break;

    case '7':
      ShowInformation();
      break;

    case '8':
     if (!isInitialized)
       {
         Initialize();
       }

#ifdef CONFIG_EXAMPLES_CC3000_MEM_CHECK
      mmprevious= mallinfo();
      show_memory_usage(&mmstart,&mmprevious);
#endif
      shell_main(0, 0);
#ifdef CONFIG_EXAMPLES_CC3000_MEM_CHECK
      mmprevious= mallinfo();
      show_memory_usage(&mmstart,&mmprevious);
#endif
      break;

    case 'q':
    case 'Q':
      ret = 1;
      break;

    default:
      printf("**Unknown command \"%d\" **\n", cmd);
      break;
    }

    return ret;
}

void Initialize(void)
{
#ifdef CONFIG_EXAMPLES_CC3000_MEM_CHECK
  mmstart = mallinfo();
  memcpy(&mmprevious, &mmstart, sizeof(struct mallinfo));
  show_memory_usage(&mmstart,&mmprevious);
#endif

  uint8_t fancyBuffer[MAC_ADDR_LEN];

  if (isInitialized)
    {
      printf("CC3000 already initialized. Shutting down and restarting...\n");
      wlan_stop();
      usleep(1000000); /* Delay 1s */
    }

  printf("Initializing CC3000...\n");
  CC3000_Init();
#ifdef CONFIG_EXAMPLES_CC3000_STACK_CHECK
  stkmon_disp();
#endif
  printf("  CC3000 init complete.\n");

  if (nvmem_read_sp_version(fancyBuffer) == 0)
    {
      printf("  Firmware version is: ");
      printf("%d", fancyBuffer[0]);
      printf(".");
      printf("%d\n", fancyBuffer[1]);
    }
  else
    {
      printf("Unable to get firmware version. Can't continue.\n");
      return;
    }

#if 0
  if (nvmem_get_mac_address(fancyBuffer) == 0)
    {
      printf("  MAC address: ");
      for (i = 0; i < MAC_ADDR_LEN; i++)
        {
          if (i != 0)
            {
              printf(":");
            }
          printf("%x", fancyBuffer[i]);
        }

      printf("\n");
      isInitialized = true;
    }
  else
    {
      printf("Unable to get MAC address. Can't continue.\n");
    }
#else
    isInitialized = true;
#endif

#ifdef CONFIG_EXAMPLES_CC3000_MEM_CHECK
    mmprevious = mallinfo();
    show_memory_usage(&mmstart,&mmprevious);
#endif
}

/* This just shows the compiled size of the transmit & recieve buffers */

void ShowBufferSize(void)
{
  printf("Transmit buffer is %d bytes", CC3000_TX_BUFFER_SIZE);
  printf("Receive buffer is %d bytes", CC3000_RX_BUFFER_SIZE);
}

/* Smart Config is TI's way to let you connect your device to your WiFi network
 * without needing a keyboard and display to enter the network name, password,
 * etc. You run a little app on your iPhone, Android device, or laptop with Java
 * and it sends the config info to the CC3000 automagically, so the end user
 * doesn't need to do anything complicated. More details here:
 *
 *   http://processors.wiki.ti.com/index.php/CC3000_Smart_Config
 *
 * This example deletes any currently saved WiFi profiles and goes over the top
 * with error checking, so it's easier to see exactly what's going on. You
 * probably won't need all of this code for your own Smart Config implementation.
 *
 * This example also doesn't use any of the AES enhanced security setup API calls
 * because frankly they're weirder than I want to deal with.
 */

/* The Simple Config Prefix always needs to be 'TTT' */

char simpleConfigPrefix[] = {'T', 'T', 'T'};

/* This is the default Device Name that TI's Smart Config app for iPhone etc. use.
 * You can change it to whatever you want, but then your users will need to type
 * that name into their phone or tablet when they run Smart Config.
 */

char device_name[]  = "CC3000";

void StartSmartConfig(void)
{
  long rval;

  if (!isInitialized)
    {
      printf("CC3000 not initialized; can't run Smart Config.\n");
      return;
    }

  printf("Starting Smart Config\n");

  printf("  Disabling auto-connect policy...");
  if ((rval = wlan_ioctl_set_connection_policy(DISABLE, DISABLE, DISABLE)) !=0)
    {
      printf(" Failed!\n    Setting auto connection policy failed, error: %lx\n",
             (unsigned long)rval);
      return;
    }

  printf(" Succeed\n");
  printf("  Deleting all existing profiles...");
  fflush(stdout);

  if ((rval = wlan_ioctl_del_profile(255)) !=0)
    {
      printf(" Failed!\n    Deleting all profiles failed, error: %lx\n",
             (unsigned long)rval);
      return;
    }

  printf(" Succeed\n");
  wait_on(20*MS_PER_SEC, &ulCC3000Connected, 0, "  Waiting until disconnected");

  printf("  Setting smart config prefix...");
  fflush(stdout);

  if ((rval = wlan_smart_config_set_prefix(simpleConfigPrefix)) !=0)
    {
      printf(" Failed!\n    Setting smart config prefix failed, error: %lx",
             (unsigned long)rval);
      return;
    }

  printf(" Succeed\n");
  printf("  Starting smart config...");
  fflush(stdout);

  if ((rval = wlan_smart_config_start(0)) !=0)
    {
      printf(" Failed!\n    Starting smart config failed, error: %lx\n",
             (unsigned long)rval);
      return;
    }

  printf(" Succeed\n");

  if (!wait_on(30*MS_PER_SEC, &ulSmartConfigFinished, 1, "  Waiting on Starting smart config done"))
    {
      printf("    Timed out waiting for Smart Config to finish. Hopefully it did anyway\n");
    }

  printf("  Smart Config packet %s!\n",ulSmartConfigFinished ? "seen" : "NOT seen");

  printf("  Enabling auto-connect policy...");
  fflush(stdout);

  if ((rval = wlan_ioctl_set_connection_policy(DISABLE, DISABLE, ENABLE)) !=0)
    {
      printf(" Failed!\n    Setting auto connection policy failed, error: %lx\n",
             (unsigned long)rval);
      return;
    }

  printf(" Succeed\n");
  printf("  Stopping CC3000...\n");
  fflush(stdout);
  wlan_stop();  /* No error returned here, so nothing to check */

  printf("  Pausing for 2 seconds...\n");
  usleep(2000000);

  printf("  Restarting CC3000... \n");
  wlan_start(0);  /* No error returned here, so nothing to check */

  if (!wait_on(20*MS_PER_SEC, &ulCC3000Connected, 1, "  Waiting for connection to AP"))
    {
      printf("    Timed out waiting for connection to AP\n");
      return;
    }

  if (!wait_on(15*MS_PER_SEC, &ulCC3000DHCP, 1, "  Waiting for IP address from DHCP"))
    {
      printf("    Timed out waiting for IP address from DHCP\n");
      return;
    }

  printf("  Sending mDNS broadcast to signal we're done with Smart Config...\n");
  fflush(stdout);

  /* The API documentation says mdnsAdvertiser() is supposed to return 0 on
   * success and SOC_ERROR on failure, but it looks like what it actually
   * returns is the socket number it used. So we ignore it.
   */

  mdnsadvertiser(1, device_name, strlen(device_name));

  printf("  Smart Config finished Successfully!\n");
  ShowInformation();
  fflush(stdout);
}

/* This is an example of how you'd connect the CC3000 to an AP without using
 * Smart Config or a stored profile.
 *
 * All the code above wlan_connect() is just for this demo program; if you're
 * always going to connect to your network this way you wouldn't need it.
 */

void ManualConnect(void)
{
  char ssidName[] = "YourAP";
  char AP_KEY[] = "yourpass";
  uint8_t rval;

  if (!isInitialized)
    {
      printf("CC3000 not initialized; can't run manual connect.\n");
      return;
    }

  printf("Starting manual connect...\n");

  printf("  Disabling auto-connect policy...\n");
  (void)wlan_ioctl_set_connection_policy(DISABLE, DISABLE, DISABLE);

  printf("  Deleting all existing profiles...\n");
  (void)wlan_ioctl_del_profile(255);

  wait_on(15*MS_PER_SEC, &ulCC3000Connected, 0, "    Waiting until disconnected");

  printf("  Manually connecting...\n");

  /* Parameter 1 is the security type: WLAN_SEC_UNSEC, WLAN_SEC_WEP,
   *        WLAN_SEC_WPA or WLAN_SEC_WPA2
   * Parameter 3 is the MAC adddress of the AP. All the TI examples
   *        use NULL. I suppose you would want to specify this
   *        if you were security paranoid.
   */

  rval = wlan_connect(WLAN_SEC_WPA2,
        ssidName,
        strlen(ssidName),
        NULL,
        (uint8_t *)AP_KEY,
        strlen(AP_KEY));

  if (rval == 0)
    {
      printf("  Manual connect success.\n");
    }
  else
    {
      printf("  Unusual return value: %d\n", rval);
    }
}

/* This is an example of manually adding a WLAN profile to the CC3000. See
 * wlan_ioctl_set_connection_policy() for more details of how profiles are
 * used but basically there's 7 slots where you can store AP info and if
 * the connection policy is set to auto_start then the CC3000 will go
 * through its profile table and try to auto-connect to something it knows
 * about after it boots up.
 *
 * Note the API documentation for wlan_add_profile is wrong. It says it
 * returns 0 on success and -1 on failure. What it really returns is
 * the stored profile number (0-6, since the CC3000 can store 7) or
 * 255 on failure.
 *
 * Unfortunately the API doesn't give you any way to see how many profiles
 * are in use or which profile is stored in which slot, so if you want to
 * manage multiple profiles you'll need to do that yourself.
 */

void ManualAddProfile(void)
{
  char ssidName[] = "YourAP";
  char AP_KEY[] = "yourpass";
  uint8_t rval;

  if (!isInitialized)
    {
      printf("CC3000 not initialized; can't run manual add profile.");
      return;
    }

  printf("Starting manual add profile...\n");

  printf("  Disabling auto connection...\n");
  wlan_ioctl_set_connection_policy(DISABLE, DISABLE, DISABLE);

  printf("  Adding profile...\n");
  rval = wlan_add_profile  (
          WLAN_SEC_WPA2,     /* WLAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA or WLAN_SEC_WPA2 */
          (uint8_t *)ssidName,
          strlen(ssidName),
          NULL,              /* BSSID, TI always uses NULL */
          0,                 /* Profile priority */
          0x18,              /* Key length for WEP security, undocumented why this needs to be 0x18 */
          0x1e,              /* Key index, undocumented why this needs to be 0x1e */
          0x2,               /* key management, undocumented why this needs to be 2 */
          (uint8_t *)AP_KEY, /* WPA security key */
          strlen(AP_KEY)     /* WPA security key length */
          );

  if (rval!=255)
    {
      /* This code is lifted from http://e2e.ti.com/support/low_power_rf/f/851/p/180859/672551.aspx;
       * the actual API documentation on wlan_add_profile doesn't specify any of this....
       */

      printf("  Manual add profile success, stored in profile: %d\n", rval);

      printf("  Enabling auto connection...\n");
      wlan_ioctl_set_connection_policy(DISABLE, DISABLE, ENABLE);

      printf("  Stopping CC3000...\n");
      wlan_stop();

      printf("  Stopping for 5 seconds...\n");
      usleep(5000000);

      printf("  Restarting CC3000...\n");
      wlan_start(0);

      printf("  Manual add profile done!");
    }
  else
    {
      printf("  Manual add profile failured (all profiles full?).");
    }
}

/* The call wlan_ioctl_get_scan_results returns this structure. I couldn't
 * find it in the TI library so it's defined here. It's 50 bytes with
 * a semi weird arrangement but fortunately it's not as bad as it looks.
 *
 * numNetworksFound - 4 bytes - On the first call to wlan_ioctl_get_scan_results
 *         this will be set to how many APs the CC3000 sees. Although
 *         with 4 bytes the CC3000 could see 4 billion APs in my testing
 *         this number was always 20 or less so there's probably an
 *         internal memory limit.
 *
 * results - 4 bytes - 0=aged results, 1=results valid, 2=no results. Why TI
 *         used 32 bits to store something that could be done in 2,
 *         and how this field is different than isValid below, is
 *         a mystery to me so I just igore this field completely.
 *
 * isValid & rssi - 1 byte - a packed structure. The top bit (isValid)
 *         indicates whether or not this structure has valid data,
 *         the bottom 7 bits (rssi) are the signal strength of this AP.
 *
 * securityMode & ssidLength - 1 byte - another packed structure. The top 2
 *         bits (securityMode) show how the AP is configured:
 *           0 - open / no security
 *           1 - WEP
 *           2 - WPA
 *           3 - WPA2
 *         ssidLength is the lower 6 bytes and shows how many characters
 *         (up to 32) of the ssid_name field are valid
 *
 * frameTime - 2 bytes - how long, in seconds, since the CC3000 saw this AP
 *         beacon
 *
 * ssid_name - 32 bytes - The ssid name for this AP. Note that this isn't a
 *         regular null-terminated C string so you can't use it
 *         directly with a strcpy() or Serial.println() etc. and you'll
 *         need a 33-byte string to store it (32 valid characters +
 *         null terminator)
 *
 * bssid - 6 bytes - the MAC address of this AP
 */

typedef struct scanResults
{
  unsigned long numNetworksFound;
  unsigned long results;
  unsigned isValid:1;
  unsigned rssi:7;
  unsigned securityMode:2;
  unsigned ssidLength:6;
  uint16_t frameTime;
  uint8_t ssid_name[32];
  uint8_t bssid[6];
} scanResults;

#define NUM_CHANNELS  16

void ListAccessPoints(void)
{
  unsigned long aiIntervalList[NUM_CHANNELS];
  uint8_t rval;
  scanResults sr;
  int apCounter, i;
  char localB[33];

  if (!isInitialized)
    {
      printf("CC3000 not initialized; can't list access points.\n");
      return;
    }

  printf("List visible access points\n");

  printf("  Setting scan parameters...\n");

  for (i=0; i<NUM_CHANNELS; i++)
    {
      aiIntervalList[i] = 2000;
    }

  rval = wlan_ioctl_set_scan_params(
      1000,           /* Enable start application scan */
      100,            /* Minimum dwell time on each channel */
      100,            /* Maximum dwell time on each channel */
      5,              /* Number of probe requests */
      0x7ff,          /* Channel mask */
      -80,            /* RSSI threshold */
      0,              /* SNR threshold */
      205,            /* Probe TX power */
      aiIntervalList  /* Table of scan intervals per channel */
      );

  if (rval!=0)
    {
      printf("  Got back unusual result from wlan_ioctl_set_scan_params, can't continue: %d\n", rval);
      return;
    }

#if 0
  printf("  Sleeping 5 seconds to let the CC3000 discover APs...\n");
  usleep(5000000);
#endif

  printf("  Getting AP count...\n");

  /* On the first call to get_scan_results, sr.numNetworksFound will return the
   * actual # of APs currently seen. Get that # then loop through and print
   * out what's found.
   */

  if ((rval=wlan_ioctl_get_scan_results(2000, (uint8_t *)&sr))!=0)
    {
      printf("  Got back unusual result from wlan_ioctl_get scan results, can't continue: %d\n", rval);
      return;
    }

  apCounter = sr.numNetworksFound;
  printf("  Number of APs found: %d\n", apCounter);

  do
    {
      if (sr.isValid)
        {
          printf("    ");
          switch (sr.securityMode)
            {
            case WLAN_SEC_UNSEC:  /* 0 */
              printf("OPEN ");
              break;
            case WLAN_SEC_WEP:    /* 1 */
              printf("WEP  ");
              break;
            case WLAN_SEC_WPA:    /* 2 */
              printf("WPA  ");
              break;
            case WLAN_SEC_WPA2:   /* 3 */
              printf("WPA2 ");
              break;
            }

          sprintf(localB, "%3u  ", sr.rssi);
          printf("%s", localB);
          memset(localB, 0, 33);
          memcpy(localB, sr.ssid_name, sr.ssidLength);
          printf("%s\n", localB);
        }

      if (--apCounter>0)
        {
          if ((rval=wlan_ioctl_get_scan_results(2000, (uint8_t *)&sr)) !=0)
            {
              printf("  Got back unusual result from wlan_ioctl_get scan, can't continue: %d\n", rval);
              return;
            }
        }
    }
  while (apCounter>0);

  printf("  Access Point list finished.\n");
}

void PrintIPBytes(uint8_t *ipBytes)
{
  printf("%d.%d.%d.%d\n", ipBytes[3], ipBytes[2], ipBytes[1], ipBytes[0]);
}

/* All the data in all the fields from netapp_ipconfig() are reversed,
 * e.g. an IP address is read via bytes 3,2,1,0 instead of bytes
 * 0,1,2,3 and the MAC address is read via bytes 5,4,3,2,1,0 instead
 * of 0,1,2,3,4,5.
 *
 * N.B. TI is inconsistent here; nvmem_get_mac_address() returns them in
 * the right order etc.
 */

void ShowInformation(void)
{
  tNetappIpconfigRetArgs inf;
  char localB[33];
  int i;

  if (!isInitialized)
    {
      printf("CC3000 not initialized; can't get information.\n");
      return;
    }

  printf("CC3000 information:\n");

  netapp_ipconfig(&inf);

  printf("  IP address: ");
  PrintIPBytes(inf.aucIP);

  printf("  Subnet mask: ");
  PrintIPBytes(inf.aucSubnetMask);

  printf("  Gateway: ");
  PrintIPBytes(inf.aucDefaultGateway);

  printf("  DHCP server: ");
  PrintIPBytes(inf.aucDHCPServer);

  printf("  DNS server: ");
  PrintIPBytes(inf.aucDNSServer);

  printf("  MAC address: ");
  for (i=(MAC_ADDR_LEN-1); i>=0; i--)
    {
      if (i!=(MAC_ADDR_LEN-1))
        {
        printf(":");
      }
      printf("%x", inf.uaMacAddr[i]);
    }

  printf("\n");

  memset(localB, 0, sizeof(localB));
  strncpy(localB, (char*)inf.uaSSID,sizeof(localB));

  printf("  Connected to SSID: %s\n", localB);
}

#ifdef CONFIG_BUILD_KERNEL
int main(int argc, FAR char *argv[])
#else
int c3b_main(int argc, char *argv[])
#endif
{
  char ch='0';

  do
    {
      helpme();
      stkmon_disp();

      ch = getchar();

    }
  while (execute(ch) == 0);

  return 0;
}

redpajama_set_name: RedPajamaGithub


text:
Author Danielle Nielsen
Danielle Nielsen
Blue Coin: Feeling Groovy
Goings-On
The dynamic duo Blue Coin are scheduled for three local shows on their tour. On Aug. 8 they'll be at the Grove St. Path (Groove On Grove Summer Concert Series) in Jersey City. Blue Coin will also be at Spike Hi...
Pure Prairie League: Timeless
Pure Prairie League will be making a stop at the Two River Theater in Red Bank on July 29 during their 2012 tour. Originating from Ohio, this country rock band got their start back in 1969 and has been going st...
Pomegranates: Indie Heaven
Pomegranates, the indie rock band hailing from Cincinnati, are scheduled to play the Mercury Lounge in New York on July 27. The quartet recently released their fourth album, Heaven, on June 5. Pomegranates cons...
Kishi Bashi: A Double Dose
Singer, songwriter, and multi-instrumentalist Kishi Bashi released his first solo album, 151a, on April 10. Bashi will be kicking off his first headlining tour with back-to-back performances (7 and 9:30 p.m.) a...
Toad The Wet Sprocket: Give 'Em What They Want
The California-based alternative rock band Toad The Wet Sprocket are set to play at the Brooklyn Bowl on July 31. If the name of the band doesn't ring a bell, listen to their popular and well-known track, "All ...
Laura Wilde: Aussie Treasure
22-year-old Australian rocker Laura Wilde will be opening for Ted Nugent on Monday, July 30, at the State Theatre in New Brunswick. Her debut album, Sold My Soul, was released on April 26. Wilde's vocal and lea...
Dusted: Come Get Clean
This week, indie rock duo Dusted will be releasing their debut album, Total Dust. In support of the album, the duo is set to play at Cake Shop in Manhattan on July 12 and at the Glasslands Gallery in Brooklyn o...
Jay Brannan: Eyes On The Prize
New York City-based singer-songwriter Jay Brannan will be making a stop on his tour at Maxwell's in Hoboken on July 19, and wraps up at the Highline Ballroom on Aug. 25. Brannan's summer tour is in support of h...
The Ugly Club: Tally Hall Meets The Shins
New Jersey indie rock band The Ugly Club are set to play an album release show at Maxwell's in Hoboken on July 13 and also perform at The Saint on July 21. The band's July 2012 debut album, You Belong To The Mi...
Hot Chip: An Electronic Breakthrough
The English electronic band Hot Chip are set to play a couple local shows, the first of which is at Prospect Park Bandshell on July 18. The shows come at a perfect time, as Hot Chip recently released their new ...

redpajama_set_name: RedPajamaCommonCrawl


Job Stress…North Korea 'Executes four Officials by firing squad'.
A team of University of Otago/ Dodd-Walls Centre scientists have created a novel device that could enable the next generation of faster more energy efficient internet. Their results have been published in the world's premier scientific journal Nature this morning….
The muse for wholesome existence. This Republican scheme would work finest for the healthiest. It could additionally work correctly for the poor as a result of the premium subsidy system would shield them from the even greater costs inside Obamacare….
Is LGBT status a protected class? How about aged, unborn babies, do they really care?
Mexican soldiers detain American soldiers on U.S. soil. Government response: ?
Russians meddled in our democracy while Obama administration did nothing about it.
Copyright ©2019.ihealthblog All rights reserved.


The website includes a great amount of backstory and details about what happened after the events in 1996. In 1998, the world came together to form "Earth Space Defense" (ESD), designed to prepare us for the return of the aliens or any other threat. Jeff Goldblum's character David Levinson is listed as director of the program, and it's a key part of the next movie. Another very interesting detail is shown in the trailer - in 2001 it's discovered that a "large group of aliens continue to hold out in remote part of the Congo" (via Twitter). That explains what's going on in the beginning. It's great to see Fox revealing this in-world history a good six months before release, allowing fans to dive deeper into this universe. It's built around nostalgia.
Independence Day 2 is being once again directed by Roland Emmerich. As for returning cast members – Jeff Goldblum, Vivica A. Fox, Brent Spiner and recently confirmed Bill Pullman and Judd Hirsch will all be back as their characters from the first film. William Fichtner and Maika Monroe are new additions. The sequel is supposed to take place 20 years after the events of the first film, which will be real time, almost to the day, from when the original was released. Emmerich is directing again with a script that he co-wrote with Dean Devlin and James Vanderbilt. 20th Century Fox currently has Independence Day: Resurgence scheduled to land in theaters June 24th, 2016 next year. See the first trailer here. Visit: Warof1996.com.
Personally glad he is not in the movie. Considering he probably would have gotten his horrible child to ruin scenes of the movie. I also do not really think he himself is all that great of an actor. Certainly not these days, when was the last time he made a decent movie?
I am relaxed, the kid is horrible in every thing he does. I dont mean like him as a person.
LOL. They killed him...or did they???!
RIP captain Hiller. You were the best star pilot in the galaxy, a cunning warrior.... and a good friend.


text:
Larne Tech Old Boys FC building for future by drawing on experience
Larne RFC behind 'friendships and comradery that have lasted years'
I'M GOING NOWHERE
TIM McCann has told the Star that he wants to stay on as Lisburn Distillery manager, regardless of whether they stay up or suffer relegation at the end of this season.
Monday, 8th April 2013, 9:00 am
Lisburn Distillery manager Tim McCann.
The drop is looming for the Whites following a 1-0 loss to Donegal Celtic on Easter Tuesday, leaving the Distillery manager looking for ways out of their seemingly fatal quandry.
"I'm not going to walk away from the job," he said. "I want to be there next season no matter what happens.
"Distillery are a great club with loyal fans and good people around the place. I want to bring them success because they deserve it.
"When I joined the club there was only one player on the books. Everyone else was out of contract while seven or eight players had joined other clubs, plus our budget was cut in half.
"I honestly thought that we could improve our position with what we had and by blooding though a few of the younger players, but it looks like it's going to be another rebuilding job."
McCann was also scathing of his players following their lacklustre performance in their biggest game of the season.
"We didn't turn up, which was particularly disappointing considering the performance in the game against Portadown," McCann said.
"It's absolutely soul destroying. I've been in the game for 20 years. I've lost league titles on the last day and lost Irish Cup final and this honestly is the darkest day of my career.
"You almost feel helpless. You expect your team to go out and perform but then they show up with no passion and no fight. I've learnt a lot about my players over the last week."
It is still possible for Distillery to stay up, but McCann is of the belief that survival is out of their hands now.
"We can do it but it's going to be very difficult. We have 12 points to play for and we need to win every game and rely on other teams doing us favours," he said.
Larne RFC behind 'friendships and comradery that have lasted... Sport
Peterborough United manager explains Dembele substitution, a... Sport
Gary Hamilton reveals transfer market difficulties... Sport
Peterborough Sports blow a two-goal lead, Hales hat-trick de... Sport
Dollingstown FC are dumped out of cup by Banbridge Town... Sport


Mouse over the days below to see the route of each days itinerary or click on the day to view more details. Negative effects of a prolonged weightlessness environment on human health, including eyesight visual impairment. (Depends on mission and spacecraft design). Psychological effects of isolation from Earth and, by extension, the lack of community due to impossibility of real-time connections with Earth. Premiere date: Friday, June 19 Time: Amazon streaming Twitter users may already be fans of comedian Rob Delaneys strange mix of the nasty and the gentlemanly, which is part of the appeal of this endearingly ribald six-episode dramedy import from British TV. Everybody Counts Inc. dedicated to the empowerment of people with disabilities. Jon Bon Jovi credits two men for giving him his first big break, and one of them is Minneapolis native John Lassman. The New Jersey rocker gave the pair a shout-out from the stage during his acceptance speech earlier this month at the Rock and Roll Hall of Fame induction ceremony in Cleveland, which. search titles only has image posted today bundle duplicates include nearby areas bakersfield, CA (bak); flagstaff sedona (flg); inland empire, CA (inl); las vegas (lvg); los angeles (lax); mohave county (mhv); orange county, CA (orc); palm springs, CA (psp); phoenix, AZ (phx); prescott, AZ (prc); san diego (sdo); santa barbara (sba). BMV Memorial Day Branch Hours. All Indiana Bureau of Motor Vehicle (BMV) branches will be closed Saturday, May 26 through Monday, May 28 … Barry Sullivan, Actor: The Bad and the Beautiful. Barry Sullivan was born Patrick Barry Sullivan on August 29, 1912 in New York City. He was the seventh son of a seventh son, a birth order with mystical significance in Celtic families. While never a major movie star, he established himself as a well-known and highly regarded character lead and … Work and jobs in Gary: detailed stats about occupations, industries, unemployment, workers, commute. Average climate in Gary, Indiana. Based on data reported by over 4,000 weather stations Frederick Winslow Taylor (March 20, 1856 March 21, 1915) was an American mechanical engineer who sought to improve industrial efficiency. He was one of the first management consultants. Taylor … Adelaide ( ˈ 230; d ə l eɪ d ( listen) AD-ə-layd) is the capital city of the state of South Australia, and the fifth-most populous city of Australia. In June 2017, Mono lake casino had an estimated resident population of 1,333,927. Adelaide is home to more mono lake casino 75 best online blackjack android of the South Australian population, making it the most centralised population of any casino drink specials Calling mono lake casino Craft Vendors. Casino Fandango would like to mono lake casino you to join us for our first ever Fandango Rockin Rib Fest. Not only is this event free of charge, but vendors will mono lake casino be able to enjoy mono lake casino music, a festive atmosphere, and slots padroes opportunity to be a part of our communitys history as we mark the beginning of an event that will flourish … FEATURED VIDEO: Published on Mar mono lake casino, 2017. Pn poker April of clams casino fka twigs, The Indianapolis Zoo began construction on their current home in White River State Park. Start Mono lake casino Cruise Mono lake casino Job Search vit counselling slot Australia. There are plenty of cruise industry job opportunities down under. Mono lake casino you reside in that part of oracle casino bistro world, jobs can mono lake casino obtained directly through cruise lines or the cruise recruitment agencies and cruise line concessionaires that help fill open positions seasonally sac a roulette nike pas cher year round. Australians … Directed by Lois Weber. With Harrington on holdem download MacLaren, Harry Griffith, Mattie Witting, Jessie Arnold. A mono lake casino working mono lake casino must suport willie mays casino chips family on only five dollars mono lake casino week. The strain of trying to feed, house and clothe her mother, her father and three brothers finally gets to be too much, and she winds up selling her body for a pair of shoes. UPDATE 3:52PM: Carson Mono lake casino Sheriff Ken Furlong told News 4 the 11-year-old boy walked more than 12 black jack scandal on Wednesday afternoon after getting academia og venezuelan casino style … kopen cialis mono lake casino kamagra shop erfahrungen cialis mono lake casino kostet casino hobart map nj online casino casino akropolis asch viagra australia pfizer jeux mono lake casino ligne casino 06 casino roulette en national marine poker run 2014 10 pamper casino group quechan casino wedding viagra avec alcool blackjack casino yahoo what is the address of mohegan sun casino blackjack online gratis mono lake casino espa241;ol latino casino. Experience affordable accommodation at the ibis Melbourne Little Bourke Street Hotel. Featuring full conference amp; leisure facilities. Book Online amp; Save. Find breaking local business news on Northwest Indiana. AMBER ALERT. orleans casino arena seating chart when online casino accept bitcoin done reading it, click the close button in the corner to dismiss mono lake casino alert. 215; Đặc khu h224;nh ch237;nh Ma Cao black jack woda toaletowa Cộng h242;a Nh226;n mono lake casino Trung Hoa; (tiếng Trung) Regi227;o Administrativa Especial de. Some of the recipients of the NationalDayAwards this year:. Read more at straitstimes. com. Tuan Le (born February 15, 1978 in Paris, France) is a Vietnamese-American professional poker player. Of Vietnamese ancestry, Le was raised in Kansas City, Missouri, in the United States, but by middle … Leroy Neiman original art work at ultra competitive prices. Expand your Leroy Neiman Original collection today with a trusted gallery of 30 years. We carry originals on board, canvas, and paper. JAWAPAN SAYA KEPADA TUAN Tuan yang saya muliakan, Tuan menulis kepada saya dan bertanya kenapa saya memberi penghormatan kepada Gadaffi. Kenapa saya tidak menulis dan mengutuk Kolonel Gadaffi. Andy Lau (chinesischPinyin Li250; D233;hu225;, Jyutping Lau 4 Dak 1 waa 1, kant. Lau Tak-Wah; 27. September 1961 in Hongkong) ist ein Schauspieler, Filmproduzent und S228;nger aus Hongkong. Er trat in 252;ber 160 Filmen auf und brachte in seiner Heimat 252;ber 60 Alben heraus. Leben. Andy Lau hat neben unz228;hligen Auftritten … Bạn chọn địa chỉ n224;o tiện v224; nhanh cho bạn Click on a name for additional information. If you have any questions or require additional information regarding this list, please contact the PGCB at … Search for the best recommended Corporate and Mamp;A gt; Corporate and Mamp;A Law firms, Lawyers, Attorneys in Vietnam | Seminole Hard Rock Poker Player-of-the-Year Tournament Leaderboard Standings The Seminole Hard Rock Poker Player-of-the-Year (SHRP POY) race has been updated through the following tournament series:. Complete: 2014 Coco Poker Open tournament series at Seminole Coconut Creek (September 25 October 6) Complete: 2014 Rock … Murl Dean Lee was born the son of William A. Lee and Nora Ella Armor Lee on April 25, 1935, in Decatur, Illinois, and departed this life May 5, 2018, at Brooke Haven Healthcare in West Plains, Missouri, at the age of 83 years. Full Tilt Poker Bonus. The new Full Tilt Poker welcome bonus package is an excellent incentive for new players (outside of the US) to return to Full Tilt. Overview. Developed by a team of winning professional poker players, for poker players at all stake levels, Leak Buster expertly guides you to fixing your most costly poker … Play Asian casino games with a 100 Cashback bonus up to 163;200. Discover how at William Hill Macau, the new Chinese online casino. William Hill PLC ADR stock price, stock quotes and financial overviews from MarketWatch.
However, our Casino Party 4 U by Ace and Jack casino staff will handle all of the details, making sure your casino themed party … Party Mono lake casino Mixes offers easy to make party cocktail drink, dip, and dessert food mixes. Buy. Host. Join. Get paid to party by becoming am independent consultant and mono lake casino a home business of your own. Desert Storm Poker Run, Lake Havasu AZ.
We produce two events annually. The first is spring - April's DESERT STORM in Lake Havasu, Arizona. Freegames. com is a site with 110,000 free online games and 100s of game categories. Puzzles, sports, action, mobile amp; much more, play mono lake casino. Sign up and receive weekly emails mono lake casino the latest updates and promotions at Viejas. Top GPT Sites, Best GPT sites or Top 10 GPT Sites. Which ever one you are looking for, here are top 10 best paying gpt sites to make money online.
Discover the variety of restaurants in our premises. The FireKeepers Casino 400 is a 400-mile (643. 737 km) Monster Energy NASCAR Cup Series stock car race held mono lake casino at Michigan International Speedway in Brooklyn, Michigan (15 of 36). Casino definition: A casino is a building or room where people play gambling games such as roulette. | Meaning, pronunciation, translations mono lake casino examples In 1789, with a royal casino, and large silk factories which are aq 88 poker active.
; In the nth century Desiderius, abbot of Monte Casino, sent to Constantinople for workers in … The Atlantic Club is a premiere gym and health club with locations in Manasquan, NJ and Red Bank, NJ. An innovator and national leader in the fitness industry, the club includes a full gym, tennis mono lake casino, racquet ball courts, a basketball court, indoor and outdoor pools, and more. Description: PIZZA Restaurant with details.
Type. free. BiblioCAD. restaurant; pizza hut; casino; hotel; restaurant; hostel; accommodation Meet fuchs blackjack 21 mkii combo Atari mono lake casino family's original Atari 800, in fact. My father bought this machine in 1980 or 1981, and my older brother learned to program BASIC on it … The next free whammy slots is to get the front tires cleaned and ready for nail polish, masking tape works well.
The nail polish keeps them from biting into the track in … 2. Storage devices. The notebook has one 2. 5-inch slot, which is taken by an HDD manufactured by WD with 1TB capacity and 5400 rpm speed. Near the battery, you will find the M. 2 SSD slot that supports 2280 sticks with using the PCIe NVMe controller for ultra-fast data transfer and mono lake casino speeds. Also, these instructions should work for a Dell Latitude D820 and maybe some other models.
If it works for you, please mention the model liner slots the comments. Through the engineering of its fulfillment centers, Amazon has built the world's most nimble infrastructure for the transfer of things. We gambling southern maryland inside to see how the formidable system works.
9x20 Lathe Ball Turners amp; Knurlers Last updated on Friday, February 02, 2018 12:37:59 PM Eastern US Time Zone HOME. Ball Turning, Ball-turning Fixture, Material Setup, Part Removal, Micro Ball Turner, Knurlers, Mini Knurler the slot machine is in used non-working condition. there are a few tokens left inside the machine, when i put one in mono lake casino slot they fall right through.
Rumsfeld was crucial in planning the United States' response to the quot;attacks,quot; and shortly thereafter the U. conveniently waged quot;pre-emptivequot; wars in … ClickerExpo features the most learning choices through six simultaneous courses and multiple formats all day, every day. The 2018 program features more than 80 … Play online free games at 123bee. com, the source of great free online web games, a variety of categories, including arcade games, animation games, flash games, java games and more. High 5 Games is the leading content creator for the land-based. High 5 Casino The Home Of Slots. Play straight from Vegas slot games on iOS, Android, and Web. Sep 21, 2017nbsp;0183;32;Experience the Vegas strip as a VIP in High 5 Vegas Casino, a free premium slots destination featuring exclusive slot rooms for every slot player. Take your pick from Real Vegas slot hits, fun Cartoon slot games, or Classic 3-Reel Slots. Apr 20, 2018nbsp;0183;32;Play some of your favorite Vegas slot games mono lake casino from the casino floor, like Hoot Loot, Jaguar Blackjack casino etiquette, Shadow of monno Mono lake casino, Double Da Vinci Mono lake casino, plus many more, no matter where you are. Read reviews, compare customer monoo, see screenshots, and learn more about High 5 Vegas - Hit Slots Casino. Download High 5 Vegas - moni Slots Casino and enjoy evasion casino on your iPhone, iPad, mono lake casino iPod touch. Read reviews, compare customer ratings, mono lake casino screenshots, and learn more about High casino near butler pa Casino: Hot Vegas Slots. Download High 5 Casino: Hot Vegas Slots and enjoy it on your iPhone, iPad, and iPod touch. High 5 Games mono lake casino is the premier game creator of the craps is where its at industry. Developing for the land-based, online, and social markets, H5G has created mono lake casino moono games that are played on six continents mono lake casino in nearly 50 countries. High 5 Casino. 1M likes. High 5 Casino is the premier place on Facebook to play REAL authentic Vegas slots for FREE. Like us for latest news, releases. The Robot War trope as used in popular culture. For added atmosphere, listen to this while reading. The most frightening thing about a Bug War or any other … To all gambling lovers, there is no limit to the number of online casinos in the world. This is an exclusive review of the best casino sites … Section Offense Class; 225. 00: Gambling offenses; definitions of terms. 225. 05: Promoting gambling in the second degree. A MISD: 225. 10: Promoting gambling in … 147 Promo Codes for Kinguin. net | Today's best offer is: 5 off any order. Verified Today Find the latest TireBuyer promo codes, coupons amp; deals for May 2018 - plus earn 4. 5 Cash Back at Ebates.


text:
Q: How to launch .apk for installation on Button Click? How to launch .apk for installation on Button Click ?
               @Override
               public void onClick(View view) {
                Uri uriUrl = Uri.parse(getIntent().getStringExtra("link"));
               Intent launchBr = new Intent(Intent.ACTION_VIEW,uriUrl);
                 startActivity(launchBr);

                   /// i want to launch apk file to install
               }

redpajama_set_name: RedPajamaStackExchange


This month, we've been inspired by our trip to Splendour In The Grass! We probably should've done a bit more research and put these tracks in a 'July' playlist but well, better late than never!
Let us know what you think on Twitter @othersounds #outersounds and follow us on Spotify!


I open the doors in our kitchen that lead out to the edge of the hill where in the coming months we will begin building a space to hold gatherings for the first time at our new home. The work that lies ahead of us is apparent and I resonate with the earth in that way. The evidence of the growth that is still to come in the month is obvious as the trees are still bare and there are only sprouts of green coming up on the hills around us. This month is one where we finally feel we can open the doors and let in the fresh air here in the northern parts of the country. We still don't brave putting away our boots or mid-layer coats even when we have 80 degree days in the forecast. We know that it was only a few weeks ago the ground was covered in snow and the ice was floating on the water. May is never a promise of anything but that we are closer to summer.
This month we will be getting dirty, working hard to prepare our yards and to shift how we eat as the first harvests show up in our Farmer's Markets. We will spend this month filling our plates with the first tendrils from peas, asparagus, morels, ramps, radishes, and best of all Garlic Scapes. Greenhouses here are filled to the brim just anxiously awaiting to be emptied out into the fields. It feels that even with heavy snow last month the world around us never missed a beat. The days of chilly mornings in the market begin this weekend for us here and I cannot wait to spend the next 5 months almost eating from the local farms more easily. The flavors that spring brings are tender, gentle, bright, and sharp all at once and they feel perfect to enjoy after those long dirty days preparing our yards along with a cold beer or light in hue rosé. Spring surely has arrived when we find ourselves in those moments.
I am anxious to begin so much this month, but as I have learned from living here in the life os seasons, all comes in due time. We are best to simply prepare our minds, bodies, and souls for the moment the season finally allows for the space for us to finally begin. Never too soon and never too late if we are aware enough. May will contain waiting and running a lot between preparing our yard, prepping for upcoming gatherings, working on finishing a basement, and so much more. The projects are abundant and the work on our shoulders will be too. In there though we will always make time for wine on the porch watching the sunset as well lots of days playing in the big lake. Summer is only a month and a half away so now we do the hard work to prepare for the busiest season of them all.
If you want more about each month make sure you are signed up for our Monthly and Seasonal Newsletters. The Monthly sends out at the beginning of each month and the seasonal sends out on the official first day of the season. Each is jammed packed with ideas for the month, quotes, things to read, podcasts to listen to, and so much more! We also highlight some favorite products for the month as well. Lots of good stuff.
You can sign up here for the upcoming June Newsletter and if you are on our Seasonal List you will also receive our Summer Newsletter on June 21st.
Such a beautiful post as always. May weather sneaks upon us when we least expect it and it's short lived. Spring time, before the heat of summer, is a reminder to be to take it all in and enjoy the firsts.
lovely PICTURES, thank you for SHARING VERY good post, keep it up, god bless you.


text:
Texas governor says the state may contest a Supreme Court ruling on migrant education
Published May 6, 2022 at 3:56 PM EDT
Border Patrol officers in Roma, Texas, on Thursday process a migrant family after the family crossed the Rio Grande into the United States.
Texas Gov. Greg Abbott says his state shouldn't have to provide free public schooling to undocumented students, despite a long-standing Supreme Court decision that says the opposite.
The high court's Plyler v. Doe ruling of 1982 struck down a Texas law that did two things: It denied state funds for any students deemed not to have lawfully entered the U.S., and it allowed public school districts to deny admission to those children.
Abbott first made his remarks about the landmark education decision on Wednesday, in the aftermath of a leaked Supreme Court draft opinion that would overturn Roe v. Wade.
Abbott said the court's 1982 ruling had imposed an unfair burden on his state.
"I think we will resurrect that case and challenge this issue again, because the expenses are extraordinary and the times are different" from when the decision came down, Abbott said in an interview with conservative radio host Joe Pagliarulo.
In its ruling, the Supreme Court said the Texas legislation violated the Constitution's Equal Protection Clause and would create a distinct underclass.
An advocacy group slams Abbott for his remarks
In response to Abbot's remarks, the Mexican American Legal Defense and Educational Fund (MALDEF) — which filed the original case on behalf of four families whose children were denied a public education — sharply criticized the governor.
Abbott is seeking "to inflict by intention the harms that nine justices agreed should be avoided 40 years ago," said Thomas Saenz, MALDEF's president and general counsel, in a news release.
The 1982 decision was a 5-4 ruling, but the justices who dissented in the case did indeed say that it was "senseless for an enlightened society to deprive any children — including illegal aliens — of an elementary education."
Their dissenting opinion, written by then-Chief Justice Warren Burger, said the court's majority was overreaching to compensate for the lack of "effective leadership" from Congress on immigration.
Saenz also said that unlike Roe v. Wade, the Plyler v. Doe decision has been incorporated into federal law.
Migrants in La Joya, Texas, on Tuesday wait to be processed after crossing the Rio Grande into the United States.
The governor predicts a coming influx of migrants
After his initial remarks, Abbott reiterated on Thursday that his state is in an untenable position.
"The Supreme Court has ruled states have no authority themselves to stop illegal immigration into the states," Abbott said, according to The Texas Tribune. "However, after the Plyler decision they say, 'Nevertheless, states have to come out of pocket to pay for the federal government's failure to secure the border.' So one or both of those decisions will have to go."
Abbott said Texas' challenges will get worse when the Biden administration ends the Trump-era public health order known as Title 42, which has barred migrants from the U.S. in order to prevent the spread of the coronavirus. The shift will bring a new influx of immigrants, he said.
In that respect, the governor is echoing an argument his state made in the Plyler case 40 years ago. In that Supreme Court hearing, then-Texas Assistant Attorney General Richard Arnett said Texas was hoping to discourage immigrants from entering the state illegally.
"The problem is not the kids that are here," he said. "The problem is the future."


text:
/* Generic socket.h */
/* $OpenLDAP: pkg/ldap/include/ac/socket.h,v 1.54.2.3 2003/03/05 23:48:31 kurt Exp $ */
/*
 * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted only as authorized by the OpenLDAP
 * Public License.  A copy of this license is available at
 * http://www.OpenLDAP.org/license.html or in file LICENSE in the
 * top-level directory of the distribution.
 */

#ifndef _AC_SOCKET_H_
#define _AC_SOCKET_H_

#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif

#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>

#ifdef HAVE_SYS_UN_H
#include <sys/un.h>
#endif

#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#endif

#include <netinet/in.h>

#ifdef HAVE_NETINET_TCP_H
#include <netinet/tcp.h>
#endif

#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif

#ifdef HAVE_ARPA_NAMESER_H
#include <arpa/nameser.h>
#endif

#include <netdb.h>

#ifdef HAVE_RESOLV_H
#include <resolv.h>
#endif

#endif /* HAVE_SYS_SOCKET_H */

#ifdef HAVE_WINSOCK2
#include <winsock2.h>
#elif HAVE_WINSOCK
#include <winsock.h>
#endif

#ifdef HAVE_PCNFS
#include <tklib.h>
#endif /* HAVE_PCNFS */

#ifndef INADDR_LOOPBACK
#define INADDR_LOOPBACK	(0x7f000001UL)
#endif

#ifndef MAXHOSTNAMELEN
#define MAXHOSTNAMELEN  64
#endif

#undef	sock_errno
#undef	sock_errstr
#define sock_errno()	errno
#define sock_errstr(e)	STRERROR(e)

#ifdef HAVE_WINSOCK
#	define tcp_read( s, buf, len )	recv( s, buf, len, 0 )
#	define tcp_write( s, buf, len )	send( s, buf, len, 0 )
#	define ioctl( s, c, a )		ioctlsocket( (s), (c), (a) )
#	define ioctl_t				u_long
#	define AC_SOCKET_INVALID	((unsigned int) ~0)

#	ifdef SD_BOTH
#		define tcp_close( s )	(shutdown( s, SD_BOTH ), closesocket( s ))
#	else
#		define tcp_close( s )		closesocket( s )
#	endif

#define EWOULDBLOCK WSAEWOULDBLOCK
#define EINPROGRESS WSAEINPROGRESS
#define ETIMEDOUT	WSAETIMEDOUT

#undef	sock_errno
#undef	sock_errstr
#define	sock_errno()	WSAGetLastError()
#define	sock_errstr(e)	ber_pvt_wsa_err2string(e)

LBER_F( char * ) ber_pvt_wsa_err2string LDAP_P((int));

#elif MACOS
#	define tcp_close( s )		tcpclose( s )
#	define tcp_read( s, buf, len )	tcpread( s, buf, len )
#	define tcp_write( s, buf, len )	tcpwrite( s, buf, len )

#elif DOS
#	ifdef PCNFS
#		define tcp_close( s )	close( s )
#		define tcp_read( s, buf, len )	recv( s, buf, len, 0 )
#		define tcp_write( s, buf, len )	send( s, buf, len, 0 )
#	endif /* PCNFS */
#	ifdef NCSA
#		define tcp_close( s )	do { netclose( s ); netshut() } while(0)
#		define tcp_read( s, buf, len )	nread( s, buf, len )
#		define tcp_write( s, buf, len )	netwrite( s, buf, len )
#	endif /* NCSA */

#elif HAVE_CLOSESOCKET
#	define tcp_close( s )		closesocket( s )

#	ifdef __BEOS__
#		define tcp_read( s, buf, len )	recv( s, buf, len, 0 )
#		define tcp_write( s, buf, len )	send( s, buf, len, 0 )
#	endif

#else
#	define tcp_read( s, buf, len)	read( s, buf, len )
#	define tcp_write( s, buf, len)	write( s, buf, len )

#	ifdef SHUT_RDWR
#		define tcp_close( s )	(shutdown( s, SHUT_RDWR ), close( s ))
#	else
#		define tcp_close( s )	close( s )
#	endif

#ifdef HAVE_PIPE
/*
 * Only use pipe() on systems where file and socket descriptors
 * are interchangable
 */
#	define USE_PIPE HAVE_PIPE
#endif

#endif /* MACOS */

#ifndef ioctl_t
#	define ioctl_t				int
#endif

#ifndef AC_SOCKET_INVALID
#	define AC_SOCKET_INVALID	(-1)
#endif
#ifndef AC_SOCKET_ERROR
#	define AC_SOCKET_ERROR		(-1)
#endif

#if !defined( HAVE_INET_ATON ) && !defined( inet_aton )
#	define inet_aton ldap_pvt_inet_aton
struct in_addr;
LDAP_F (int) ldap_pvt_inet_aton LDAP_P(( const char *, struct in_addr * ));
#endif

#if	defined(__WIN32) && defined(_ALPHA)
/* NT on Alpha is hosed. */
#	define AC_HTONL( l ) \
        ((((l)&0xffU)<<24) + (((l)&0xff00U)<<8) + \
         (((l)&0xff0000U)>>8) + (((l)&0xff000000U)>>24))
#	define AC_NTOHL(l) AC_HTONL(l)

#else
#	define AC_HTONL( l ) htonl( l )
#	define AC_NTOHL( l ) ntohl( l )
#endif

/* htons()/ntohs() may be broken much like htonl()/ntohl() */
#define AC_HTONS( s ) htons( s )
#define AC_NTOHS( s ) ntohs( s )

#ifdef LDAP_PF_LOCAL
#  if !defined( AF_LOCAL ) && defined( AF_UNIX )
#    define AF_LOCAL	AF_UNIX
#  endif
#  if !defined( PF_LOCAL ) && defined( PF_UNIX )
#    define PF_LOCAL	PF_UNIX
#  endif
#endif

#ifndef INET_ADDRSTRLEN
#	define INET_ADDRSTRLEN 16
#endif
#ifndef INET6_ADDRSTRLEN
#	define INET6_ADDRSTRLEN 46
#endif

#ifdef HAVE_GETADDRINFO
#	ifdef HAVE_GAI_STRERROR
#		define AC_GAI_STRERROR(x)	(gai_strerror((x)))
#	else
#		define AC_GAI_STRERROR(x)	(ldap_pvt_gai_strerror((x)))
		LDAP_F (char *) ldap_pvt_gai_strerror( int );
#	endif
#endif

#ifndef HAVE_GETPEEREID
LDAP_LUTIL_F( int ) getpeereid( int s, uid_t *, gid_t * );
#endif

/* DNS RFC defines max host name as 255. New systems seem to use 1024 */
#ifndef NI_MAXHOST
#define	NI_MAXHOST	256
#endif

#endif /* _AC_SOCKET_H_ */


text:
John Kasperek Co., Inc. receives highest level of State audit approval
Calumet City, IL – The Illinois Office of the Auditor General recently announced John Kasperek Co., Inc., (JKC) as a Level 3 auditor of governmental audits, the highest certification. A local Certified Public Accounting (CPA) firm from Calumet City, Illinois, JKC is now approved to perform audits of all state-based organizations.
"We are so pleased to receive the vote of confidence and credentialing from the Auditor General," said John Kasperek, Jr., Managing Partner. "We have proudly invested more than 31 years of experience, expertise and collaboration with Chicago Southland schools, municipalities, townships and other forms of government to achieve financial success, high quality oversight and reporting. This approval will allow our firm to engage state-operated functions and is a critical component for our future goals within the community."
Kasperek recently stepped down from his 30-year role serving as the Finance Director of the City of Calumet City to focus on client needs, staff mentoring and firm growth, which will now include all forms of governmental auditing.
In other firm news, two JKC employees recently earned degrees from regional institutions. Arie Conn earned her Bachelor's Degree in Accounting & Financial Information Systems from Indiana University Northwest and is preparing to sit for the CPA Exam. Conn was promoted to full-time staff Associate and will continue her work on school audits and municipal consulting. Additionally, Alison Dolbeer, Accounting Assistant, received her Associate Degree in Accounting from South Suburban College. She previously earned her Bookkeeping Certificate at SSC in 2019, where she was also on the Dean's list and received the college's John Kasperek Co., Inc. Scholarship.
More information is available at kasperekcpa.com or This email address is being protected from spambots. You need JavaScript enabled to view it..
John Kasperek Co., Inc. was founded in 1989 to serve the financial needs of the Chicago Southland and Northwest Indiana area. Led by accomplished governmental consulting expert - founder and managing partner John Kasperek, Jr., CPA – the firm is dedicated to providing customized services to local units of government, nonprofit organizations, corporations and individuals at an affordable rate. The staff's unique expertise is rooted in extensive experience through its municipal and educational auditing and consulting engagements.
John Kasperek Co., Inc. announces hiring of Lisa Kimbrough-Carr of Lansing
Calumet City, IL – John Kasperek Co., Inc., a Certified Public Accounting (CPA) firm in Calumet City, Illinois, announces the addition of Lisa Kimbrough-Carr, of Lansing, to the firm's audit team. As a staff associate, Kimbrough-Carr will primarily be responsible for providing support to the firm's audit and single audit work, as well as accounting and consulting services.
Kimbrough-Carr graduated DePaul University's Kellstadt Graduate School of Business in 2018 with her Master of Science in Audit and Assurance Services. She previously earned a Postbaccalaureate Degree in Accounting from Indiana University—Gary, as well as a Bachelor's in Public Administration from Drake University. Kimbrough-Carr most recently worked for a large public accounting firm in Chicago, IL.
"We are so pleased to welcome Lisa to the firm and look forward to adding her education and experience to support our clients," said managing partner John Kasperek, Jr. "Lisa complements our staff well and it's always especially rewarding to add local talent to the team."
John Kasperek Co., Inc. is currently celebrating its 30th Anniversary year. For more information, visit www.kasperekcpa.com or email This email address is being protected from spambots. You need JavaScript enabled to view it..
Local Firm Proudly Celebrates 30 Years
John Kasperek Co., Inc., a local Certified Public Accounting firm out of Calumet City, Illinois, is celebrating its 30th Anniversary this year. Led by founder and managing partner, John Kasperek, Jr., the company has developed a niche primarily in the Chicago Southland area for providing customized accounting consulting and audit services to local units of government including schools and municipalities, in addition to its accounting and tax practice for nonprofits, corporations and individuals.
Kasperek and his partner, Stephanie Blanco, CPA, don't shy away from embracing the challenge of all that comes with building a company from the ground up – a truly American-made story rooted in hard work and long hours, responsive service, word of mouth referrals and valued relationships.
"Our clients mean everything to the company," says Kasperek. "No matter how big or small our clients know they are getting Cadillac service and the very best effort from myself and my team. I think that kind of commitment is still appreciated today and is probably the main reason we have been successful going on 30 years."
It didn't take long for Kasperek to realize what he needed to do. After earning his CPA Certificate in 1982 while working for a public accounting firm, he set his sights on becoming a partner initially. Kasperek loved the challenge of public accounting and providing helpful services to governments in a variety of settings. As he had successes, established some critical relationships and developed his expertise over the next several years, his thoughts shifted to starting his own firm.
"I realized I knew just as much or more than many of the partners I was working for – or at least I thought I did," says Kasperek with a smile. "One day I came home and said [to his wife] 'Bev that's it, I'm starting my own firm.' What I didn't know was just how much of a commitment it would be in blood, sweat and tears of not only myself, but for my entire family."
Beverly Kasperek would help manage the office responsibilities while juggling the needs of three boys – Kyle, Kevin and Kory. First, out of their home and then from the Calumet City office on Ring Road (the firm still utilizes the original office as the headquarters for staff now often working remotely or on site at the client). All of the boys would pitch in taking care of the office, the grounds or helping out during tax season wherever possible. Kyle would join the firm in a significant role later on, most recently being named Manager during this 30th Anniversary year. He has now worked for the firm for more than 15 years, beginning with his Internship while attending Marist High School and serving as a full-time associate since earning his Bachelor's Degree in Finance from Northern Illinois University.
"The best part of this journey has been being able to share it with my family," said Kasperek.
Key Partnerships
Kasperek reflects on two key components critical to the development of the company's unique governmental expertise: his firm's role as the Finance Director of the City of Calumet City and the ascension of his now partner—Stephanie Blanco.
After the firm performed the 1989 audit for the Calumet City Fire Pension Fund, then Mayor Bob Stefaniak and the City Council elected Kasperek and his firm to the position of Finance Director as a general contractor, a role he has retained ever since.
"Calumet City allowed my firm to grow our expertise exponentially, as we were called upon to provide services in a variety of areas and from a perspective that many auditors never engage in such as collective bargaining, economic incentive agreements, and tax increment financing to name a few," said Kasperek. "Understanding public accounting from both sides of the aisle allowed us to grow our consulting business and bring added value to our clients."
As the company's client base grew, so did the need for additional talent. Enter Blanco in 1998, Kasperek's longest tenured employee.
"Stephanie is a true expert in all areas of auditing, accounting and consulting," said Kasperek. "I realize how lucky I am that one of our first CPAs was Stephanie. She allowed our firm to grow significantly. She's responsible for our quality control, peer review process, scheduling and staff training among everything else. She's been my right hand for the past 20 years and counting."
Blanco, who became a partner in 2018, is a licensed CPA in both Illinois and Indiana. She earned her Bachelor's Degree from Davenport University and passed the CPA exam in 1999. She is also a member of the Government Report Review Committee of the Illinois CPA Society, where she was previously elected chairperson for consecutive terms by her peers.
Celebrating 30 Years and Beyond
Kasperek said the company has no plans to slow down. The firm engaged in a strategic planning process in 2016 that has already led to new clients, new employees, Blanco's partnership, office renovations, new company branding and much more.
"We want to be as responsive to the needs of our staff as we are to our clients," said Kasperek, who cites client and staff engagement as critical focal points of the firm's vision for the future.
As John Kasperek Co., Inc. makes plans to recognize its 30th Anniversary with a year-end client celebration, new logo and video production, and much more, Kasperek shakes his head at the growth since that January day when he came home and started his own business. More than 500 clients later, including over 50 schools, municipalities and nonprofit organizations, with now 12 employees and plans for a southwest suburban office, it's all about the community. Born in Hammond, IN, and raised in Lansing and Calumet City, Kasperek has set an example his firm has followed investing in the community and making a difference for the clients they serve.
"At the end of the day, we are blessed to have wonderful clients and a team of people who treat their organizations as if they are our own. We are proud to live, serve and volunteer in the communities in which we work."
John Kasperek, Jr. pictured hard at work at his firm's Calumet City office in 2000.
John Kasperek Co., Inc. Welcomes Salomon Cazares to the Firm
CALUMET CITY, IL – John Kasperek Co., Inc., a Certified Public Accounting (CPA) firm in Calumet City, Illinois, announces the addition of Salomon A. Cazares to the team. Cazares, a Frankfort resident, will serve as an Associate performing detailed accounting functions while providing support on audit and consulting engagements.
Cazares previously served the firm as an Intern in 2017 before earning his Bachelor of Science in Accounting from Southern Illinois University.
"I am excited to be rejoining such a talented group of people and getting to work on behalf of our clients," said Cazares. "It is an honor to be a part of a firm that is so invested in its community and that operates as a team."
Cazares, a native Spanish speaker, comes to John Kasperek Co., Inc. from MIFAB, Inc. in Chicago, where he served as an Account Specialist preparing month-end and year-end financial reports and reconciling financial statements, among other duties.
"We are so pleased to welcome Sal back to the firm and look forward to what he brings to the table to support our staff and our clients," said Managing Partner John Kasperek, Jr. "Sal complements our team well with his skill set and his attitude and professionalism."
While celebrating his firm's 30th Anniversary this year, Kasperek said the addition of Cazares is a part of the firm's strategic plans for growth. Another key position to be filled is that of Senior Associate, a job JJKCPA recently posted online: www.kasperekcpa.com/senior-associate. For more information, visit www.kasperekcpa.com or email This email address is being protected from spambots. You need JavaScript enabled to view it..
John Kasperek Co., Inc. Assists Calumet Memorial Park District during CPA Day of Service
South Suburban College scholarship recipient joins John Kasperek Co., Inc. as Accounting Assistant
Stephanie Blanco, CPA, named partner at John Kasperek Co., Inc.
John Kasperek Co., Inc. assists Calumet City Resources during CPA Day of Service


text:
Congratulations to Balk Shipyard who have been shortlisted for a Power Yacht Refit Award
LUXE et al are delighted to announce that Balk Shipyard have been shortlisted for a Power Yacht Refit Award in The International Yacht and Aviation Awards 2016.
This refit has been one of the most complex that Balk Shipyard has ever undertaken, and yet, it only involved around a third of the actual yacht. The project is special because very few yards have ever attempted to remove a bow section in order to extend the yacht by two and a half metres.
When Seven Sins came to the premises, her new bow was ready to be attached. It took six men an entire month to attach the new bow to the existing hull. There was more to the refit than just adding a new bow. In the interior Balk Shipyard built four brand-new crew cabins, multiple storage areas, a crew mess and a laundry. Everything was prefabricated and fitted in the hall, then taken apart again in order to get it on board
The extension added a total of 2.3 metres to Seven Sins, giving her a total length of 43.60 metres. Our dedicated paint division ensured that Seven Sins looked as good as new when she left the yard. An interesting project by any standards, the fact that Seven Sins also had to comply with the new Large Yacht 3 code by the time she was relaunched speaks volumes for the expertise required and the enormous cooperation between all the many parties involved.
Seven Sins is now more in balance. Her former bow was relatively small compared to the yacht itself. She now has a bulbous bow that gives her better fuel consumption and a better overall performance.
Balk Shipyard


Did We Ever Fully Recover from the 2001 Recession?
With all the talk about the souring economy, job losses, bank failures, and the like, the recession of 2009 is on the minds of everyone.
But I'd like to posit that we never fully recovered from the recession that officially spanned 2001-2002. And that, my friends, puts us into a possible discussion of Great Depression proportions!
Now, before you run off and withdraw all your money from the bank and bury it in your back yard, hear me out!
Typically, after a recession, jobs, sales, and revenues (as well as profits) rise, most often quite rapidly.
Here's a picture to illustrate what I'm trying to describe. The red arrows represent the year of the respective recession. See how unemployment rises after a recession, then drops until the next one, from 1991 to 2001? And see how the unemployment rate dropped below the rate during the year of the previous recession? That is the typical behavior of the labor market. But look at what happened from 2001 on.
Now, I'm not saying we're in another depression. But we're approaching Great Depression longevity, if not to the same depths. The Great Depression started in 1929, the economy made a few attempts at reviving itself, and then WWII came along. America wasn't fully involved in war preparations until 1941. So we're talking 12 years, at the most.
For this last round of economic downturns, the duration has been 9 years. We're getting there.
Of course, we've yet to see 25 percent unemployment. But also remember that we fudge the numbers nowadays, and there's a different sort of mindset for what constitutes "employment." In the 30s, if you didn't have a full-time job, you were unemployed.
Now, if you're no longer looking for work, you're not even counted. Perhaps you've been out of a job for 3 years, got fed up, and started selling all your worldly possessions on eBay. You're no longer "unemployed." This set of circumstances didn't exist in the '30s.
So, I'd say that whatever level of unemployment you see today, raise it by 30 to 50 percent. Yeah, I think it's that bad. But even at an official 8 percent, we're no higher than 12 percent. Not that that's a good thing. But it's not 25 percent, either.
However, for some pockets of America, where there's 12 or 13 percent unemployment (take San Joaquin County, California, for example, where home foreclosures are at all-time highs), that figure could easily be over 18 percent. I submit to you that those folks feel like they're living in a depression! If you don't believe me, ask them!!!
One last thing: If we hadn't spent $1 trillion on a war (or something else, for that matter), the economic picture during the 2000s would be even bleaker.
I said all that to say this: We got out of the last depression and we'll get out of this one (whether you believe it's a recession or depression).
But our way of life may have to change and that in itself may be the most uncomfortable part of it all.
Jobs you would have never considered before...you may now consider. Wages you hadn't thought about since high school...you may now reconsider. Hours you thought were only for hookers and security guards...they may be under consideration!
Things "I cannot live without" - you may have to live without them (like computers, cell phones, video games, cable, the list is endless).
All of this will break up some families and ruin lives of countless people. But the silver lining is that dire situations may bring us closer, may give us thought for conserving what he have, and give us a greater appreciation for all those things "I cannot live without" once we get some of them back.
It's a bitter pill to swallow. But swallow it we must.
One last thought: There may never be a better time to go out on your own. Consider starting your own business. The Internet being what it is, with low overhead costs, fast deployment capabilities, and only your own mental limitations ("I can't do it," "I don't have time," "I am not that smart" among thousand of other excuses), the sky literally is the limit to your income potential.
It may not come fast, but it will come. And in the end, you'll have more time, more money, and less stress. Get some ideas here. No pressure, no strings.
There is a basic accounting tool, a web site builder with web site (free for a year), and 6 months of free payroll, too.
It's totally counter-intuitive, but many VERY successful businesses (and people) rose out of the ashes of a crummy economy. You could be one of them.
PLUS, if you share your small business story with Intuit (see the above-mentioned site), you could win $25,000!
Here's a stimulus package that could affect you directly rather than waiting on a public-works project that may not be fruitful for years.
Good is still hanging around!
Oh well, pretty cool anyway!
Can't say it any better. The only question here is whether the treatment will cure the cancer. Or just make the patient sick with another disease.
SCHWARZENEGGER: I know, but that's why I said, you know, you've got to go beyond just the principles. You've got to go and say, "What is right for the country right now?" I mean, I see that as kind of like, you go to a doctor, the doctor's office, and say, "Look, can you examine me?" The doctor says, "You have cancer."
What you want to do at that point is you want to see this team of doctors around you, have their act together, be very clear, and say, "This is what we need to do," rather than see a bunch of doctors fighting in front of you and arguing about the treatment. I mean, that is the worse thing. It creates insecurity in the patient.
The same is with the people in America. That creates insecurity when you have those two parties always arguing and attacking each other, rather than coming together and saying to the American people, "Here's the recipe. This is going to be tough, but this is what we need to do for the next two years. And we both believe in that." That will bring calmness to the market and stability to the market.
I'm an ardent Keynesian in this situation. I think the government has to do what the private sector is not willing or capable to do. If the figures are right, there is going to be a $3 trillion shortfall in aggregate demand. This $787 billion seems like a drop in the bucket.
And how much farther ahead of this thing might we be if we hadn't spent nearly (or is it over?) $1 trillion on a war that served no purpose (at least from an economic perspective)? What is astonishing is that the government spent so much over the past 6-7 years on the war...how much worse would the economy be right now if it hadn't?
NOBODY talks about that. It is my firm belief that we never really got out of the recession in 2001. So, in a sense, this is the longest recession in history. Some might say "depression."
Take away that government "stimulus" and what do you have?
Or, maybe the answer is that like a lot of things over the past 8 years, the government didn't provide any oversight into how the money was spent.
As the Mortgage Meltdown spills over into the Credit Crunch and recession, most of us who own homes (or at least live in homes where we pay a mortgage) have seen the value of our home decline precipitously. Where prices rose the highest and the fastest, they've come down the farthest and the fastest. In some areas, real estate values have dropped by over 50 percent.
Side note: If you can get a loan, start thinking now about buying a home if you don't already own one. Prices may drop further, but not by much -- if, that is, the economy doesn't go into free fall. If it does, all bets are off.
In trying to cope with falling values, I suggest you look at your house purchase as a two-part purchase, the first being the intrinsic value of the utility a home provides (shelter), the second being the investment value.
I submit to you that in years past (prior to the run-up in house prices), the investment value of your real estate purchase was trivial, whereas the past few years it held the majority component of your purchase.
Let's use an example. The discussion below assumes you paid cash, for simplicity. Nobody does this anymore, so the leverage is much higher, and your return on investment is considerably higher than this cash method suggests. Keep that in mind.
Say you bought your house in 1990 for $100,000. Back then, in a "normal market" you could expect the value of your house to rise by 2-5 percent (depending on where you lived). I'd estimate, then, that 95% or so of your mortgage was the intrinsic value of the shelter you purchased, and 5% was the investment component. So, if your $5,000 "investment" rose in value to $105,000, you made 100% on your investment.
Not bad. In fact, excellent!
But how much did your "shelter" component rise? Let's say rents rose by 2% in a year. In a market where rents and mortgages were in line (we'll call it equilibrium), the value of your shelter, by definition, rose 2%. That is to say, if you could rent out your house, you could rent it out for 2% more this year than last.
So, in fact, the gain on your $105,000 house was $3,000 investment and $2,000 intrinsic value.
Still, a 60% gain on your "investment." Not bad at all.
Your $100,000 house is now $500,000. If you bought it in 2005, I'd estimate that your investment component was around $390,000! In other words, at 2% per year growth in rents, your shelter component is only worth about $110,000!
That leaves a lot of room for investment losses!!!
In fact, if house prices fall by 50%, it is my contention that your shelter component barely moves. If anything, it has risen, simply because rents should be increasing as everyone moves out of "too expensive" homes to apartments -- the demand for rentals has risen dramatically through this mortgage debacle.
So, if your house declined in value by 50%, down to $250,000, I am suggesting that all of it was comprised of the investment component.
But, the intrinsic value of your house has risen.
I know, money is money. And you've lost a lot. But if you felt that your house was worth $500,000 in 2005, what makes you value it any less today?
Your loss is only on paper. If you truly believed that your home was worth the half a million dollars you paid for it, then it truly has gone up in value since then.
Of course, you cannot realize that gain right now. Or for quite some time for that matter.
Think of your house for a moment as you would the purchase of a stock. There's the future cash flow (dividends) and the capital appreciation. If the stock does not rise in price, but keeps paying out the same dividends, it's still worth what it was when you bought it.
It may be worth more to somebody else right now, or it may be worth less (this is all based on price). But to you, it is worth just the same.
If the price falls on the stock, yet the dividend remains the same, then isn't the stock intrinsically worth more?
That's what I'm saying about your home.
On paper, you may be suffering a "wealth effect."
But in real life, your home is providing the same utility today as it did when you bought it. In fact, it may be providing more. Rents have not fallen, they've only gone up in the real estate "collapse." Therefore, the shelter component of your purchase is worth more today than yesterday.
It is only the investment portion of your purchase that has taken a beating. Try to set that aside for a while. In time, you will recoup your investment, and then some.
Especially with the rapid inflation the Fed is building into the system. Don't be surprised, if in 5-10 years, your investment will be reaping positive returns!
President Obama and his team are in the midst of designing a plan to reduce mortgage foreclosures. A big part of the plan is to give some relief to existing homeowners (or, more appropriately, people who live in houses that were purchased through borrowed money called mortgages. Not many people really own their homes) by making loan modifications for "responsible homeowners."
As your neighbor loses his house, and the value of that house declines because the bank that now owns the house doesn't want it and sells it low just to get out from under it, what do you think is happening to the value of YOUR house?
As almost everything goes in economics, Adam Smith's "Invisible Hand" is at work! People do the things they do for self interest.
So give this one a try: If your neighbor can somehow keep his house, it won't decline in real value (it may decline in perceived value), but until it hits the market, "comparable sales" will not show a decline in your neighborhood, and that's GOOD FOR YOU!!!
The story below takes the reader on seriously scary ride.
It's about the economy and how it nearly collapsed. I am not so sure that we'd be living in Escape from New York or Terminator land, but estimates of $5.5 TRILLION being pulled out of a $11 Trillion economy scare the snot out of me.
Welcome to the February 9, 2009 edition of Kids and Money.
Matthew Paulson presents Throw a Great Kids Party on a Budget posted at American Consumer News.
Savings Toolbox presents Reducing What You Waste Will Save Some Cash posted at Savings Toolbox.
Livingalmostlarge presents Stay at home - loss of potential income posted at LivingAlmostLarge.
Mark Montgomery presents Best Value Colleges from Princeton Review: Information You Can LoseGreat College Advice, saying, "Choosing a college based on rankings--even on which colleges are rated a "good value"--is not a recipe for educational success."
Kevin Fleming presents Dish Network Family Package Review posted at Satellite TV Guru, saying, "If your family is thinking to switching to Satellite TV to save money, we have recently updated our Dish Network Family Package review for 2009."
Silicon Valley Blogger presents Family Life In America: Report on Lifestyle, Economic Trends From The Trenches posted at The Digerati Life, saying, "Happy New Year!"
The Smarter Wallet presents Family Budget For Frugal Living: Living Cheap Can Be Fun, Too! posted at The Smarter Wallet, saying, "I submitted this to the previous carnival but it wasn't published so I will try again! I will do my best to spread the word about this carnival. Thanks! -SVB"
Russ Egan presents How to Take Control of Your Finances posted at Open Road Open Mind.
Joe Manausa presents January 2009 Housing Market Trends | Tallahassee Real Estate Blog posted at Tallahassee Real Estate Blog, saying, "The continuation of the three-year-old bear market in real estate has brought many people forward to comment on the condition of the real estate market. It seems for everybody with an opinion, there are an equal number of theories about where the housing market is going. So, not to be left out of the crowd……. I thought I would chime in with an (updated) opinion of my own."
David presents Decision Making 101: Step One The Way We Make Decisions posted at Personal Finance Ology, saying, "Making smart decisions is the first step in building long term wealth. Learn the methodology behind making wise decisions with your money."
Concerning Kids presents The Top Child Vitamins Available Today - A Helpful List posted at Concerning Kids.
KCLau presents Best of KCLau's Money Tips 2008 posted at KCLau's Money Tips, saying, "A run down of the best KCLau's Money Tips 2008"
Barry presents Keeping A Change Jar At Home posted at Associate Money.
Matthew Paulson presents Teach Values While Shopping for Your Kids Clothes posted at American Consumer News.
Concerning Kids presents Healthy After School Snacks For Kids posted at Concerning Kids.
KCLau presents Procrastinator, plucker, plotter, and prober posted at KCLau's Money Tips, saying, "Recently I was reading the book titled "The Number: What do you need for the rest of your life and what will it cost?" A rundown on what the book has to offer"
Finance Tips 101 presents Identity Theft Prevention Tips posted at Finance Tips 101.
Dave presents Extra Income Ideas I posted at Cheapo Groovo.
FMF presents Financial Steps New Parents Need to Take posted at Free Money Finance, saying, "Tips for new parents."
More than just a mother presents The hidden cost of children posted at More than just a mother.
Pinyo Bhulipongsanon presents Teach Your Children The Four Pillars of Money Management posted at Moolanomy.
Jim presents » Five Personal Finance Teaching Gifts for Kids on Blueprint for Financial Prosperity posted at Blueprint for Financial Prosperity.
Praveen presents "That Will Be 50 Dollars!" posted at My Simple Trading System, saying, "My 3 year old son seems to understand money, but overcharges. $50 for a pretend Happy Meal or taxi ride..."
Silicon Valley Blogger presents YNAB (You Need A Budget) Personal Budget Software Is 10% Off, saying, "Here's a great budgeting tool to manage your family budget! YNAB is actually rated higher than Quicken, as a desktop personal financial software application."
The Smarter Wallet presents Cheap Meals You Can Cook At Home To Save Money! posted at The Smarter Wallet, saying, "Family meals that you cook at home can save you money, and they can be tasty too!"
Jacquelyn presents Simple Ways to Teach Your Child the Value of Money posted at WParent.com - Wise Parenting Guide, saying, "Teaching your children the value of money is the parent's responsibilities through parental guidance and example."
Big Cajun Man presents Banks and Humor posted at Canadian Personal Finance Blog, saying, "The video alone is great for kids as it shows how banks used to work before ATMs and open 12 hours a day banks."
Joe Manausa presents Real Estate Sales Success | Tallahassee Real Estate Blog posted at Tallahassee Real Estate Blog, saying, "By tracking movement of inventory in the MLS, one is able to tell if the market is expanding or contracting, and whether property values are rising or falling. With this information in hand each month, you can best understand a great strategy for selling a home (or one for buying a home)."
Aussie Investor presents Ethical Managed Funds posted at Australian Investing, saying, "Managed funds are a popular way to gain investment exposure to many asset classes including the stock market. But with growing concern over global warming and other environmental and social issues, many investors are turning to ethical fund managers to manage their money. So what are ethical managed funds are why would you invest?"
Finance Tips 101 presents Credit Card Debt It Is Not Always Your Fault posted at Finance Tips 101.
Concerning Kids presents Tips To Get Your Baby To Sleep Through The Night posted at Concerning Kids.
David presents The Way Money Works posted at Personal Finance Ology, saying, "Make your money work harder, so you don't have to. Learn basic principles that teach you how to make money work for you."
Here's a great comic strip, Calvin and Hobbes. Click on the image to enlarge it.
Remember the Grand Slam from Denny's? It was $2.99 for scrambled eggs, bacon, and pancakes.
Well, Denny's has one-upped themselves. Today, until 2PM, Grand Slams are FREE!
This one comes from one of my favorite writers, Thursday Bram. Plus, her name is pretty cool!