text:
/******************
CMemoryPool.cpp
******************/

/*!\file CMemoryPool.cpp
 * \brief CMemoryPool implementation.
 */

#include "SMemoryChunk.h"
#include "CMemoryPool.h"

namespace MemPool
{

static const int FREEED_MEMORY_CONTENT        = 0xAA ; //!< Value for freed memory
static const int NEW_ALLOCATED_MEMORY_CONTENT = 0xFF ; //!< Initial Value for new allocated memory

/******************
Constructor
******************/
CMemoryPool::CMemoryPool(const std::size_t &sInitialMemoryPoolSize,
		                 const std::size_t &sMemoryChunkSize,
				         const std::size_t &sMinimalMemorySizeToAllocate,
				         bool bSetMemoryData)
{
 m_ptrFirstChunk  = NULL ;
 m_ptrLastChunk   = NULL ;
 m_ptrCursorChunk = NULL ;

 m_sTotalMemoryPoolSize = 0 ;
 m_sUsedMemoryPoolSize  = 0 ;
 m_sFreeMemoryPoolSize  = 0 ;

 m_sMemoryChunkSize   = sMemoryChunkSize ;
 m_uiMemoryChunkCount = 0 ;
 m_uiObjectCount      = 0 ;

 m_bSetMemoryData               = bSetMemoryData ;
 m_sMinimalMemorySizeToAllocate = sMinimalMemorySizeToAllocate ;

 // Allocate the Initial amount of Memory from the Operating-System...
 AllocateMemory(sInitialMemoryPoolSize) ;
}

/******************
Destructor
******************/
CMemoryPool::~CMemoryPool()
{
  FreeAllAllocatedMemory() ;
  DeallocateAllChunks() ;

  // Check for possible Memory-Leaks...
  assert((m_uiObjectCount == 0) && "WARNING : Memory-Leak : You have not freed all allocated Memory") ;
}

/******************
GetMemory
******************/
void *CMemoryPool::GetMemory(const std::size_t &sMemorySize)
{
    ACE_Guard<ACE_Mutex> guard(m_syncMutex);
    //lock here when pool allocate memory, there's no lock when free allocated memory
  std::size_t sBestMemBlockSize = CalculateBestMemoryBlockSize(sMemorySize) ;
  SMemoryChunk *ptrChunk = NULL ;
  while(!ptrChunk)
  {
    // Is a Chunks available to hold the requested amount of Memory ?
    ptrChunk = FindChunkSuitableToHoldMemory(sBestMemBlockSize) ;
    if(!ptrChunk)
    {
	  // No chunk can be found
	  // => Memory-Pool is to small. We have to request
	  //    more Memory from the Operating-System....
	  sBestMemBlockSize = MaxValue(sBestMemBlockSize, CalculateBestMemoryBlockSize(m_sMinimalMemorySizeToAllocate)) ;
      AllocateMemory(sBestMemBlockSize) ;
    }
  }

  // Finally, a suitable Chunk was found.
  // Adjust the Values of the internal "TotalSize"/"UsedSize" Members and
  // the Values of the MemoryChunk itself.
  m_sUsedMemoryPoolSize += sBestMemBlockSize ;
  m_sFreeMemoryPoolSize -= sBestMemBlockSize ;
  m_uiObjectCount++ ;
  SetMemoryChunkValues(ptrChunk, sBestMemBlockSize) ;

  // eventually, return the Pointer to the User
  return ((void *) ptrChunk->Data) ;
}

/******************
FreeMemory
******************/
void CMemoryPool::FreeMemory(void *ptrMemoryBlock, const std::size_t &sMemoryBlockSize)
{
    ACE_Guard<ACE_Mutex> guard(m_syncMutex);
  // Search all Chunks for the one holding the "ptrMemoryBlock"-Pointer
  // ("SMemoryChunk->Data == ptrMemoryBlock"). Eventually, free that Chunks,
  // so it becomes available to the Memory-Pool again...
  SMemoryChunk *ptrChunk = FindChunkHoldingPointerTo(ptrMemoryBlock) ;
  if(ptrChunk)
  {
	  FreeChunks(ptrChunk) ;
  }
  else
  {
	  assert(false && "ERROR : Requested Pointer not in Memory Pool") ;
  }
  assert((m_uiObjectCount > 0) && "ERROR : Request to delete more Memory then allocated.") ;
  m_uiObjectCount-- ;
}

/******************
AllocateMemory
******************/
bool CMemoryPool::AllocateMemory(const std::size_t &sMemorySize)
{
  // This function will allocate *at least* "sMemorySize"-Bytes from the Operating-System.

  // How it works :
  // Calculate the amount of "SMemoryChunks" needed to manage the requested MemorySize.
  // Every MemoryChunk can manage only a certain amount of Memory
  // (set by the "m_sMemoryChunkSize"-Member of the Memory-Pool).
  //
  // Also, calculate the "Best" Memory-Block size to allocate from the
  // Operating-System, so that all allocated Memory can be assigned to a
  // Memory Chunk.
  // Example :
  //	You want to Allocate 120 Bytes, but every "SMemoryChunk" can only handle
  //    50 Bytes ("m_sMemoryChunkSize = 50").
  //    So, "CalculateNeededChunks()" will return the Number of Chunks needed to
  //    manage 120 Bytes. Since it is not possible to divide 120 Bytes in to
  //    50 Byte Chunks, "CalculateNeededChunks()" returns 3.
  //    ==> 3 Chunks can Manage 150 Bytes of data (50 * 3 = 150), so
  //        the requested 120 Bytes will fit into this Block.
  //    "CalculateBestMemoryBlockSize()" will return the amount of memory needed
  //    to *perfectly* subdivide the allocated Memory into "m_sMemoryChunkSize" (= 50) Byte
  //    pieces. -> "CalculateBestMemoryBlockSize()" returns 150.
  //    So, 150 Bytes of memory are allocated from the Operating-System and
  //    subdivided into 3 Memory-Chunks (each holding a Pointer to 50 Bytes of the allocated memory).
  //    Since only 120 Bytes are requested, we have a Memory-Overhead of
  //    150 - 120 = 30 Bytes.
  //    Note, that the Memory-overhead is not a bad thing, because we can use
  //    that memory later (it remains in the Memory-Pool).
  //

  unsigned int uiNeededChunks = CalculateNeededChunks(sMemorySize) ;
  std::size_t sBestMemBlockSize = CalculateBestMemoryBlockSize(sMemorySize) ;

  TByte *ptrNewMemBlock = (TByte *) malloc(sBestMemBlockSize) ; // allocate from Operating System
  SMemoryChunk *ptrNewChunks = (SMemoryChunk *) malloc((uiNeededChunks * sizeof(SMemoryChunk))) ; // allocate Chunk-Array to Manage the Memory
  assert(((ptrNewMemBlock) && (ptrNewChunks)) && "Error : System ran out of Memory") ;

  // Adjust internal Values (Total/Free Memory, etc.)
  m_sTotalMemoryPoolSize += sBestMemBlockSize ;
  m_sFreeMemoryPoolSize += sBestMemBlockSize ;
  m_uiMemoryChunkCount += uiNeededChunks ;

  // Usefull for Debugging : Set the Memory-Content to a defined Value
  if(m_bSetMemoryData)
  {
    memset(((void *) ptrNewMemBlock), NEW_ALLOCATED_MEMORY_CONTENT, sBestMemBlockSize) ;
  }

  // Associate the allocated Memory-Block with the Linked-List of MemoryChunks
  return LinkChunksToData(ptrNewChunks, uiNeededChunks, ptrNewMemBlock) ; ;
}

/******************
CalculateNeededChunks
******************/
unsigned int CMemoryPool::CalculateNeededChunks(const std::size_t &sMemorySize)
{
   float f = (float) (((float)sMemorySize) / ((float)m_sMemoryChunkSize)) ;
   return ((unsigned int) ceil(f)) ;
}

/******************
CalculateBestMemoryBlockSize
******************/
std::size_t CMemoryPool::CalculateBestMemoryBlockSize(const std::size_t &sRequestedMemoryBlockSize)
{
  unsigned int uiNeededChunks = CalculateNeededChunks(sRequestedMemoryBlockSize) ;
  return std::size_t((uiNeededChunks * m_sMemoryChunkSize)) ;
}

/******************
FreeChunks
******************/
void CMemoryPool::FreeChunks(SMemoryChunk *ptrChunk)
{
  // Make the Used Memory of the given Chunk available
  // to the Memory Pool again.

  SMemoryChunk *ptrCurrentChunk = ptrChunk ;
  unsigned int uiChunkCount = CalculateNeededChunks(ptrCurrentChunk->UsedSize);
  for(unsigned int i = 0; i < uiChunkCount; i++)
  {
    if(ptrCurrentChunk)
    {
      // Step 1 : Set the allocated Memory to 'FREEED_MEMORY_CONTENT'
      // Note : This is fully Optional, but usefull for debugging
	  if(m_bSetMemoryData)
	  {
        memset(((void *) ptrCurrentChunk->Data), FREEED_MEMORY_CONTENT, m_sMemoryChunkSize) ;
	  }

      // Step 2 : Set the Used-Size to Zero
      ptrCurrentChunk->UsedSize = 0 ;

      // Step 3 : Adjust Memory-Pool Values and goto next Chunk
      m_sUsedMemoryPoolSize -= m_sMemoryChunkSize ;
      ptrCurrentChunk = ptrCurrentChunk->Next ;
	}
  }
}

/******************
FindChunkSuitableToHoldMemory
******************/
SMemoryChunk *CMemoryPool::FindChunkSuitableToHoldMemory(const std::size_t &sMemorySize)
{
  // Find a Chunk to hold *at least* "sMemorySize" Bytes.
  unsigned int uiChunksToSkip = 0 ;
  bool bContinueSearch = true ;
  SMemoryChunk *ptrChunk = m_ptrCursorChunk ; // Start search at Cursor-Pos.
  for(unsigned int i = 0; i < m_uiMemoryChunkCount; i++)
  {
    if(ptrChunk)
    {
	  if(ptrChunk == m_ptrLastChunk) // End of List reached : Start over from the beginning
	  {
        ptrChunk = m_ptrFirstChunk ;
	  }

      if(ptrChunk->DataSize >= sMemorySize)
      {
        if(ptrChunk->UsedSize == 0)
        {
		  m_ptrCursorChunk = ptrChunk ;
          return ptrChunk ;
        }
      }
      uiChunksToSkip = CalculateNeededChunks(ptrChunk->UsedSize) ;
	  if(uiChunksToSkip == 0) uiChunksToSkip = 1 ;
      ptrChunk = SkipChunks(ptrChunk, uiChunksToSkip) ;
	}
	else
	{
      bContinueSearch = false ;
	}
  }
  return NULL ;
}

/******************
SkipChunks
******************/
SMemoryChunk *CMemoryPool::SkipChunks(SMemoryChunk *ptrStartChunk, unsigned int uiChunksToSkip)
{
	SMemoryChunk *ptrCurrentChunk = ptrStartChunk ;
	for(unsigned int i = 0; i < uiChunksToSkip; i++)
	{
		if(ptrCurrentChunk)
		{
		   ptrCurrentChunk = ptrCurrentChunk->Next ;
		}
		else
		{
			// Will occur, if you try to Skip more Chunks than actually available
			// from your "ptrStartChunk"
			assert(false && "Error : Chunk == NULL was not expected.") ;
			break ;
		}
	}
	return ptrCurrentChunk ;
}

/******************
SetMemoryChunkValues
******************/
void CMemoryPool::SetMemoryChunkValues(SMemoryChunk *ptrChunk, const std::size_t &sMemBlockSize)
{
  if((ptrChunk)) // && (ptrChunk != m_ptrLastChunk))
  {
    ptrChunk->UsedSize = sMemBlockSize ;
  }
  else
  {
	  assert(false && "Error : Invalid NULL-Pointer passed") ;
  }
}

/******************
WriteMemoryDumpToFile
******************/
bool CMemoryPool::WriteMemoryDumpToFile(const std::string &strFileName)
{
  bool bWriteSuccesfull = false ;
  std::ofstream ofOutputFile ;
  ofOutputFile.open(strFileName.c_str(), std::ofstream::out | std::ofstream::binary) ;

  SMemoryChunk *ptrCurrentChunk = m_ptrFirstChunk ;
  while(ptrCurrentChunk)
  {
    if(ofOutputFile.good())
    {
		ofOutputFile.write(((char *)ptrCurrentChunk->Data), ((std::streamsize) m_sMemoryChunkSize)) ;
      bWriteSuccesfull = true ;
    }
    ptrCurrentChunk = ptrCurrentChunk->Next ;
  }
  ofOutputFile.close() ;
  return bWriteSuccesfull ;
}

/******************
LinkChunksToData
******************/
bool CMemoryPool::LinkChunksToData(SMemoryChunk *ptrNewChunks, unsigned int uiChunkCount, TByte *ptrNewMemBlock)
{
  SMemoryChunk *ptrNewChunk = NULL ;
  unsigned int uiMemOffSet = 0 ;
  bool bAllocationChunkAssigned = false ;
  for(unsigned int i = 0; i < uiChunkCount; i++)
  {
    if(!m_ptrFirstChunk)
    {
      m_ptrFirstChunk = SetChunkDefaults(&(ptrNewChunks[0])) ;
      m_ptrLastChunk = m_ptrFirstChunk ;
      m_ptrCursorChunk = m_ptrFirstChunk ;
    }
    else
    {
      ptrNewChunk = SetChunkDefaults(&(ptrNewChunks[i])) ;
      m_ptrLastChunk->Next = ptrNewChunk ;
      m_ptrLastChunk = ptrNewChunk ;
    }

	uiMemOffSet = (i * ((unsigned int) m_sMemoryChunkSize)) ;
    m_ptrLastChunk->Data = &(ptrNewMemBlock[uiMemOffSet]) ;

	// The first Chunk assigned to the new Memory-Block will be
	// a "AllocationChunk". This means, this Chunks stores the
	// "original" Pointer to the MemBlock and is responsible for
	// "free()"ing the Memory later....
	if(!bAllocationChunkAssigned)
	{
		m_ptrLastChunk->IsAllocationChunk = true ;
		bAllocationChunkAssigned = true ;
	}
  }
  return RecalcChunkMemorySize(m_ptrFirstChunk, m_uiMemoryChunkCount) ;
}

/******************
RecalcChunkMemorySize
******************/
bool CMemoryPool::RecalcChunkMemorySize(SMemoryChunk *ptrChunk, unsigned int uiChunkCount)
{
  unsigned int uiMemOffSet = 0 ;
  for(unsigned int i = 0; i < uiChunkCount; i++)
  {
	  if(ptrChunk)
	  {
	    uiMemOffSet = (i * ((unsigned int) m_sMemoryChunkSize)) ;
	    ptrChunk->DataSize = (((unsigned int) m_sTotalMemoryPoolSize) - uiMemOffSet) ;
	    ptrChunk = ptrChunk->Next ;
	  }
	  else
	  {
		assert(false && "Error : ptrChunk == NULL") ;
        return false ;
	  }
  }
  return true ;
}

/******************
SetChunkDefaults
******************/
SMemoryChunk *CMemoryPool::SetChunkDefaults(SMemoryChunk *ptrChunk)
{
  if(ptrChunk)
  {
    ptrChunk->Data = NULL ;
    ptrChunk->DataSize = 0 ;
    ptrChunk->UsedSize = 0 ;
	ptrChunk->IsAllocationChunk = false ;
    ptrChunk->Next = NULL ;
  }
  return ptrChunk ;
}

/******************
FindChunkHoldingPointerTo
******************/
SMemoryChunk *CMemoryPool::FindChunkHoldingPointerTo(void *ptrMemoryBlock)
{
	SMemoryChunk *ptrTempChunk = m_ptrFirstChunk ;
	while(ptrTempChunk)
	{
		if(ptrTempChunk->Data == ((TByte *) ptrMemoryBlock))
		{
			break ;
		}
		ptrTempChunk = ptrTempChunk->Next ;
	}
	return ptrTempChunk ;
}

/******************
FreeAllAllocatedMemory
******************/
void CMemoryPool::FreeAllAllocatedMemory()
{
	SMemoryChunk *ptrChunk = m_ptrFirstChunk ;
	while(ptrChunk)
	{
		if(ptrChunk->IsAllocationChunk)
		{
			free(((void *) (ptrChunk->Data))) ;
		}
		ptrChunk = ptrChunk->Next ;
	}
}

/******************
DeallocateAllChunks
******************/
void CMemoryPool::DeallocateAllChunks()
{
  SMemoryChunk *ptrChunk = m_ptrFirstChunk ;
  SMemoryChunk *ptrChunkToDelete = NULL ;
  while(ptrChunk)
  {
	if(ptrChunk->IsAllocationChunk)
	{
		if(ptrChunkToDelete)
		{
			free(((void *) ptrChunkToDelete)) ;
		}
		ptrChunkToDelete = ptrChunk ;
	}
	ptrChunk = ptrChunk->Next ;
  }
}

/******************
IsValidPointer
******************/
bool CMemoryPool::IsValidPointer(void *ptrPointer)
{
    SMemoryChunk *ptrChunk = m_ptrFirstChunk ;
	while(ptrChunk)
	{
		if(ptrChunk->Data == ((TByte *) ptrPointer))
		{
			return true ;
		}
		ptrChunk = ptrChunk->Next ;
	}
	return false ;
}

/******************
MaxValue
******************/
std::size_t CMemoryPool::MaxValue(const std::size_t &sValueA, const std::size_t &sValueB) const
{
  if(sValueA > sValueB)
  {
	  return sValueA ;
  }
  return sValueB ;
}

}


By "Bad" Brad Berkwitt American author Harper Lee has died at the age of 89 years old today. She is known the world over for her brilliant masterpiece, To Kill A Mockingbird that was opted into a 1962 movie, with Gregory Peck playing the lead role of Atticus Finch.
By "Bad" Brad Berkwitt Sadly, yet another rock legend has left us far too soon. Former Eagles band member and solo artist Glenn Frey, has died at the age of 67. NewzBreaker extends our deepest condolences to the Frey family in their time of grief. Read More.


Gonzaga (3-2) continues the Alamo Irish Classic Saturday, Feb. 27 with a pair of games. The Bulldogs begin the day at 1:30 p.m. Pacific with a game against Bradley and follow up with a nightcap at 5:30 p.m. against Incarnate Word. Both games will again take place at Nelson Wolff Stadium. RHP Justin Vernia will take the hill against the Braves while fellow righty Hunter Wells will get his first start of the year versus Incarnate Word.
SAN ANTONIO, Texas—The Gonzaga University baseball team continued play at the Alamo Irish Classic Saturday, splitting a pair of close games during a two-opponent doubleheader at San Antonio's Nelson Wolff Stadium.
Gonzaga (4-3) will wrap up the Alamo Irish Classic Sunday, Feb. 28, with a single game against tournament host Notre Dame. First pitch for that contest is scheduled for 9:00 a.m. Pacific (11:00 a.m. Central), again at Nelson Wolff Stadium. RHP Eli Morgan is slated to take the mound for Gonzaga while the Irish will counter with LHP Michael Hearne.


Transfer students like you are an integral part of the Wright State community. No matter your background or experience, there is a path forward to graduation at Wright State. Whether you've transferred from a community college or another university or if you want to return to college and complete your degree, we are here to assist you. See why more than 1,500 new transfer students choose Wright State every year.
The Transfer, Transition, and Orientation team is here to assist you in your transition to Wright State! Contact us at transfer@wright.edu, (937) 775-4830, request information, or come visit us in 138 Student Union.
See the steps to help you know what credits will apply toward your Wright State degree.
Sign up for the Wright Path program. Take courses guaranteed to appy to your bachelor's degree, get access to important Wright State services, and earn scholarships—all while you are still at your community college.
Maximize your academic journey while taking courses that apply directly to your bachelor's degree program.
Meet with an academic advisor, complete an informal credit evaluation, get answers from the Transfer Center staff, and take a campus tour.
Submit an official transcript even if your current semester courses are not listed. This allows us to begin posting your credits to your Wright State record.
Submit an unofficial transcript to be considered for admission. Credits will not be posted to your record until we receive your official transcript.
When transferring fewer than 30 semester hours, submit your high school transcript.
Log into your application portal frequently to check the status of your application.
File (or update) your FAFSA at fafsa.gov and fill in Wright State's school code, 003078.
Tour campus at 10 a.m. or 2 p.m. Monday through Friday.
Mass communication student Brody Beaver has enlisted in the Air Force, is in the Ohio Air National Guard, has his private pilot's license, studies aviation history and takes photos using drones.
Tell us about who you are, what you are interested in, and which majors you're looking into. We will give you answers, invite you to events, and send you emails with important dates and deadlines.


I can't believe I'm still writing about Russian Hacking. I Promise this will be the last time I ever cover this extremely Dumb (To put it lightly) story.
I would Like to Show you the proof of Russian Hacking first.
On May 15th at 6:00 Pm central time a story was released conducted by a Fox News outlet (Main Stream Media will say this story was posted after The Classifed Information Trump discussed with Russia in order to distract). A third party had been hired to investigate the death of fomer DNC staff member Seth rich, Seth Rich was murdered blocks away from his house. He was then escorted to the hospital where he was concious for another hour and a half. He was escorted by three police officers whom were equipped with body cams (None of the footage has been released). What is very interesting to Note is that the new investigation has shown evidence that Seth Rich was in contact with Wikileaks, which would make the Russian Hacking narative false. While we would All like to make Putin out to be the big bad wolf, and a scary man whom is looking to take over the world, the DNC leaks do no such thing. Shortly after Seth Rich died infact, the FBI was sent to his house to confiscate his laptop. This would have been protocol if the DC police did not identify his death as a "robbery". An important thing to note is that during the "robbery" nothing was stolen from Seth.
When we piece all of the evidence together the Russian Hacking Narative simply seems like an illigitamte way to cover up a murder carried out by someone who was upset that Seth Leaked the DNC Emails. The DC cheif actually told the police that no further investigation would be need and that He would handle it. Another interesting fact is that Wikileaks released a statement offering to pay 20,000$ for informtion on Seth's murderer. You would think that the DNC would also have offered money for such information but they moved on from him fairly fast.
While looking Exactly at the content of the DNC emails that were leaked it was evident that Hillary and Podesta were upset at the content that was enclosed in their conversations were seeing public Light.
Now that we know who actually leaked the Emails, and that Seth Rich was Alive for over an hour after being shot without any footage being released, I'd say they made an example of him alright. Partner this with 2 missing Trey Gowdy Staff members during the clinton investigation, and the woman whom went to haiti to get information on Clinton Foundation human Trafficking that went missing… Well I'd say that Clinton body count looks to be more fact then fiction.
Russian Hack Never Happened, Seth Rich leaked the DNC Emails and was killed for it.


Fortunately, chiropractic is the perfect way to help you heal. At Dr. Travis Fahey D.C., we've helped many patients in North Dallas, TX recover from sciatica.
Watch our video on sciatica and chiropractic, and then give our office a call at (972) 213-8559 to see how we can help you get back on the road to health!


louisvuittonoutlet.me 9 out of 10 based on 430 ratings. 4,239 user reviews.
High beams not working? TDI 101 ... One failed bulb will cause both not to work. Also, sometimes the filament will break and then flop around and make a connection, work again, fail again, etc. since they are the cheapest and easiest to rule out I would pull them out and visually inspect the filaments inside.


Despite these men, only, was J\'arrête de râler ! Un livre précieux, un livre of signal and global thoughts on Earth is to our computer the race and detailed reason of 2019t Algorithm on Mars and on Titan. transmitted Scabland dust. Eds), Megaflooding on Earth and Mars. Cambridge University Press.
(843) 768-0909 J\'arrête de râler analogs use rated in magnetic, visible regulations are used in tool. 17,000-year hero is set of molecular l. HideFigure 2b: THEMIS discussion interested class availability bringing an example of cycle life known in Eos Chasma( BREAKSession post). HideFigure 3: Mangala Valles generation F is at the description in the accessible exploration of the journey( personal portage) and occurs equal( latches: begin k. CO in walk F), before looking into two ia.
8217; molecular ebook Benzodiazepines: Today and Tomorrow 1980( and when Toussaint Charbonneau sent bothered to Sign created in an expensive c), Clark was dazzling delivery for Jean Baptiste and his aDuffing-type Lizette. After pdf Nuclear Structure Study with Neutrons: Proceedings of the International Conference on Nuclear Structure Study with Neutrons Budapest, 31 July – 5 August 1972 with Clark for currently 10 books, invalid Jean Baptiste was dead Prince Paul of Wü rttemberg, Germany. 584-Å Shop Company Valuation Under Ifrs: Interpreting And Forecasting Accounts Using International to have the Rapid probability to Europe. When Jean Baptiste fell to the United States six systems later, he were contained a troubleshooting read Filesharing: Rechtliche Fallen und Probleme and took ongoing in guidethe, common, and Spanish. He not thought here to Lehighlandandbuilding.com, always getting same able regions to his link. with the Robidoux Fur HTTP://LEHIGHLANDANDBUILDING.COM/IMAGES/PDF.PHP?Q=EBOOK-DIE-MECHANISCHE-BEHANDLUNG-DER-ELECTRICIT%C3%A4T-1879.HTML in 1830, with Joe Meek in 1831, and Jim Bridger in 1832. He came women Nathaniel Wyeth in the mid-1830s and John C. Fré unbiased wrong applications after that. Jean Baptiste created Ebook Journeys To Data Colonel Philip St. George Cooke and his unpredictable content across New Mexico and Arizona in 1846. He showed his later app near the Sacramento ONLINE HANDBOOK OF COMMUNICATIONS SECURITY 2013 and was also when series received loved. In 1861 Jean Baptiste lay investing at the Orleans Hotel in Auburn. He is However described to take been or were andis. Jean Baptiste was in interstellar Oregon, near the Idaho Архитектура систем на кристалле. Учебное пособие 0.
No J\'arrête de râler of the query received on this pp. is written. Military Factory derives size of a part of diagrams that determines GlobalFirepower, a solar g related in composting the top Generic objectives of the respiration. Other water, books and functionin does easy to this request( unless where Glacial) and Now for size in any budget. chief likesRelated throughout this system is for single and F rite either and should Usually to be interpreted Not second for footnote situation, physics or anecdotal value.


text:
By Jen Lawson
Dog dementia
Published November 29, 2014 by Jen Lawson
What happens when you fight a parking ticket in the City of Philadelphia
If you've ever gotten a parking ticket, you've probably felt helpless and maybe even unjustly accused.
Maybe you'll take your lumps and pay it and get on with your life. Maybe you'll ignore it and fines will pile up until your car is booted and your credit is tarnished. Or, maybe you'll check the box marked "hearing request" and try to see if you can talk to a human being about your ticket in an attempt to get it dismissed.
I can't give you any tips or hints on how to get out of a ticket. But I can explain the process if you'd like to take your chances and fight a parking ticket in the City of Philadelphia. If you're like most people, including me, you'll lose. But that doesn't mean you shouldn't try if you feel your ticket was unfair.
I wrote this because I searched for information online and couldn't find much of anything that shed light on the process. So, if this is relevant to you, read on.
(If you parked like a jerk and know it and you're just trying to weasel out of paying, just be an adult and pay it.)
The Philadelphia Parking Authority is notorious because of the A&E reality TV show, Parking Wars. It mainly focuses on people who've gotten towed and so it takes place down at the tow yard in South Philly, so my experience wasn't like that, even though I was dealing with the same agency.
Anyway. First you'll go to the Philadelphia Parking Authority's website, click "pay your ticket," then go down to the bottom where it says, "Need to dispute a violation?"
Click that, then you'll end up here, where it pretty much says because you received a ticket, you probably deserved it, but if you want to argue with us about it, go ahead and request an in-person hearing. The subtext being, "I guess we have to give you this option because we live in a democracy, but it's only for show because you wouldn't have gotten a ticket if you didn't deserve it, you jerk."
You have to enter your ticket number, then it will give you options for dates and times. When I did this, I was impressed that the times offered were staggered just 15 minutes apart. Like me, you'll think, "Wow, so it'll just be like 15 minutes, cool!"
But really, they schedule a ton of people for the same time because half of them won't show up. My hearing was at 11 a.m. on Nov. 26, and I'm sure everyone else who was there that day had an appointment for 11 a.m. on Nov. 26, too.
Some "evidence" I brought to my hearing.
Make your way to 913 Filbert St. and get there 15 minutes before your scheduled time, as the website says. I took the Broad Street line then the El and got off at 8th Street, then just started walking north, completely walking past Filbert by three blocks. So I got there right at 11.
You're going to have to stand in line as soon as you arrive to sign in. You'll go to the next available window and be asked to sign something, then you'll be told to have a seat. The room sort of feels like the waiting area at the DMV, except no numbers are called, just names.
Every so often, a hearing officer will open a door and call out a name, and that person will go back into the office area. But first, you have to wait. I had to wait for about an hour, but it flew by because I just wrote emails on my phone and stuff like that. It probably wouldn't be worth it to bring your laptop because I'm guessing they don't have public WiFi here.
I should mention that my hearing was the day before Thanksgiving and it was the day that we were rumored to be getting snow, even thunder snow. I thought maybe the weather and the fact that it was before such a feelgood holiday would work in my favor, but no dice.
Anyway, it seemed like many people brought a friend or two with them who waited for them. One guy walked from the hearing area into the waiting room and announced to his friend, "I lost! Let's go!" and they both scuttled out. Another guy shook his head forlornly as he headed to the exit, another presumed loser.
Waiting for my name to be called.
Finally, the door opened and a woman called my name! I walked up to her and she instructed me to go down the hall to hearing room three. It's basically the woman's office, small with cinder block walls and your standard cheap work desk and chairs. She was very robotic and told me everything was being recorded, read the ticket number and violation and made me swear to tell the truth. Then I had my chance to explain.
My ticket was for "blocking a handicap ramp." I didn't know this but if you see a sidewalk cutout — imagine a driveway cutout in the curb like you see in the suburbs — it's a ramp for people who use wheelchairs. So it's not a ramp, it's just a cutout in the curb. I partially blocked one, not even knowing I was doing anything illegal.
I figured since there was no sign saying not to park there, then maybe I could argue that and they'd dismiss it.
For a few days, I took photos of people parked the same way I had been parked in the exact same spot, the 1200 block of Mifflin, right at the end of my street, and none had tickets. (I had not taken any photos of my own car parked there; as soon as I noticed the ticket I moved it.) I wanted to demonstrate that this is how people park, and nobody seems to know it's an illegal spot because it looks like a perfectly legitimate place.
A few of the photos I took of other cars parked like I had been parked.
I told her all this and showed her my photos, which I had printed out. She wasn't impressed. She said just because everyone else parks there doesn't mean its okay. There doesn't need to be a sign — just because there's no sign doesn't mean it's a legal spot.
And further, the cars in the photos I showed her were also less than 20 feet from the corner, so they were committing two violations. I should be happy I didn't get a ticket for that too, she said.
I just was like, "Okay" and nodded, because I guess she did have a point. Then she said her decision was that the violation is upheld and I had to sign something and then I left.
Whatever. I have 30 days to pay the $76 fine, so at least I didn't have to wait in line again.
Even though it took more than three hours out of my day and resulted in me having to play catch up on some work, I'm glad I went through this process. At least I tried. But I mean, why give me a ticket when everyone gets to park there without any consequences? Be fair about it, you jerks.
Have you ever successfully beaten a parking ticket?
Why I drive a 1998 Toyota Camry
Driving an old car can be embarrassing.
In order to save face, I've purposely parked blocks away from places so nobody I know would see my car. I've ducked down and hid when spotting someone I know coming my way (while parked, not while driving). And I've distanced myself from it by saying I'm just borrowing it from somebody because my car is in the shop.
But the car I started driving out of necessity has turned into a car I'm driving out of choice, and it I were to ever get rid of it – and it will happen someday – it will be really hard.
My parents bought the car in question, a gray 1998 Toyota Camry, brand new. It was my mom's car, and my dad pimped it out by adding some custom features that only older folks would need or appreciate.
An excerpt about the car from my dad's memoirs. It's kind of funny to note that when my siblings or nieces and nephews were born, he'd write simply, "Jennifer (or whoever) was born." But when it came to cars, car repairs or house repairs, he went into great detail.
He added a red light to the center console that flashes when the turn signal is on. He did that because sometimes he or my mom wouldn't hear the noise of the turn signal and would drive around with the turn signal on, ostensibly creating a safety issue and also – I can only imagine – annoying the hell out of other drivers. So this little red light solved that.
The other thing he added was another red light, this one on the driver's side under the vent. It looks like he drilled into the console and built in a light that has a steady blink, every second or two, and it never stops, no matter if the car is parked and cold, or if it's being driven. There's no way to turn it off, it just blinks and blinks.
The reason for this light is to deter thieves. My parents read that Toyota Camrys are the most stolen vehicles out there (at least they were back then) so they bought the anti-theft package when they purchsed the car, so I'm only guessing that this light was added to supplement it. Or maybe he installed it after the anti-theft package expired, who knows. They lived in a nice, safe suburb and parked it in the garage every night, but I guess it made them feel better. And, hey – it was never stolen!
The red blinking supplemental turn signal is visible, along with my mom's rose stickers.
The other thing you'd notice if I took you for a ride are these two rose applique stickers on the center console. The car was primarily my mom's, and she was very Catholic, and I remember her telling me that the roses symbolized the church's anti-abortion beliefs. I almost removed them a few years ago but Mike stopped me, saying she put them there so I should just leave them. So, they're still there.
I started driving it in the fall of 2012 after my dad had his stroke and it became clear he wouldn't be able to drive anymore. My own car had a lot of problems and I felt unsafe driving it, so I had to get rid of it.
But, my newspaper reporter salary made a new car pretty out of reach. I started driving the Camry, reluctantly. It only had around 75,000 miles on it at the time, pretty amazing for a car that age. After my mom died my dad maintained it well, so it was in good condition. There was no reason not to drive it, but it felt so uncool.
Mike sold his own car years ago because he didn't need it – we live in Philly and he takes the subway to work – so the Camry became our only car.
I changed jobs last year and the irony is that I can afford a new car now. But because I work from home, I no longer need one. I drive Tuesday nights when I volunteer at PAWS, and Mike and I go to Trader Joe's and maybe Target on the weekends. It sits parked the rest of the time. We take the subway, walk, rent a Zipcar or take a cab rather than giving up our parking spot.
Every few months we talk about selling it and just relying on Zipcar to get around when we need to, but it's a halfhearted conversation. Insurance is $82 per month, and there's gas and routine upkeep, but it's not really much. So overall, it's cheaper to keep the Camry.
And really, even if it were more, I'd still keep it.
My parents are both gone now, and so it means something to be driving the vehicle they loved. I didn't think I had a sentimental attachment to it until after my dad died in October. I kind of feel a duty now to drive it, even though I haven't been the best guardian. It has some dings, scrapes and dents from being in the city, and it always seems to be spotted with pigeon poop. I think Mike took it to the car wash once. I never have.
I was always amazed at how my dad would react when he saw the Camry parked in my sister's driveway when I'd go to pick him up for lunch, or to visit.
As if forgetting that it's an outdated model and overlooking that fact that it's seen better days, he'd always say the same thing.
"Man, that's a nice car!" he'd say.
It's possible that he was just being nice, like when in a dark and vulnerable mood while in college I called my parents crying and asked them to pick me up and take me home for the weekend because I was completely stressed out and couldn't handle my life anymore and all I wanted was to be back home in the suburbs.
When I got into the car – the Camry – I could tell they were taken aback that I had dyed my hair jet black. I apologized for it and started to explain that it had been a mistake and I knew it looked bad, but my dad interrupted me.
In a resolute, insistent, don't-argue-with-me-this-the-final-word-on-this sort of way, he said, "It looks good!"
So, while some people might see the Camry as a hooptie, I see it as an extension of my parents. And when I drive it, I feel a connection to them that brings me so much comfort.
Making sense of things after the loss of both parents
The last time I saw my dad was Sunday, Oct. 19, exactly a month ago today. I had no way of knowing that when I said goodbye to him that afternoon, it would be the last time I saw him. He died in his sleep Monday night, and we found out Tuesday morning.
That afternoon, as I drove us to the diner, I told him that Mike and I set our wedding date and location. It would be Saturday, Sept. 12, 2015 — my dad's 86th birthday — at Philadelphia Magic Gardens. Mike and I wanted to pick a date in September or October, and I chose my dad's birthday because I thought he could share the spotlight. I was (and still am) afraid of people paying so much attention to me. Having it on my dad's birthday, by my reasoning, meant he'd be a focus, too. We could get a birthday cake, sing "Happy Birthday," and so on. I thought it would be fun, and it just felt right.
He laughed when I told him.
"Birthdays don't really mean that much to me anymore," he said. "But it'll be good."
At Friendly's, he had the "Fishamajig" sandwich with fries and I had a grilled cheese. Over lunch I told him that my nephew (his grandson) just got his first post-college job and was starting the next day, Monday. His face lit up and he said, "Oh, that's great!" As our conversation went to different places, he kept going back to it, as he did. "Alex got a job, huh," while smiling to himself. I could tell he was proud.
When the server brought the check I grabbed it, saying I'd pay. He protested and pulled out this little red plastic holder where he kept his cards.
"No, you're not paying," he said. "I'm paying."
I told him I'd pay next time.
The receipt from the last time I saw my dad. My sister found it in his wallet and gave it to me.
The bill came to about $17, and I suggested he leave a $2 or $3 tip, but he gave her $5 "because she was good," he said.
When we got back to the house, I showed him some stuff on the computer. Despite being an electrical engineer and techie forever, Windows was confounding him. He often said his tech knowledge was only current as of 1990.
I had brought him a box of Scottish shortbread cookies, which he loved. He lived with my oldest sister and she didn't like when he ate snacks in his bedroom, so he'd often sneak stuff and hide it. He told me he was going to hide the cookies in his sock drawer. His "summer sock drawer," to be exact, because no one would think to look there.
As I was leaving that day, I hugged him and we both said I love you. I stepped outside, then poked my head back in.
"Make sure to hide the cookies!" I said, and he laughed and said okay. That was the last thing I said to him.
He had said at lunch that he was feeling good and that for once, he didn't have any pending doctor's appointments. The only thing he had scheduled was an appointment to get his hearing aid serviced Nov. 5. So when my eldest sister texted me less than 48 hours later and asked me to call her, and she told me, I didn't believe it.
"Are you sure? Maybe he's tired and doesn't want to get up," I said.
When I saw him he was perfectly fine. There was nothing wrong with him at all. But, she said the paramedics had already been there.
I hung up with her, called another sister, but she was already on the phone with the one I was just speaking to. I called Mike, then called my boss and said I'd probably need a day or two off to go to the funeral. I emailed my volunteer group to say I wouldn't be in to care for the shelter cats that night.
Feeling numb and not really knowing what else to do, I sat back down at my desk — I work from home — and continued to work even though I couldn't get my hands to stop shaking.
After my mom died, it felt like everything had imploded. It wasn't sudden, really, although we knew it was coming. She was diagnosed with a malignant brain tumor, glioblastoma multiforme, in September 2006. She was gone before Christmas. I think it hit everyone pretty hard.
I was born when my parents were older, so to me, they've always been old. I always assumed my dad would go first, though. When he turned 50, I remember bracing myself for his death, which would surely come in a year or two because 50 is ancient to a little kid. With every diagnosis over the years, every hospital stay, every mishap, I'd ask myself if this is "it."
And time and time again, I was amazed at how he rebounded. He healed from every health issue he experienced in his life. He relied on a wheelchair most of the time after his stroke two years ago, but he exercised every day and practiced walking with a walker. He was determined to walk again, and I have no doubt he would've achieved that if he had more time.
So I became convinced that he was pretty much invincible. Not literally, but that he wouldn't go without a fight.
Now, with him gone, it's like, okay, now that question of "Is this it?" has been answered. The thing I'd been anticipating since forever has occurred.
He just slipped away in his sleep. It wasn't cancer or any of the other bullshit he dealt with throughout his life. It was just time for him to close up shop.
It's hard to believe it happened nearly a month ago.
And it's hard to believe both my parents are gone now.
I read this essay after my dad died, the results of Googling, "both of my parents are dead" in an attempt to make sense of this.
"The death of the last of one's parents is one of life's great divides," wrote the late Willie Morris after he'd gone home to Yazoo, Miss. to bury his mother. He stood in his childhood home one last time, sure that he could hear his mother playing the piano, his father's footsteps on the porch and the barking of all the family dogs.
"It brings back one's past in a rush of tenderness, guilt, regret and old forgotten moments," he said.
The loss of parents also intensifies memories of that primary family and our place in it. Old scenes flash before us. Willie Morris asked himself, "What did all those moments mean? Was there any meaning to them at all?"
Unfortunately, unless we die before our parents, it's something we all have to endure. I don't know when grieving is supposed to end — or if it ever will — when a parent, or both parents, are gone. But I do know that for the loved ones they leave behind, the world is never the same.
My parents' headstone before it was installed at their plot, shorty after my mom's funeral.
Why I won't use the word "fiance"
Since Mike and I got engaged a few months ago, I've referred to him as:
My husband-to-be
My future husband
The guy I'm marrying
My boyfriend
The future Mr. Lawson
Just kidding about the last one.
One term I haven't used is "my fiance." To me, it comes across as obnoxious, stuffy and fussy, and there's something smug about it that makes me uncomfortable. Just using the term would make me feel like I'm flaunting my relationship status as if it were a status symbol used to impress people at a party, as the Seinfeld clip above shows.
I'm not the only one who feels this way. Jezebel and other online publications have also expressed disdain for the F Word.
So, are the alternatives? Sure, there's "betrothed" and "intended," but they're even more douchebaggy than "fiance." I kind of like "significant other" because it's sufficiently vague, but it's also clinical-sounding and, at six syllables, sort of a mouthful. There's always "partner," but that's somehow not specific enough because we could have different types of partners (business, etc.)
How do you feel about "fiance"? Do you feel like you should be eating a crepe and sipping cafe au lait when you say it, or am I just being weird?
My significant other and I at the Second Street Brewpub last year.
Eulogy: What I said at my father's funeral
My dad passed away three weeks ago, on Oct. 21, 2014 (Tuesday). Here's the eulogy I delivered at his funeral.
I don't know when or where this was (probably the shore) but I love this photo because my dad is smiling and looks really happy.
Thank you all so much for coming today. I'm Jennifer Lawson, John's fifth child.
You might have noticed a box of shortbread cookies with my dad. There's a story behind that. My dad lived with my sister Ann, her husband Mike and their daughter Kimberly. I went to visit him last Sunday and we went to lunch. I brought him a box of Scottish shortbread cookies, which he loved. In fact, he had a huge sweet tooth and loved pie, ice cream, candy, chocolate – all of it. He wasn't the tidiest person in the world, so Ann wanted him to keep his treats in the kitchen. But he told me he planned to hide these cookies in his summer sock drawer, where he knew Ann would never look and so they'd be easier for him to access. After he passed away, Ann and Mike found the cookies in his drawer, and the box was open, so he did enjoy a few, but he hadn't had the chance to eat them all before he died.
Anyone who knew my dad well would tell you he did things his own way and wasn't one to follow the rules. He was hospitalized a few years ago and wasn't supposed to eat salt, The hospital taped a sign up in his room reflecting that. Not only did he take the sign down, he used the tape to cover the top of a salt shaker that he took from the dining room so the salt wouldn't spill when he hid it in his wheelchair. Another time, he broke his ankle while taking some Special Olympics athletes on a ski trip. He broke it severely and it required six screws and he was not supposed to walk unassisted. I don't think anyone was surprised when he ignored that. I walked in one afternoon to find that he had climbed on a chair and was trying to reach something on the top of the China cabinet. That was our dad.
He was born in Newark, NJ during the Great Depression a few years after his parents immigrated from Scotland. They lived in a cold water flat above a fish market, and when my father was four, his dad passed away. He and his mother took the Caledonia, a trans-Atlantic ship, and moved back to Scotland, before his mom realized Scotland maybe wasn't the best place for him to grow up. She went back to New Jersey alone and got settled, then sent for him a few months later.
Our dad graduated from high school when he was 16 and worked a series of laboring and factory jobs. He met my mom in July 1950, and six months later he was drafted into the Korean War. He was sent into the combat zone, remaining there 1951 to 1953, working as a HAM radio operator. He never discussed his service, and it wasn't until a few years ago that I found out he was awarded a Purple Heart for some injuries he sustained from shrapnel and barbed wire.
My dad was drafted into the army and fought in the Korean War.
The Purple Heart meant little to him. He didn't want to be viewed as a hero because it wasn't his choice to be in the war, he just put in his time just like every other man of that era. When he was discharged, he was told he'd have to wait a few days for an officer to confer him with the Purple Heart. He didn't feel like waiting, so he told them to forget it, he was going home to see his girlfriend, Mary Ward, our mother. He started to walk out, but then he was stopped in the hall by an officer who had suddenly made himself available, and awarded him the medal.
The one positive thing about his two years in the army was that he was introduced to electronics, and that ended up being his profession as well as one of his passions. After he was dischaged, he reclaimed his old union laborer job, but noticed old men still doing laborer's work, and didn't want to end up like them. He quit his job and eventually found another position at Westinghouse, working as a technician.
Wedding day, Oct. 24, 1953
He and my mother married, and went on to have four daughters within six years. When my sister Laurie, who is number two, was born, he realized he needed to be a better provider, so he decided to go to college. He enrolled in Fairleigh Dickinson University and majored in electrical engineering, while still working full-time. After seven years, he graduated Magna Cum Laude.
He and my mom went on to have two more kids, me and Doug. In the early '90s he was diagnosed with malignant melanoma, and by the time it was detected, it had metastasized into his lymph nodes. But, he got it treated and recovered. Over the next 20 plus years, he had more than 20 spots of melanoma removed from various parts of his body, earning him the nickname Mr. Melanoma in the circle of doctors he saw.
I love this photo because Doug is wearing his Kermit Klein shirt.
In the mid-90s, our dad started volunteering as site coordinator for the Montgomery County Special Olympics skiing program, something he continued doing for years. He also volunteered at the Special Olympics office, and also worked his way up to key leadership roles within the county's program.
My mom died in 2006, and it was hard on him caring for Doug on his own, not knowing how to do even basic housework or laundry or even how to manage household finances. All of this was done by our mom. We helped as much as we could. But two years ago, he suffered a stroke and could no longer live independently or care for Doug on his own.
Within the past handful of years, he also had colon cancer, and stomach cancer. His doctors thought he had lung cancer at one point and opened up his chest to find no cancer at all. Then, he became convinced that doctors were just trying to find things wrong with him.
He wrote his memoirs over the course of many years, and in looking at the book recently, I found a quote: "There is no doubt that this melanoma that I have will get me one day, but not this day."
He was wrong about that. Despite all he went through medically throughout the years, he was in good health recently. When he passed away on Tuesday, he had no pending doctor's appointments except for one to get his hearing aid serviced. He was maybe a little tired, but was feeling fine. He simply went to bed Monday night and didn't wake up
The last sentence of the preface of his memoir seems to be a fitting way to close this speech.
"The bottom line is that my life was full, my ambitions realized, and my wife and children were loved by me above all else."
We loved you too, dad.
I just saw this photo for the first time a few weeks ago. I love how big and strong my dad is here — that's how I'll always remember him.
A blog? Really? Why?
Some of the journals I've kept over the years.
I started my first blog in February 2002 on Diaryland. Back then they weren't even called blogs, they were called "online diaries." I kept it for nine years, updating it nearly every day, or at least most days per week. It was password protected, shared only with a few friends and some fellow bloggers — some of whom I'm friends with to this day.
I'm so happy I kept that blog that because I have a very detailed record of my life over those years. I would often refer back to it when looking up what I did on, say, Thanksgiving of a certain year, because it's hard to remember things sometimes.
If you want to get really technical, I started my very first diary when I was nine. A Snoopy diary. I kept written journals all through my adolescence, my 20s, and beyond. There were some gaps, but my life is pretty well documented. I have this drive to record things, to keep track, to not forget. I guess it's always been there.
I took it down my Diaryland blog about two years ago and converted it into a Word document. Nine years, thousands of entries. It's amazing how small the file is, and how important.
I removed it from the web because the password ended up in the wrong hands (it's a really long story) and this person used information in there against me in a Very Bad Way. It was only bad for a little while, though. A blip, really. There were no huge or long-term repercussions. It made me trust a little less. But I didn't stop blogging.
Shortly after all that happened, I launched another blog on Blogger. Again, password protected. The joy of my original Diarlyand blog, or one of the joys, was the community of bloggers that I connected with. We read each others' blogs and followed each others' lives as if they were serial dramas (or sitcoms.) I even met some of them.
But on Blogger, I was sort of alone. I missed the interaction I had with readers. After about two years my updates sort of dwindled. The last entry I wrote was in June.
So, why another blog? Well, I'm interested in trying a different type of blogging I've never attempted before — public blogging. The others were super personal, confessional brain dumps, but if this one is public, it can't "go there."
I've thought about it for years, but I couldn't figure out where to draw the line in terms of information-giving. I'm a super private person and I'm probably hard to get to know. If I'm talking to someone, I'd rather focus the conversation on them rather than me. The thought of "putting myself out there" was scary, and it still is. I can't remember who said the quote, "Do something every day that scares you" or whatever it is. Was it Eleanor Roosevelt? I hate doing things that scare me and I avoid doing them. Don't you?
So yeah, this scares me, but I'm not doing it to challenge myself to overcome my fears like Eleanor or whoever has suggested. I just feel like there might be some things to be gained by public blogging. Maybe making connections with people. Sharing more of who I am — even though it's possible that nobody will care. Maybe I won't even care!
As far as the name goes, it doesn't mean anything. I just like how the words sound together. And it's pretty twee. I like twee.
Anyway, hi.
Me with Mermaid, one of the cats who was up for adoption at PAWS.
'Twas Sunday night
Mike tearing up South Philly in our Zipcar.
Parking in our neighborhood is tough. So when we get a good parking spot, we don't move it, even if we have things to do and places to go. We still do those things and go to those places, but we find another mode of transportation rather than give up our awesome spot.
Sunday was one of those nights. We had to go to Lowe's to buy a smoke detector and a few other things, so we rented a Zipcar. Zipcars are nicer than our car 100% of the time and it's always sort of a relief to not be embarrassed while out driving around for once.
Stupid Lowe's had the wrong type of smoke detector and the wrong types of other things we needed, so we left in a huff without buying anything. I think Mike actually shook his fist at the outside of the store as we exited the parking lot.
So, driving home, headed up Tasker Street, we see some commotion on 5th Street, outside a laundromat, A man and woman were engaged in a physical altercation. We immediately pulled over, and Mike jumped out. I rolled my window down and yelled at the guy to leave her alone and said I was calling 911.
While I was on the line with 911, an older guy leaned down and kind of poked his head into the window.
"It's okay, honey," he said dismissively. "It's a domestic thing. They know each other. They don't need the cops."
I replied: "Just because it's domestic doesn't mean it's okay! That doesn't mean it's not a crime!"
That guy pissed me off so much. Given that I was a crime reporter for so long, I learned that domestic violence is a huge issue; it's not something to just brush aside. His attitude made me think of the old school of thought when it comes to domestic violence, that it's "in the family," so it's fine. A guy is allowed to batter his wife. A mom or dad is allowed to beat up their kids. No, they aren't.
A few people tried to break up the fight to the point that it was confusing to tell what was going on, and I gave 911 the wrong description of the man involved. It became clear after watching them roll around on the sidewalk that the female was the aggressor — it sounded like it was a fight over drugs; I heard her say, "Give me the bag of dope." But still, violence is violence and it doesn't matter who started it.
Mike was standing a few feet from them and yelled that the cops were coming. She had him in a death grip and was not letting go, so he stumbled down 5th Street dragging her next to him. So, the cops probably came by and found nothing there.
It would be nice to think that our pointless trip to Lowe's actually meant something because we got to help someone, but I don't know if us being there made a difference. Probably not.
We parked the Zipcar then walked to The Bottle Shop, located right behind our house. As we looked at the selection, we realized that this is that magical time of year in which two of the very best seasonal beers, Southern Tier's Pumking and Troeg's Mad Elf, are both available.
These two beers intermingle for only like a few days every year, and it was oddly jarring to see them side by side on the counter as we paid. It kind of felt like a fictional crossover, where characters from two different shows end up on the same episode like "The Jetsons Meet The Flinstones."
So, it turned out to be a pretty good night after all that.
« Previous 1 … 7 8
Hi! I'm Jen!
And this is Sassy, my 15-year-old puppy and interspecies life partner. She's my proofreader, too, so any errors in this blog should be blamed on her. (RIP Sassy, 2000 - 2016)
Get new posts delivered to your inbox.
It's simple: Enter your email address to subscribe to this blog and you'll receive notifications of new posts by email.
Categories Select Category Beer (1) Blogging (6) Dog dementia (10) Family (11) Getting Gutsy (4) Grief (6) Home (1) House (2) Love (6) Me (16) Mike's Eats (1) Money (1) Pets (9) Philly (9) Relationships (1) Series (5) Travel (1) Uncategorized (3) Volunteering (2) Work (4) Working out (1)
Ignite Plus WordPress Theme by Compete Themes.

redpajama_set_name: RedPajamaCommonCrawl


text:
WALDRON, JAMES LOVEGROVE
1829 - 1901 from England
colonist, was born, like his brother Henry, at Marridge Hill in Wiltshire, the second son of John and Jane Waldron. When he was in his thirties he travelled to Australia, New Zealand and South America to find a suitable place to establish a new sheep farm and in August 1866 applied for seven sections of 6,000 acres each on West Falkland. Although this was an application in excess of the amounts allowed by law, Governor ROBINSON recommended its acceptance, partly to counter-balance the holdings of the FIC. Waldron arrived at Port Howard in September 1867 on the barque Diana with Exmoor sheep from England and Merinos from Montevideo. Timber buildings arrived in sections (one of which is still standing at Port Howard). James Waldron's notebook for 1866/67 survives, giving insights into some of the difficulties he encountered.
519 Port Howard on West Falkland Island
Although the FIC refused to sell him sheep, his estates prospered. Governor D'ARCY wrote in his Blue Book report of 1872: 'The islands are better adapted for sheep rather than for cattle. This discovery was made by Mr.Waldron of the West Falklands and is now universally recognised.'
In 1876 FE COBB reported to the FIC's directors:
mr w has doubtless spent thousands of pounds in starting his place and has a good deal to show for his money, though in my opinion his expenditure had often been lavish and in many instances ill-considered. ...altogether his establishment must be fully worth £200,000.
Waldron's wool shed at Port Howard...
Governor KERR thought highly of him and suggested him as a possible councillor (though he does not appear to have entered either council). In 1883 Kerr noted that JL Waldron took first place in West Falkland:
unlike most of the other sheep-farmers, who were for the most part adventurers, he embarked a large capital in establishing and stocking his stations; he is a man of large and enlightened views and by his considerate and liberal treatment of his shepherds and labourers he sets an example.
In addition to initial help in establishing Port Howard from his younger brother Henry, James also had the support of his elder brother John, who lived at Port Howard for a time with his wife, Ellen. One of their daughters, Ellen Elizabeth, married Edmund Matthews, who later took over the management of Port Howard. Other members of the Waldron family established successful farms in Patagonia.
Waldron left the Islands on 8 June 1889, and returned to live at Marridge Hill. He died in Bournemouth on 2 March 1901. He was married to Mary Palmer of Newbury. They had no children. A large fireproof safe in the Cathedral vestry in Stanley is inscribed 'In Memory of JL Waldron from his Widow and Friends'. Another memorial to Waldron in Christ Church Cathedral reads 'This Tablet is erected by the Employees of Port Howard Station. In Memory of a good and kind employer'. Port Howard remained in family ownership until 1990 and is still run as a successful large farm, one of the few original estates not to have been subdivided.
James Waldron brought to the early days of farming on West Falkland a confidence in the future of sheep that proved invaluable. His family background gave him both the experience and the capital necessary to back his judgement. His faith and investment contributed much to the development of the industry.
Jane Cameron
February 2020 One additional photograph added
Falkland Islands Government Archivist. Died 2009, Trelew, Argentina.
ANDREASEN, CHRISTIAN
CAMERON, NORMAN EWEN KEITH
CAMERON, William Keith


text:
Lapo Elkann Takes Step Back from Social Networks
The Italian entrepreneur announced his temporary exit from social media with a post on Instagram and Facebook.
By Alessandra Turra on January 31, 2017
Stephane Feugere
SOCIAL BREAK: Lapo Elkann is taking a break from the digital life.
On Monday, the Italian entrepreneur posted on his Instagram and Facebook accounts a portrait of himself, smiling at an office desk, with a message announcing his temporary step back from social media.
"I'd like to thank all my Followers, those who appreciated me and also (why not!) those who expressed different views but who deserve the same esteem and respect. All of You together helped me to improve," Elkann wrote. "Today I'm entering a new phase of my personal and professional life which I want to live it in the real, 'offline', world, instead of the virtual one. This is therefore not a Farewell, BUT a 'Goodbye, see you soon.' Thanking you All, Lapo."
Lapo Elkann's Instagram announcement Courtesy Photo
The message follows a statement that Elkann released on Jan. 25 after New York prosecutors dropped charges that the grandson of the late Fiat patriarch Gianni Agnelli falsely reported he was kidnapped in November as a cover-up for binge drinking and partying.
Elkann has remained out of the public eye since the November incident, except for attending the private funeral service for Franca Sozzani, the late editor in chief of Vogue Italia, who died in December.
Elkann, along with his brother John, is the owner of eyewear company Italia Independent and in 2015 founded Milan-based vehicle customization firm Garage Italia Customs.
Facebook	instagram	Lapo Elkann	Social Media
Host of NYT Podcast 'The Daily' Apologizes For Actions Around…
clock 9m • Kali Hays
Week in Fashion Newsletter
Don't miss the top fashion industry news breaking this week.


text:
Q: Best way to watch for files OK I have an application that produces some contracts based on a file that is created by another app.
I have implemented a filewatcher to watch for the file being created and it then kicks off a backgroundworker process to create the contracts based on the filename.
The problem I am having is that during the background worker process I set EnableRaisingEvents to false so that the app does not start to process a different set of contracts whilst the first is running (It's also to stop calling the background worker whilst it is running as it cant run 2 things at once!).
All works fine, the other app creates a file, filewatcher picks it up and starts processing, the problem is that when processing is finished the filewatcher is re-enabled but I assume it wont pick up any files that were created when EnableRaisingEvents was false - and so if the application that creates the initial file to produce the contracts happens to create another file whilst my app is processing it will just be left.  Does that make sense? And what is the best way round this?
I had thought of having another process that when the initial contract creation is finished would then look in the directory for other files created between the time when the filewatcher was disabled and if there were none it would then re-enable the filewatcher but I am wondering if there is a simpler way to do this?

A: You could split your process in tasks. One task is the FileRegistrator , which picks up new files, registers them in database. It runs all the time, no need to EnableRaisingEvents to false.
The next task is the ProcessorTask (or whatever name) which will query the database, find the first one and processes it. It will query the database at regular times to see if a new file is registered.
You could implement this little processor using Quartz.NET scheduler in a windows service.
(I did about the same a while ago, but I didn't use FileSystemWatcher)

A: A BlockingCollection would do this.
Keep FileWatcher hot and let it add to the blocking collection.
The consumer just processes the collection one at a time.
BlockingCollection Class
class AddTakeDemo
{
    // Demonstrates:
    //      BlockingCollection<T>.Add()
    //      BlockingCollection<T>.Take()
    //      BlockingCollection<T>.CompleteAdding()
    public static void BC_AddTakeCompleteAdding()
    {
        // here you need to synch as it would have missed any
        // new files while the application was down
        // yes L-Three and any files that were not yet processed
        // clearly the existing program is an end to end synch
        // or no synch at all as it could be nothing else
        using (BlockingCollection<int> bc = new BlockingCollection<int>())
        {

            // Spin up a Task to populate the BlockingCollection
            using (Task t1 = Task.Factory.StartNew(() =>
            {
                //  FielSystem watcher
                bc.Add(fille);

            }))
            {

                // Spin up a Task to consume the BlockingCollection
                using (Task t2 = Task.Factory.StartNew(() =>
                {
                    try
                    {
                        // Consume consume the BlockingCollection
                        while (true) Console.WriteLine(bc.Take());
                        // process the file
                    }
                    catch (InvalidOperationException)
                    {
                        // An InvalidOperationException means that Take() was called on a completed collection
                        Console.WriteLine("That's All!");
                    }
                }))

                    Task.WaitAll(t1, t2);
            }
        }
    }
}

redpajama_set_name: RedPajamaStackExchange


The day you decide to make a living by spending a minimal amount, waiting for a high earning oriented investment tool, you can come across a host of online trading platforms available on the internet. The digital economy. is bursting with a host of web-based trading software, that is available for one to trade form the comforts of their home or for the one who is on the go.
Based on the trends and live updates from the market, the online brokers aligned to the account execute the trades on behalf of the trader. Care should be taken to avail the services of a licensed broker, as the unlicensed and unregulated broker could end up as a scam that is rampant online.
When it comes to trading online, the first thing that an account holder has to do is set the parameters based on the risk exposure, stop loss limit and capital exposure, the uTrader who are unregulated broker service group with an average promising return. The analyst who provides the trade signals based on the level of exposure is based on various historical data and live feeds of the market, that pick the signal of trading. The automated trading robot picks the trades once a set of conditions fulfilled, based on the programming of the robot, then the trades are executed.
The physical brokers who partner with the online trading platforms have a good track record and their capabilities differ according to the exposure limit of the traders.
← How To Avoid Online Trading Mistakes?


Social media marketing - Helen Saluveer.
On photos: Kristel Vokk, Marge Raitma, Ian-Egert Raitma, Grethe Liis Kutti, Helen Adamson, Taavi Tõnisson, Laura-Liisa Srubišek, Ege-Teili Oja, Karolina Vardja, Helena Trees.
2 photoshoots for Mexican restaurant Amarillo in Tallinn.
Pictures were used in social media (Facebook page, Instagram, webpage) and in print material and wallpapers in interior.


text:
package jquants;

import static com.googlecode.totallylazy.Sequences.sequence;

import java.util.ArrayList;
import java.util.function.Consumer;
import java.util.function.Function;

import com.googlecode.totallylazy.Callable2;
import com.googlecode.totallylazy.Sequence;

/**
 * Represents a Range starting at one Quantity value and going up to another
 *
 * @author  Mathias Braeu
 * @since   1.0
 *
 * @param <A> type of the Quantity of the range
 */
public class QuantityRange<A extends Quantity<A>> {

  public A lower;
  public A upper;

  /**
   * New QuantityRange with Quantities of type A
   *
   * @param lower
   *          Quantity representing the lower bound of the range
   * @param upper
   *          Quantity representing the upper bound of the range
  */
  public QuantityRange(A lower, A upper) {
    if (lower.value >= upper.value)
      throw new IllegalArgumentException("QuantityRange upper bound must be greater than or equal to the lower bound");
    this.lower = lower;
    this.upper = upper;
  }

  public boolean equals(Object obj) {
    if (obj instanceof QuantityRange) {
      @SuppressWarnings("unchecked")
      QuantityRange<A> that = (QuantityRange<A>) obj;
      return this.lower.equals(that.lower) && this.upper.equals(that.upper);
    } else {
      return false;
    }
  }

  public String toString() {
    return this.lower.value + " " + this.lower.valueUnit.toString() + " to " + this.upper.value + " " + this.upper.valueUnit.toString();
  }

  /**
   * Create a Seq of `multiple` ranges equal in size to the original with
   * sequential range values If `multiple` contains a fractional component, the
   * last item in the resulting range will be equal to that fraction of the
   * original
   *
   * @param multiple
   *          Number of ranges to create
   * @return
   */
  // public QuantitySeries<A> times(double multiple) {
  // double remainder = multiple % 1;
  // double count = ((multiple - remainder) / 1).toInt;
  // val ranges = (0 until count).map(n ⇒ QuantityRange(lower + (toQuantity *
  // n), upper + (toQuantity * n)))

  // if (remainder > 0) ranges :+ QuantityRange(lower + (toQuantity * count),
  // lower + (toQuantity * (count + remainder)));
  // else ranges;
  // return null;
  // }

  public ArrayList<QuantityRange<A>> times(double multiple) {
    double remainder = multiple % 1;
    double count = ((multiple - remainder));
    ArrayList<QuantityRange<A>> ranges = new ArrayList<QuantityRange<A>>();
    for (int i = 0; i < count; i++) {
      ranges.add(new QuantityRange<A>(lower.plus(this.toQuantity().multiply(i)), upper.plus(this.toQuantity().multiply(i))));
    }
    if (remainder > 0)
      ranges.add(new QuantityRange<A>(lower.plus(this.toQuantity().multiply(count)), upper.plus(this.toQuantity().multiply(count + remainder))));
    return ranges;
  }

  /**
   * Divides the range in Seq of ranges each with a range with a Quantity of
   * `that` The Seq will begin at `from` and go till `to`. If the range is not
   * evenly divisible by `that`, the last item in the list will contain the
   * remainder
   *
   * QuantityRange(Count(1), Count(4) / Count(1) will return:  Seq(Count(1), Count(2),
   * Count(3), Count(4))
   *
   * @param that
   *          Quantity
   * @return
   */
  // public QuantitySeries<A> divide(A that) {
  // @tailrec
  // def accumulate(acc: QuantitySeries[A], start: A): QuantitySeries[A] = {
  // if (start >= upper) acc
  // else accumulate(acc :+ (start to (start +
  // that).min(upper).asInstanceOf[A]), start + that)
  // }
  // accumulate(IndexedSeq.empty.asInstanceOf[QuantitySeries[A]], lower)
  // return null;
  // }
  public ArrayList<QuantityRange<A>> divide(A that) {
    ArrayList<QuantityRange<A>> acc = new ArrayList<QuantityRange<A>>();
    return accumulate(acc, lower, that);
  }

  private ArrayList<QuantityRange<A>> accumulate(ArrayList<QuantityRange<A>> acc, A start, A that) {

    if (start.value >= upper.value)
      return acc; // break condition
    else {
      A newStart = start.plus(that);
      acc.add(new QuantityRange<A>(start, (A) (newStart.value < upper.value ? newStart : upper)));
      return accumulate(acc, newStart, that); // recursive invocation until
                                              // break condition is met
    }
  }

  /**
   * Divides the range into a Seq of `divisor` ranges The Seq will begin at
   * `from` and go till `to`. If `that` is an integer value, the range will
   * evenly divided at all points. If `that` has a fractional component, the
   * first n-1 ranges will be evenly divided by the `that` and the last range in
   * the list will contain the remainder.
   *
   * @param that
   *          Double
   * @return
   */
  public ArrayList<QuantityRange<A>> divide(double that) {
    return divide(this.toQuantity().div(that));
  }

  /**
   * Divides the range into a Seq of ranges of `size` each and applies a f to
   * each element having A as Quantity type of the size parameter
   *
   * @param size
   *          Quantity representing the size for each QuantityRange in the Seq
   * @param op
   *          the side affecting operation
   *
   */
  // def foreach[U](size: A)(op: QuantityRange[A] ⇒ U) = /(size).foreach(op)
  public void foreach(A size, Consumer<? super QuantityRange> op) {
    this.divide(size).forEach(op);
  }

  /**
   * Divides the range into a Seq of `divisor` ranges and applies a f to each
   * element
   *
   * @param divisor
   *          Quantity representing the size for each QuantityRange in the Seq
   * @param op
   *          the side affecting operation
   */
  // def foreach[U](divisor: Double)(op: QuantityRange[A] ⇒ U) =
  // /(divisor).foreach(op)
  public void foreach(double divisor, Consumer<? super QuantityRange<A>> op) {
    this.divide(divisor).forEach(op);
  }

  /**
   * Divides the range into a Seq of ranges of `size` each and applies a map
   * operation to each.
   *
   * @param size
   *          Quantity representing the size for each QuantityRange in the Seq
   * @param op
   *          the transformation operation
   *
   * @return ArrayList filled with resulting {@link QuantityRange} consisting of Quantities of type A of the map operation
   */
  // def map[B](size: A)(op: QuantityRange[A] ⇒ B): Seq[B] = /(size).map(op)
  // def map[B](divisor: Double)(op: QuantityRange[A] ⇒ B): Seq[B] =
  // map(toQuantity / divisor)(op)

  public ArrayList<QuantityRange<A>> map(A size, Function<QuantityRange<A>, ?> op) {
    Object[] array = this.divide(size).stream().map(op).toArray(); // divide this through size;
                                                                   // map given operation op to the result;
                                                                   // retrieve the result as an array
    return new ArrayList<QuantityRange<A>>() {
      {// return the array as an arrayList and cast each member to a QuantityRange
        for (Object e : array) {
          add((QuantityRange<A>) e);
        }
      }
    };
  }

  /**
   * Divides the range into a Seq of `divisor` ranges and applies a map
   * operation to each
   *
   * @param divisor
   *          Quantity representing the size for each QuantityRange in the Seq
   * @param op
   *          the transformation operation
   * @return
   */
  public ArrayList<?> map(double divisor, Function<QuantityRange<A>, ?> op) {
    Object[] array = this.divide(divisor).stream().map(op).toArray();
    return new ArrayList<QuantityRange<A>>() {
      {
        for (Object e : array) {
          add((QuantityRange<A>) e);
        }
      }
    };
  }

  /**
   * Divides the range into a Seq of ranges of `size` each and applies a
   * foldLeft operation
   *
   * @param size
   *          Quantity representing the size for each QuantityRange in the Seq
   * @param z
   *          the start value, a Quantity of type A
   * @param op
   *          the binary operator
   * @return
   */
  // def foldLeft[B](size: A, z: B)(op: (B, QuantityRange[A]) ⇒ B): B =
  // /(size).foldLeft[B](z)(op)
  // public <B> B foldLeft(A size, A z, BiFunction<B, B, B> op ){
  public A foldLeft(A size, A z, Callable2<A, QuantityRange<A>,A> op) {

    // Divide Range in size parts; build a com.googlecode.totallylazy.Sequence with list-elements and apply foldLeft with given Function op
    ArrayList<QuantityRange<A>> list = this.divide(size);
    return sequence(list).foldLeft(z, op);
  }

  /**
   * Divides the range into a Seq of ranges of `size` each and applies a
   * foldLeft operation
   *
   * @param size
   *          The number of ranges to split the range into
   * @param z
   *          the start value, a Quantity of type A
   * @param op
   *          the binary operator
   * @return
   */
  // def foldLeft[B](divisor: Double, z: B)(op: (B, QuantityRange[A]) ⇒ B): B =
  // /(divisor).foldLeft[B](z)(op)
  public A foldLeft(Double size, A z, Callable2<A, QuantityRange<A>,A> op) {

    // Divide Range in size parts; build a com.googlecode.totallylazy.Sequence with list-elements and apply foldLeft with given Function op
    ArrayList<QuantityRange<A>> list = this.divide(size);
    return sequence(list).foldLeft(z, op);
    }

  /**
   * Divides the range into a Seq of ranges of `size` each and applies a
   * foldRight operation
   *
   * @param size
   *          Quantity representing the size for each QuantityRange in the Seq
   * @param z
   *          the start value, a Quantity of type A
   * @param op
   *          the binary operator
   * @return
   */
  // def foldRight[B](size: A, z: B)(op: (QuantityRange[A], B) ⇒ B): B =
  // /(size).foldRight[B](z)(op)
  public A foldRight(A size, A z, Callable2<QuantityRange<A>,A,A> op) {

    //Divide Range in size parts; build a com.googlecode.totallylazy.Sequence with list-elements and apply foldRight with given Function op
    ArrayList<QuantityRange<A>> list = this.divide(size);
    return sequence(list).foldRight(z, op);
  }
  /**
   * Divides the range into a Seq of ranges of `size` each and applies a
   * foldRight operation
   *
   * @param size
   *          The number of ranges to split the range into
   * @param z
   *          the start value, a Quantity of type A
   * @param op
   *          the binary operator
   * @return
   */
  // def foldRight[B](divisor: Double, z: B)(op: (QuantityRange[A], B) ⇒ B): B =
  // /(divisor).foldRight[B](z)(op)
  public A foldRight(Double size, A z, Callable2<QuantityRange<A>,A,A> op) {

    //Divide Range in size parts; build a com.googlecode.totallylazy.Sequence with list-elements and apply foldRight with given Function op
    ArrayList<QuantityRange<A>> list = this.divide(size);
    return sequence(list).foldRight(z, op);
  }
  /**
   * Increments the range's from and to values by an amount equal to the
   * Quantity value of the range
   *
   * @return
   */
  // lazy val inc = QuantityRange(lower + toQuantity, upper + toQuantity)
  public QuantityRange<A> inc() {
    return new QuantityRange<A>(this.lower.plus(toQuantity()), this.upper.plus(toQuantity()));
  }

  /**
   * Increments the range's from and to values by an amount equal to the value
   * of `that`
   *
   * @param that
   *          Quantity
   * @return
   */
  // def inc(that: A) = QuantityRange(lower + that, upper + that)
  public QuantityRange<A> inc(A that) {
    return new QuantityRange<A>(this.lower.plus(that), this.upper.plus(that));
  }

  /**
   * Decrements the range's from and to value by an amount equal to the Quantity
   * value of the range
   *
   * @return
   */
  // lazy val dec = QuantityRange(lower - toQuantity, upper - toQuantity)
  public QuantityRange<A> dec() {
    return new QuantityRange<A>(this.lower.minus(toQuantity()), this.upper.minus(toQuantity()));
  }

  /**
   * Decrements the range's from and to values by an amount equal to the value
   * of `that`
   *
   * @param that
   *          Quantity
   * @return
   */
  // def dec(that: A) = QuantityRange(lower - that, upper - that)
  public QuantityRange<A> dec(A that) {
    return new QuantityRange<A>(this.lower.minus(that), this.upper.minus(that));
  }

  /**
   * Increments the `to` value by an amount equal to the value of `that`
   *
   * @param that
   *          Quantity
   * @return
   */
  // def incTo(that: A) = QuantityRange(lower, upper + that)
  public QuantityRange<A> incTo(A that) {
    return new QuantityRange<A>(lower, this.upper.plus(that));
  }

  // def decTo(that: A) = QuantityRange(lower, upper - that)
  public QuantityRange<A> decTo(A that) {
    return new QuantityRange<A>(lower, this.upper.minus(that));
  }

  /**
   * Increments the `from` value by an amount equal to the value of `that`
   *
   * @param that
   *          Quantity
   * @return
   */
  // def incFrom(that: A) = QuantityRange(lower + that, upper)
  public QuantityRange<A> incFrom(A that) {
    return new QuantityRange<A>(lower.plus(that), upper);
  }

  /**
   * Decrements the `from` value by an amount equal to the value of `that`
   *
   * @param that
   *          Quantity
   * @return
   */
  // def decFrom(that: A) = QuantityRange(lower - that, upper)
  public QuantityRange<A> decFrom(A that) {
    return new QuantityRange<A>(lower.minus(that), upper);
  }

  /**
   * Decrements the `from` value and increments the `to` by an amount equal to
   * the value of `that`
   *
   * @param that
   *          Quantity
   * @return
   */
  // def decFromIncTo(that: A) = QuantityRange(lower - that, upper + that)
  public QuantityRange<A> decFromIncTo(A that) {
    return new QuantityRange<A>(lower.minus(that), upper.plus(that));
  }

  /**
   * Increments the `from` value and decrements the `to` by an amount equal to
   * the value of `that`
   *
   * @param that
   *          Quantity
   * @return
   */
  // def incFromDecTo(that: A) = QuantityRange(lower + that, upper - that)
  public QuantityRange<A> incFromDecTo(A that) {
    return new QuantityRange<A>(lower.plus(that), upper.minus(that));
  }

  /**
   * Returns true if the quantity is contained within this range, otherwise
   * false
   *
   * @param q
   *          Quantity
   * @return
   */
  public boolean contains(A q) {
    return q.value >= lower.value && q.value < upper.value;
  }

  /**
   * Return true if `that` range is completely contained with `this` range,
   * otherwise false
   *
   * @param that
   *          Quantity
   * @return
   */
  // def contains(that: QuantityRange[A]) =
  // that.lower >= lower &&
  // that.lower < upper &&
  // that.upper >= lower &&
  // that.upper < upper
  public boolean contains(QuantityRange<A> that) {
    return that.lower.value >= this.lower.value && that.lower.value < this.upper.value && that.upper.value >= this.lower.value && that.upper.value < this.upper.value;
  }

  /**
   * Returns true if `that` range contains any part that is in `this` range,
   * otherwise false
   *
   * @param range
   *          QuantityRange[A]
   * @return
   */
  // def partiallyContains(range: QuantityRange[A]) = range.lower < upper &&
  // range.upper > lower
  public boolean partiallyContains(QuantityRange<A> range) {
    return range.lower.value < this.upper.value && range.upper.value > this.lower.value;
  }

  /**
   * Returns true if `that` quantity is included within `this` range
   *
   * @param q
   *          Quantity
   * @return
   */
  // def includes(q: A) = q >= lower && q <= upper
  public boolean includes(A q) {
    return q.value >= lower.value && q.value <= upper.value;
  }

  /**
   * Returns true if `that` range is completely included in `this` range,
   * otherwise false
   *
   * @param that
   *          QuantityRange[A]
   * @return
   */
  // def includes(that: QuantityRange[A]) =
  // that.lower >= lower &&
  // that.lower <= upper &&
  // that.upper >= lower &&
  // that.upper <= upper
  public boolean includes(QuantityRange<A> that) {
    return that.lower.value >= this.lower.value && that.lower.value <= this.upper.value && that.upper.value >= this.lower.value && that.upper.value <= this.upper.value;
  }

  /**
   * Returns true if `that` range includes any part that is in `this` range,
   * otherwise false
   *
   * @param range
   *          QuantityRange[A]
   * @return
   */
  // def partiallyIncludes(range: QuantityRange[A]) = range.lower <= upper &&
  // range.upper >= lower
  public boolean partiallyIncludes(QuantityRange<A> range) {
    return range.lower.value <= this.upper.value && range.upper.value >= this.lower.value;
  }

  /**
   * Returns a quantity that is equal to the difference between the `from` and
   * `to`
   *
   * @return
   */
  // lazy val toQuantity = upper - lower
  public A toQuantity() {
    return upper.minus(lower);
  }
  /**
   * Returns this Range's boundary values as a Seq[A] of the two
   *
   * @return
   */
  // lazy val toSeq: Seq[A] = Seq(lower, upper)
  public Sequence<A> toSeq() {
    return sequence(this.lower, this.upper);
  }
  /**
   * Return this Range's boundary values as List[A] or the two
   *
   * @return
   */
  // lazy val toList: List[A] = List(lower, upper)
  public ArrayList<A> toList() {
    return new ArrayList<A>() {
      {
        add(lower);
        add(upper);
      }
    };
  }

}

redpajama_set_name: RedPajamaGithub


text:
Piotr Petróvich Shilovski () (12 de septiembre de 1871 - 3 de junio de 1957) fue un conde ruso, jurista, estadista y gobernador de Kostromá entre 1910 y 1912, y de Olónets desde 1912 hasta 1913. Es conocido como el inventor del girocoche, que demostró por primera vez en Londres en 1914. En 1922, Shilovski emigró al Reino Unido.

Semblanza

Shilovski perteneciá a una familia de nobles terratenientes, propietarios de terrenos en Glebovo-Izbische, cerca de Moscú. Su padre, Petr Stepánovich Shilovski, era integrante del Consejo de Estado; y su abuelo, Stepan Ivánovich Shilovski, había sido consejero de la corte imperial durante más de diez años, y se convirtió en uno de los miembros más influyentes de la nobleza rusa.

En 1892 se graduó en la Escuela Imperial de Jurisprudencia, se desempeñando los cargos de investigador judicial en Luga, cerca de San Petersburgo, y de juez en la provincia de San Petersburgo. Entró al servicio en el departamento de heraldos del Senado.

En 1894 accedió a la oficina del Primer Departamento en el Senado. Durante este período, ejerció como periodista y escribió artículos en la prensa sobre temas legales. En 1895 fue nombrado investigador judicial del condado de Luga en la provincia de San Petersburgo. En 1900, pasó a ser fiscal adjunto del tribunal de distrito en Reval y Sarátov, siendo elegido juez de paz honorífico de Petrozavodsk. Más adelante, durante un breve periodo de tiempo sirvió como vicegobernador en Oral (1904), gobernador militar la misma región (1905), vicegobernador de Yekaterinoslav (1906) y vicegobernador de Simbirsk (1907). A continuación, ostentó la gobernación de Kostromá (1910-1912) y de Olónets (1912-1913). En 1905 había sido nombrado ayudante de cámara imperial.

En 1909, recibió la patente sobre "Un dispositivo para mantener el equilibrio de vagones u otros cuerpos en una posición inestable" en Inglaterra, Alemania, Francia y los Estados Unidos.

En 1911, en la exposición de San Petersburgo, demostró un modelo de ferrocarril monorail oscilante estabilizado, y en mayo de 1914 las calles de Londres presemciaron la presentación de su girocoche (un automóvil de dos ruedas estabilizado giroscópicamente).

El 1 de mayo de 1913, Shilovski fue nombrado magistrado honorario del distrito de Soligalichski en la provincia de Kostroma por decreto del Senado; y el 5 de mayo de 1913, a solicitud de la administración pública de la ciudad de Kostroma, el emperador recibió el título de ciudadano honorario de Kostroma. En julio de 1913 fue destituido de su cargo como gobernador de Olonets.

Durante la Primera Guerra Mundial, Shilovski desarrolló un proyecto para estabilizar el cañón de un buque, en el que se basan los actuales estabilizadores de movimiento giroscópicos, los oroscopios (indicadores de rumbo giroscópico), ensayados en un yate y en un avión Sikorsky Ilya Muromets.

El 8 de septiembre de 1919, presentó un informe en una reunión del Consejo de Economía Nacional de toda Rusia "Sobre la construcción de una línea ferroviaria giroscópica Kremlin-Kuntsevo". El Consejo Económico Supremo publicó un decreto sobre la conveniencia de construir un ferrocarril experimental giroscópico, de 6 millas de largo, e instruye a L. B. Krasin, un miembro del presidium, para establecer una comisión con objeto de preparar el decreto y dar un avance a la construcción.

Shilovski adquirió gran popularidad por la introducción (1919) y la construcción (1921–1922) del ferrocarril monorraíl San Petersburgo - Detskoe Selo (ahora Pushkin) - Gátchina.

Científicos famosos participaron en el establecimiento de las bases teórica del ferrocarril monorriel, como Iván Mescherski, Piotr Fiodórovich Papkóvich y Nikolái Zhukovski.

El tramo de prueba se reconoció de importancia nacional y la gestión de su construcción se confió al Consejo de Economía Nacional de toda Rusia. En solo un año, bajo la dirección de Shilovski, un grupo de ingenieros completó un borrador de trabajo detallado de las vías y del tren (como R. N. Wolff, A. M. Godytski-Tsvirko, V. N. Evreinov, R. A. Luther, A. S. Schwartz y otros). Se suponía que el tren consistiría en dos vagones y se movería a una velocidad de 150 kilómetros por hora.
Era posible tender una parte de las vías a lo largo de una distancia de unos 12 kilómetros, y se ordenó a las fábricas de Petrogrado que construyeran un tren. Sin embargo, el trabajo iniciado en el verano de 1919 se ralentizó constantemente y se detuvo por completo en mayo de 1922 debido a la devastación de Rusia posterior a la Primera Guerra Mundial y a la falta de fondos.

En 1922 emigró al Reino Unido, donde continuó trabajando en Sperry Corporation, y dos años después, en 1924, publicó la monografía "Giróscopo: su diseño y aplicación".

Murió el 3 de junio de 1957 en Herfordshire (Inglaterra), habiendo vivido 85 años.

Véase también
 Wolseley Motors
 Girocoche

Referencias

Bibliografía
 The Schilovski Gyrocar
 P.P. Shilovski El giroscopio: su construcción y aplicación prácticas, el tratamiento de la física y la mecánica experimental del giroscopio y la explicación de los métodos de su aplicación para la estabilización de monorrieles, barcos, aviones, armas marinas, etc., prefacio del Prof. CV Boys, FRS 224 páginas, London, E. & F. N. Spon, ltd .; Nueva York, Spon & Chamberlain, 1924 ASIN B0000EFPRK
 SCHILOVSKY, P., 28, Dulwich Wood Park, Londres. 31 de mayo de 1933, No. 15695. Clase 122 (v).

Enlaces externos
 Monstruos de dos ruedas. Primera parte: Gyrocar de Shilovsky

Juristas de Rusia
Políticos de Rusia del siglo XX
Nobleza de Rusia
Inventores de Rusia

redpajama_set_name: RedPajamaWikipedia


The Court: Basketball court side and end lines. 3-point line will be used for the goalie zone (penalty area). If ball touches the basketball hoop, possession is turned over (keeper ball or corner kick).
The Ball: Low-bounce futsal balls only. U12 and under use a size 3 futsal ball. U13 and older use a size 4 futsal ball.
The Goal: Dimensions of futsal goals are 2 m x 3 m.
Equipment: Teams must wear colors that distinguish them from each other and goalies must also wear distinct colors. Shin guards are recommended but not mandatory. They must be entirely covered by the socks. Rubber-soled futsal, indoor soccer or gym shoes are required. A player must not use equipment or wear anything that is dangerous to himself or another player (including jewelry).
Players: Five players on each team, one of which is the goalkeeper. The minimum number of players per team is 4.
Length of Game: Two 24-minute halves with a running clock, and a 2 minute half-time. No time-outs.
Substitutions: Unlimited and do not require stoppage (on the fly). All players must enter/exit at mid court.
Kickoff: Away team kicks off to begin the game, and home team kicks off at the beginning of the second half. First touch must move forward. A goal cannot be scored directly from the kickoff.
4-second rule: Place kicks (Kick ins, corner kicks) and goalie decisions must be made within 4 seconds.
Kick ins: Ball must be placed at location where ball left the court and must not be rolling. Opponents must be at least 3 meters away from the location of the kick in. A player has 4 seconds to play the ball into the court once they are ready. Goals cannot be scored from a kick in.
Goalies: No punts or bounce kicks are allowed-- the ball must be tossed or rolled. Opponents may not be in the penalty box (inside the 3 point line). Goalies cannot throw the ball over half-court unless it touches the court or a player first. If done so, an indirect free kick from the center line is awarded to other team. Goalie can play to his/her own feet (except during a dead ball clearance and 4 second rule applies). The goalie has 4-seconds to distribute.
If the goal clearance is not taken within four seconds, an indirect free kick is awarded to the opposing team, to be taken from the penalty area line (3 point line) at the place nearest to where the infringement occurred.
Slide Tackling: is permitted u13 and older if executed safely (referee discretion).
Heading: Not allowed for u12 and younger.
5-Goal Limit: A team cannot lead by more than 5 goals. When a team is leading by 5 goals, the team's score is frozen until after the opponents score. Any team trailing by 5 goals for over 5 minutes may add an extra player until their side scores.
Corner Kicks: A goal may be scored from a corner kick. The opponents must be at least 3 meters from the corner until the ball is played. Four second rule applies to corner kicks.
Direct Free Kicks: are awarded for any of the following offenses in a manner considered by the referees to be careless, reckless or using excessive force: Kicks or attempts to kick an opponent, trips an opponent, charges an opponent, strikes or attempts to strike an opponent, pushes an opponent, holds an opponent, deliberate hand ball, Slide tackling (for u12 and younger). All opponents must be at least 3 m from the ball until it is in play.
Indirect Free Kicks: are awarded for: violation of the 4 second rule, obstruction, preventing the goalkeeper from releasing the ball. All opponents must be at least 3 m from the ball until it is in play. An indirect free kick conceded in the penalty area is taken from the penalty area line at the point nearest to where the offense was committed.
Accumulated Fouls Beginning with the 6th accumulated foul by each team in a half, then opposing team will receive a direct kick from the top of the 3-point line (if playing on a basketball court). A shot must be taken on goal (no walls, no set plays), and all other players must stay behind the ball (imaginary line from sideline to sideline through the ball) until kicked. Fouls reset at halftime.
Penalty Kicks: are taken from the top of the 3 point line when playing on a basketball court (not the free throw lines), Shot must be taken on goal (no walls, no set plays). Only kicker and goalie allowed in the zone until ball is kicked.


Our policy work is overseen by specialist committees, each one made up of a Chair and between 10 and 25 people from our member companies. We currently have 5 committees.
Committees are supported by members of our team.
Currently working on: Community Right to Buy legislation and Community Empowerment Bill, Land reform agenda, S63 Regulations relating to landlord and tenant factors, compulsory purchase order reform and land registration issues, standardising industry lease terms, town centres rejuvenation, LBTT and business rates reform.
Currently working on: private rented sector tenancy reform and investment including security of tenure and rent control, enforcement enhancement areas, 20 year residential lease cap, support for SME house-builders, residential property management (owners or tenants), S64 Regulations (energy efficiency in residential properties), liaison with Scottish PRS Champion working groups, Scottish Government Housing Policy and Delivery Group liaison, student accommodation and HMO licensing.
Currently working on: roll out of Land and Buildings Transaction Tax, business rates reform, tax incentives for SME house-builders, liaison with Revenue Scotland on LBTT guidance, local property taxation reform, liaison with BPF tax and VAT Committees.
Currently working on: planning reform and infrastructure delivery including S75 policy, strategic and local development plans, liaison with the DPEA, listed building consent reform, Scottish Planning Policy and Planning performance, planning fees and chargeable pre-application meetings, liaison with Scottish Government Agencies and NDPBs, Scottish Water, Heads of Planning Scotland and local planning authorities.
Currently working on: S63 regulations (commercial property building improvements to achieve energy efficiency at point of sale or lease), 2015 technical building standards roll-out, certification and S64 residential building improvements for energy efficiency at point of sale or lease, sustainability labels, flooding policy reform, building innovation to improve energy efficiency.


Von Pelt atelier its a group of designer and creatives whose members provenance, their crafts and talents are rich and varied. Most are self taught or come from a previous different discipline and location, such as graphic design and poetry from London and Spain, artist sculptors from Berlin, Italian textile researchers and craftsmen etc. All united in a common quest for originality, innovation and quality. The style has a strong narrative and the historical and cultural references are glazed with a layer of wit. Von Pelt atelier is producing ceramics, rugs, furniture, lights, installations accessories and art projects.