Search Engine Optimization (SEO) is used to optimize a website to achieve higher rankings in search engines for the purpose of generating as much traffic as possible. The world's top search engines are Google, Yahoo and Bing. Around 90% of the market share goes to Google that currently dominates the search engine list, whereas Yahoo and Bing partnered and carries 10% of online searches.
SEO is needed by any business that wants to generate sales online with the lowest cost. Though there are other available ways to make money online like SEM and Social Media Marketing, SEO still provides the highest ROI than the rest.
Unfortunately, among all searches made, 95% of websites can't make it to the first page of the search results of any search engine and 90% can't go past the top 5 rankings. If you want to boost your sales online, your website needs to appear on the top 5 rankings from the first page of the search results on Google, which are the top search engines people use today.
Unlike newspapers advertisement, you pay to get readers to look at your advertisement. This group of readers also include those that are not interested in your products/services. SEO allows for a targeted audience. Only when potential customers search for the keywords you have optimized, your website will appear.
Needless to say, the Internet is always available so is Google. SEO allows your website to be found 24 hours a day, 7 days a week, all around the world.
The question remains: can your customers find your website when they Google about the products/services you are offering?
Contact us today to find out how you can outrank your competitors online.


Your safe travel is our primary concern. At Hawthorne Global Aviation Services, quality and safety are always our priority.
We have benefitted from our continuing participation in third-party audits. Wyvern awarded us Wyvern Wingman status, recognizing our compliance with the Wyvern Standard, an industry leading level of operation that is a requirement to fly for such corporations as General Electric and JPMorgan Chase. ExcelAire has been a Wyvern Wingman operator for more than a decade.
SH&E, a leading aviation safety consultant routinely audits ExcelAire to evaluate our flight and ground safety. This is part of a voluntary program with our insurance underwriters.
ExcelAire has also recently achieved ARG/US Platinum status. Similar to the Wyvern standard, the Aviation Research Group (ARG/US) hold operators to a much higher standard than required by the FAA.
Our first class airframe and avionics capabilities are ready to serve you. An FAA Approved Repair Station since 1985, we perform 98% of our own fleet maintenance in-house with an experienced technician team and have 24/7 availability.
©2019 Excelaire - A Hawthorne Company.


text:
Teen was assaulted and left to die because of being bisexual
A bisexual teenager has been assaulted, called a "greedy bisexual" and left for dead in a vicious attack in Nuneaton. Attackers, who cannot be named as well as the victim, admitted committing an assault but weren't imprisoned. Instead they were handed referral orders and an order to pay compensation, according to CoventryLive. Speaking out after the end of legal proceedings, the victim's mum emotionally explained how her son was broken both physically and mentally, and his abusers just live like nothing has happened. The mother said that her son had been out with friends all day when "they were approached by one of [the two attackers], who said: 'What you hanging round with him for, you do know he is bi.' Then another said: 'Is this right?' and the attack began. "Another of them said: 'I can't believe you hit him because he is gay,' but one of them said that there was no problem with gays, but with 'greedy bis'. After knocking the schoolboy to the ground, she said that the teenagers "kicked him on the floor, dragged him into a wooded area and attacked him again."They then told the bisexual teenager to report his attackers as being "three lads in balaclavas," she said, adding he had been warned: "If you give our names to the police, we will find you and kill you." When he arrived home, his mother said she "didn't even recognize him. You could see a trainer mark on his face. I went into shock, I wanted to cry but I couldn't."
Previous articleWoman trickled homophobes to support Pride
Next articleTwo women locked lips Macy's Thanksgiving Day Parade
Orlando survivor addresses to the shooters
Parent went viral explaining to their child what it means to...
Ben Carson is against 'extra rights' for gays
British politician attacked Owen Smith for his point of view on...
Anti-gay Senate candidate Roy Moore receives money from anti-LGBT groups
Gay rights pioneer Dick Leitsch passed away aged 83
Comfort dogs sent to Orlando to help grieving community
Sir Elton John lost his mother
Fast food restaurant won't be built in the university campus because...
Gay club posts a public response to straight people who wanted...

redpajama_set_name: RedPajamaCommonCrawl


text:
import os, sys, time, os, math
from multiprocessing.pool import ThreadPool

thread_pool = ThreadPool(8)

stat = open(sys.argv[1])
line = stat.readline()
while not 'second:' in line:
	line = stat.readline()

keys = line.strip().split(':')[1:]

output_dir = 'session_stats_report'

line_graph = 0
histogram = 1
stacked = 2
diff = 3

graph_colors = []

pattern = [[0,0,1], [0,1,0], [1,0,0], [1,0,1], [0,1,1], [1,1,0]]

def process_color(c, op):
	for i in range(3):
		if op == 0:
			c[i] = min(255, c[i] + 0xb0)
		if op == 2:
			c[i] = max(0, c[i] - 0x50)
	return c

for i in range(0,len(pattern) * 3):

	op = i / len(pattern)

	c = list(pattern[i % len(pattern)])
	for i in range(3): c[i] *= 0xff
	c = process_color(c, op)

	c = '#%02x%02x%02x' % (c[0], c[1], c[2])
	graph_colors.append(c)

line_colors = list(graph_colors)
line_colors.reverse()

gradient16_colors = []
for i in range(0, 16):
	f = i / 16.
	pi = 3.1415927
	r = max(int(255 * (math.sin(f*pi)+0.2)), 0)
	g = max(int(255 * (math.sin((f-0.5)*pi)+0.2)), 0)
	b = max(int(255 * (math.sin((f+0.5)*pi)+0.2)), 0)
	c = '#%02x%02x%02x' % (min(r, 255), min(g, 255), min(b, 255))
	gradient16_colors.append(c)

gradient18_colors = []
for i in range(0, 18):
	f = i / 18.
	pi = 3.1415927
	r = max(int(255 * (math.sin(f*pi)+0.2)), 0)
	g = max(int(255 * (math.sin((f-0.5)*pi)+0.2)), 0)
	b = max(int(255 * (math.sin((f+0.5)*pi)+0.2)), 0)
	c = '#%02x%02x%02x' % (min(r, 255), min(g, 255), min(b, 255))
	gradient18_colors.append(c)

gradient6_colors = []
for i in range(0, 6):
	f = i / 6.
	c = '#%02x%02x%02x' % (min(int(255 * (-2 * f + 2)), 255), min(int(255 * (2 * f)), 255), 100)
	gradient6_colors.append(c)

def plot_fun(script):
	ret = os.system('gnuplot "%s" 2>/dev/null' % script)
	if ret != 0 and ret != 256:
		print 'system: %d\n' % ret
		raise Exception("abort")

	sys.stdout.write('.')
	sys.stdout.flush()

def gen_report(name, unit, lines, short_unit, generation, log_file, options):
	try:
		os.mkdir(output_dir)
	except: pass

	filename = os.path.join(output_dir, '%s_%04d.png' % (name, generation))
	thumb = os.path.join(output_dir, '%s_%04d_thumb.png' % (name, generation))

	# don't re-render a graph unless the logfile has changed
	try:
		dst1 = os.stat(filename)
		dst2 = os.stat(thumb)
		src = os.stat(log_file)

		if dst1.st_mtime > src.st_mtime and dst2.st_mtime > src.st_mtime:
			sys.stdout.write('.')
			return None

	except: pass

	script = os.path.join(output_dir, '%s_%04d.gnuplot' % (name, generation))
	out = open(script, 'wb')
	print >>out, "set term png size 1200,700"
	print >>out, 'set output "%s"' % filename
	if not 'allow-negative' in options:
		print >>out, 'set yrange [0:*]'
	print >>out, "set tics nomirror"
	print >>out, "set key box"
	print >>out, "set key left top"

	colors = graph_colors
	if options['type'] == line_graph:
		colors = line_colors

	try:
		if options['colors'] == 'gradient16':
			colors = gradient16_colors
		elif options['colors'] == 'gradient6':
			colors = gradient6_colors
		if options['colors'] == 'gradient18':
			colors = gradient18_colors
	except: pass

	if options['type'] == histogram:
		binwidth = options['binwidth']
		numbins = int(options['numbins'])

		print >>out, 'binwidth=%f' % binwidth
		print >>out, 'set boxwidth binwidth'
		print >>out, 'bin(x,width)=width*floor(x/width) + binwidth/2'
		print >>out, 'set xrange [0:%f]' % (binwidth * numbins)
		print >>out, 'set xlabel "%s"' % unit
		print >>out, 'set ylabel "number"'

		k = lines[0]
		try:
			column = keys.index(k) + 2
		except:
			print '"%s" not found' % k
			return
		print >>out, 'plot "%s" using (bin($%d,binwidth)):(1.0) smooth freq with boxes' % (log_file, column)
		print >>out, ''
		print >>out, ''
		print >>out, ''

	elif options['type'] == stacked:
		print >>out, 'set xrange [0:*]'
		print >>out, 'set ylabel "%s"' % unit
		print >>out, 'set xlabel "time (s)"'
		print >>out, 'set format y "%%.1s%%c%s";' % short_unit
		print >>out, 'set style fill solid 1.0 noborder'
		print >>out, 'plot',
		column = 2
		first = True
		graph = ''
		plot_expression = ''
		color = 0
		for k in lines:
			try:
				column = keys.index(k) + 2
			except:
				print '"%s" not found' % k
				continue;
			if not first:
				plot_expression = ', ' + plot_expression
				graph += '+'
			axis = 'x1y1'
			graph += '$%d' % column
			plot_expression = ' "%s" using 1:(%s) title "%s" axes %s with filledcurves y1=0 lc rgb "%s"' % (log_file, graph, k, axis, colors[color % len(colors)]) + plot_expression
			first = False
			color += 1
		print >>out, plot_expression
	elif options['type'] == diff:
		print >>out, 'set xrange [0:*]'
		print >>out, 'set ylabel "%s"' % unit
		print >>out, 'set xlabel "time (s)"'
		print >>out, 'set format y "%%.1s%%c%s";' % short_unit
		column = 2
		first = True
		graph = ''
		title = ''
		for k in lines:
			try:
				column = keys.index(k) + 2
			except:
				print '"%s" not found' % k
				continue;
			if not first:
				graph += '-'
				title += ' - '
			graph += '$%d' % column
			title += k
			first = False
		print >>out, 'plot "%s" using 1:(%s) title "%s" with step' % (log_file, graph, title)
	else:
		print >>out, 'set xrange [0:*]'
		print >>out, 'set ylabel "%s"' % unit
		print >>out, 'set xlabel "time (s)"'
		print >>out, 'set format y "%%.1s%%c%s";' % short_unit
		print >>out, 'plot',
		column = 2
		first = True
		color = 0
		for k in lines:
			try:
				column = keys.index(k) + 2
			except:
				print '"%s" not found' % k
				continue;
			if not first: print >>out, ', ',
			axis = 'x1y1'
			print >>out, ' "%s" using 1:%d title "%s" axes %s with steps lc rgb "%s"' % (log_file, column, k, axis, colors[color % len(colors)]),
			first = False
			color += 1
		print >>out, ''

	print >>out, 'set term png size 150,100'
	print >>out, 'set output "%s"' % thumb
	print >>out, 'set key off'
	print >>out, 'unset tics'
	print >>out, 'set format x ""'
	print >>out, 'set format y ""'
	print >>out, 'set xlabel ""'
	print >>out, 'set ylabel ""'
	print >>out, 'set y2label ""'
	print >>out, 'set rmargin 0'
	print >>out, 'set lmargin 0'
	print >>out, 'set tmargin 0'
	print >>out, 'set bmargin 0'
	print >>out, "replot"
	out.close()
	return script

def gen_html(reports, generations):
	file = open(os.path.join(output_dir, 'index.html'), 'w+')

	css = '''img { margin: 0}
		#head { display: block }
		#graphs { white-space:nowrap; }
		h1 { line-height: 1; display: inline }
		h2 { line-height: 1; display: inline; font-size: 1em; font-weight: normal};'''

	print >>file, '' % css

	for i in reports:
		print >>file, '

%s

%s

' % (i[0], i[3])
		for g in generations:
			print >>file, '' % (i[0], g, i[0], g)
		print >>file, '
'

	print >>file, ''
	file.close()

reports = [
	('torrents', 'num', '', 'number of torrents in different torrent states', ['downloading torrents', 'seeding torrents', \
		'checking torrents', 'stopped torrents', 'upload-only torrents', 'error torrents', 'queued seed torrents', \
		'queued download torrents'], {'type':stacked}),
	('torrents_want_peers', 'num', '', 'number of torrents that want more peers', ['torrents want more peers']),
	('peers', 'num', '', 'num connected peers', ['peers', 'connecting peers'], {'type':stacked}),
	('peers_max', 'num', '', 'num connected peers', ['peers', 'connecting peers', 'max connections', 'total peers']),
	('peer_churn', 'num', '', 'connecting and disconnecting peers', ['connecting peers', 'connection attempts']),
	('new_peers', 'num', '', '', ['incoming connections', 'connection attempts']),
	('connection_attempts', 'num', '', '', ['connection attempt loops', 'connection attempts']),
	('peer_limits', 'num', '', 'number of connections per limit', ['average peers per limit']),
	('pieces', 'num', '', 'number completed pieces', ['total pieces', 'pieces flushed', 'pieces passed', 'pieces failed']),
	('connect_candidates', 'num', '', 'number of peers we know of that we can connect to', ['connect candidates']),
	('peers_list_size', 'num', '', 'number of known peers (not necessarily connected)', ['num list peers']),
	('overall_rates', 'rate', 'B/s', 'download and upload rates', ['uploaded bytes', 'downloaded bytes', 'upload rate', 'download rate', 'smooth upload rate', 'smooth download rate']),
	('disk_write_queue', 'Bytes', 'B', 'bytes queued up by peers, to be written to disk', ['disk write queued bytes']),
	('peers_requests', 'num', '', 'incoming piece request rate', ['piece requests', 'piece rejects', 'max piece requests', 'invalid piece requests', 'choked piece requests', 'cancelled piece requests']),
	('peers_upload_max', 'num', '', 'number of peers by state wrt. uploading', ['peers up interested', 'peers up unchoked', 'peers up requests', 'peers disk-up', 'peers up send buffer', 'peers bw-up', 'max unchoked']),
	('peers_upload', 'num', '', 'number of peers by state wrt. uploading', ['peers up interested', 'peers up unchoked', 'peers up requests', 'peers disk-up', 'peers up send buffer', 'peers bw-up']),
	('peers_download', 'num', '', 'number of peers by state wrt. downloading', ['peers down interesting', 'peers down unchoked', 'peers down requests', 'peers disk-down', 'peers bw-down','num end-game peers']),
	('peer_errors', 'num', '', 'number of peers by error that disconnected them', ['error peers', 'peer disconnects', 'peers eof', 'peers connection reset', 'connect timeouts', 'uninteresting peers disconnect', 'banned for hash failure', 'no memory peer errors', 'too many peers', 'transport timeout peers', 'connection refused peers', 'connection aborted peers', 'permission denied peers', 'no buffer peers', 'host unreachable peers', 'broken pipe peers', 'address in use peers', 'access denied peers', 'invalid argument peers', 'operation aborted peers']),
	('peer_errors_incoming', 'num', '', 'number of peers by incoming or outgoing connection', ['error incoming peers', 'error outgoing peers']),
	('peer_errors_transport', 'num', '', 'number of peers by transport protocol', ['error tcp peers', 'error utp peers']),
	('peer_errors_encryption', 'num', '', 'number of peers by encryption level', ['error encrypted peers', 'error rc4 peers', 'peer disconnects']),
	('incoming requests', 'num', '', 'incoming 16kiB block requests', ['pending incoming block requests', 'average pending incoming block requests']),
	('disk_write_time', 'write time', 's', 'distribution of write jobs timing', ['disk write time'], {'type': histogram, 'binwidth': 0.1, 'numbins': 400}),
	('disk_read_time', 'read time', 's', 'distribution of read jobs timing', ['disk read time'], {'type': histogram, 'binwidth': 0.1, 'numbins': 400}),
	('waste', '% of all downloaded bytes', '%%', 'proportion of all downloaded bytes that were wasted', ['% failed payload bytes', '% wasted payload bytes', '% protocol bytes'], {'type':stacked}),
	('waste by source', 'num wasted bytes', 'B', 'what is causing the waste', [ 'redundant timed-out', 'redundant cancelled', 'redundant unknown', 'redundant seed', 'redundant end-game', 'redundant closing'], {'type':stacked}),
	('average_disk_time_absolute', 'job time', 's', 'running averages of timings of disk operations', ['disk read time', 'disk write time', 'disk hash time']),
	('disk_time', '% of total disk job time', '%%', 'proportion of time spent by the disk thread', ['% read time', '% write time', '% hash time'], {'type': stacked}),
	('disk_cache_hits', 'blocks (16kiB)', '', '', ['disk block read', 'read cache hits'], {'type':stacked}),
	('disk_cache', 'blocks (16kiB)', '', 'disk cache size and usage', ['disk buffer allocations', 'read disk cache size', 'disk cache size', 'cache size', 'pinned blocks', 'cache trim low watermark']),
	('disk_readback', '% of written blocks', '%%', 'portion of written blocks that had to be read back for hash verification', ['% read back']),
	('disk_queue', 'number of queued disk jobs', '', 'queued disk jobs', ['disk queue size', 'disk read queue size', 'allocated jobs', 'allocated read jobs', 'allocated write jobs']),
	('disk_iops', 'operations/s', '', 'number of disk operations per second', ['read ops/s', 'write ops/s', 'smooth read ops/s', 'smooth write ops/s']),
	('disk pending reads', 'Bytes', '', 'number of bytes peers are waiting for to be read from the disk', ['pending reading bytes']),
	('disk fences', 'num', '', 'number of jobs currently blocked by a fence job', ['blocked jobs']),
	('fence jobs', 'num', '', 'active fence jobs per type', ['move_storage', 'release_files', 'delete_files', 'check_fastresume', 'save_resume_data', 'rename_file', 'stop_torrent', 'file_priority', 'clear_piece'], {'type':stacked}),
	('disk threads', 'num', '', 'number of disk threads currently writing', ['num writing threads', 'num running threads']),
	('mixed mode', 'rate', 'B/s', 'rates by transport protocol', ['TCP up rate','TCP down rate','uTP up rate','uTP down rate','TCP up limit','TCP down limit']),
	('connection_type', 'num', '', 'peers by transport protocol', ['utp peers','tcp peers']),
	('uTP delay', 'buffering delay', 's', 'network delays measured by uTP', ['uTP peak send delay','uTP peak recv delay', 'uTP avg send delay', 'uTP avg recv delay']),
	('uTP send delay histogram', 'buffering delay', 's', 'send delays measured by uTP', ['uTP avg send delay'], {'type': histogram, 'binwidth': 0.05, 'numbins': 100}),
	('uTP recv delay histogram', 'buffering delay', 's', 'receive delays measured by uTP', ['uTP avg recv delay'], {'type': histogram, 'binwidth': 0.05, 'numbins': 100}),
	('uTP stats', 'num', '', 'number of uTP sockets by state', ['uTP idle', 'uTP syn-sent', 'uTP connected', 'uTP fin-sent', 'uTP close-wait'], {'type': stacked}),
	('system memory', '', '', 'virtual memory page count', ['active resident pages', 'inactive resident pages', 'pinned resident pages', 'free pages'], {'type': stacked}),
	('memory paging', '', '', 'vm disk activity', ['pageins', 'pageouts']),
	('page faults', '', '', '', ['page faults']),
	('CPU usage', '%', '', '', ['network thread system time', 'network thread user+system time']),
	('boost.asio messages', 'events/s', '', 'number of messages posted per second', [ \
		'read_counter', 'write_counter', 'tick_counter', 'lsd_counter', \
		'lsd_peer_counter', 'udp_counter', 'accept_counter', 'disk_queue_counter', \
		'disk_counter'], {'type': stacked}),
	('send_buffer_sizes', 'num', '', '', ['up 8', 'up 16', 'up 32', 'up 64', 'up 128', 'up 256', \
		'up 512', 'up 1024', 'up 2048', 'up 4096', 'up 8192', 'up 16384', 'up 32768', 'up 65536', \
		'up 131072', 'up 262144', 'up 524288', 'up 1048576'], {'type': stacked, 'colors':'gradient18'}),
	('recv_buffer_sizes', 'num', '', '', ['down 8', 'down 16', 'down 32', 'down 64', 'down 128', \
		'down 256', 'down 512', 'down 1024', 'down 2048', 'down 4096', 'down 8192', 'down 16384', \
		'down 32768', 'down 65536', 'down 131072', 'down 262144', 'down 524288', 'down 1048576'], {'type': stacked, 'colors':'gradient18'}),
	('ARC', 'num pieces', '', '', ['arc LRU ghost pieces', 'arc LRU pieces', 'arc LRU volatile pieces', 'arc LFU pieces', 'arc LFU ghost pieces'], {'allow-negative': True}),
	('torrent churn', 'num torrents', '', '', ['loaded torrents', 'pinned torrents', 'loaded torrent churn']),
	('pinned torrents', 'num torrents', '', '', ['pinned torrents']),
	('loaded torrents', 'num torrents', '', '', ['loaded torrents', 'pinned torrents']),
	('requests', '', '', '', ['outstanding requests']),
	('request latency', 'us', '', 'latency from receiving requests to sending response', ['request latency']),
	('incoming messages', 'num', '', 'number of received bittorrent messages, by type', [ \
		'num_incoming_choke', 'num_incoming_unchoke', 'num_incoming_interested', \
		'num_incoming_not_interested', 'num_incoming_have', 'num_incoming_bitfield', \
		'num_incoming_request', 'num_incoming_piece', 'num_incoming_cancel', \
		'num_incoming_dht_port', 'num_incoming_suggest', 'num_incoming_have_all', \
		'num_incoming_have_none', 'num_incoming_reject', 'num_incoming_allowed_fast', \
		'num_incoming_ext_handshake', 'num_incoming_pex', 'num_incoming_metadata', 'num_incoming_extended' \
	 ], {'type': stacked}),
	('outgoing messages', 'num', '', 'number of sent bittorrent messages, by type', [ \
		'num_outgoing_choke', 'num_outgoing_unchoke', 'num_outgoing_interested', \
		'num_outgoing_not_interested', 'num_outgoing_have', 'num_outgoing_bitfield', \
		'num_outgoing_request', 'num_outgoing_piece', 'num_outgoing_cancel', \
		'num_outgoing_dht_port', 'num_outgoing_suggest', 'num_outgoing_have_all', \
		'num_outgoing_have_none', 'num_outgoing_reject', 'num_outgoing_allowed_fast', \
		'num_outgoing_ext_handshake', 'num_outgoing_pex', 'num_outgoing_metadata', 'num_outgoing_extended' \
	 ], {'type': stacked}),
	('request in balance', 'num', '', 'request and piece message balance', [ \
		'num_incoming_request', 'num_outgoing_piece', \
		'num_outgoing_reject'  \
	 ], {'type': diff}),
	('request out balance', 'num', '', 'request and piece message balance', [ \
		'num_outgoing_request', 'num_incoming_piece', \
		'num_incoming_reject'  \
	 ], {'type': diff}),
#	('absolute_waste', 'num', '', ['failed bytes', 'redundant bytes', 'download rate']),

#somewhat uninteresting stats
	('tick_rate', 'time between ticks', 's', '', ['tick interval', 'tick residual']),
	('peer_dl_rates', 'num', '', 'peers split into download rate buckets', ['peers down 0', 'peers down 0-2', 'peers down 2-5', 'peers down 5-10', 'peers down 50-100', 'peers down 100-'], {'type':stacked, 'colors':'gradient6'}),
	('peer_dl_rates2', 'num', '', 'peers split into download rate buckets (only downloading peers)', ['peers down 0-2', 'peers down 2-5', 'peers down 5-10', 'peers down 50-100', 'peers down 100-'], {'type':stacked, 'colors':'gradient6'}),
	('peer_ul_rates', 'num', '', 'peers split into upload rate buckets', ['peers up 0', 'peers up 0-2', 'peers up 2-5', 'peers up 5-10', 'peers up 50-100', 'peers up 100-'], {'type':stacked, 'colors':'gradient6'}),
	('peer_ul_rates2', 'num', '', 'peers split into upload rate buckets (only uploading peers)', ['peers up 0-2', 'peers up 2-5', 'peers up 5-10', 'peers up 50-100', 'peers up 100-'], {'type':stacked, 'colors':'gradient6'}),
	('piece_picker_invocations', 'invocations of piece picker', '', '', ['reject piece picks', \
		'unchoke piece picks', 'incoming redundant piece picks', \
		'incoming piece picks', 'end game piece picks', 'snubbed piece picks', 'interesting piece picks', 'hash fail piece picks'], \
		{'type':stacked}),
	('piece_picker_loops', 'loops through piece picker', '', '', [ \
		'piece_picker_partial_loops', 'piece_picker_suggest_loops', 'piece_picker_sequential_loops', 'piece_picker_reverse_rare_loops',
		'piece_picker_rare_loops', 'piece_picker_rand_start_loops', 'piece_picker_rand_loops', 'piece_picker_busy_loops'], {'type': stacked}),
	('picker_partials', 'pieces', '', '', ['num downloading partial pieces', 'num full partial pieces', 'num finished partial pieces', \
		'num 0-priority partial pieces'], {'type':stacked}),
	('picker_full_partials_distribution', 'full pieces', '', '', ['num full partial pieces'], {'type': histogram, 'binwidth': 5, 'numbins': 120}),
	('picker_partials_distribution', 'partial pieces', '', '', ['num downloading partial pieces'], {'type': histogram, 'binwidth': 5, 'numbins': 120})
]

print 'generating graphs'
log_file_path, log_file = os.path.split(sys.argv[1])
# count the number of log files (generations)
log_file_list = log_file.split('.')
g = int(log_file_list[1])
generations = []
scripts = []
while os.path.exists(os.path.join(log_file_path, log_file)):
	print '[%s] %04d\r[' % (' ' * len(reports), g),
	for i in reports:
		try: options = i[5]
		except: options = {}
		if not 'type' in options:
			options['type'] = line_graph

		script = gen_report(i[0], i[1], i[4], i[2], g, os.path.join(log_file_path, log_file), options)
		if script != None: scripts.append(script)
	generations.append(g)
	g += 1
	log_file_list[1] = '%04d' % g
	log_file = '.'.join(log_file_list)

	# run gnuplot on all scripts, in parallel
	thread_pool.map(plot_fun, scripts)
	print '' # newline
	scripts = []

print '\ngenerating html'
gen_html(reports, generations)

redpajama_set_name: RedPajamaGithub


Even before seeing Robert Downey Jr.'s awesome performance in Guy Ritchie's film Sherlock Holmes, I had been a fan of the genius detective for some time. For some reason I was always intrigued by Holmes, something about this figure of reasoning and bravery resonating within me. I still consider him to be one of my literary heroes, right alongside Batman. The Hound of the Baskervilles helped bring back some wonderful memories and reinstate my assertion that Holmes is one of the greatest characters in the history of literature.
Doyle has a terribly genius way of writing, providing enough details of the scenery to paint a vivid picture without becoming tedious. He gives the background characters enough development to flesh them out but not so much as to detract from the main focus of the story. I couldn't help feeling myself smile a few times while reading through the interactions of the characters, feeling as if they were people whom I had met and talked with myself. Doyle has the mind of both detective and writer, providing all the necessary facts and data but giving them the perfect literary twist to enhance the enjoyability of the prose.
The moor is the ideal locale for Doyle's story. It provides a misty, mysterious atmosphere, just the kind of place you'd expect hell spawned demons and spirits to be roaming about. It's a primordial place, the swampy land that the earth was composed of at the beginning of time. How fitting is it that such an ancient place carries with it the superstitious beliefs and fears of an older people? The devil hound is a monstrous symbol of those beliefs, the personified (or is it houndified?) image of the gripping terror that seized the hearts of those first civilizations. All those anxieties of death and darkness are imbued in the glowing eyes of the Baskerville hound. Its howl strikes a chord in the souls of the characters who hear it, an eldritch cry that summons all the primitiveness inside of them to the surface.
To combat these forces of evil, Sherlock Holmes serves as our figure of guidance and reasoning. Although Holmes remains in the shadows himself for most of the novel, his impressive presence is the beacon of light that guides Watson through the thick fog that covers the moors and his own mind. The powers of reasoning have arrived to battle the looming shadow of fear and superstition. It is interesting to see how Holmes handles the situation, this being his most mystical of cases. He keeps his mind entirely open to all possibilities; he does not shun the idea of there being a genuinely supernatural presence on the moor, but he is always on the watch for any signs of a human perpetrator. He is the perfect detective, open to all ideas and theories and ready to battle any force, man or monster, when he is called to action. How can you not love a character like that?
Doyle imbues his Sherlock stories with a magic that only he seems to get right, a sense of intriguing mystery that gets me giddy with excitement everytime I read one of his adventures. The mystery is in no short demand in this novel. When one strange incident ends, another picks up after it without losing any steam. A letter is found in Henry's hotel, warning the baronet of imminent danger on the moor. Holmes and Watson spot a bearded stalker tailing Henry in the streets of London shortly afterwards. When Watson arrives at Baskerville Hall, he learns of an escaped convict who is running about the countryside, murder never far from his devious mind. The old butler has a peculiar habit of walking in the halls late at night, as if on some purposeful mission. Just from these examples alone, you can tell that Doyle never allows time for his readers to become bored. You'll find yourself hardly able to put the book down at all, constantly engaged in each moment of the story. If Doyle succeeds in his mission, you'll become so entangled in the goings-on that the mystery of the Baskerville legend will be revealed before you have time to blink.
And what is a good mystery without a barrelful of shady characters to occupy the procedures? Everyone in the story seems to have some type of motive, or at least a suspicious foible, that keeps Watson and the reader guessing as to just what is going on. The butler and his wife seem to be hiding some terrible secret from Watson and Henry, evident in the butler's aforementioned prowlings and his wife's midnight weeping. A naturalist and his sister also live on the moor, a hospitable pair of people who seem to open their home and hearts to any passers-by. But there is an underlying tension between the two, the sister mistakenly taking Watson for Sir Henry and thus imploring him to leave the moor at once before her brother discovers what she has said. The murderous convict on the moor creates a heightened sense of danger. Now with two predatory beasts running about, the chances of a two-way trip along the swamp road seem unlikely. And who could that phantom-like watcher spotted on the tor by the light of the moon be? Doyle is a master of weaving these intricate mysteries, all the while keeping the main story of the Baskervilles intact and completely fascinating.
The Hound of the Baskervilles is just what the detective ordered. Intriguing mystery? Check. Shady characters and dark deeds abound? Affirmative. Moody atmosphere and terrifying monster for the horror fans? You bet. Perhaps the greatest adventure of the world's most superb sleuth? Oh yeah. So put on your deerstalker caps, fill up your pipes, and take out your magnifying glasses for a little examination into a luminary novel of the mystery and horror genres. You'll soon deduce that the reasons behind the book's greatness are simply elementary.
Submitted by Simon Powell on Mon, 2010-06-07 22:48.
"Hound..." is one of my favourite Holmes adventures, but some of the short stories (The Devils Foot, The Sussex Vampire and the Creeping Man are the ones I can think of off the top of my head) also have horror elements, with bizarre deaths, baffling situations and people hysterically crying about the supernatural and demonic possession, until Holmes comes in, coolly dissects the situation and finds a rational solution.
Submitted by Jose Cruz on Tue, 2010-06-08 18:03.
I'm definitely going to have to check those ones out, Simon! Great to see another Holmes fan on the site. Have you read any of the modern Sherlock stories that are out-and-out horror? Particular favorite of mine is "Shadows Over Baker Street" where Holmes faces off the monsters from Lovecraft's Cthulhu Mythos.
Wow! Never heard of those.
Submitted by Simon Powell on Tue, 2010-06-08 23:00.
Wow! Never heard of those. Back in the olden days, as a po-faced teenager, I was sneering and dismissive of anything that wasn't "pure" Holmes (the Jeremy Brett TV adaptions were on at the time, which I felt kind of proved my point), but being a bit more broad-minded nowadays I'll definitely give them a read.
Submitted by RandallS (not verified) on Thu, 2010-06-10 14:57.
Conan Doyle wrote a lot of horror-related fiction, though his best-known work is the Holmes tales. You might want to read the short stories Lot No. 249, The Leather Funnel, or The Horror of the Heights.
Many writers have used the character of Holmes with horror elements, most notably Dracula. Two that immediately come to mind are The Holmes-Dracula file by Fred Saberhagen and Sherlock Holmes vs. Dracula by Estleman.
Finally, the Sherlock Holmes short story The Speckled Band has elements of gothic horror like The Hound of the Baskervilles. A group of Sherlock Holmes experts rated the best Sherlock Holmes stories, and chose it as number one. So if you only have time to read one Conan Doyle story with horror elements, I suggest The Speckled Band.
Submitted by monroevillezombie on Tue, 2010-06-15 09:10.
It may sound kind of lame, but my introduction to Holmes came from seeking out the Moriarty stories after the character appeared on "Star Trek: The Next Generation". This was a time before I was able to check out much classic horror, though, and I was hooked after watching Basil Rathbone in his film version of Hound (which caused me to seek out the novel). It's my favorite of the Holmes stories, although I quite enjoy Neil Gaiman's take on the character in his short story "A Study in Emerald" (which appeared in the previously mentioned Shadows Over Baker Street).
On a side note, I've repeatedly told you how much I enjoy these articles, Jose, but you keep making me more and more of a fan as they go on, especially with you mentioning your love of Batman. Kindred spirits are hard to come by, and I'm proud I've found another! I can't wait to see what you pull out of your sleeve next, my friend!
Submitted by Jose Cruz on Thu, 2010-06-17 19:27.
Randall- I've heard of Doyle's other horror work. I'd like to read some of it some day. I actually have had the pleasure of reading "The Speckled Band" from a volume my college library has. I enjoyed it immensely and can see why people rate it so highly!
Chris- That's certainly an interesting way to have found out about Sherlock, Chris. I'm a huge fan of stories that involve well-known characters crossing universes and encountering each other. I think I'm the only one I know of that enjoyed the film version of The Leage of Extraordinary Gentlemen for that reason.
Great to see that you're a Batman fan as well! I'm really glad you're enjoying the series and I hope that this week's selection will be as entertaining. Wth all of our similar interests, you're definitely awesome in my book.
Submitted by monroevillezombie on Mon, 2010-06-21 10:54.
I actually loved LXG on its own merits. I wrote an article about it on my old movie site a few years ago when it was still out in theatres. I now host it at my blog if you'd like to check it out: "A League of Extraordinary Literary Characters"


text:
Yaakov "Kobi" Lichtenstein (born 1964) is an Israeli-Brazilian master of krav maga who introduced this technique to South America. He is the President of the South American Federation of Krav Maga (FSAKM).

Early life
Lichtenstein was born in 1964 in Rehovot, Israel. He began training in the martial art of krav maga in 1967 under its founder, Imi Lichtenfeld (1910–1998). Lichtenstein began teaching the art at the age of 15. He served for three years in the Israeli Defense Forces, by the end he held a black belt diploma from the Krav Maga Association. He fought in the First Lebanon War (1982).

Brazil
Lichtenstein arrived in Brazil on 18 January 1990, appointed by Lichtenfeld to introduce his martial art to South America. He has written at least three books on krav maga, including Krav Maga: A filosofia da defesa Israelense (Krav Maga: The Philosophy of the Israeli Defense) and Krav Maga: Sua defesa pessoal contra a violência urbana (Krav Maga: Your self-defense against urban violence). In January 1996, Lichtenfeld promoted Lichtenstein to the rank of 6th dan in krav maga.

In March 2009, Lichtenstein received the Tiradentes Medal. On 15 May 2009, he received the Pedro Ernesto Medal in recognition of his service to krav maga in Brazil. Lichtenstein lives and teaches krav maga in Rio de Janeiro, Brazil.

In the middle of 2011, Lichtenstein was granted an 8th dan red belt by Haim Zut and Uri Refaeli from the Krav Maga Federation.

References

Living people
1964 births
Krav Maga practitioners
People from Rehovot
Brazilian Jews
Brazilian male mixed martial artists
Sportspeople from Rio de Janeiro (city)
Israeli emigrants to Brazil
Israeli Jews

redpajama_set_name: RedPajamaWikipedia


Fluid hires the best cleaners, supervisors and managers in the industry, and we are looking for more. Our staff turnover is significantly below the industry average because of the investment we make in our people.
Fluid employs a diverse workforce from 37 countries around the World. If you identify with our commitment to excellence, we would like to hear from you.
Ensuring that our staff are legally entitled to work in the UK and are competent to tackle all required tasks, particularly from a Health and Safety perspective, is of primary importance to us.
Fluid Hygiene is fast growing company with contracts in England, Scotland, Wales. We specialise in cleaning of all commercial premises. We are currently looking for employees who would like to join our team. We guarantee full training, contract and paid holidays.
Fluent English is not required, however understanding English could lead to progress and opportunity within our management team. Having a driving licence will be beneficial.
To apply for any of our positions, please complete the application form here > apply for a job at Fluid Hygiene online.


text:
Q: What are the best practices to generate "widgetized" content in Rails On my previous projects built with usage of Zend Framework I extensively used Zend_view's "Action View" helper. It basically allows to initiate a separate cycle of request->dispatch ti action->view_rendering from a view script.
Here is the link to an appropriate page of zend framework reference guide (search for "Action View Helper").
This helper is quite a convenient way to work with widgetized content for example on pages with portal layout where you can stuff a page with different widgets (like advertising blocks, currency informers etc).
Although such an approach negatively affects response time of the page as it involves a lot of additional routing/dispatching activity, it allows to organizes widget code and views scripts into a rational structure. One widget is just a controller action, with linked view script.
Unfortunatelly, I have not found any similar view helpers in Rails.
Is there any way to elegantly solve this task in Rails?

A: In Rails, the render method of ActionController takes a Hash as arguments and outputs a simple string.  You can use this in your view like so:
<%= render :partial => "shared/widgets/_#{widget.widgettype.name}", :collection => @current_user.widgets %>

In this case Rails will iterate through the list of @current_user.widgets, find a widget partials in "app/views/shared/widgets/_widgettypename.html.erb", and call the partial for each attached widget.
For further reading on Rails partials, see the ActionView::Partials documentation.

A: It seems that I've found an answer to my questions myself. It is "render_component" rails plugin. There is also a fork which apparently supports Rails3.

redpajama_set_name: RedPajamaStackExchange


during my trip through the united states back in may i did a little video diary-like recording every here and there and out came a mini-series of videos i edited for my other blog travelettes. can you spot the bloggers in this video of a wild night out in nyc?
one night out in new york city from katja hentschel on Vimeo.


After finding the final piece to substantiate the "theory of everything," what's left?
Plenty, says UNL physicist Aaron Dominguez. He leads a multi-institutional collaboration to upgrade a vital component of the world's largest supercollider that has helped answer fundamental questions about the nature of the universe, including finding the Higgs boson.
With a nearly $11.5 million National Science Foundation grant, a team of UNL physicists and collaborators at eight U.S. universities are improving the sensitivity of the Compact Muon Solenoid, one of two large particle detector experiments at the Large Hadron Collider at the CERN laboratory in Switzerland.
Capturing images of the explosion that occurs when superfast-moving protons collide requires a powerful digital camera, or pixel detector. UNL is building new modules for the pixel detector capable of taking 40 million images a second at a total resolution of more than 120 million pixels. Consumer digital cameras top out at about 12 million pixels. The images are used to create a movie of the particles' paths in less than 10-micron increments.
The Higgs boson, whose discovery was announced in 2012, was the last missing piece predicted by the Standard Model, a theoretical framework that explains the fundamental structure of matter in the universe. Though often called the "theory of everything," the model is far from complete, leaving out phenomena such as gravity, dark matter and dark energy, Dominguez said.
UNL's Holland Computing Center also is one of seven U.S. CMS Tier-2 sites in the Worldwide Large Hadron Collider Computing Grid that process and store data from this massive research project. In addition to Dominguez, UNL's high-energy physics team includes physicists Ken Bloom, Dan Claes, Ilya Kravchenko, Greg Snow and Holland Computing Center director David Swanson.


text:
Kenny Taylor- Guitar and Lead Vocals
Kenny has been teaching guitar, mandolin, ukulele and lap steel for more than 25 years. He toured extensively both nationally and internationally with his rockabilly band, the Blue Moon Boys, getting the chance to open for such guitar legends as Bo Diddley, James Burton, Dick Dale, Link Wray, Brian Setzer, and many others.
Kenny also played lead guitar with Indiana rock legends Carl Storie (The Faith Band) and Chris Shaffer (The Why Store) with their solo projects. He is a BMI affiliated songwriter whose songs have been recorded by rockabilly greats Ronnie Dawson , Hillbilly Casino, and singer songwriters Chris Shaffer,Jeff McDonald and Mark Thatcher. Kenny has played on recording sessions with Billy Lee Riley, Larry Donn, James House, Danny Flowers, Dave Roe, Donnie Herron, Brent Mason and many others. Last winter he was chosen to play lead guitar for Rock and Roll Hall of Fame member Wanda Jackson at a concert in Denver Colorado.
Currently, Kenny teaches at Sweetwater Academy and occasionally does session work at Sweetwater Studios and coaches at Sweetwater's Rock Camp, which is aimed at kids between the ages of 12 and 18. Kenny recently unleashed a group of 11 to 15 year olds called "Beatle 63 Lab Band", playing only songs the Beatles recorded in 1963. He is also working with an educational children's music ukulele duo called "The Atomic Sharks".
Kenny says "I've known Wayne for over 30 years and Bernie and Phil over twenty. I've always been a fan of the band and am honored to play in a band with such a rich history. The music of the 50's and 60's has always been my favorite and I enjoy the opportunity to take it to the stage with the Bulldogs".
Kenny Bio Photo
Ducktail Run