When programming, we try to solve problems performing step-by-step operations. And a self-contained set of operations is an algorithm. However, there can be various algorithms to solve a same problem. For instance, we will look into three different ways to put elements of a list in a certain order, i.e., to sort a list. I will describe, implement (in Ruby), and demonstrate each algorithm to sort an array of numbers in ascending order.
BUBBLE SORT is a simple sorting algorithm. The algorithm iterates through the array. It compares each pair of adjacent numbers, and swap them if the first value is greater than the second value. Each iteration pass will "bubble" the greater number towards the end of the array. We keep repeating until no swaps have occurred on the last pass, i.e., sorted.
def bubble_sort(array)
if array.length > 1
sorted = false
# loop until array is sorted
while !sorted
sorted = true
# iterate through array
for index in (0..array.length-2)
# compare if first value greater than second value
if array[index] > array[index+1]
# set sorted to false if swap occurs
sorted = false
# swap values
number_to_swap = array[index]
array[index] = array[index+1]
array[index+1] = number_to_swap
end
end
end
end
return array
end
The bubble sort algorithm performs decently well on small sets, but performance degrades as sets get larger. The downside of the bubble sort is that small numbers towards the end of the array will slow down the sort as the algorithm has to move them one-by-one all the way to the front of the array. Please find below some sample performance tests run with bubble sort.
time_start = Time.now
bubble_sort([2, 8, 9, 0, 6, 5, 7, 4, 3, 1])
time_bubble = Time.now
puts "*** Bubble sort of small array in #{time_bubble - time_start} seconds ***"
# => *** Bubble sort of small array in 1.9e-05 seconds ***
time_start = Time.now
bubble_sort(array_with_1000_numbers)
time_bubble = Time.now
puts "*** Bubble sort of large array in #{time_bubble - time_start} seconds ***"
# => *** Bubble sort of large array in 0.105054 seconds ***
MERGE SORT breaks down an array until it can reconstruct the set by merging sorted sub-sets. The algorithm recursively breaks down the array into smaller sub-sets until each number is its own array, i.e., sorted. Then, it creates the sorted array by merging successively the smaller sub-sets in an orderly fashion.
# merge two arrays in orderly fashion (from smaller to greater number)
def merge(left, right)
index_left = 0
index_right = 0
result = []
# iterate through both arrays to add sorted numbers to new array
while index_left < left.length && index_right < right.length
if left[index_left] <= right[index_right]
result << left[index_left]
index_left += 1
else
result << right[index_right]
index_right += 1
end
end
# add remaining sorted numbers from one array to new array
if (index_left < left.length) then
for index in (index_left..left.length-1)
result << left[index]
end
else
for index in (index_right..right.length-1)
result << right[index]
end
end
return result
end
def merge_sort(array)
if array.length > 1
# break down recursively the array into smaller sub-sets
half = array.length / 2
left = array[0..half-1]
right = array[half..array.length-1]
sorted_left = merge_sort(left)
sorted_right = merge_sort(right)
# merge smaller sorted sub-sets in orderly fashion (from smaller to greater number)
sorted_array = merge(sorted_left, sorted_right)
return sorted_array
else
return array
end
end
The speed of the merge sort comes from the fact that it is easy to merge a sorted list with another already sorted list. It performs decently well on larger sets. Please find below the same performance tests run with merge sort.
time_start = Time.now
merge_sort([2, 8, 9, 0, 6, 5, 7, 4, 3, 1])
time_merge = Time.now
puts "*** Merge sort of small array in #{time_merge - time_start} seconds ***"
# => *** Merge sort of small array in 1.9e-05 seconds ***
time_start = Time.now
merge_sort(array_with_1000_numbers)
time_merge = Time.now
puts "*** Merge sort of large array in #{time_merge - time_start} seconds ***"
# => *** Merge sort of large array in 0.002174 seconds ***
QUICK SORT selects an element in the array called the pivot, moves all the values less than the pivot to before the pivot, and all the values greater than the pivot to after the pivot. After each pass, the pivot value is in the correct place in the set, even if the values before and after the pivot are not in the correct order. Then, this process is recursively repeated for the smaller sub-sets (lesser and greater than the pivot value) until the entire array is sorted.
def quick_sort(array)
if array.length > 1
# select pivot
pivot_index = array.length / 2
pivot_value = array[pivot_index]
lesser = []
equal = []
greater = []
# push all values less than pivot to lesser, and all values greater than pivot to greater
array.each do |number|
if number < pivot_value
lesser << number
elsif number == pivot_value
equal << number
else
greater << number
end
end
# repeat recursively for smaller sub-sets (lesser and greater)
sorted_array = quick_sort(lesser) + equal + quick_sort(greater)
return sorted_array
else
return array
end
end
Quick sort is a pretty fast and efficient algorithm. Please find below the same performance tests run with quick sort.
time_start = Time.now
quick_sort([2, 8, 9, 0, 6, 5, 7, 4, 3, 1])
time_quick = Time.now
puts "*** Quick sort of small array in #{time_quick - time_start} seconds ***"
# => *** Quick sort of small array in 1.3e-05 seconds ***
time_start = Time.now
quick_sort(array_with_1000_numbers)
time_quick = Time.now
puts "*** Quick sort of large array in #{time_quick - time_start} seconds ***"
# => *** Quick sort of large array in 0.000401 seconds ***
Even if quick sort seems to be the better algorithm out of the three, it is important to note that choosing a good pivot element is key, as consistently poor choices of pivots can result in drastically slower performance, but good choice of pivots (median value for instance) yields optimal performance. In Ruby, array#sort does leverage the quick sort algorithm, and performs far better because of its pivot selection. Please find below the same performance tests run with array#sort.
time_start = Time.now
[2, 8, 9, 0, 6, 5, 7, 4, 3, 1].sort
time_ruby = Time.now
puts "*** Ruby sort of small array in #{time_ruby - time_start} seconds ***"
# => *** Ruby sort of small array in 3.0e-06 seconds ***
time_start = Time.now
array_with_1000_numbers.sort
time_ruby = Time.now
puts "*** Ruby sort of large array in #{time_ruby - time_start} seconds ***"
# => *** Ruby sort of large array in 5.8e-05 seconds ***


She is a woman roaming Portland. Some say she's mysterious. Others argue mischevious. But what is it that ignites her?
| Sad & Lo-Fi :: | Ryhthm and Bluesy :: | Hip Hop Beats |
|---|---|---|
| Kina | Snoh Aalegra | Russ |
| Omarr | Billie Eilish | Jack Harlow |
| Snow | Jacob Banks | Childish Gambino |


Facebook
Mailing List
RSS Feed
Twitter
YouTube
Members of NSBE receive numerous benefits including free software from MSDNAA, networking with companies, and
various conventions held throughout the region and continent.
Join NSBE Today!
NSBE Members with a paid membership are entitled to FREE software from Microsoft, including Windows 7, through the MSDN Academic Alliance (MSDNAA).
This website was created and maintained by Kenny R., UA NSBE Telecommunications Chair.


| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
| 9D | POPF | NP | Valid | Valid | Pop top of stack into lower 16 bits of EFLAGS. |
| 9D | POPFD | NP | N.E. | Valid | Pop top of stack into EFLAGS. |
| 9D | POPFQ | NP | Valid | N.E. | Pop top of stack and zero-extend into RFLAGS. |
| Op/En | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
| NP | NA | NA | NA | NA |
Pops a doubleword (POPFD) from the top of the stack (if the current operand-size attribute is 32) and stores the value in the EFLAGS register, or pops a word from the top of the stack (if the operand-size attribute is 16) and stores it in the lower 16 bits of the EFLAGS register (that is, the FLAGS register). These instructions reverse the operation of the PUSHF/PUSHFD instructions.
The POPF (pop flags) and POPFD (pop flags double) mnemonics reference the same opcode. The POPF instruction is intended for use when the operand-size attribute is 16; the POPFD instruction is intended for use when the operand-size attribute is 32. Some assemblers may force the operand size to 16 for POPF and to 32 for POPFD. Others may treat the mnemonics as synonyms (POPF/POPFD) and use the setting of the operand-size attribute to determine the size of values to pop from the stack.
The effect of POPF/POPFD on the EFLAGS register changes, depending on the mode of operation. When the processor is operating in protected mode at privilege level 0 (or in real-address mode, the equivalent to privilege level 0), all non-reserved flags in the EFLAGS register except RF1, VIP, VIF, and VM may be modified. VIP, VIF and VM remain unaffected.
When operating in protected mode with a privilege level greater than 0, but less than or equal to IOPL, all flags can be modified except the IOPL field and VIP, VIF, and VM. Here, the IOPL flags are unaffected, the VIP and VIF flags are cleared, and the VM flag is unaffected. The interrupt flag (IF) is altered only when executing at a level at least as privileged as the IOPL. If a POPF/POPFD instruction is executed with insufficient privilege, an exception does not occur but privileged bits do not change.
When operating in virtual-8086 mode, the IOPL must be equal to 3 to use POPF/POPFD instructions; VM, RF, IOPL, VIP, and VIF are unaffected. If the IOPL is less than 3, POPF/POPFD causes a general-protection exception (#GP).
In 64-bit mode, use REX.W to pop the top of stack to RFLAGS. The mnemonic assigned is POPFQ (note that the 32bit operand is not encodable). POPFQ pops 64 bits from the stack, loads the lower 32 bits into RFLAGS, and zero extends the upper bits of RFLAGS.
See Chapter 3 of the Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 1, for more information about the EFLAGS registers.
IF VM = 0 (* Not in Virtual-8086 Mode *) THEN IF CPL = 0 THEN IF OperandSize = 32; THEN EFLAGS ← Pop(); (* 32-bit pop *) (* All non-reserved flags except RF, VIP, VIF, and VM can be modified; VIP and VIF are cleared; RF, VM, and all reserved bits are unaffected. *) ELSE IF (Operandsize = 64) 1. RFLAGS = Pop(); (* 64-bit pop *) (* All non-reserved flags except RF, VIP, VIF, and VM can be modified; VIP and VIF are cleared; RF, VM, and all reserved bits are unaffected.*) ELSE (* OperandSize = 16 *) EFLAGS[15:0] ← Pop(); (* 16-bit pop *) (* All non-reserved flags can be modified. *) FI; ELSE (* CPL > 0 *) IF OperandSize = 32 THEN IF CPL > IOPL THEN EFLAGS ← Pop(); (* 32-bit pop *) (* All non-reserved bits except IF, IOPL, RF, VIP, and VIF can be modified; IF, IOPL, RF, VM, and all reserved bits are unaffected; VIP and VIF are cleared. *) ELSE EFLAGS ← Pop(); (* 32-bit pop *) (* All non-reserved bits except IOPL, RF, VIP, and VIF can be modified; IOPL, RF, VM, and all reserved bits are unaffected; VIP and VIF are cleared. *) FI; ELSE IF (Operandsize = 64) IF CPL > IOPL THEN RFLAGS ← Pop(); (* 64-bit pop *) (* All non-reserved bits except IF, IOPL, RF, VIP, and VIF can be modified; IF, IOPL, RF, VM, and all reserved bits are unaffected; VIP and VIF are cleared. *) ELSE RFLAGS ← Pop(); (* 64-bit pop *) (* All non-reserved bits except IOPL, RF, VIP, and VIF can be modified; IOPL, RF, VM, and all reserved bits are unaffected; VIP and VIF are cleared. *) FI; ELSE (* OperandSize = 16 *) EFLAGS[15:0] ← Pop(); (* 16-bit pop *) (* All non-reserved bits except IOPL can be modified; IOPL and all reserved bits are unaffected. *) FI; FI; ELSE IF IOPL = 3 THEN IF OperandSize = 32 THEN EFLAGS ← Pop(); (* All non-reserved bits except VM, RF, IOPL, VIP, and VIF can be modified; VM, RF, IOPL, VIP, VIF, and all reserved bits are unaffected. *) ELSE EFLAGS[15:0] ← Pop(); FI; (* All non-reserved bits except IOPL can be modified; IOPL and all reserved bits are unaffected. *) ELSE (* IOPL < 3 *) #GP(0); FI; FI; FI;
All flags may be affected; see the Operation section for details.
| #SS(0) | If the top of stack is not within the stack segment. |
| #PF(fault-code) | If a page fault occurs. |
| #AC(0) | If an unaligned memory reference is made while the current privilege level is 3 and alignment checking is enabled. |
| #UD | If the LOCK prefix is used. |
| #SS | If the top of stack is not within the stack segment. |
| #UD | If the LOCK prefix is used. |
| #GP(0) | If the I/O privilege level is less than 3. If an attempt is made to execute the POPF/POPFD instruction with an operand-size override prefix. |
| #SS(0) | If the top of stack is not within the stack segment. |
| #PF(fault-code) | If a page fault occurs. |
| #AC(0) | If an unaligned memory reference is made while alignment checking is enabled. |
| #UD | If the LOCK prefix is used. |
Same as for protected mode exceptions.
| #GP(0) | If the memory address is in a non-canonical form. |
| #SS(0) | If the stack address is in a non-canonical form. |
| #PF(fault-code) | If a page fault occurs. |
| #AC(0) | If alignment checking is enabled and an unaligned memory reference is made while the current privilege level is 3. |
| #UD | If the LOCK prefix is used. |


--- layout: post authors: ["Greg Wilson"] title: "Interim Board Meeting: Nov 4, 2014" date: 2014-11-04 time: "19:30:00" tags: ["Governance"] ---
Software Carpentry Foundation Interim Board Meeting: Nov 4, 2014
Attending
Apologies
Actions
Board: mext meeting on Tue Nov 18 (same time unless Doodle poll finds a better one).
Board: vote on bylaws/funding model at Nov 18 meeting.
Board: add all funding/partnership leads to funding
directory of board_pvt
repository with details of what is being offered by end of business on Friday Nov 7 2014.
GW to separate the list of current funding proposals into "immediate action" vs. "those that require confirmation of partnership/revenue model".
GW/JB: sort out ownership of funding repository.
Unresolved
Board agreed to discuss roles and responsibilities of Board members at next meeting, but nobody was assigned to draft.
GW would like to begin talking to several potential partners (list included below), but meeting ended before this could be discussed.
Resolutions
See executive-director.md
in public board
repository.
Greg provisionally accepts conditional on agreement on SCF by-laws
See board-chair.md
in public board
repository.
Neil accepted on the provision that it is the chair of the interim board.
See mission-statement.md
in public board
repository.
The acronym "SCF" will be used for the Software Carpentry Foundation.
See issue-escalation.md
in public board
repository.
Note: wording "on an Etherpad" in original text has been replaced by "in the Git repository and by email", since we're moving away from Etherpads (see below).
Documents for discussion will be managed through the Git repository rather than through Etherpads, and conversations will be managed through GitHub issues.
Discussion
Good faith.
Yes.
The Board requested more time to comment on the three-tier model for partnership, and committed to voting at the next meeting on Nov 18.
The board requested more time to comment on the revenue sharing model for workshops, and committed to voting at the next meeting on Nov 18.
Define/vote on roles and responsibilities of board members.


About
Projects
Profile
Contacts
Prepared. Commited. Dependable.
// Web Designer:
HTML, CSS.
// Web Developer:
PHP, nodeJS, Python, MySQL.
Mwalimu Nyerere Tribute Page
Survey Form
Products Landing Page
Technical Specification Page
Lets Create A Work Plan For Your Project.


Triangle Tracker
triangle tracker is an app that helps you to know the type of trianle that you want
Types of triangles
scalene triangle
Equilateral triangle
Isosceles triangles
length
Width
Height
TRY OUT!
Clear


Creates case clauses within a pattern match for each possible subclass of a sealed type, or for each member of a Java enumeration.


From thuglife to huglife
Whosyabuddha drops hip hop flavored wisdom for those who give him physical love.
Give it a try
So if you pay us a visit, take anything with a RFID-chip, for example an OV-chipkaart (Dutch public transport card), with you and we can scan it to connect it to your Twitter-account. If you’re not nearby mention him on Twitter and he well send you some digital karma.
Because we know everybody wants to be like Whosyabuddha we have put his 3D printed rings on Thingiverse so you can download and print them yourself.


Hello world
Depend on Sponge plugins hosted on Ore
Repository:
https://orepack.com
GroupId:
com.orepack.$PluginAuthor
ArtifactId:
$PluginId
Version:
$PluginVersion


All Classes
App
AppConf
AppRunner
ArtifactRepository
CsvReaderWriter
DataMaker
DebugHelper
Denormalizer
DenormilizationDataMaker
MissingValuesImputer
NetworkEvaluator
NetworkMaker
SchemaWrapper
SubmissionApp
SubmissionDataMaker
SubmissionMaker
SubmissionSchemaWrapper
SubmissionTransformCreator
TrainDataMaker
TrainerApp
TrainSchemaWrapper
TrainTransformCreator
TransformCreator


{% extends "base.html" %} {% block content %}
({{leaderboard.start.date}} - {{leaderboard.end.date}})
github repo link: {{leaderboard.repo_url}}
Owner: {{leaderboard.owner}}
Refresh {% if request.user == leaderboard.owner and not leaderboard.closed %} Manage Participant Manage Leaderboard Close if Ended {% endif %}| Rank | Username | Commits |
|---|---|---|
| {{forloop.counter}} | {{entry.user}} | {{entry.total}} |


Publisher Subscriber Public API This Module contains the Publisher Subscriber Layer created to facilitate the use of the RTPS protocol. More...
Modules | |
| Fast RTPS Attributes Module. | |
| Attributes class used to define the public entities that the user should use to control this library. | |
Namespaces | |
| eprosima::fastrtps | |
| Contains the publisher subscriber layer. | |
Classes | |
| class | Domain |
| Class Domain, use to interact with the Publisher Subscriber API of the Fast RTPS implementation. More... | |
| class | Participant |
| Class Participant used to group Publishers and Subscribers into a single working unit. More... | |
| class | ParticipantDiscoveryInfo |
| Class ParticipantDiscoveryInfo, provided to the user with information regarding a Discovered Participant. More... | |
| class | ParticipantListener |
| Class ParticipantListener, overrides behaviour towards certain events. More... | |
| class | Publisher |
| Class Publisher, used to send data to associated subscribers. More... | |
| class | PublisherListener |
| Class PublisherListener, allows the end user to implement callbacks triggered by certain events. More... | |
| class | SampleInfo_t |
| Class SampleInfo_t with information that is provided along a sample when reading data from a Subscriber. More... | |
| class | Subscriber |
| Class Subscriber, contains the public API that allows the user to control the reception of messages. More... | |
| class | SubscriberListener |
| Class SubscriberListener, it should be used by the end user to implement specific callbacks to certain actions. More... | |
| class | TopicDataType |
| Class TopicDataType used to provide the DomainRTPSParticipant with the methods to serialize, deserialize and get the key of a specific data type. More... | |
Publisher Subscriber Public API This Module contains the Publisher Subscriber Layer created to facilitate the use of the RTPS protocol.


A quick introduction
Down with spaghetti code templates!Blade is a server side templating engine included with Laravel. It's purpose is to provide cleaner method of creating reusable templates.
Simple make a php file with the extenstion .blade.php
Blade is PHP and can be used with regular PHP templates.
The basics.
//standard php echo
<?php echo $variable; ?>
//check if variable is set and provide default if not
<?php
if(isset($variable)){
echo $variable;
} else {
echo 'Other';
}
?>
//alternative ternary variable check
<?php echo (isset($variable)? $variable : else 'Other'); ?>
//echo variable
{{ $variable }}
//check if varible is set and provide default if not
{{ $variable or 'Other' }}
Much cleaner!
//standary php
<?php echo htmlentities($variable); ?>
//blade version
{{{ $variable }}}
// standard php
<?php
if($variable == 1) {
//do something
} elseif ($variable == 2) {
//do something else
} else {
//do something by default
}
?>
// blade
@if ($variable == 1)
//do something
@elseif ($variable == 2)
//do something else
@else
//do something by default
@endif
Ever had code like this?
<?php if ($variable == 'ugly'): ?>
Ugly code is <?php echo $variable; ?>
<?php elseif ($variable == 'sthap'): ?>
It's getting worse isn't it?
Please <?php echo $variable; ?>
<?php else: ?>
Is it over yet?
<?php endif; ?>
<?php
if ($variable == 'ugly') {
echo " Ugly code is ". $variable . "
";
} elseif ($variable == 'sthap') {
$output = "It's getting worse isn't it?";
$output .= "Please {$variable}
";
echo $output;
} else {
echo "Is it over yet?
";
}
?>
@if ($variable == 'cleaner')
So much {{ $variable }}
@elseif ($variable == 'slimmer')
This is so much {{ $variable }}
@else
Yay!
@endif
Alternative checking for false
@unless ($variable)
Oops! Something went wrong.
@endunless
// for loop
@for ($i = 0; $i <= 5; $i++)
{{ $i }}
@endfor
//foreach
@foreach ($listItems as $item)
{{ $item->content }}
@endforeach
//while loop
@while (true)
...
@endwhile
Basically an @unless and @foreach combined
@forelse($listItem as $item)
{{ $item->value }}
@empty
No items
@endforelse
Cleaner in my opinion
@unless($listItem)
No items
@else
@foreach($listItem as $item)
- {{ $item->value }}
@endforeach
@endunless
$items = Array (
[0] => stdClass Object ( [name] => 'first' )
[1] => stdClass Object ( [name] => 'second' )
)
//index.blade.php
@each('eachTest', $items, 'item', 'noItems')
//eachTest.blade.php
{{$item->name}}
//result
first
second
If there were no $items it would call the noItems.blade.php template defined as the last parameter in the @each call
//noItems.blade.php
no result
This step is optional.
@include('header')
some content
@include('footer')
Exciting right? </sarcasm>
Passing data from one view to another
//newsList.blade.php
{{ $news }}
//notNews.blade.php
@include('newsList', array('news' => 'testing'))
//result
testing
Ok, but what if we don't want hundreds of templates with includes to maintain?
one template to rule them all
//master.blade.php
@yield('content')
// index.blade.php
@extends('master')
@section('content')
Body content
@stop
Used to identify the parent template.
//result
Body Content
The output from calling the view index.blade.php
// mainNav.blade.php
// privatenav.blade.php
@extends('mainNav')
@section('navigation')
private link
@stop
// privatenav.blade.php output
If we didn't define a @section('navigation') on privatenav.blade.php then it would default to the content provided in mainNav.blade.php
// privatenav.blade.php appending onto the default content
@section('navigation')
@parent
private link
@stop
// privatenav.blade.php output
// master.blade.php has a section called content
@extends('master')
@section('content')
First Section
@stop
@section('content')
Second Section
@append
//output
First Section
Second Section
// master.blade.php has a section called content
@extends('master')
@section('content')
First Section
@stop
@push('content')
Second Section
@endpush
//output
First Section
Second Section
// app/views/first.blade.php
First
@yield('message')
@yield('final')
// app/views/second.blade.php
@extends('first')
@section('message')
Second
@yield('message')
@stop
// app/views/third.blade.php
@extends('second')
@section('message')
@parent
Third
@yield('message')
@stop
// app/views/fourth.blade.php
@extends('third')
@section('message')
@parent
Fourth
@stop
@section('final')
Fifth
@stop
First
Second
Third
Fourth
Fifth
Using anything we've learned so far write down a master template on a sheet of paper.
You have 4 minutes.
<html>
<head>
Site name - @yield('title')
@yield('meta')
@section('css')
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<link rel="stylesheet" href="site.css">
@show
</head>
<body>
@yield('content')
@yield('footer')
@section('scripts')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<script src="site.js"></script>
@show
</body>
</html>
Presentation ideas for the future:


--- layout: post title: Knitting frenzy date: 2009-06-02 13:06:11.000000000 +02:00 categories: [] tags: [] status: publish type: post published: true meta: _edit_last: '5236424' author: login: stricksucht email<EMAIL_ADDRESS>display_name: stricksucht first_name: '' last_name: '' ---
Well, well, well...
I have to confess, my schedule didn't quite work out. It did at first, but when I was down to only 14 or 15 more pattern repeats I started to see the light at the end of the tunnel and brought myself to two pattern repeats. And then I did three, so I had the center panel finished by Saturday. I immediately started with the edging and - oh, boy! - these 640 stitches I had to pick up? They gave me a serious headache, with all the counting and miscounting and recounting and miscounting again... And knitting them all for four rounds? Oh, don't get me started...
I was ready to begin with the actual edging by yesterday and guess what? I've already finished one of the short sides and the corresponding corner. And now I'm thinking about buying a wooden circular needle because I feel the metal circular I'm using is too heavy for the stole. Phew...


How to use NGINX as a reverse-proxy server for a Node.js application using socket.io
Despite the long name of the article, I have a feeling this may apply to more people than I might think.
If you have a Node.js application which needs socket.io connections that you want to pass throgh nginx’s reverse_proxy
directive then this is the article for you!
You must seperate the socket.io sockets and the static resources.
- The socket connections can be routed through the default
$host/socket.io
if you want to ease modifications to the source code. - The connections to your main npm Node.js application can be routed through the relevant directory.
Here is the relevant part of my projects.tait.tech.conf
file:
location /socket.io { proxy_pass http://localhost:8080/socket.io/; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; } location /ttrpg { proxy_pass http://localhost:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
Explaination:
For this application,
I needed the /ttrpg
directory to connect to my main Node.js instance. This was going to be the root of a ttrpg project.
It was to have static files served form my Node.js application.
I also needed /socket.io
to conenct to my running npm
instance.
When I tried to route all the traffic through the /trrpg
location directive
I had no luck whatsoever;
$host/ttrpg/socket.io/*
calls always failed with a 404.
Having two seperate blocks forwarding in different ways seems to fix this. I am not knowledgable enough to understand how.
For now, the project is alive!!!
Happy hacking!
P.S. I forgot to mention I also symbolically linked the socket.io.js
file (that node is supposed to serve automatically) to the static client dir.
For some reson the node instance would not serve this file without that.
$ pwd /home/user/ttrpg.co/client $ ln -s ../server/node_modules/socket.io-client/dist/socket.io.js .
Happy hacking 2.0!


| Class | Description |
|---|---|
| ClientMain |
The main application class.
|
| ClientUI |
The abstract client UI class.
|
| ConnectionUI |
The client connection UI.
|
| LearningUI |
The client learning UI.
|
| LearnResult |
The learn result computed by the server.
|
| PlotData |
The data used for the scatter plot.
|
| PlotUI |
The result plotter UI.
|
| ResultUI |
The client result UI.
|
| SeriesData |
The plot series data.
|
| Exception | Description |
|---|---|
| ServerException |
Server Exception class.
|


[Movement ]
Move your mouse cursor to the spot to which you want to move and
left-click
. Then, you will be moved to that location.
Exit the Tutorial


Football: Atletico denied top spot after Costa misfires from spot
SEVILLE, Spain: Diego Costa squandered a penalty as Atletico Madrid missed the chance to go top of La Liga on Saturday by drawing 1-1 away to Sevilla and failing to cash in on Barcelona's surprise defeat at Levante earlier in the day.
Sevilla went ahead with a header from Franco Vazquez in the 28th minute and Atletico coach Diego Simeone shook up his side in search of a reaction, sending on Costa and Santiago Arias at the start of the second half.
Costa netted a header shortly after coming on but a VAR review ruled it out for offside against Angel Correa, although Alvaro Morata did manage to equalise with a header soon after, on the hour mark.
Atletico did benefit from the technology being used later in the game when they were given a penalty instead of a free kick as replays showed Koke had been tripped just inside the area.
But Costa failed to make the most of the golden opportunity as Sevilla goalkeeper Tomas Vaclik guessed correctly to beat away the ball and also kept out a shot on the rebound from Koke.
Atletico spurned two glorious chances to snatch all three points in stoppage time as Morata saw a shot blocked on the line by Sevilla's Jules Kounde, prompting a goal-mouth scramble which led to Morata committing a foul.
Visiting midfielder Thomas Partey had one last stab at finding a winner from inside the area but his goal-bound shot was deflected wide.
Atletico have now drawn half of their 12 league games and are third in the standings on 21 points, with Barca top on 22 with a game in hand despite their 3-1 loss at Levante.


Chippa to halt league pacesetters Chiefs?
Cape Town - Chippa United will have a tough task on their hands as they welcome Absa Premiership pacesetters Kaizer Chiefs to the Nelson Mandela Bay Stadium on Wednesday.
The Chilli Boys have yet to taste a victory after nine league matches this season and sit rock bottom in the standings on four points.
Chippa can take heart from their performance on Sunday even though it was a Telkom Knockout clash.
The team from Port Elizabeth were in the lead twice against Mamelodi Sundowns before eventually playing to a 2-2 draw and lost the match on penalties.
Amakhosi, meanwhile, will be aiming to keep up their perfect away record this campaign which has seen them take 12 points from their four matches on road.
The Soweto giants do though come off a gruelling derby against Orlando Pirates in which they prevailed on penalties and might have an eye already on the weekend.
The second Soweto derby in the space of seven days will take place on Saturday and some Chiefs players might just be caught thinking too far ahead and Chippa might see a chance to sneak something.
The game kicks off at 19:30 at the Nelson Mandela Bay Stadium on Wednesday.
- TeamTalk Media


Survey Questions
Make sure to fill ALL the fields to find your baller friend
Question 1
I like competition and being around competitive people
Question 2
I would rather travel than stay at home on my vacation time
Question 3
I like to spend time with people that are energetic and extroverted
Question 4
I am interested in the deep meaning of things
Question 5
I enjoy playing sports and going to sporting events
Question 6
I enjoy going to concerts
Question 7
I enjoy going to art museums and anything related to the fine arts
Question 8
I like to plan out hangouts instead of doing things on impulse
Question 9
I like to message my friends often
Question 10
I like to spend time in the outdoors
Your new baller friend is...


crewrosterlite
Classes
Client
ClientRecords
Crew
CrewRecords
CrewRosterLiteApp
CrewWeekRoster
DocumentHelper
Event
Job
JobRecords
Person
Enums
Event.EventType
Specialties


1. OVERVIEW
The Bitnami Project was created to help spread the adoption of freely
available, high quality, open source web applications. Bitnami aims to make
it easier than ever to discover, download and install Open Source software
such as document and content management systems, wikis and blogging
software.
You can learn more about Bitnami at https://bitnami.com
Bitnami LAMP stack is an easy to install and easy to use open source Web
Platform. It combines leading open source projects, such as Apache, MySQL
and PHP with BitRock's extensive open source expertise to provide a consistent,
painless way to deploy LAMP in any Linux environment.
You can learn more about Bitnami stacks at https://bitnami.com/stacks/
You can also add applications on top of this stack like WordPress, Drupal, Joomla!,
and more. You can download the Bitnami module for any of these applications
and install on top of your LAMP installation. That way, all of the Bitnami-packaged
applications you want to run will share a single instance of Apache, MySQL and PHP
which will save space and improve performance.
You can learn more about installing modules at
https://docs.bitnami.com/?page=infrastructure&name=lamp§ion=how-can-i-add-applications-on-top-of-lamp
2. FEATURES
- Easy to Install
Bitnami stacks are built with one goal in mind: to make it as easy as
possible to install open source software. Our installers completely automate
the process of installing and configuring all of the software included in
each stack, so you can have everything up and running in just a few clicks.
- Independent
Bitnami stacks are completely self-contained, and therefore do not interfere
with any software already installed on your system. For example, you can
upgrade your system's MySQL or Apache Tomcat without fear of 'breaking' your
Bitnami stack.
- Integrated
By the time you click the 'finish' button on the installer, the whole stack
will be integrated, configured and ready to go.
- Relocatable
Bitnami stacks can be installed in any directory. This allows you to have
multiple instances.
3. COMPONENTS
Bitnami LAMP stack ships with the following software versions:
- Apache 2.4.34
- MySQL 5.7.23
- PHP 7.1.21
- PHPMyAdmin 4.8.2
- AWS SDK for PHP 1.6.2
- Varnish(TM) 4.1.0
- ImageMagick 6.9.8
- SQLite 3.18.0
- ModSecurity 2.6.7
- Libraries for Couchbase 2.0.5
- Git 2.17.1
Optional components:
- Zend Framework 3.0.3
- Symfony <IP_ADDRESS>
- CodeIgniter 3.1.9
- CakePHP 3.6.10
- Smarty 3.1.32
- Laravel 5.6.33
You can find a quick start guide and more documentation about all of the
components at:
http://docs.bitnami.com/?page=infrastructure&name=lamp
4. REQUIREMENTS
To install Bitnami LAMP stack you will need:
- Intel x86 or compatible processor
- Minimum of 256 MB RAM
- Minimum of 150 MB hard drive space
- An x86 Linux operating system
- TCP/IP protocol support
5. INSTALLATION
The Bitnami LAMP stack is distributed as a binary executable installer.
It can be downloaded from:
https://bitnami.com/stacks/
The downloaded file will be named something similar to:
bitnami-lampstack-7.1.21-0-linux-installer.run on Linux or
bitnami-lampstack-7.1.21-0-linux-x64-installer.run on Linux 64 bit.
You can install Bitnami LAMP stack in graphical, text and unattended modes.
By default the graphical mode will be used.
On Linux, you will need to give it executable permissions:
chmod 755 bitnami-lampstack-7.1.21-0-linux.run
You will be greeted by the 'Welcome' screen.
The next step is to select the installation directory. The default installation
path will be a folder on your home directory if you are running the installer as
a regular user, or /opt/lampstack-7.1.21-0, if you are running the
installation as root. If the destination directory does not exist, it will be
created as part of the installation.
After selecting the installation directory you will be asked for the password
to the initial MySQL root and anonymous accounts. This password cannot be empty.
The default listening port for Apache is 8080 and for MySQL is 3306. If those
ports are already in use by other applications, you will be prompted for
alternate ports to use. Remember that if you plan to run both applications as a
regular user you should select port numbers above 1024.
You are now ready to begin the installation, which will start when you press
'Next'.
Once the installation process has been completed, you will see the 'Installation
Finished' page.
If you receive an error message during installation, please refer to the
Troubleshooting section.
The rest of this guide assumes that you installed Bitnami LAMP stack in
/home/user/lampstack-7.1.21-0 and that you use port 8080 for Apache and 3306 for MySQL.
6. STARTING AND STOPPING BITNAMI LAMP STACK
To enter to your application you can point your browser to
http://<IP_ADDRESS>:8080/
To start/stop/restart application you can use a graphical management tool
called 'manager-linux.run'. Double-click on that file or start it from a
command line:
./manager-linux.run
You can also use the command line ctlscript.sh utility:
./ctlscript.sh (start|stop|restart)
./ctlscript.sh (start|stop|restart) mysql
./ctlscript.sh (start|stop|restart) apache
start - start the service(s)
stop - stop the service(s)
restart - restart or start the service(s)
If you selected an alternate port during installation, for example 18080, the
URL will look like:
http://<IP_ADDRESS>:18080/
7. RUNNING COMMANDS IN A CONSOLE
Bitnami console is a script that loads environment variables that need
to be present when using many of the command line tools included in
the stack, such as mysql, php or openssl.
All of the Native Installers for Bitnami Stacks are completely self-contained
and run independently of the rest of the software or libraries installed
on your system. For this to work, certain environment variables need
to be configured properly. Before running any stack command line tool, you
should start the "Bitnami console" to setup the environment. For example
to check the MySQL or PHP version.
On Linux or OS X, you have to start a Terminal and run the following commands
into your installation directory:
./use_lampstack
php -v
mysql -Version
On Windows, you can start the Bitnami console from the Start Menu:
Start -> Program Files -> Bitnami WAMP Stack -> Use WAMP Stack
php -v
mysql -Version
8. DIRECTORY STRUCTURE
The installation process will create several subfolders under the main
installation directory:
manager-linux.run: Graphical tool to manage the servers easily
ctlscript.sh: Script to manage the servers
uninstall: Uninstaller
use_lampstack: Script to load the stack environment
apache2/: Apache Web server.
php/: PHP Scripting Language.
mysql/: MySQL Database.
common/: common libraries.
varnish/: Varnish(TM) cache server (disabled by default)
sqlite/: SQLite database server
licenses/: Licenses of the components included in LAMP stack.
frameworks/: PHP frameworks selected during the installation
docs/: Documents for creating a custom application
apps/
phpMyAdmin/: Management tool for MySQL
9. CREATING AN EXAMPLE
In the doc/ folder you can find two examples to start working with
Bitnami LAMP stack. Take a look at the docs/README.txt file to know
how to create your own PHP application.
10. TROUBLESHOOTING
You can find a quick start guide and more documentation about all of the
components at:
http://docs.bitnami.com/?page=infrastructure&name=lamp
In addition to the resources provided below, we encourage you to post your
questions and suggestions at:
https://community.bitnami.com
We also encourage you to sign up for our newsletter, which we'll use to
announce new releases and new stacks. To do so, just register at:
https://bitnami.com/newsletter.
10.1 Installer
# Installer Payload Error
If you get the following error while trying to run the installer from the
command line:
"Installer payload initialization failed. This is likely due to an
incomplete or corrupt downloaded file"
The installer binary is not complete, likely because the file was
not downloaded correctly. You will need to download the file and
repeat the installation process.
# Installer execution error on Linux
If you get the following error while trying to run the installer:
"Cannot open bitnami-lampstack-7.1.21-0-linux.run: No application suitable for
automatic installation is available for handling this kind of file."
In some operatings systems you can change permissions with right click
properties -> permissions -> execution enable.
Or from the command line:
$ chmod 755 bitnami-lampstack-7.1.21-0-linux.run
11. LICENSES
Apache Web Server is distributed under the Apache License v2.0, which
is located at http://www.apache.org/licenses/LICENSE-2.0
MySQL is distributed under the GNU General Public License v2, which is
located at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
phpMyAdmin is distributed under the GNU General Public License v2, which is
located at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
PHP and related libraries are distributed under the PHP License v3.01,
which is located at http://www.php.net/license/3_01.txt
SQLite has been dedicated to the public domain by the authors, which is located at
http://www.sqlite.org/copyright.html
Varnish(TM) is distributed under the FreeBSD license, which is located at
https://www.varnish-cache.org/trac/browser/LICENSE
curl is distributed under the Curl License, which is located at
http://curl.haxx.se/docs/copyright.html
expat is distributed under the MIT License, which is located at
http://www.jclark.com/xml/copying.txt
gd is distributed under the gd License, which is located at
http://www.boutell.com/gd/manual2.0.33.html
IMAP is distributed under the University of Washington Free-Fork
License, located at http://www.washington.edu/imap/legal.html
jpegsrc is distributed under The Independent JPEG Group's JPEG
software license, which is located at
http://dev.w3.org/cvsweb/Amaya/libjpeg/README?rev=1.2
libiconv is distributed under the Lesser General Public License
(LGPL), located at http://www.gnu.org/copyleft/lesser.html
ImageMagick has its own license, which is located at
https://www.imagemagick.org/subversion/ImageMagick/trunk/LICENSE
OpenSSL is released under the terms of the Apache License, which is
located at http://www.openssl.org/source/license.html
Zlib is released under the zlib License (a free software license/compatible
with GPL), which is located at http://www.gzip.org/zlib/zlib_license.html
OpenLDAP is released under OpenLDAP Public License, which is located at
http://www.openldap.org/devel/cvsweb.cgi/~checkout~//LICENSE?rev=1.24
Freetype is released under The Freetype Project License, that is located at
http://freetype.sourceforge.net/FTL.TXT
ModSecurity is released under the GNU General Public License v2, which is
located at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html


This document is the specification for Leaf's region file format. The format is defined by a combination of textual and ADL descriptions. A more formal definition of ADL can be found in the adl file.
The region file format is represented through a multitude of files or entries in a hierarchical structure. This may be a directory, a zip archive, or anything similar that can store named binary blobs. In any case, the container must have a meta.lisp
entry at its toplevel. If the meta.lisp
entry is missing or malformed, the packet is considered invalid.
The meta.lisp
entry must contain data as follows, encoded in standard s-expression format.
file: [ header, information ]
header: {
identifier: symbol,
version: symbol
}
information: {
name: symbol,
author: string,
version: string,
description: string,
preview: _pathname
}
The identifier
must always be the symbol leaf:region
. The version
in the header
must be a symbol designating a subclass of leaf:version
.
The preview
, if not null
, must name an entry in the packet.
The contents of the packet otherwise are version dependent. The following subsections define the format for each version.
v0
The packet must contain an entry named data.lisp
at the top level. The contents are encoded in standard s-expression format with the following data structure.
scene: ( { type: entity } )
type: ( symbol )
entity: ( player | chunk | instance )
player: {
location: vector
}
chunk: {
name: symbol,
location: vector,
size: vector,
background: asset,
tileset: asset,
layers: [ pathname ]
}
instance: {
class: symbol,
initargs: [ initarg ]
}
initarg: [ symbol, T ]
asset: {
pool: symbol,
name: symbol
}
vector: {
x: real,
y: real
}
Each of the pathname
s in the data must point to an entry in the packet.


This script is related to "The Phlow" described in detail in A Praqmatic Workflow
It provides the various features that are required to support all user scenarios of the Phlow.
Praqma, 2017, www.praqma.com
M.I.T.
Use the issue system in the repo
git phlow <command> [options] [arguments]
git phlow --man|--usage
All options can be shortend to their shortest unambigious form and you can use one or two dashes in front of options, as your temper prefers - we don't care.
E.g. -u
can substitute --usage
.
The valid phlow commands are listed below.
phlow addremove
phlow defaultbranch
phlow issuebranch issue
phlow web [--issue number]
phlow mkalias [--force]
workon issue [--force]
sync [--force]
The following switches are accepted by all commands:
--verbose
List's all commands that are passed on to the shell - quite noisy, but useful if you wann learn what's happening under the hood
--usage
Give detailed help to each individual command.
The script is helping implementing the git gymnastics required both as an end user and on the CI servers to support "the Phlow".
The most simple use of it is to clone the repo to your PC, and then link the perl folder to a directory that is in your $PATH
like this:
git clone https://github.com/Praqma/the-phlow.git
ln -s ./the-phlow/perl ~/opt/phlow
and then add /Users/you/opt/phlow
to your $PATH
in .zshrc
or .bashrc
or what ever you are using.

You can even make the into 'native' git commands by running the commands
git phlow mkalias
Then you will be able to execut the same commands as
git addremove
git workon
...
git phlow web [[--issue] number]
--issue number
number
number
is an integer refering to a GitHub issue in the context of the current repository. The number can be omitted. It will default to the issue number of your current branch context.
Hell, even the switch can be ommitted, so you can apply the number just as an argument.
Opens your current context in a web browser. If you are on an issue branch, or your apply an issue number in the switch, it take you directly to the corresponding issue on GitHub. Otherwise it will take you to the repo's web site.
addremove
Doesn't take any parametes.
It's implementing Mercurials command of the same name. It simply synchronizes your current work tree with the index; It adds the files you have added or modified and removes the files that you may removed.
defaultbranch
Doesn't take any parametes.
Returns the default branch. This is a setting on the GitHub repository.
git phlow mkalias [--force]
--force
force
is required if an alias already exist with the same name, and the configuration to set is different to the one that there already is. In other words using mkalias
without force, is guaranteed to be non intrusive to your git config setup.
Creates the aliases foreach phlow command. Which will enable you to use the flow commands as native git commands:
git workon 3
Instead of the full length phlow command:
git phlow workon 3
It will not overwrite existing aliases with clashing names unless you apply --force
git phlow sync [--force]
--force
force
is reqiured if the rebase is causing a merge conflict to managed manually. In other words using sync
without force is guaranteed to either synchronize yor branch successfully - or do nothing.
Sync operates in the context of the currently checked out branch.
Sync will rebase against the branch your are tracking remotely, if's guranteed to be safe. If fast-forwards if it can, if a merge is needed, then it will dry-run it and see if can be done without merge conflicts.
If a mege conflict is unavoidable you will be warned.
If you run with --force
it will continue into the rebase, even if causes a conflict - and you will have to resolve it yourself.
But in short - sync
is guarantted to be safe as long as you don't use the --force
switch.
issuebranch issue
issue
Issue is refering to the issue number of an issue on GitHub, in the context of your current repository.
Takes an integer as argument and returns the branch name, that will be used for that issue, based on it's current title.
workon issue [--force]
--force
Will force a rebase even if it leads to a merge conflict. It's teh same force as describe in git phlow sync
.
Takes an integer as argument - refering to the issue numner on GitHub issues. It will create a working branch for that issue and check it out.
If a reusable branch exist then it will rename it, check it out and synchronize it. Reusabel branches are any of the following
<issue_branch_name>
shared/<issue_branch_name>
delivered/<issue_branch_name>
If more reusable brances exists, then --force
is required, for anything to happen. The branch to reuse is the first one found in the order listed above.
workon
can be used to all swapping to and from ongoing work - even work that is shared (parked) or work that is already delivered and needs to be reobtrained.
If a reusable branch is found, then it is synced with is't remote (see gitp hlow sync
). The synce is guaranteed to on be carreid out if it's free of merge conflicts. To continue into the merge conflict, --force
is required.


Inspired by the 52 Hike Challenge, I am taking my own approach, by going on a “saunter” on a different trail averaging one for every week of 2020. These hikes will be summarized in a table below with links to the route on tracking software sites, in case you are interested in taking your own saunter along those trails. If you are curious about why I use the term saunter, instead of hike, it comes from a quote by John Muir, who also preferred the term saunter (see the About page for details).
| Date | Park | Trail |
|---|---|---|
| 01-Jan-20 | Marsh Creek State Park | White Trail |
| 05-Jan-20 | Wissahickon | Carpenter’s Woods Trails |
| 11-Jan-20 | Wissahickon | Towanda>White>Lavender |
| 12-Jan-20 | Delaware Water Gap | Mt Minsi via AT |
| 15-Jan-20 | Wissahickon | Kitchens Lane>White>Orange |
| 19-Jan-20 | Hopewell FurnaceNHS/French Creek State Park | Lenape Trail to Mill Creek Trail Loop |
| 26-Jan-20 | Hickory Run SP | Shades of Death |
| 03-Feb-20 | Hickory Run SP | Skyline>Fireline from Hickory Run |
| 08-Feb-20 | Nolde Forest SP | Nolde Forest Trail |
| 16-Feb-20 | Wissahickon in Suburbs | Green Ribbon Trail - GA Stadium to Thompson Dam Crossing |
| 01-Mar-20 | Wissahickon Park | Orange Trail to White Trail |
| 03-Mar-20 | Camelback Mountain | Cholla Trail |
| 15-Mar-20 | Schuylkill Center for Environmental Education | Ravine and Gray Fox Trails Loop |
| 18-Mar-20 | Crow’s Nest Preserve/SGL-43 | Yellow to SGL-43 Trail |
| 27-Mar-20 | Wissahickon Park | Bells Mill>Houston Meadow>Houston Deer Exclosure |
| 29-Mar-20 | John Heinz National Wildlife Refuge | John Heinz Lake Loop |
| 06-Apr-20 | Ft. Washington State Park | Militia Hill South to Philly Cricket Club |
| 12-Apr-20 | Ft. Washington State Park | Flourtown Day Area>Stenton>Militia Hill |
| 22-Apr-20 | Ft. Washington State Park | Militia Hill North to WVWA HQ |
| 29-Apr-20 | Pennlyn Natural Area | Wiss Green Ribbon-Ambler to Plymount Rd. |
| 05-May-20 | Timoney Preserve | WGRT - Plymouth Rd to Merck Crossing |
| 13-May-20 | Parkside Place Park | North Terminus of the Green Ribbon Trail |
| 17-Jun-20 | Audubon Center | Mill Grove Loop |
| 14-Jul-20 | Treweryn Farm Trail | Treweryn Farm Trail |
| 16-Jul-20 | Fairmount Park | Trolley Trail |
| 25-Jul-20 | State Game Land 13 | North Mountain - Lower Trails |
| 20-Aug-20 | French Creek SP | Turtle, Boone and Ridge Trail Loop |
| 26-Aug-20 | Blue Marsh Lake | Lake Border Trail |
| 24-Sep-20 | Pennypack Park | Pennypack North Trail |
| 01-Oct-20 | Ridley Creek SP | Ridley Creek Full White Trail Loop |
| 22-Oct-20 | Swatara Creek SP/SGL-211 | Appalachian Trail: Swatara Gap to Rausch Shelter |
| 23-Oct-20 | SGL-211 | AT: Rausch Gap to Just Beyond SGL-221 |
| 24-Oct-20 | Swatara Creek SP | AT: SGL-211 Border to Swatara Gap |
| 08-Nov-20 | Worlds End State Park | Cold Run Extended Loop Trail |
| 09-Nov-20 | Ricketts Glen State Park | Old Beaver Dam Road Trail |
| 10-Nov-20 | Ricketts Glen State Park | Grandview Trail with Spur to SP Boundary |
| 28-Nov-20 | Wissahickon Park | Jannette St TH > Hermit’s Cave >Forbidden Dr |


Create a Review Letter
Project Address or Parcel ID:
Subdivision:
Applicant Name:
Applicant Title:
Applicant Company:
Applicant Address:
Applicant city, state and zip:
Project Name:
Approved:
Grading Permit Required:
Franchise Agreement Required:
Stormwater Detention Applicable:
Retaining Wall:


Green
= no issue,
Yellow
= minor issue ,
Red
= major issue.


Inspired by this post, I tried to develop an app using the MVVM architecture pattern.
This architecture pattern presents three different parts:
A View
A Model
A ViewModel
The view is the responsible of interact with the UI. In iOS is de UIView and UIViewController classes. The Model represent the data to be managed. An the ViewModel becomes an interactor between Model and View. But the special thing is how thos interactor is managed by the View.
The ViewModel must declare a variable for each data that must be showed in the View. Then the View must declare a observer of the variable. This observer is invoked everytime the variable change, and then the View must present the new value to the user. Like the following code example:
Declaring a ViewModel this way we must design a concrete class for each View. This class must declare every data that the View requires. The ViewModel can preprocess every data before present it: like translate text, compound mixed strings(name, surname), change meassurament units, etc.
ViewModel can be also responsible for controlling navigation of the Views.
The benefits of this design are:
Separate responsabilities. View can be the only responsible of managing the UI.
Testability. Separating the Model from the View using a third class is the best way to test any of both without the other.
I tried this achitecture in an app, and I really liked it.
Improvement
Instead of creating one didChangeXXXXXX method for every property in the ViewModel, create one method didChange as an map of mehtods and use an enum as the index of the map.


Before Change
def _owns(self, target, path):
if target not in self._filemap:
files = self._filemap[target]
files_owned_by_target = (target.sources_relative_to_buildroot() if target.has_sources()
else [])
// TODO (tdesai): This case to handle resources in PythonTarget.
// Remove this when we normalize resources handling across python and jvm targets.
if target.has_resources:
for resource in target.resources:
full_resource_path = os.path.join(target.payload.sources_rel_path, resource)
files_owned_by_target.append(full_resource_path)
for owned_file in files_owned_by_target:
files.add(owned_file)
return path in self._filemap[target]
class Workspace(AbstractClass):
After Change
def _owns(self, target, path):
if target not in self._filemap:
self._filemap[target] = set(target.sources_relative_to_buildroot())
return path in self._filemap[target]


{% extends 'base.html' %} {% load static %} {% block title_block %}Login{% endblock %} {% block main_content %}
You are currently logged in as {{ user.username }}.
To log in a different user, first log out.
(I'm here by mistake, take me to the homepage).


Elijah representes the prophetic tradition of Carmel and is an inspiration to live in the presence of God, seeking him in solitude and silence with zeal for God's glory. The Secular Carmelites live the propheticdimension of Christian life and Carmelite spirituality by promotig God;s law of charity and truth in the world, above all by making themselves the voice of those who cannot, on their own, express this love and this truth.
Constitution, Washington Province of the Immacualte Heart of Mary Discalced Carmelite Secular Order.


Welcome to the Quotinator
-------------------------
Type "quote" into the program to receive a quote. To tweet the last quote received type "tweet". You can type "help" for a full list of commands or go to the start menu and view the readme.txt file
X:\Quotinator>
Welcome to Quotinator v1.0 readme.txt
-------------------------------------
You can click anywhere on the console program to type commands.
Accepted commands are:
Quote -- Displays a random quote to the console window
Tweet -- Opens an external page to tweet the last quote received (you do not have to be logged on to access this functionality)
Help -- Displays the help menu (similar to this readme)
Info -- Contains info about the quotinator program
-------------------------------------
About the Quotinator:
The quotinator was developed by Dylan Parker in response to a FreeCodeCamp.com project. It's sole purpose is to provide the user with random quotes and give them the ability to share those quotes via twitter.
-------------------------------------


Domain name is the name that is used to identify a computer/server...
Read MoreIP address is the unique address used to identify a device on internet...
Read MoreHTTP, Hypertext Transfer Protocol, is the protocol used for transmitting data...
Read More


Path To Becoming A Dev - BP
"Start by doing what's necessary; then do what's possible; and suddenly you are doing the impossible"
- Francis of Assisi
I had been working at an Aerospace MFR company for the past 7 years and I was starting to grow weary. Felt stuck. Every day it was the same thing over and over again. That repetition. Felt unchallenged and bored. Needed a change!
Friend suggested I look into programming to see if I would like it. Started to learn the basics of a couple languages and their frameworks. Started doing nothing else but learning how to code. I was hooked!
Fast forward a few months, and I'm about to attend a programming bootcamp to hone my skills in what could be the biggest decision of my life. Nervous and excited. Big changes! Dreaming big!


This is an example of a HTML5 form using required and validate attributes. Back to User Agent Man HTML5 Forms article
required
validate
Thank you for giving to the Zoltan Hawryluk Entertainment Fund. Your contribution will ensure that Webmasters in Need will be able to buy beer when they would otherwise do without.
Form fields labelled are mandatory


The purpose of the specific web app is to randomly show recorded speeches to annotators, in order to choose the corresponding recording class.
How to use:
First you have to log in, if you have not already singed up, in order to know the annotator's profile.
Then, you have to hear a randomly selected audio and you have to provide the class
that better describes the current audio.
The more audio you annotate, the better dataset is made.
{% endblock %}


Google Earth Enterprise Documentation Home | Fusion resources and projects
Manage mosaics with virtual rasters
When you have large data sets of imagery or terrain resources, importing them into Fusion can be inefficient and lead to gaps between data tiles. GEE provides a tool, gevirtualraster
, which is ideal for grouping blocks (or subsets) of contiguous imagery or terrain and creating a virtual mosaic from them.
In the following example, this SRTM 90meter terrain data set has over 14,476 source files.
This example of a large set of terrain data presents three potential ways to import all large data sets of source files:
- Create one resource for all source TIF tiles. This data processing is inefficient as Fusion must fill all missing data between source terrain tiles (oceans).
- Create one terrain resource per tif file (14, 476 in total). This data processing is inefficient and introduces feather gaps between terrain resources due to no overlap between source files.
- Group the 14,476 files into virtual mosaics enabling you to select which files are grouped into mosaics.
The most efficient method of grouping tiles into virtual mosaics is to use gevirtualraster
, a command line tool that lets you access the tile groups directly, making your mosaic management very flexible. Gevirtualraster
validates that each source file has geographic coordinates and that all files are consistent projections, number of bands, and band formats.
Overview
A virtual mosaic or virtual raster file is a simple text file that describes a mosaic of peer raster files with the following elements:
- Projection parameters (all peers with same projection)
- Coordinate location of the overall raster (sum of parts)
- Pixel dimensions
- Band count and format (3 x 8 bit vs. 1 x 8 bit)
- File path of all included source files
Fusion can display the virtual raster file in Preview for simple visualization.
Fusion can also use the virtual raster file as source.
Note: Gevirtualraster
is necessary if you are creating a custom mask file for the imagery or terrain resource as there is a software requirement of one source file for one custom mask file. See Create custom masks.
Example Usage
This end-to-end example uses gevirtualraster
to create a new Fusion resource from a set of 800+ contiguous imagery resources (jpeg2000) with consistent pixel size, projection, etc.
- List the jpeg2000 files that are to be used for the virtual mosaic:
$ ls -l *.tif | wc -l
863
0,0,0 = black
), the name of the file to be generated (my_virtualmosaic_20140624_1.khvr
), and include all of the .tif
files in the current folder as input.
$ gevirtualraster --fill 0,0,0 --tolerance 3 -o my_virtualmosaic_20140624_1.khvr *.tif
$ my_virtualmosaic_20140624.kip
.
gerasterimport --imagery my_virtualmosaic_20140624_1.khvr -o my_virtualmosaic_20140624.kip
$ gemaskgen --mask --band 1 --fill 0 --tolerance 3 --feather 100 my_virtualmosaic_20140624_1.kip my_virtualmosaic_20140624_1-mask.tif
.kmp
folder. Corresponding .kip
and .kmp
folders should be stored in the same directory.
$ gerasterimport --alphamask my_virtualmosaic_20140624_1-mask.tif --imagery my_virtualmosaic_20140624_1.kip --output my_virtualmosaic_20140624_1.kmp
$ genewimageryresource -o Resources/Imagery/candid_my_virtualmosaic_20140624_1 /gevol/src/candid/my_virtualmosaic_20140624_1/my_virtualmosaic_20140624_1.kip
$ gebuild Resources/Imagery/candid_my_virtualmosaic_20140624_1
Creating a virtual raster from a file list
You can create a virtual raster of all source files stored in a test file using the gevirtualraster --filelist
option:
$ gevirtualraster --fill 0,0,0 -o /gevol/src/imagery/example/example-mosaic-list.khvr --filelist /gevol/src/imagery/example/source-files.txt
The file list must include one column of filenames and the full path of each source file must be included in the file list.
Gevirtualraster command line options
Various options are available to facilitate the creation of virtual raster files, including specifying the band values to be used as fill, tolerance values for the fill, and a file list of the source imagery or terrain files.
gevirtualraster [--crop pixelx,pixely,pixelx,pixelh] [--fill a,b,...] [--src override_srs] [--tolerance num] [--validate] -o output.khvr {sourcefile ... | --filelist file}
Example
gevirtualraster --fill 0,0,0 -o /gevol/src/imagery/usa/XX/new_location/all_files.khvr/gevol/src/imagery/usa/
XX/new_location/*.tif
Parameters
| Header | Header |
|---|---|
--crop pixelx,pixely,pixelx,pixelh |
Optional. Crop the image to the specified pixel extents. |
--fill a,b,... |
Optional. Specify band values to use as fill. |
--src override_srs |
Optional. Specify the SRS. |
--tolerance num |
Optional. Specify the tolerance to be applied to the fill. The default is 0. |
--validate |
Optional. Validate the inputs and exit. |
-o output.khvr |
Required. Specify the name of the output file, which must have the |
sourcefile |
Required. Specify the path and file name of the source file for the resource. You can reference any network-available source file as this value. (Optional if you specify |
--filelist file |
Optional. Specify the path and file name of a file that contains a list of source files that you want to include in the resource. You can use this option, list files individually, or use a combination of the two. |
Splitting large virtual raster mosaics
If you create larger virtual raster mosaics, you may want to split them into smaller subsets. You can use the gesplitkhvr
command line tool to automatically split large .khvr
mosaics into subsets by specifying the number of rows and columns.
gesplitkhvr [--rows num] [--cols num] [--overlap num] [--quiet] input.khvr
The gesplitkhvr
command creates two or more source files from a large imagery or terrain source file to reduce the size of each source file to under 80 GB in raw size. (Raw size = number of pixels width * number of pixels height * 3.) This tool produces a grid of image files designated as rows and columns.
Example
gesplitkhvr --rows 4 --cols 4 --overlap 10 image_file.khvr
Parameters
| Header | Header |
|---|---|
--rows num |
Required. Specify the number of resulting image files across. |
--cols num |
Required. Specify the number of resulting image files high. |
--overlap num |
Optional. Specify the number of pixels of overlap between the resulting images. The default is 300. |
--quiet |
Optional. Do not display the progress messages in the terminal window. |
input.khvr |
Required. Specify the name of the input file. It must be a |


BERKSHIRE HATHAWAY INC.
3555 Farnam Street
Omaha, NE 68131
Official Home Page
- A Message From Warren E. Buffett
- Annual & Interim Reports Updated August 7, 2015
- Special Letters From Warren & Charlie RE:Past, Present and Future
- Link to SEC Filings
- Links to Berkshire Subsidiary Companies
- Corporate Governance
- Owner's Manual
- Letters from Warren E. Buffett Regarding Pledges to Make Gifts of Berkshire Stock
- News Releases Updated August 10, 2015
- Warren Buffett's Letters to Berkshire Shareholders Updated February 28, 2015
- Charlie Munger's Letters to Wesco Shareholders
- Annual Meeting Information
- Celebrating 50 Years of a Profitable Partnership (A commemorative book first sold at the 2015 Annual Meeting and now for sale on eBay.)
- Comparative Rights and Relative Prices of Class A and B Stock Updated January 20, 2010
- Berkshire Activewear
FOR A FREE CAR INSURANCE RATE QUOTE THAT COULD SAVE YOU SUBSTANTIAL MONEY
WWW.GEICO.COM OR CALL 1-888-395-6339, 24 HOURS A DAY
If you have any comments about our WEB page, you can either write us at the address shown above or e-mail us at<EMAIL_ADDRESS>However, due to the limited number of personnel in our corporate office, we are unable to provide a direct response.
Copyright © 1978-2015 Berkshire Hathaway Inc.


The Window Menu
-
* * * * *
- window titles...
Open Outline
In the font view this will open outline views on all selected glyphs (if there are more than 15 or so it will ask whether you really meant to do that).
In the bitmap view it will open an outline view on the current glyph.
In the metrics view it will open an outline view on whatever glyph is active.
This menu item is always grey in an outline view.
Note: It is possible to have more than one window displaying the same glyph. Any editing that occurs in one should be reflected in all.
Open Bitmap
In the font view this will open bitmap views on all selected glyphs (if there are more than 15 or so it will ask whether you really meant to do that). If the font view is displaying a bitmap then it will open a bitmap view showing that pixelsize, otherwise it will pick a pixelsize.
In the outline view it will open a bitmap view on the current glyph. It will pick a pointsize.
In the metrics view it will open an outline view on whatever glyph is active, as with the font view, if it is displaying a bitmap it will use its pixelsize, otherwise it will pick a pixelsize.
This menu item is always grey in an bitmap view.
Note: It is possible to have more than one window displaying the same glyph. Any editing that occurs in one should be reflected in all.
Open Metrics
In the font view it will open a metrics view displaying all selected glyphs (the order in which you selected those glyphs is important). The new metrics view will display whatever the font view displays (outline or bitmap).
In the outline view it will open a metrics view displaying the current glyph. The display will be an outline.
In the bitmap view it will open a metrics view displaying the current glyph. The display will be a bitmap in the current size.
This menu item is always grey in the metrics view.
It is possible to have more than one metrics view open at a time.
After that the window menu is just a list of all the open windows. If the window has been changed (and not saved since) then it has a white background. The names of font views are in red. Views connected to a given font will all be displayed together (with the font view on top). Clicking on an entry raises that window.


Before Change
guesses = []
out = self.model(input_dict, lengths_dict, qnums)
probs = F.softmax(out)
scores, preds = torch.max(probs, 1)
scores = scores.data.cpu().numpy()
preds = preds.data.cpu().numpy()
for p, s in zip(preds, scores):
After Change
out = self.model(input_dict, lengths_dict, qnums)
probs = [p for p in F.softmax(out).data.cpu().numpy()]
logits = [l for l in out.data.cpu().numpy()]
preds = [np.argsort(-l)[:10] for l in logits]
guesses = []
for i, ps in enumerate(preds):
guesses.append([])
for p in ps:
guesses[-1].append((self.i_to_ans[p], logits[i][p], probs[i][p]))
return guesses
def generate_guesses(self, max_n_guesses: int, folds: List[str], word_skip=-1):


// NumPy has an np.argparition() method, however log(1000) is so small that
// sorting the whole array is simpler and fast enough.
top_indicies = np.argsort(predicted_scores_by_user, axis=1)[:, -_TOP_K:]
top_indicies = np.flip(top_indicies, axis=1)
// Both HR and NDCG vectorized computation takes advantage of the fact that if
// the positive example for a user is not in the top k, that index does not
predictions = list(predictions)
prediction_batches = [p[movielens.RATING_COLUMN] for p in predictions]
item_batches = [p[movielens.ITEM_COLUMN] for p in predictions]
// Reshape the predicted scores and items. Each user takes one row.
prediction_with_padding = np.concatenate(prediction_batches, axis=0)
predicted_scores_by_user = prediction_with_padding[


--- layout: post title: The starting point of my new blog slug: the-starting-point-of-my-new-blog date: 2014-03-05 categories: - Networking - Private tags: - Private author: Dennis Ladefoged ---
So it´s official... i´ll try and start blogging about everything networking and perhaps a little personal note once in a while :-D
First and foremost this blog will be about my life as a network specialist. I have worked with Cisco for 10 years now and have recently acquired a new job which entails a shift to HP networking products. Should be exciting.


This is my favorite recipe of my mom's. She's been making it for as long as I can remember, and it is so delicious.


Toggle navigation
Menu
NFL Bar Finder Home
Home
About
Contact
Bar Finder
Find your NFL team's bar. Anywhere you are.


Was started in 2019 september ,to help members of the public easily access story books from the library. One is able to see the books that are available(in shelf) and the once that are out.
The major source of Information and Knowledge for Empowerment.
To enable access to information for knowledge
Innovative
Customer Focused
Simplicity


AI Based fitness solution
Our website helps one to
Human body being the most complex biochemical factory, learning how to engineer it helps enter a sense of modalities at will. World is caught up in a rat race and keeping oneself fit has not been given much thought it deserves. This application’s main objective is to motivate society to practice yoga by providing a comfortable environment by building a virtual yoga instructor. With Pose estimation, smart assistance has been built to guide and instruct the users throughout their practice period to attain the correct posture. This helps reduce stress, anxiety, and tension through a series of guided meditative poses. The solution includes human pose estimation using Tensorflow and OpenCV frameworks. Deep Convolutional Neural Network as the architecture, various data collection and processing tasks have been performed.
How to Use
Training provides the user with series of videos which helps them learn the basic yoga poses. The evaluate section uses the machine learning model to detect the poses and give the user feedback.


Babs has your back
If you are interested in social media management, EFT Therapy, graphic and web design services.
You can connect with me at<EMAIL_ADDRESS>or huggib19@gmail.com


jl777c
12-Jul-19 09:14 AM
i guess it isnt so unexpected but it seems a majority of people still view KMD as just a zcash fork privacy coin. so when the rebranding takes effect and people realize that KMD has totally transformed itself, we could indeed see a totally different market perception of it
@Lumbi when did i ever say mass adoption would happen with a single system?
clearly global mass adoption cannot rely on a single blockchain, else its failure is like a centralized cloudfare blocking 42% of the internet
with komodo, unlimited numbers of systems can be created to both allow mass market scaling, while at the same time be immune from any single system failure. we do need to get more source level forks for true immunity, but there are already a few such networks and once there is a proliferation of such chains, then it truly becomes unstoppable. any single component could be disabled at any given time, but not across all the systems
it is open source and a lot of projects are already copying what we do. in the larger sense that is a good thing, gives the crypto ecosystem more resilience, while solving the mass adoption problem in a practical way


Slowing down melee.
Posted: Sat May 23, 2009 7:21 am
Removing unlimited transport and adding some defense to casters the solution?
Melee can trans as much as a caster and catch up to them, which is why melee wins the battle.
Melee arent supoused to be able to rely on trans but more on run attack to catch up.
Tele should cost more and knights should have less mp so they couldnt rely on trans before higher levels.
as i recall also fighters had trans wands did they not on xen? they didnt even have transport which was why they used run attack.
Melee can trans as much as a caster and catch up to them, which is why melee wins the battle.
Melee arent supoused to be able to rely on trans but more on run attack to catch up.
Tele should cost more and knights should have less mp so they couldnt rely on trans before higher levels.
as i recall also fighters had trans wands did they not on xen? they didnt even have transport which was why they used run attack.


Baku
Hello!
Welcome to
iCrewsystems
what service are you looking for?
iCrew v4 products
App Development
Web Development
Typing ....
Sorry!
Please ask me something.
Requirement Form
×
All fields are required!
Full Name
Email
Your Budget($)
Do you have a domain?
yes
no
Do you have a Hosting?
yes
no
Do you have a SmartCARS?
yes
no
Expected Delivery
3 weeks
1 month
3 months
6 months
9 months
Cancel
Submit


Water released for extension areas under 18th channel
by Staff ReporterWater for irrigation of extension areas under 18th channel, was released on Tuesday. The district collector M. Pallavi Baldev, released 95 cusecs of water from the Sudhagangai Odai.
Water will be released for 15 days totalling to a quantum of 121 mcft.
The extension arm of the 18th channel was started in 2016 following representation from a section of farmers in Uthamapalayam and Bodinayakknur taluks and was completed in March 2018 at a cost of ₹48 crore for a length of 14.10 kilometres from Sudhagangai Odai near Renganathapuram village in Thevaram to Koovalinga river and ultimately it joins the Kottakudi river. The water will benefit seven tanks including Kattabommankulam, Kottaikulam, Kamarajabalasamudrakulam, Vannar oorani, Soolapuram kulam, Paaraikulam and Koppan oorani, apart from recharging 585 wells in Thevaram, Pottipuram, Rasingapuram, Silamalai, Melachokkanathapuram and Bodinayakkanur. A total of 4794.71 acres of land will receive irrigation through the release.


The green bike
Saturday, February 8, 2020
I went to play basketball to the park of Macultepec, meanwhile, I was going there, I was thinking that maybe I should watch some basketball videos on Youtube to learn to play better.
When I was already playing, I threw the ball to some bikes parked in the corner, accidentally I hit one green color bike, which felt to the ground; some guys came to see what's going on, among them, a girl, who was precisely the owner of the green bike... I told her that I was interested in MTB, she told me that they knew some routes, but not precisely MTB routes...
She asked me about my phone number to stay in contact and go to some rides together, I think the other guys were her brothers... I was trying to remember my phone number from Germany, to impress her, but I couldn't, then I woke up.
So, I will buy a basket ball today.


2018
Laser-eteched bismuth
The work consists of five etched metal pieces arranged into an array, cast to fit flush into gaps in the paving of a public space. Laser etched onto their surface are images of the site that have been algorithmically interpreted by non-line-of-sight imaging techniques which use visual information contained in a photograph to provide visualizations of the area outside of the captured frame.
The work examines the ways in which memory or historical information is embedded intentionally or not, within implicit everyday documentary practices of the built environment. Resisting direct communication or visualization of historical information, the work instead aims to model a relation to historical revelation which addresses its subject through the happenstance encounter at the edge of intelligibility in time as well as visual perception. Embedded flush within the gaps produced by the disaggregation of the industrially produced urban surface they form an array which together might inaugurate a stopgap mnemonic– encoding and searching for that which has past.
In conversation with the histories at MIT of perceptually-oriented urban planning projects, environmental art, and contemporary technologies of computational urban science, I think about this work in relation to that which is registered yet unseen within technical description. I am interested in generating images which might not look or look only indirectly, for the potentials of meaning-making across scales and to model ambulatory peripheral visualities and practices of looking.
Credits: Production funding provided by MIT Art, Culture, and Technology, and by the Council for the Arts at MIT. Assistance from Adam Yedidia the Signals, Information and Algorithms Labratory at MIT.


W3 Collaboration - Summer 2019 Meeting
- Exogenus variables, experimental conditions, configuration of formulation
- How the Abstract Knowledge Layer deals with abstractions of an environment vs. the instantiation of the environment.
- Domain trade off for the formulation - interpolation as a type-casting from discrete to continuous, for example.
-
Send Clay an example of an infinite time steady state model.
- Co-spans of a category is an open system
- The appropriate component for evapotransportation could be different from hydrology


Eri Nagase
About
Portfolio
Contact
Portfolio
Superhero Friend Finder
VroomMe
Hot Restaurant
Bamazon
PUGs
Connect with Me


When I hear the words 'drug addict', I conjure up thoughts of a crusty old man on a street corner, living in a box, with a needle dangling out of his arm as he whistles with his one tooth, begging one to stop for a donation of a dime. But as I look in the mirror, I'm reminded of what a friend of mine told me the day he kicked his coke habit. He said sometimes you just have to look into the mirror and be honest. He saw a drug addict and stopped. I see a drug addict but can't stop. Here's how this all came into being.
My first dip into cocaine came about 6 months ago. Met the wrong girl, she slammed the wrong thing in my nose, and I fell in love. Not with the girl, but with my new little mistress. I didn't touch it again for 2 weeks but it was always on my mind. Then one day, I told myself I wouldn't go into work until I got some. I spent 4 days away from work, trying to track down a suitable dealer. Now, I'm a professional with tons of money, houses, cars, and women. Yet, they didn't matter those 4 days. Once I got connected, I immediately bought an 8 ball. I didn't know how much was in it. It took me 2 days to finish it up. Every time I would do a line, I would cut up another one for later. Usually, I would finish that line before I got up from the first one.
Almost immediately, my coke habit started in the am before work, frequent bathroom breaks during work, and a stop off by my dealers house after work for another 8 ball. I had only been doing this stuff for 2 weeks and was doing an 8 ball a day, almost every day. A few months later, I knew I had gotten out of control when I got up 2 hours early for work, and did about 6-8 rails. I drove to work sweating, shaking, pale, and an out of control heart. My co workers were pushing me to go to the ER but I stuck it out... by simply doing more coke during the lunch break and bathroom breaks. I got through the day alive. My initial partying coke habit, sharing with friends, had become a solitary habit to sustain me throughout the day. It took me 1 time to get hooked on coke and 2 months for it to become my only fun. Parties and bars didn't matter. I sat at home on the weekends enjoying my coke buzz. I would have the occassional woman over to share it with but that was it.
I continued doing coke for another 2 months, a total of 5 months for those playing along at home. And then it happened, coke stopped working for me. No matter how much I did, I did not feel any different. An 8 ball in an evening did nothing...it made me feel sick and nervous about my health. Then someone had me do a few lines of crystal meth. I had just found my new love. Work became easier...i didn't have to take frequent breaks, my nose wasn't always running, and it was a sight bit cheaper to do. Within 3 weeks of sampling crystal meth on a weekend basis, I started using it every day.  I was the most productive person alive even after 10 days...but then it came crashing down.
Somewhere after 10 days, I got paranoid. On my way to work, everybody was after me...everybody was a cop. Even the poodle in the car next to me was a fearless K9 dog that could smell the residue in my nose from 3 cars back. I got to work okay that morning. But then I got a headache that wouldn't go away. I thought a blood vessel had popped. I immediately thought I was dying and started researching the internet for warning signs of dying from too much speed. Then, I thought every security guard in the building could tell i was high and was there to arrest me. I ran from floor to floor. I even researched local lawyers and the local law penalties for drug possession. I had 3 lined up for my defense because I was also convinced that my house was being raided while I was at work.
I somehow made it through the day. I got home, hid my stash in a room other than mine. I spent the rest of the night looking out the window. I heard every door slam, saw every car drive by, heard every dog bark...it was senseless.
That paranoia lasted another day, but not near as bad as that day. I took a hiatus from town and flew away for 8 days to get away from it all. I almost took some on the plane with me I needed it that bad. I am now on my 8'th day without any drugs and I am totally depressed, emotionless, and sleep an average of 12-14 hours a day. I can't get out, I have no motivation and no desire to do anything but sleep. I can't eat like I used to. I have lost a total of 50 pounds over the last 6 months doing these drugs. I don't feel like myself and I'm struggling to get back my reward system that has been so tainted by, I believe, crystal meth.
I looked in the mirror again this morning. Still an addict even when not doing any drugs.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


public final class Graphs
extends java.lang.Object
| Modifier and Type | Method and Description |
|---|---|
static <T,E extends DirectedEdge<T,E>> |
componentMapping(int vertices,
java.lang.Iterable<E> edges)
Returns an array representing a connected component mapping.
|
static int[] |
componentMapping(int vertices,
java.util.List<java.util.List<java.lang.Integer>> components)
Creates an array representing a connected component mapping.
|
static <T,E extends DirectedEdge<T,E>> |
components(int vertices,
java.lang.Iterable<E> edges)
Takes a graph specified by a number of vertices and an
Iterable of edges and returns a List
of List of Integer , where the i-th List contains the indices of all vertices that
belong to the i-th connected component. |
static <T,S,E extends DirectedEdge<T,E> & java.lang.Comparable<? super E>,D extends DirectedEdge<S,D>> |
contract(int vertices,
java.lang.Iterable<D> span,
java.lang.Iterable<E> edges)
Contracts a graph specified by the number of vertices and an
Iterable of edges along the edges
given by the Iterable span. |
static <T,E extends DirectedEdge<T,E> & java.lang.Comparable<? super E>> |
flatten(EdgeList<ContractedEdge<T,ContractedEdge<T,E>>> list)
Takes an
EdgeList of at least doubly contracted edges and removes the second-outermost layer of contracted edges |
static <T,E extends DirectedEdge<T,E> & java.lang.Comparable<? super E>> |
flatten(Graph<ContractedEdge<T,ContractedEdge<T,E>>> graph)
Takes a
Graph of at least doubly contracted edges and removes the second-outermost layer of contracted edges |
static <T,E extends DirectedEdge<T,E> & java.lang.Comparable<? super E>> |
lightestEdgePerVertex(int vertices,
java.lang.Iterable<E> edges)
Takes a graph specified by the number of vertices and an
Iterable of edges. |
static <T,E extends DirectedEdge<T,E> & java.lang.Comparable<? super E>> |
removeDuplicates(int vertices,
java.lang.Iterable<E> edges)
Removes multiple edges between two vertices.
|
static <T,E extends DirectedEdge<T,E> & java.lang.Comparable<? super E>> |
renameVertices(java.lang.Iterable<E> edges)
Takes an
Iterable of edges and renames the vertices, so that all vertex indices
are between 0 and n - 1 where n is the number of vertices |
static <T,E extends DirectedEdge<T,E>> |
sortEdges(int vertices,
java.lang.Iterable<E> edges)
Takes a graph specified by the number of vertices and an
Iterable of edges and returns an
EdgeList containing all edges in a sorted manner. |
public static <T,E extends DirectedEdge<T,E>> int[] componentMapping(int vertices, java.lang.Iterable<E> edges)
T
- the weight type of the edges in the graphE
- the edge type of the edges in the graphvertices
- the number of vertices in the graphedges
- an Iterable
of all edges in the graphpublic static int[] componentMapping(int vertices, java.util.List<java.util.List<java.lang.Integer>> components)
vertices
- the number of vertices in the graphcomponents
- a List
of List
of Integer
where the i-th List
contains the indices of all
vertices that belong to the i-th componentpublic static <T,E extends DirectedEdge<T,E>> java.util.List<java.util.List<java.lang.Integer>> components(int vertices, java.lang.Iterable<E> edges)
Iterable
of edges and returns a List
of List
of Integer
, where the i-th List
contains the indices of all vertices that
belong to the i-th connected component.T
- the weight type of the edges of the graphE
- the edge type of the edges of the graphvertices
- the number of vertices of the graphedges
- an Iterable
of edges of the graphList
of List
of Integer
representing the connected components of the graph
as described abovepublic static <T,E extends DirectedEdge<T,E>> EdgeList<E> sortEdges(int vertices, java.lang.Iterable<E> edges)
Iterable
of edges and returns an
EdgeList
containing all edges in a sorted manner.T
- the weight type of the edges of the graphE
- the edge type of the edges of the graphvertices
- the number of vertices in the graphedges
- an Iterable
of edges in the graphEdgeList
containing all edges of the original graph, but sortedpublic static <T,E extends DirectedEdge<T,E> & java.lang.Comparable<? super E>> EdgeList<E> removeDuplicates(int vertices, java.lang.Iterable<E> edges)
T
- the weight type of the edges of the graphE
- the edge type of the edges of the graphvertices
- the number of vertices of the graphedges
- an Iterable
of edges of the graphEdgeList
containing no duplicates of edgespublic static <T,E extends DirectedEdge<T,E> & java.lang.Comparable<? super E>> Graph<RenamedEdge<T,E>> renameVertices(java.lang.Iterable<E> edges)
Iterable
of edges and renames the vertices, so that all vertex indices
are between 0 and n - 1 where n is the number of verticesT
- the weight type of the edges of the graphE
- the edge type of the edges of the graphedges
- the Iterable
whose vertices shall be renamedGraph
representing the graph but with renamed edgespublic static <T,E extends DirectedEdge<T,E> & java.lang.Comparable<? super E>> java.util.Set<E> lightestEdgePerVertex(int vertices, java.lang.Iterable<E> edges)
Iterable
of edges.
For each vertex we take the outgoing edge with smallest weight and return a Set
of all of these edgesT
- the weight type of the edges of the graphE
- the edge type of the edges of the graphvertices
- the number of vertices of the graphedges
- an Iterable
of edges of the graphSet
containing only the lightest edge per vertexpublic static <T,S,E extends DirectedEdge<T,E> & java.lang.Comparable<? super E>,D extends DirectedEdge<S,D>> Graph<ContractedEdge<T,E>> contract(int vertices, java.lang.Iterable<D> span, java.lang.Iterable<E> edges)
Iterable
of edges along the edges
given by the Iterable
span. Each group of vertices that is connected by some of the edges of span
will be replaced by a single vertex in the contracted graph.T
- the weight type of the edges of the graphE
- the edge type of the edges of the graphS
- the weight type of the edges along which we contractD
- the edge type of the edges along which we contractvertices
- the number of vertices in the graphspan
- an Iterable
along which the graph shall be contractededges
- an Iterable
of edges of the graphGraph
public static <T,E extends DirectedEdge<T,E> & java.lang.Comparable<? super E>> EdgeList<ContractedEdge<T,E>> flatten(EdgeList<ContractedEdge<T,ContractedEdge<T,E>>> list)
EdgeList
of at least doubly contracted edges and removes the second-outermost layer of contracted edgespublic static <T,E extends DirectedEdge<T,E> & java.lang.Comparable<? super E>> Graph<ContractedEdge<T,E>> flatten(Graph<ContractedEdge<T,ContractedEdge<T,E>>> graph)
Graph
of at least doubly contracted edges and removes the second-outermost layer of contracted edges


--- layout: post status: publish published: true title: Entries for the Ivy Envy MLB Final Standings Challenge author: display_name: Corey Fineran login: Corey email<EMAIL_ADDRESS>url: '' author_login: Corey author_email<EMAIL_ADDRESS>wordpress_id: 4668 wordpress_url: http://ivyenvy.com/?p=4668 date: '2011-04-05 17:04:45 +0000' date_gmt: '2011-04-05 22:04:45 +0000' categories: - General Baseball - Ivy Envy tags: - Ivy Envy MLB Final Standings Challenge - IEMLBFSC - MLB Final Standings Challenge comments: [] ---
Welcome to the Third Annual Ivy Envy MLB Final Standings Challenge (IEMLBFSC). The IEMLBFSC will be scored in the following manner:
You will receive one point for each standing position you are off, with each team. For instance, if you chose the top of the NL Central to be:
1. Cubs 2. Brewers 3. Cardinals
Let’s say the final standings end up:
1. Cardinals 2. Brewers 3. Cubs
You would get 2 points for the Cardinals, 0 points for the Brewers and 2 points for the Cubs. So the object is to have the lowest point total.
Kurt from Rock Island, IL (Ivy Envy writer)
NL East: Philadelphia – Atlanta – New York – Florida – Washington
NL Central: Milwaukee – Cincinnati – Chicago – St. Louis – Pittsburgh – Houston
NL West: San Francisco – Colorado – Los Angeles – Arizona – San Diego
AL East – Boston - New York – Toronto – Tampa Bay – Baltimore
AL Central: Minnesota – Detroit – Chicago – Kansas City – Cleveland
AL West: Texas – Los Angeles – Oakland – Seattle
Nick C. from Chesapeake, VA
NL East: Philadelphia – Atlanta – Florida – New York – Washington
NL Central: St Louis – Milwaukee – Cincinnati – Chicago – Pittsburgh – Houston
NL West: Colorado – San Diego – San Francisco – Los Angeles – Arizona
AL East: Boston – Tampa Bay – New York – Baltimore – Toronto
AL Central: Minnesota – Detroit – Chicago – Cleveland – Kansas City
AL West: Los Angeles – Texas – Oakland – Seattle – (Houston?)
Phillies win WS over Twins. Ryan Howard is the NL MVP. Miguel Cabrera is the AL MVP. Josh Johnson is the NL Cy Young. Francisco Liriano is the AL Cy Young.
Brian from Moline, IL
NL East: Philadelphia – Atlanta – Florida – New York – Washington
NL Central: Chicago – St. Louis – Cincinnati – Milwaukee – Pittsburgh – Houston
NL West: San Francisco – Colorado – Los Angeles – San Diego – Arizona
AL East: Boston – New York – Toronto – Baltimore – Tampa Bay
AL Central: Minnesota – Chicago – Detroit – Cleveland – Kansas City
AL West: Texas – Los Angeles – Oakland – Seattle
Jason from Moline, IL
NL East: Philadelphia – Atlanta – Washington – Florida – New York
NL Central: Cincinnati – Chicago – Milwaukee – St. Louis – Pittsburgh – Houston
NL West: Colorado – San Francisco (WC) – Los Angeles – Arizona – San Diego
AL East: Tampa Bay – Boston – New York – Toronto – Baltimore
AL Central: Chicago – Minnesota – Detroit – Kansas City – Cleveland
AL West: Texas – Los Angeles – Oakland – Seattle
Playoffs: Phillies vs Giants, Rockies vs. Reds
Phillies vs. Rockies – Philadelphia NL Champs
Rays vs. Rangers, White Sox vs. Red Sox
Rays vs. Red Sox – Boston AL Champs
World Series Champions – Boston
MVP: NL – Carlos Gonzalez (Rockies)
AL – Evan Longoria (Rays)
Cy Young: NL – Matt Garza (Cubs)
AL – Jon Lester (Red Sox)
Manager of the Year – Jim Tracey (Rockies)
Brooke from Moline, IL
NL East: Atlanta – Philadelphia – Florida – Washington – New York
NL Central: Chicago – Milwaukee – Cincinnati – Pittsburgh – Houston – St. Louis
NL West: Los Angeles – Colorado – Arizona – San Diego – San Francisco
AL East: Boston – New York – Baltimore – Toronto – Tampa Bay
AL Central: Minnesota – Chicago – Kansas City – Detroit – Cleveland
AL West: Seattle – Los Angeles – Oakland – Texas
Bob from Moline, IL
NL East: Philadelphia – Atlanta – Florida – Washington – New York
NL Central: Cincinnati – Milwaukee (WC) – St. Louis – Pittsburgh – Houston
NL West: San Francisco – Colorado – Los Angeles – San Diego – Arizona
AL East: New York – Tampa Bay – Boston – Toronto – Baltimore
AL Central: Minnesota – Chicago (WC) – Detroit – Kansas City – Cleveland
AL West: Los Angeles – Texas – Oakland – Seattle
Ryan M from Moline, IL (Ivy Envy writer)
NL East: Philadelphia – Atlanta – New York – Florida – Washington
NL Central: Cincinnati – St. Louis – Milwaukee – Chicago – Pittsburgh – Houston
NL West: Colorado – San Francisco – San Diego – Los Angeles – Arizona
AL East: Boston – New York – Tampa Bay – Toronto – Baltimore
AL Central: Chicago – Minnesota – Detroit – Cleveland – Kansas City
AL West: Texas – Los Angeles – Oakland – Seattle
Jeff from Scottsdale, AZ
NL East: Atlanta – Philadelphia – Florida – Washington – New York
NL Central: Cincinnati – Milwaukee – Houston – St. Louis – Pittsburgh – Chicago
NL West: Colorado – Los Angeles – San Francisco – Arizona – San Diego
AL East: Boston – New York – Baltimore – Tampa Bay – Toronto
AL Central: Minnesota – Detroit – Chicago – Kansas City – Cleveland
AL West: Los Angeles – Texas – Oakland – Seattle
Corey from Moline, IL (Ivy Envy writer)
NL East: Philadelphia – Atlanta – Florida – New York – Washington
NL Central: Cincinnati – Milwaukee (WC) – Chicago – St. Louis – Pittsburgh – Houston
NL West: San Francisco – Colorado – Arizona – Los Angeles – San Diego
AL East: Boston – New York (WC) – Baltimore – Tampa Bay – Toronto
AL Central: Chicago – Minnesota – Detroit – Cleveland – Kansas City
AL West: Los Angeles – Texas – Oakland – Seattle
Brett from Moline, IL
NL East: Atlanta – Philadelphia – New York – Washington – Florida
NL Central: Cincinnati – St. Louis – Chicago – Milwaukee – Houston – Pittsburgh
NL West: Los Angeles – San Francisco – Colorado – Arizona – San Diego
AL East: New York – Tampa Bay – Boston – Toronto – Baltimore
AL Central: Chicago – Minnesota – Kansas City – Detroit – Cleveland
AL West: Texas – Angels – Oakland – Seattle
Andy from Rock Island, IL
NL East: Atlanta - Philadelphia - Washington - New York - Florida
NL Central: Milwaukee - Cincinnati - Chicago - St. Louis - Pittsburgh - Houston
NL West: San Francisco - Colorado - San Diego - Arizona - Los Angeles
AL East: New York - Boston - Baltimore - Tampa Bay - Toronto
AL Central: Minnesota - Chicago - Detroit - Kansas City - Cleveland
AL West: Texas - Oakland - Los Angeles - Seattle
Mark from Milwaukee, WI
NL East: Philadelphia – Florida – New York – Washington
NL Central: Milwaukee – Cincinnati – St. Louis – Chicago – Houston – Pittsburgh
NL West: San Francisco – Colorado – Los Angeles – Arizona – San Diego
AL East: Boston – Tampa Bay – New York – Baltimore – Toronto
AL Central: Chicago – Minnesota – Detroit – Kansas City – Cleveland
AL West: Los Angeles – Texas – Oakland – Seattle
Doug from Moline, IL
NL East: Philadelphia – Atlanta – Florida – New York – Washington
NL Central: Cincinnati – Milwaukee – St. Louis – Chicago – Houston – Pittsburgh
NL West: San Francisco – Los Angeles – Arizona – Colorado – San Diego
AL East: Boston – New York – Tampa Bay – Toronto – Baltimore
AL Central: Chicago – Minnesota – Detroit – Kansas City – Cleveland
AL West: Texas – Los Angeles – Oakland - Seattle
Gary from Bettendorf, IA
NL East: Philadelphia – Atlanta – New York – Florida – Washington
NL Central: Cincinnati – Chicago – Milwaukee – St. Louis – Houston – Pittsburgh
NL West: San Francisco – San Diego – Colorado – Los Angeles – Arizona
AL East: New York – Toronto – Baltimore – Boston – Tampa Bay
AL Central: Chicago – Kansas City – Minnesota – Detroit – Cleveland
AL West: Texas – Seattle – Oakland – Los Angeles


Welcome to my About Me webpage!
Joachen Busch
- Army Reserve - 8 Years
- Services Support Rep(Help Desk) - 4 Years
- Watching Anime
- Eating Gummy Bears
- Watching Movies
Work Experience
Things I Enjoy
My Top 10 Favorite Movies
- Batman Begins
- The Dark Knight
- The Dark Knight Rises
- Definitely, Maybe
- The Perks of Being a Wallflower
- The Maze Runner
- Olympus has Fallen
- Gladiator
- Troy
- Brightburn


Thanks for installing Backpack! Rad.
Please, configure it following this instructions and be done already!
~horacio