class Timer — control hardware timers¶
Hardware timers deal with timing of periods and events. Timers are perhaps the most flexible and heterogenous hardware in MCUs and SoCs, differing greatly from model to model. MicroPython’s Timer class defines a baseline operation of executing a callback with a given period (or once after som delay), and allow specific boards to define more non-standard behavior.
Each timer consists of a counter that counts up at a certain rate. The rate at which it counts is the peripheral clock frequency (in Hz) divided by the timer prescaler. When the counter reaches the timer period it triggers an event, and the counter resets back to zero. By using the irq method, the timer event can call a Python function.
See discussion of important constraints on Timer callbacks.
Constructors¶
-
class
machine.
Timer
(id, ...)¶ Construct a new timer object of the given id.
Additional parameters are used to initialize the Timer. The parameters are the same as
Timer.init()
. With no additional parameters, the a Timer-object with the parameters from last initialization is used.
Methods¶
-
Timer.
init
(mode=Timer.PERIODIC, *, dir=Timer.UP, freq, period_us, counter_config=(prescaler, period_counts), start=True)¶ Initialize the timer. The arguments can be as follows:
mode
- which can be either:Timer.ONE_SHOT
- The timer runs once until the configured period of the channel expires.Timer.PERIODIC
- The timer runs periodically at the configured frequency.
dir
- Configure the direction of the timer. Can be any of the following:Timer.DIR_UP
- The timer counts up from 0 until it reaches the top value (defined byperiod_counts
), it then sets the overflow interrupt and resets to 0.Timer.DIR_DOWN
- The timer counts down from the top value to 0. When the timer reaches 0, the underflow interrupt is set and the counter value is reset to the top value.Timer.DIR_UPDOWN
- The timer counts from 0 to top, sets the overflow interrupt flag, then counts from top to 0 and sets the underflow flag.
Only one of the arguments freq, period_us, counter_config should be used.
freq
- Configure the period of the timer in Hz. You might also viewthis as the frequency with which the timer goes through one complete cycle.
period_us
- Configure the period of the timer in microseconds.counter_config
- Configure the period of the timer with:
start
- If`True
, start the timer immediately before returning from the function.
-
Timer.
deinit
()¶ Deinitialize the timer. Stops the timer as well as disabling the timer peripheral.
-
Timer.
start
()¶ Starts the timer. If
mode
isTimer.ONE_SHOT
, this function can also restart the timer.
-
Timer.
stop
()¶ Stops the timer.
-
Timer.
counter
([value])¶ Get or set the value of the timer counter.
-
Timer.
time
([value])¶ Get or set the value of the timer counter in us.
-
Timer.
period
([value])¶ Get or set the timer period in ns. When setting the timer period is updated after the current period has ended.
-
Timer.
frequency
([value])¶ Get or set the timer frequency. When setting the frequency is updated after the current period has ended.
-
Timer.
counter_config
([value])¶ Get or set the (prescaler, period_counts) touple. When setting the counter config, the prescaler is updated immediately, while the period_counts is updated after the current period has expired.
-
Timer.
irq
(handler=None, trigger=0, *, priority=7, hard=False)¶ Initialize an interrupt that is triggered when
trigger
happens. The parameters are:handler
which is an optional callback when the interrupt occurs. The callback should be of the form def cb( timer_obj )trigger
which configures which events to interrupt on. Possible values are:Timer.IRQ_OF
for interrupt on timer overflow (on the tick after Timer.counter() reachesperiod_counts
in the configuration tuple from Timer.counter_config().Timer.IRQ_UF
for an interrupt on timer underflow (on the tick after Timer.counter() reaches 0).Timer.IRQ_CCx
where x can be a number between 0-3. This is an interrupt on Timer channel x. When the channel is configured in compare mode, it interrupts on a compare match, when operating in capture mode it interrupts on a capture.
priority
which is the prioritylevel of the interrupt. Can be in the range 1-7, where a higher value represents a higher priority.hard
decides whether the interrupt handler is called by the MicroPython scheduler or in interrupt context. IfFalse
then the function is called by the scheduler and all MicroPython functions are available. If not the restrictions here apply.
This function returns an irq-object. If no arguments are given, the pin interrupt configuration is left as is. This function provides a useful method of getting the irq-object inside the interrupt handler.
-
Timer.
channel
(channel, ...)¶ If only a channel number is passed, a channel object corresponding to that id is returned. The object keeps the settings from its last initialization. If more than one argument is passed, the channel is initialized according to
TimerChannel.init()
Each channel can be configured to perform pwm, output compare, or input capture. All channels share the same underlying timer, which means that they share the same timer clock.
Example:
import tbsense
from machine import Timer
# Use timer interrupt to turn on RGBLED for 1 second
def handle(t):
tbsense.RGBLED.off()
return
tbsense.RGBLED.color(0,10,15)
time = Timer(1)
time.irq(trigger=Timer.IRQ_OF, handler=handle) #Timer overflows after 1 second
time.init(Timer.ONE_SHOT, dir=Timer.DIR_UP, freq=1, start = False)
time.start()
Constants¶
-
Timer.
EDGE_FALLING
¶ -
Timer.
EDGE_RISING
¶ -
Timer.
EDGE_BOTH
¶ Used to set which edge the input capture should trigger on (for a TimerChannel object)
-
Timer.
ACTION_TOGGLE
¶ -
Timer.
ACTION_SET
¶ -
Timer.
ACTION_CLEAR
¶ Used to set pin actions on a compare match (for a TimerChannel object)
class TimerChannel — setup a channel for a timer¶
Timer channels are used to generate/capture a signal using a timer.
The objects are generated with the Timer.channel()
method.
A timer channel can be used for several different purposes.
Input Capture
Input capture is used to store the timer counter when there is a change on a pin, such as a falling edge, a rising edge, or both. This can be used for example to measure the period of a signal or the width of a pulse.
Output Compare
Output compare is used to change the level of a pin when there is a compare match between the compare value and the timer counter. The pin can also be changed on timer counter overflow.
PWM
PWM is a subset of Output Compare, where the pin is set high on counter overflow and low on compare match. This can be used, among others, to generate an average voltage to drive an LED or another low-power appliance.
Example:
import machine
from machine import Timer
#Toggle red Led using timer channel
time = Timer(1)
time.init(Timer.PERIODIC, dir=Timer.DIR_UP, freq = 2)
print(time.counter_config())
ch1 = time.channel(1)
ch1.init(Timer.OC, pin=machine.Pin('PD12'), compare_value = 100, of_action = Timer.ACTION_TOGGLE)
while True:
pass
Methods¶
-
TimerChannel.
init
(mode, pin=None, *, ...)¶ Initializes the TimerChannel. The allowed arguments depend on the mode and are as follows.
mode
can be one of:Timer.PWM
to configure the timer channel in PWM modeTimer.OC
to configure the timer channel in Output Compare modeTimer.IC
to configure the timer channel in Input Capture mode
pin
is a pin identifier (a string or a pin object) which will be associated with this timer channel. In the case of PWM or Output Compare, this pin will be configured as output. In the case of Input Capture, this pin will be used as input.
If
mode
isTimer.PWM
the following keyword arguments are available:pulse_width
- The pwm pulse width. Maximum value isperiod_counts+1
, defined when initializing the timer. This equates to a duty cycle of 100%.pulse_width_percent
- Set the duty cycle in percent.output_invert
- Whether to invert the output or not. Default isFalse
.
If
mode
isTimer.OC
the following keyword arguments are available:compare_value
- A compare value. The maximum value isperiod_counts+1
.match_action
- What to do with the pin when the counter equalscompare_value
of_action
- What to do with the pin when the counter overflows.uf_action
- What to do with the pin when the counter underflows. The possible pin actions are:TIMER.ACTION_TOGGLE
- Toggle the pinTIMER.ACTION_SET
- Set pin highTIMER.ACTION_CLEAR
- Set pin low
output_invert
- Whether to invert the output or not. Default isFalse
.
And if
mode
isTimer.IC
the following keyword arguments are available:edge
- Which edges to register. Can a logical OR of the following:Timer.EDGE_FALLING
- Falling edgeTimer.EDGE_RISING
- Rising edge
filter
- Whether to filter the input or not. With the filter active the input need to stay active for 5 cycles in order for it to be registered.
-
TimerChannel.
deinit
()¶ Deactivate the TimerChannel.
-
TimerChannel.
pulse_width
([counts])¶ Only applicable in PWM-mode. Get or set the PWM pulse width in timer count inits. If setting, the pulse width will be changed after the current pulse. Capture, compare, and pulse_width are all aliases for the same function. compare is the logical name to use when the channel is in output compare mode.
-
TimerChannel.
pulse_width_percent
([percent])¶ Set or get the pulse width in percent. If setting, the pulse width will be changed after the current pulse. The value is a number between 0 and 100 and sets the percentage of the timer period for which the pulse is active. The value can be an integer or floating-point number for more accuracy. For example, a value of 25 gives a duty cycle of 25%
-
TimerChannel.
capture
()¶ Returns the newest received value. Capture, compare, and pulse_width are all aliases for the same function. compare is the logical name to use when the channel is in output compare mode.
-
TimerChannel.
compare
([counts])¶ Set or get the compare value. The compare value is set on the next timer counter overflow. Capture, compare, and pulse_width are all aliases for the same function. compare is the logical name to use when the channel is in output compare mode.
Example:
import machine
import tbsense
from machine import Timer
#Control brightness of RGBLEDs using PMW and timer channels
tbsense.RGBLED.color(0,0,0)
time = Timer(1)
time.init(Timer.PERIODIC, dir=Timer.DIR_UP, freq = 100)
ch1 = time.channel(1)
ch1.init(Timer.PWM, pin=machine.Pin("PD13"), pulse_width = 0)
while True:
for i in range (1, 48000, 10):
ch1.pulse_width(i)
tbsense.delay(1)
for i in range(48000, 1, -10):
ch1.pulse_width(i)
tbsense.delay(1)


--- layout: default ---
CodingApi will lead you through the three dimensions of project management, technical architecture and team motivation to build a good R&D team.
I think that agile thinking needs to go from at least three perspectives: project management, technical ability, and team motivation. Only by establishing a good system of institutions can we achieve agility. Join CodingApi and let everyone explore and learn how to build agile path from 0.
Today's agile development has been recognized as a good management method for software project development. Combined with today's rapid development of technology, how to better combine technology and project management will be more interesting.
Today is the era of microservices, containerization, and artificial intelligence technology. If you want to make a product well, it does not depend on any excellent technology.
A good incentive model will make a poor team better, and OKR may be more in line with the incentive model of the R&D team.


{% include "includes/account-name-number.html" %}Funding
Forecast your funds
Calculate the amount you have available to spend on apprenticeships
View funds you could lose
Your funds will expire after 18 months if you don't spend it on apprenticeships
View your transactions
View payments in and out of your account
View committed spending
Review the amount you've committed to spend on apprenticeships
View your English percentage
Check the English percentage that's been applied to your levy
Download your financial information
Download your financial information for your records


- Click and drag names to drop them where you want.
- Click on the box to indicate a player has been drafted.
- Use the drop down next to player names to select a tier.
- Turn tiers off or on by using the button
- (RB) David Johnson
- (RB) Ezekial Elliot
- (RB) Le'Veon Bell
- (WR) Antonio Brown
- (WR) Odell Beckham Jr.
- (WR) Julio Jones
- (WR) Mike Evans
- (RB) LeSean McCoy
- (RB) Jordan Howard
- (RB) Melvin Gordon
- (RB) DeMarco Murray
- (RB) Jay Ajayi
- (WR) A.J. Green
- (RB) Devonta Freeman
- (WR) Jordy Nelson
- (WR) Dez Bryant
- (RB) Todd Gurley
- (TE) Rob Gronkowski
- (WR) T.Y. Hilton
- (WR) Michael Thomas
- (RB) Carlos Hyde
- (RB) David Johnson
- (RB) Ezekial Elliot
- (RB) Le'Veon Bell
- (WR) Antonio Brown
- (WR) Odell Beckham Jr.
- (WR) Julio Jones
- (WR) Mike Evans
- (RB) LeSean McCoy
- (RB) Jordan Howard
- (RB) Melvin Gordon
- (RB) DeMarco Murray
- (RB) Jay Ajayi
- (WR) A.J. Green
- (RB) Devonta Freeman
- (WR) Jordy Nelson
- (WR) Dez Bryant
- (RB) Todd Gurley
- (TE) Rob Gronkowski
- (WR) T.Y. Hilton
- (WR) Michael Thomas
- (RB) Carlos Hyde
- (RB) David Johnson
- (RB) Ezekial Elliot
- (RB) Le'Veon Bell
- (WR) Antonio Brown
- (WR) Odell Beckham Jr.
- (WR) Julio Jones
- (WR) Mike Evans
- (RB) LeSean McCoy
- (RB) Jordan Howard
- (RB) Melvin Gordon
- (RB) DeMarco Murray
- (RB) Jay Ajayi
- (WR) A.J. Green
- (RB) Devonta Freeman
- (WR) Jordy Nelson
- (WR) Dez Bryant
- (RB) Todd Gurley
- (TE) Rob Gronkowski
- (WR) T.Y. Hilton
- (WR) Michael Thomas
- (RB) Carlos Hyde
- (RB) David Johnson
- (RB) Ezekial Elliot
- (RB) Le'Veon Bell
- (WR) Antonio Brown
- (WR) Odell Beckham Jr.
- (WR) Julio Jones
- (WR) Mike Evans
- (RB) LeSean McCoy
- (RB) Jordan Howard
- (RB) Melvin Gordon
- (RB) DeMarco Murray
- (RB) Jay Ajayi
- (WR) A.J. Green
- (RB) Devonta Freeman
- (WR) Jordy Nelson
- (WR) Dez Bryant
- (RB) Todd Gurley
- (TE) Rob Gronkowski
- (WR) T.Y. Hilton
- (WR) Michael Thomas
- (RB) Carlos Hyde
- (RB) David Johnson
- (RB) Ezekial Elliot
- (RB) Le'Veon Bell
- (WR) Antonio Brown
- (WR) Odell Beckham Jr.
- (WR) Julio Jones
- (WR) Mike Evans
- (RB) LeSean McCoy
- (RB) Jordan Howard
- (RB) Melvin Gordon
- (RB) DeMarco Murray
- (RB) Jay Ajayi
- (WR) A.J. Green
- (RB) Devonta Freeman
- (WR) Jordy Nelson
- (WR) Dez Bryant
- (RB) Todd Gurley
- (TE) Rob Gronkowski
- (WR) T.Y. Hilton
- (WR) Michael Thomas
- (RB) Carlos Hyde
- (RB) David Johnson
- (RB) Ezekial Elliot
- (RB) Le'Veon Bell
- (WR) Antonio Brown
- (WR) Odell Beckham Jr.
- (WR) Julio Jones
- (WR) Mike Evans
- (RB) LeSean McCoy
- (RB) Jordan Howard
- (RB) Melvin Gordon
- (RB) DeMarco Murray
- (RB) Jay Ajayi
- (WR) A.J. Green
- (RB) Devonta Freeman
- (WR) Jordy Nelson
- (WR) Dez Bryant
- (RB) Todd Gurley
- (TE) Rob Gronkowski
- (WR) T.Y. Hilton
- (WR) Michael Thomas
- (RB) Carlos Hyde
- (RB) David Johnson
- (RB) Ezekial Elliot
- (RB) Le'Veon Bell
- (WR) Antonio Brown
- (WR) Odell Beckham Jr.
- (WR) Julio Jones
- (WR) Mike Evans
- (RB) LeSean McCoy
- (RB) Jordan Howard
- (RB) Melvin Gordon
- (RB) DeMarco Murray
- (RB) Jay Ajayi
- (WR) A.J. Green
- (RB) Devonta Freeman
- (WR) Jordy Nelson
- (WR) Dez Bryant
- (RB) Todd Gurley
- (TE) Rob Gronkowski
- (WR) T.Y. Hilton
- (WR) Michael Thomas
- (RB) Carlos Hyde
- (RB) David Johnson
- (RB) Ezekial Elliot
- (RB) Le'Veon Bell
- (WR) Antonio Brown
- (WR) Odell Beckham Jr.
- (WR) Julio Jones
- (WR) Mike Evans
- (RB) LeSean McCoy
- (RB) Jordan Howard
- (RB) Melvin Gordon
- (RB) DeMarco Murray
- (RB) Jay Ajayi
- (WR) A.J. Green
- (RB) Devonta Freeman
- (WR) Jordy Nelson
- (WR) Dez Bryant
- (RB) Todd Gurley
- (TE) Rob Gronkowski
- (WR) T.Y. Hilton
- (WR) Michael Thomas
- (RB) Carlos Hyde
- (RB) David Johnson
- (RB) Ezekial Elliot
- (RB) Le'Veon Bell
- (WR) Antonio Brown
- (WR) Odell Beckham Jr.
- (WR) Julio Jones
- (WR) Mike Evans
- (RB) LeSean McCoy
- (RB) Jordan Howard
- (RB) Melvin Gordon
- (RB) DeMarco Murray
- (RB) Jay Ajayi
- (WR) A.J. Green
- (RB) Devonta Freeman
- (WR) Jordy Nelson
- (WR) Dez Bryant
- (RB) Todd Gurley
- (TE) Rob Gronkowski
- (WR) T.Y. Hilton
- (WR) Michael Thomas
- (RB) Carlos Hyde
- (RB) David Johnson
- (RB) Ezekial Elliot
- (RB) Le'Veon Bell
- (WR) Antonio Brown
- (WR) Odell Beckham Jr.
- (WR) Julio Jones
- (WR) Mike Evans
- (RB) LeSean McCoy
- (RB) Jordan Howard
- (RB) Melvin Gordon
- (RB) DeMarco Murray
- (RB) Jay Ajayi
- (WR) A.J. Green
- (RB) Devonta Freeman
- (WR) Jordy Nelson
- (WR) Dez Bryant
- (RB) Todd Gurley
- (TE) Rob Gronkowski
- (WR) T.Y. Hilton
- (WR) Michael Thomas
- (RB) Carlos Hyde
- (RB) David Johnson
- (RB) Ezekial Elliot
- (RB) Le'Veon Bell
- (WR) Antonio Brown
- (WR) Odell Beckham Jr.
- (WR) Julio Jones
- (WR) Mike Evans
- (RB) LeSean McCoy
- (RB) Jordan Howard
- (RB) Melvin Gordon
- (RB) DeMarco Murray
- (RB) Jay Ajayi
- (WR) A.J. Green
- (RB) Devonta Freeman
- (WR) Jordy Nelson
- (WR) Dez Bryant
- (RB) Todd Gurley
- (TE) Rob Gronkowski
- (WR) T.Y. Hilton
- (WR) Michael Thomas
- (RB) Carlos Hyde


Ekto will provide content that is easy to read so that anyone can understand exactly how the different parts of the computer work and how they come together to achieve everything that computers are capable of.


What is gaming disorder? Gaming disorder is defined in the 11th Revision of the International Classification of Diseases (ICD-11) as a pattern of gaming behavior (“digital-gaming” or “video-gaming”) characterized by impaired control over gaming, increasing priority given to gaming over other activities to the extent that gaming takes precedence over other interests and daily activities, and continuation or escalation of gaming despite the occurrence of negative consequences. For gaming disorder to be diagnosed, the behaviour pattern must be of sufficient severity to result in significant impairment in personal, family, social, educational, occupational or other important areas of functioning and would normally have been evident for at least 12 months.


Daytona Beach is a major resort city on Florida's Atlantic Coast occupying both sides of the Intracoastal Waterway. It is home to the Daytona International Speedway and the Daytona 500 NASCAR race. It is also known for a variety of annual events including Bike Week and is a prominent destination for Spring Break, which is a week during the month of March when most universities and high schools are not in session and all the students head to the beach. During these major events, expect the area to become significantly more crowded and rowdy as the hotels, bars, and restaurants can fill to overflowing.
Besides its reputation as a destination for all things motorsport, the city boasts more than two dozen sites on the registry of National Historic Places.
Daytona Beach and the Ponce Inlet is the southern entry to the famous Palm Coast. The Palm Coast is home to beautiful canals lined with quiet residential communities and nature conservation areas. Pristine marinas are spaced out along the ICW and most are set up for cruising yachts of all kinds.
This is a Port of Entry.
See USA Formalities for full details on clearing into and out of the USA.
Daytona Beach spreads out on either side of the Halifax River, which also serves as the Intracoastal Waterway (ICW). The only access to the sea is via the Ponce Inlet approximately 10 miles south. Tidal streams can run strong in and around the Ponce Inlet and shoaling has been known to occur in the inland waterways, including the ICW.
The Halifax River is crossed by four major bridges in Daytona Beach. Most of the yacht facilities for cruising yachts are south of the southernmost bridge, but there are also some facilities on the mainland side of the northernmost bridge as well.
There are important yachting facilities immediately south of the Ponce Inlet at Flagler and New Smyrna, FL.
Last updated September 2016.
Anchorages:
It is possible to anchor outside the ICW channel. However be cautious in selecting an anchorage near marinas or close to piers. During certain times of the year, high volumes of local boating traffic will be present in the area.
Commercial fishing boats also make port in this area and use the Ponce Inlet on a daily basis.


Meta Talk
- This is part 2 of AI Crash Course.
- Sweet (destructive) live coding.
- Yes I'm @cookiengineer. Blabla.
Preparations
- Use either python2 or python3 for quick webserver
cd /path/to/demo;
python3 -m http.server 1337;
# You should update once in a decade. Srsly.
# python2 -m SimpleHTTPServer 1337;
Disclaimer
- I can't code.
- For real, I'm human.
- Find bugs, keep them for free.
Architecture
- Live-Coding project is in
./demo/pong-evolution
- ES2017 so pretty much Chromium only
Architecture
- One Simulation has one Evolution
- One Simulation has multiple Games
- Each Game has multiple Agents
- Each Agent has one Brain
Architecture
Architecture
Live Demo
Explain Game Code
Architecture
- Training happens at two places
- In
Game.update()
when Paddle hit something
- In
Game.restart()
when Paddle didn't hit something
- Currently only Reinforcement Learning
Already-Implemented Steps
- Create Simulation with parallel Game instances
- Create a Simulation preview switcher
Live-Coding Steps
- Implement
Agent.crossover()
method
- Create an
Agent.fitness
measurement
- Implement
Evolution.cycle()
method
- Hijack
Game.restart()
method
Agent.crossover()
- Each Agent has a Brain.
- Each Brain has a
serialize()
method
- Each Brain has a
deserialize()
method
Agent.crossover()
- Use a random DNA split for weights
- Weights are serialized using
Brain.serialize()
- Return two babies, son and daughter
Evolution.cycle()
- Each Evolution has multiple generations
- Generations represent the history of DNA
- Each cycle / epoche creates new population
Evolution.cycle()
- Create Survivor Population
- Create Mutant Population
- Use
Agent.crossover()
for Breed Population
Simulation.start()
- Modify
Simulation.start()
to use Evolution's population
- Modify
Game.start()
to respect evolution
Simulation.restart()
- Modify
Simulation.restart()
to respect evolution
- Modify
Game.restart()
to respect evolution
Game.update()
- Modify
Game.update()
to set Agent.fitness
- Modify
Game.restart()
to set Agent.fitness


Waste Management: Great Company, Trashy Valuation
by Passive Income PursuitSummary
- Waste Management is a Dividend Contender with 16 consecutive years of dividend growth. Shares currently yield ~1.84%.
- Using Waste Management's cash flow and balance sheet to analyze the quality of the business.
- Valuing Waste Management using dividend yield theory and a MARR analysis.
- Checking in on the one that got away.
Waste Management (WM) is a great defensive business to buttress your portfolio in troubling times. I think the list of people that would rather forego trash pickup and instead let their trash pile up even in the worst of recessions would be few and far between. The steady and defensive nature of the business allows investors to sleep well at night.
Fortunately for me, I purchased shares of Waste Management back in 2011. Unfortunately, and admittedly short-sighted, I sold shares in 2013. I was sitting on ~28% price appreciation in ~20 months and dividend growth had disappointed declining from 7.9% to 4.4% to just 2.8%. In hindsight, I should have been adding shares, but instead I closed the position since it was a negligible part of my portfolio.
I had completely forgotten about Waste Management and happened to come across the business recently. So I wanted to take a deeper look at this defensive name to see how the business is going and whether the valuation makes sense.
Dividend History
I primarily invest in businesses with a history of paying and growing their dividend payouts. The reason I focus on that strategy is that it's usually high quality businesses that can afford to follow that track. It also helps to shift the attention away from what the stock price is doing on a daily basis and to the fundamentals of the business.
Image by author; data source Waste Management Investor Relations
*An interactive version of this data is available here.
Waste Management is a Dividend Contender with 16 consecutive years of dividend growth. That's every year starting in 2004 that Waste Management has been rewarding shareholders with raises. Most importantly, they were there through the financial crisis that wreaked havoc on many companies.
The 1-, 3-, 5- and 10-year rolling dividend growth rates since 2004 can be found in the following table.
| Year | Annual Dividend | 1-Year | 3-Year | 5-Year | 10-Year |
| 2004 | $0.75 | ||||
| 2005 | $0.80 | 6.67% | |||
| 2006 | $0.88 | 10.00% | |||
| 2007 | $0.96 | 9.09% | 8.58% | ||
| 2008 | $1.08 | 12.50% | 10.52% | ||
| 2009 | $1.16 | 7.41% | 9.65% | 9.11% | |
| 2010 | $1.26 | 8.62% | 9.49% | 9.51% | |
| 2011 | $1.36 | 7.94% | 7.99% | 9.10% | |
| 2012 | $1.42 | 4.41% | 6.97% | 8.14% | |
| 2013 | $1.46 | 2.82% | 5.03% | 6.21% | |
| 2014 | $1.50 | 2.74% | 3.32% | 5.28% | 7.18% |
| 2015 | $1.54 | 2.67% | 2.74% | 4.10% | 6.77% |
| 2016 | $1.64 | 6.49% | 3.95% | 3.82% | 6.42% |
| 2017 | $1.70 | 3.66% | 4.26% | 3.66% | 5.88% |
| 2018 | $1.86 | 9.41% | 6.50% | 4.96% | 5.59% |
| 2019 | $2.05 | 10.22% | 7.72% | 6.45% | 5.86% |
Table and calculations by author; data source Waste Management Investor Relations
*An interactive chart of the information in the table can be found here.
Historically, Waste Management has been a solid dividend grower although dividend growth did have a noticeable slowdown from 2012 through 2015 and again in 2017.
Of the 15 1-year periods during Waste Management's dividend growth streak, annual dividend growth has ranged from 2.7% to 12.5% with an average of 7.0% and a median of 7.4%.
Expanding out to the 11 rolling 5-year periods, annualized dividend growth has ranged from 3.7% to 9.5%. The average 5-year annualized growth rate has been 6.4% with the median coming in at 6.2%.
Image by author; data source Waste Management SEC filings
What's fairly impressive is that Waste Management's payout ratios have been trending down over the last decade. That trend has continued even as dividend growth has accelerated.
The average payout ratio based on net income for the last decade, excluding FY 2013, comes to 61.6% with the average for the last 5 years at 57.5%. Based on free cash flow, the average payout ratio for the last decade is 54.3% and the most recent 5 years is 49.2%. For FY 2018, the payout ratios were 41.7% and 42.8%, respectively.
Quantitative Quality
Image by author; data source Waste Management SEC filings
Waste Management might not be growing by leaps and bounds; however, they also don't usually have any prolonged retractions either.  Sales grew from $11.79 B in FY 2009 to $14.91 B in FY 2018. That's good for total growth of 27% or ~2.7% annualized.
Over the same time, operating income grew from $2.02 B to $2.74 B which is 35.4% total growth or ~3.4% annualized. Likewise, cash flow from operations increased from $2.36 B to $3.57 B. Operating cash flow grew a total of 51.1% or ~4.7% annualized over the last decade.
Growth of free cash flow outpaced them all on a percentage basis growing 58.6% in total or ~5.3% annualized. Free cash flow grew from $1.18 B to $1.88 B.
Image by author; data source Waste Management SEC filings
Waste Management's cash flow margins have been improving slightly over the last decade. Operating cash flow margins improved from 20.0% in FY 2009 to 23.9% for FY 2018 and bottomed out at 16.7% in FY 2014. The 10-year average sits at 19.5% with the most recent 5-year average at 20.7%.
Free cash flow margin increased from 10.0% to 12.6% over the last decade. The 10-year average sits at 9.6% with the 5-year average at 10.8%.
My preference is to see free cash flow margins of at least 10%. However, that is not a hard and fast number as some industries don't support levels that high. Waste Management has only had free cash flow margins >10% in 4 of the last 10 years although they have managed to achieve that level for the last 3 years as well as the TTM period.
The free cash flow return on invested capital, "FCF ROIC," is my profitability metric of choice. The FCF ROIC represents the annual cash return that the business generates based on the capital invested in the business. My goal is to find businesses that both earn and can re-invest at high returns on capital.
Image by author; data source Waste Management SEC filings
Waste Management doesn't hit my 10% threshold every year; however, they've done a wonderful job improving FCF ROIC. Over the last decade, FCF ROIC has averaged 8.5% and over the last 5 years, the average comes to 10.0%.
I want the businesses that I invest in to use their cash flow in ways that align with shareholders. That means first and foremost they invest in the business via capital expenditures to both maintain and grow the business. If there's remaining free cash flow, then I expect some of it to be funneled to shareholders. Any other free cash flow would then go to debt reduction, strategic acquisitions, improving the balance sheet or share repurchases if shares represent a good value.
To understand how Waste Management uses its free cash flow, I calculate 3 variations of the metric, defined below:
- Free Cash Flow, or FCF - Operating cash flow less capital expenditures
- Free Cash Flow after Dividend, or FCFaD - FCF less total cash dividend payments
- Free Cash Flow after Dividend and Buybacks, or FCFaDB - FCFaD less cash spent on share repurchases
I believe that quality businesses with prudent management teams will show positive FCFaDB in most years. Opportunities can be fleeting so I'm not concerned about a negative FCFaDB in any given year; rather it's the trend over time that I believe gives a glimpse into managements' thinking. A consistently negative FCFaDB means that more cash is being spent that is generated by operations and that shortfall must be made up through cash on the balance sheet, asset sales or taking on debt; none of which is good for equity holders.
Image by author; data source Waste Management SEC filings
As we saw earlier, Waste Management has generated positive free cash flow every year over the last decade. In total, the business has produced $13.08 B in FCF which has allowed management to both pay a dividend every year.
Over the last decade, Waste Management has paid out a total of $6.82 B in dividends while also maintaining positive FCFaD every year. The cumulative FCFaD for the entire period sits at $6.26 B and has allowed management to grow the dividend as well as pursue share buybacks as another means of returning cash to shareholders.
Waste Management has spent another $5.23 B on share repurchases over the last decade which puts the total FCFaDB for the period at $1.03 B. They've also maintained positive FCFaDB in all but 3 years.
Image by author; data source Waste Management SEC filings
Except for FY 2012, Waste Management's share count has declined every single year. In total the share count has been reduced by 12.6% or ~1.5% annualized. At the end of FY 2009, the share count was 485.0 M and by FY 2018 it was 423.8 M.
As I mentioned above, my preference is to see a management team that prioritizes their cash flow first towards capital expenditures, then paying and growing the dividend and only if there's still cash left over move to share repurchases.
The following chart shows the breakdown of cash used for shareholders.
Image by author; data source Waste Management SEC filings
With a positive FCFaDB in all but 3 years, it should come as no surprise that non-free cash flow supported dividends and buybacks haven't been an issue for Waste Management. Even in the 3 years where extra cash was needed for share repurchases, the excess spending has been negligible at just 2.6%, 4.6% and 1.6%.
My preference is for the companies I own to carry no debt; however, I realize that would severely limit the investment opportunities. As such, I want to see businesses have stable and reasonable debt levels if they are going to lever up. Waste Management's total debt level has been relatively consistent over the last decade. The total debt-to-capitalization ratio has averaged 61.5% over the last 10 years.
Image by author; data source Waste Management SEC filings
The debt that Waste Management does carry is not a concern though. The FCF interest coverage ratio for FY 2019 stood at 4.9x.
Valuation
One method that I use to determine if a business is trading at an attractive valuation is the minimum acceptable rate of return ("MARR") analysis. A MARR analysis entails estimating the future earnings and dividends that a business will produce, apply a reasonable expected multiple on those earnings and then determine the expected return. If the expected return is greater that your MARR, then you can feel free to invest.
Analysts expect Waste Management to report FY 2019 EPS of $4.34 and FY 2020 EPS of $4.63. Analysts also expect Waste Management to generate 8.25% annual earnings growth over the next 5 years in total. I then assumed that Waste Management would have 5.0% annual earnings growth over the following 5 years and that they would target a payout ratio of 45%.
Historically, Waste Management has traded with a TTM P/E ratio between ~16x - 28x. Currently, Waste Management's TTM P/E ratio sits at 27.1x. For the MARR analysis, I'll examine P/E ratios ranging from 15x-27.5x.
Data by YCharts
The following table shows the potential internal rates of return than an investment in Waste Management could provide is the assumptions listed above come to pass. Returns include dividends taken in cash and are calculated assuming a purchase price near $111. Returns are run through the end of calendar year 2024, "5-Year", and calendar year 2029, "10-Year."
Alternatively, I want to know at what price I could purchase shares in order to generate the returns that I desire from my investments. The target returns that I will use are 10%, my typical minimum threshold, 8.5% and 11%. The 8.5% is derived from the ~6.6% estimated annualized earnings growth over the next 10 years plus the 1.8% dividend yield. The 11% adds in 25% undervaluation, ~2.25% annualized, normalizing over 10 years.
Another valuation method that I use is dividend yield theory. Dividend yield theory works best for established businesses with relatively predictable results and that have a history of paying dividends. The idea is that the 5-year average dividend yield is a good proxy for a fair price for the business in question.
Image by author; data source: Yahoo Finance & Waste Management Investor Relations
*An interactive version of this data is available here.
Waste Management shares currently offer a dividend yield of 1.85% compared to the 5-year average yield of 2.40%. Dividend yield theory suggests a fair price of $85.
Conclusion
Waste Management is a solid business with strong profitability. Their free cash flow generation is strong with free cash flow margins regularly around 10%; however, their ROIC isn't quite as strong as I'd like.
The business is very defensive and should hold up well through any recession.  With a very captive audience that means they can also pass along price increases with little to no fuss.
However, the problem isn't the business; rather it's the stock. The current share price near $111 seems awfully stretched given the growth prospects of the business. Much of that likely has to do with Waste Management's quasi-utility status and stable business. In general, investors have been bidding up the share prices, and in turn the valuations, of many defensive industries.
Dividend yield theory suggests a fair value range for Waste Management of $78-$95 implying that shares are trading at a significant premium with the stock price near $111. My fair value range based on the MARR analysis is $84-$102.
I'd like to add this defensive business to my portfolio; however, not at the current valuations. For some perspective, at $111, Waste Management is trading around 20.4x FY 2022's estimates. That's 3 full years of growth that one would be giving up by purchasing now.
Better opportunities lie ahead as market participants come to realize the overvaluation and push the share price down or in any broader market sell-off. I would feel comfortable initiating a small position on pullbacks near $100 with further additions at roughly 5% increments lower.
Disclosure: I/we have no positions in any stocks mentioned, but may initiate a long position in WM over the next 72 hours. I wrote this article myself, and it expresses my own opinions. I am not receiving compensation for it (other than from Seeking Alpha). I have no business relationship with any company whose stock is mentioned in this article.
Additional disclosure: I am not a financial professional. Please consult an investment advisor and do your own due diligence prior to investing. Investing involves risks. All thoughts/ideas presented in this article are the opinions of the author and should not be taken as investment advice.


Scottish Fairy and Folk Tales, by George Douglas, [1901], at sacred-texts.com
The fox is much troubled by fleas, and this is the way in which he gets rid of them. He hunts about till he finds a lock of wool, and then he takes it to the river, and holds it in his mouth, and so puts the end of his brush into the water, and down he goes slowly. The fleas run away from the water, and at last they all run over the fox's nose into the wool, and then the fox dips his nose under and lets the wool go off with the stream. 1
91:1 This is told as a fact.


DNN Training Stages Understanding
Recent works show that DNN training undergoes different stages, each stage shows different effects given a hyper-parameter setting and therefore entails detailed explaination. Below I aims to analyze and share the deep understanding of DNN training, especially from the following three perspectives:
- On the optimization and generalization perspective
- On the frequency domain perspective
- What happens during the early phase of DNN training
On the Optimization and Generalization Perspective
The connection between optimization and generalization of deep neural networks (DNN) is not fully understood. For instance, using a large initial learning rate often improves generalization, which can come at the expense of the initial training loss reduction. In this context four works targeting understanding the connection between optimization and generalization are discussed below.
The Two Regimes of Deep Network Training: Learning rate schedule has a major impact on the performance of deep learning models. Instead of heuristical choice, This paper aims to understand the effects of different learning rate schedules and therefore develop a appropriate way to select. Specifically, two regimes are discussed:
1. Large-step regime: the highest LR w/o loss divergence 2. Small-step regime: the highest LR when loss consistently decrease There is no sharp boundary between them. But the two regimes show large difference in both optimization and generalization effects. For optimization as visualized in Fig. 1, large-step regime are less effective than small-step couterpart, i.e., perform worse loss convergence, and show completely opposite reaction to the momentum, which is a balance item with $\mu$ as coefficient added to the gradient: $g^{t+1} = \mu \cdot g^t + \nabla f$. Specifically, adding momentum makes worse optimization effect for large-step regime while favors small-step regime, this phenomenon accounts for two reasons: 1) small-step regime are easier to be trapped into small convex valley in loss surface; 2) momentum accelerates the optimization for convex function and therefore align with the small-step regime while counter the large-step regime.Fig.1 - Loss trajectory under the two regimes and different momentum values.
On the other hand, the two regimes inherit the same reaction to momentum from the generalization perspective.Fig.2 - Test accuracy under the different learning rates $\eta$ and momentums $\mu$.
Build upon the aforementioned two regimes, this paper proposes a new training scheme, including two stages: 1) use large-step regime targeting good generalization; 2) use small-step regime coupled with large momentum targeting good optimization. Also, they show the ablation study of the transition epoch from the first stage to the second stage, benchmarking on the referenced heuristical three-step learning rate schedule.Fig.3 - Comparison between proposed schedule and the referenced classic three-step learning rate schedule. Towards Explaining the Regularization Effect of Initial Large Learning Rate in Training Neural Networks: This paper shares the same motivation with two regime one, toward explaining the effectiveness of initial large learning rate and annealing scheme theoretically. The unique contribution is that it gives the concrete proof for two-layer fully connected networks case.
Stiffness: A New Perspective on Generalization in Neural Networks: This paper investigates neural network training and generalization using the concept of stiffness. Specifically, it measures how stiff is a network by looking at how a small gradient step on one example affects the loss on another example. Given data pair $(X, y)$, suppose the corresponding loss gradient can be represented by $\vec{g} = \nabla \mathcal{L} (f(X), y)$, then we can discuss the mutual influence caused by two independent data pairs, as shown in Fig. 4.
Fig.4 - A diagram illustrating the concept of stiffness. It can be viewed as the change in loss in an input induced by application of a gradient update based on another input. This is equivalent to the gradient alignment between gradients taken at the two inputs.
and then formulates the discrete (sign) or continuous (cos) stiffness metrics:$S_{sign/cos}((X_1, y_1); (X_2, y_2); f) = \mathbb{E}[\text{sign/cos}(\vec{g_1} \cdot \vec{g_2})]$Based on the proposed generalization metric, they visualize the change of stiffness of two data samples from the same/different classes, and find that the stiffness increase gradually during training, indicating the better and better generalization capability of network. Moreover, they evaluate the stiffness between data samples from training dataset and validation dataset, and find that the proposed metric can identify whether the network training is overfitting from only the training dataset. In particular, as illustrated in Fig. 5, when overfitting occurs, the stiffness measured from both training dataset (train-train) and between training and validation dataset (train-val) regress to zero! Which means we know when the network is overfitting without needs to validate, and demonstrates it is a good metric for quantify generalization.Fig.5 - The evolution of training and validation loss (left panel), within-class stiffness (central panel) and between-classes stiffness (right panel) during training. The onset of over-fitting is marked in orange. The Break-Even Point on Optimization Trajectories of Deep Neural Networks: This paper investigates how the hyperparameters of SGD used in the early phase of training affect the rest of the optimization trajectory. Before talking about the concrete analysis, we need to keep in mind two concepts:
1. Spectrum of Hessian ($\lambda_H^1$): measure the local curvature of loss surface 2. Spectrum of Covariance of gradient ($\lambda_K^1$): measure the variance of gradient The first concept is the break-even point. Instead understanding it from mathematical equations, here I show the intuitively explaination: Assume the spectrum norm of Hessian is monotonically along the optimization trajectory, gradient descent reaches a point in the early phase of training at which it oscillates along the most curved direction of the loss surface, we call this point the break-even point. Specifically, the break-even point is where the spectrum norm of Hessian or Covariance of gradient saturates. Before that point, the spectrum norm will increase monotonically; after that point, the spectrum norm keep the value, meaning that optimization enter the convex-like hall in loss surface thereafter and the trajectory oscillates along the most curved direction. Also, the break-even point comes at the very early stage of network training. Fig. 6 demonstrates the assumption (the spectrum norm will increase monotonically) holds when training simple CNN on CIFAR-10 under two different learning rate setting. It also indicates that the saturate values are different if using different hyper-parameters.Then, to probe how the hyper-parameters of SGD used in the early phase of training matter, one can visualize the optimization trajectories under different hyper-parameter settings in Fig. 7 (i.e., large/small learning rate here). At the beginning, the two settings are optimized from the same initialization and therefore share the same trajectory. After a while, their trajectories diverge towards different directions until reaching the break-even points. While large learning rate reaches smaller $\lambda_K^1$ than its counterpart and shows good generalization thereafter.Fig.6 - The spectral norm of $H$($\lambda_H^1$, left) and $\Delta L$ (difference in the training loss computed between two consecutive steps, right) versus $\lambda_K^1$ at different training iterations. Fig.7 - Visualization of the early part of the training trajectories on CIFAR-10 before reaching 65% training accuracy (break-even point). Red line: LR=0.01; Blue line: LR=0.001.
Based on the break-even points observation, this paper proposes two conjectures to investigate the effects of different hyper-parameters: 1. Along the SGD trajectory, the maximum attained values of $\lambda_H^1$ and $\lambda_K^1$ are smaller for a larger learning rate or a smaller batch size. 2. Along the SGD trajectory, the maximum attained values of $\lambda_H^* / \lambda_H^1$ and $\lambda_K^* / \lambda_K^1$ are larger for a larger learning rate or a smaller batch size.Fig.8 - The optimization trajectories corresponding to higher learning rates ($\eta$) or lower batch sizes ($S$).
On the Frequency Domain Perspective
Understanding the training process of Deep Neural Networks (DNN) is a fundamental problem in the area of deep learning. Here is the papers analyzing DNN training from the frequency domain perspective. The concept of “frequency” is central to the understanding of below papers. In this context, the “frequency” means response frequency NOT image (or input) frequency as explained in the following.
Training Behavior of Deep Neural Network in Frequency Domain: This paper analyze the network training from the frequency perspective, aiming to claim the F-Principle: DNNs often fit target functions from low to high frequencies during the training process.
One of the difficulties of requency analysis for image classification is how to compute the high-dimensional Fourier transform given dataset $(x_k, y_k)$. They use the first principal component of inputs $x_k = x_k \cdot v_{PC}$. Then, Using Fourier transform, we can represent the dataset in frequency domain:$\mathcal{F}_{PC}[y](\gamma) = \frac{1}{n} \sum_{j=1}^{n-1} y_j \cdot exp(-2\pi i x_j \gamma)$Where $\gamma$ is the frequency index. Suppose network prediction is $T(x_k)$, then define the relative difference as:$\Delta_F(\gamma) = \frac{|\mathcal{F}_{PC}[y](\gamma) - \mathcal{F}_{PC}[T](\gamma)|}{|\mathcal{F}_{PC}[y](\gamma)|}$We can view the defined relative difference as frequency loss, measuring the similarity between the frequency of ground truth and predictions. This paper visualizes the changes of frequency loss at several selected frequency indexes during training, shown as Fig. 9.Fig.9 - Frequency analysis of DNN output function along the first principle component during the training. The training datasets for the first and the second row are from MNIST and CIFAR10, respectively. The neural networks for the second column and the third column are fully-connected DNN and CNN, respectively.
By examining the relative error of certain selected key frequency components (marked by black squares), one can clearly observe that DNN of both structures for both datasets tend to capture the training data in an order from low to high frequencies as stated by the F-Principle.On the Spectral Bias of Neural Networks: This paper shares the same motivation and claim with F-Principle.
What happens during the early phase of DNN training
Similar to humans and animals, deep artificial neural networks exhibit critical periods, which is exactly the early phase of training. A lot of phenomenons have been discovered during the early phase of network trianing. For example, sparse, trainable sub-networks emerge, gradient descent moves into a small subspace, and the network undergoes a critical period. Below two recent works are briefly introduced.
Critical Learning Periods in Deep Networks: Researchers have documented critical periods affecting a range of species and system, as a machine learning researcher, one is supposed to explore whether neural network training also experience such critical periods. If so, when is the critical period? This paper gives us the answer using deficit ablation study.
To explore whether critical periods exists in network trianing, this paper measures the test accuracy affected by the deficit as a function of the epoch $N$ at which the deficit is corrected. From Fig.10, we can readily observe the existence of a critical period: If the blur is not removed within the first 40-60 epochs, the final performance is severely decreased when compared to the baseline.Fig.10 - Final test accuracy of a CNN trained with a cataract-like deficit as a function of transition epoch at which deficit is removed.
Further, to explore whether critical periods is early training phase, they conduct another ablation of deficit starting epoch. The decrease in the final performance can be used to measure the sensitivity to deficit, the most sensitive epochs corresponds to the early rapid training phase. Afterwards, the network is largely unaffected by the temporary deficit.Fig.11 - The decrease of final performance of a CNN as a function of the onset of a short 40 epochs deficit. The Early Phase of Neural Network Training: Since early stage of trianing is critical, this paper investigates it further, aiming to provide a unified framework for understanding the changes that DNNs undergo during this early phase of training.
They first provide a detailed statistical summary of the changes in early training phase, taking ResNet-20 on CIFAR-10 as an example.Fig.12 - Rough timeline of the early phase of training for ResNet-20 on CIFAR-10.
Among them, the most attractive pheonmenon is that during 500-2000 iterations (2-10 epochs; 1⁄80-1⁄16 training stages), rewinding starts to be highly effective. Build upon Lottery Ticket Hypothesis (LTH), something important happens during the early phase of training so that rewinding the network should go to these early phases instead of the initial phase. As demonstrated by Fig. 13, rewinding variants perform better than lottery initialization.Fig.13 - Accuracy of IMP (Iterative Magnitude Pruning) when rewinding to various iterations of the early phase for ResNet-20 sub-networks as a function of sparsity level.
Then, they probe what is more important for the early phase of training: signs of the weights or magnitude of the weights? By conductin ablation studies of weight signs and weight magnitude from initialization or early phase, this paper finds that both signs and magnitude are important to handle highly sparse scenarios. Also, they probe whether the weight in early phase can be sampled from a distribution, by shuffling the weight globally or locally and then test their performance under highly sparse scenarios. They find that the weights do not show distributionality at all, thus the early phase of training is the only way to get good initialization in retraining phase so far.


The main goal of this project was to crearte e- commerce website for one of the Biggest Wholesale store in Himachal Pradesh "HIM MART". I was assigned the part of UI Designing for this project while I was in my Last year of Post Graduation in 2014 - 2015.
C#
CSS
HTML
ASP.net
Bootstrap
Adobe Photoshop
Adobe Dreamweaver
Being a part of designing team my work was to design the User Interface where I worked on new technologies like Bootstrap. User Design was something that I specifically enjoyed because it involves engaging with people.
From this project I learnt that how important is the UI Design as User Interface (UI) Design focuses on anticipating what users might need to do and ensuring that the interface has elements that are easy to access, understand, and use to facilitate those actions.Working on this project was one of my best experiences as I learnt alot from this project.


This page lists schedules that can be applied to backup jobs, in order to have
them automatically executed by Bacula on a regular basis. Each schedule has
a unique name, and a list of backup levels and run times. Each run time must
be formatted like mon-fri at 9:00 or sat at 23:00, indicating the
days of the week and time to execute. Days can also be specified as days
of the month, like 1st sun or on 5. See the Bacula online
documentation for the full details of allowed formats.


Create an Intuit account One account for everything Intuit, including Mint. Learn more Email address You'll use this as your user ID Phone (recommended) We strongly recommend adding a phone number. This will help verify your account and keep it safe. Standard call, messaging or data rates may apply. Verify with text message (most secure) Password Create a password you've never used before. This will help keep your account safe. Use 8 or more characters Use upper and lower case letters (e.g. Aa) Use a number (e.g. 1234) Use a symbol (e.g. !@#$) Your password is STRONG. Confirm Password Confirm password field does not match the password field. Create account By clicking Create account, you agree to our Terms and have read and acknowledge our Privacy Statement. Invisible reCAPTCHA by Google Privacy Policy and Terms of Use.


Create an account during checkout
Vivamus id rhoncus odio. Sed molestie rutrum mi et vulputate. Vestibulum a bibendum magna.
Continue to Checkout
Continue as guest
Vivamus id rhoncus odio. Sed molestie rutrum mi et vulputate. Vestibulum a bibendum magna.
Continue as guest


Swe 642 Assignment 2
Computer Science Department
Welcome to the Department of Computer Science. The department offers BS, MS, and PhD programs in Computer Science;
MS programs in Software Engineering, Information Systems, and Information Security and Assurance; and a BS program in Applied Computer Science with various concentrations.
The department also offers concentrations in the inter-disciplinary MS in Data Analytics Engineering and the PhD in Information Technology offered by the Volgenau School of Engineering.
Faculty in the department have research interests in networking, architecture, parallel and distributed computing, performance evaluation,
software engineering, multimedia, graphics and visualization, databases, software engineering, data mining, security, information systems, artificial intelligence, computer vision, and robotics.
- Masters of Science in Computer Science
Master of Science in Computer Science is a breadth-based program. Students are required to complete 30 credits of graduate courses.
Courses are grouped in the following five broad areas:
- Artificial Intelligence and Databases
- Programming Languages and Software Engineering
- Systems and Networks
- Theoretical Computer Science
- Visual Computing
- Masters of Science in Information Systems
To provide a common background in the fundamentals of information systems, four core courses are required of all students.
Six elective courses may be within an emphasis area or according to students' professional interests.
Four core courses (12 credits) are required of all IS graduates:
- INFS 612 Principles and Practices of Communication Networks
- INFS 614 Database Management
- INFS 622 Information Systems Analysis and Design
- ISA 562 Information Security Theory and Practice
- Masters of Science in Software Engineering
Four core courses are required of all MS-SWE graduates:
- SWE 619 Object-Oriented Software Specification and Construction
- SWE 621 Software Modeling and Architectural Design
- SWE 622 Distributed Software Engineering
- SWE 637 Software Testing
- Masters of Science in Information Security and Assurance
To provide the necessary background and fundamentals of information systems security and assurance, the program has three courses that are required of all students:
- ISA 562 Information Security Theory and Practice
- ISA 656 Network Security
- INFS 612 Principles and Practice of Communication Networks OR CS 555 - Computer Communications and Networking
CS Deptartment Survey


6 tips for Subdivision Modeling
Here’s a few tips to keep in mind when Sub-d modeling. I hope you like this written format. If not, let me know.
1. Always start with an accurate Blocking
Blocking is one of the most important stages of modeling. It’s where you define the scale, style, and look of your model. That’s why you should always start with an accurate base shape. Because once you start adding lots of details and holding edges it’s hard to change a shape without getting a big headache.
2. Use as few Polygons as possible
When sub-d modeling you don’t need to worry about keeping curved surfaces smooth because once you apply a few levels of sub-surf (subdivision surface) you won’t be able to see how “low poly” your model really is. Why should you use a 32 sided cylinder if you can use a 6 sided one and apply some non-destructive sub-surf instead? So keep your models as simple as possible. If a polygon doesn’t perform a specific task, then most likely it should be deleted.
3. Tris and N-gons aren’t always Bad
Tris and n-gons have a pretty hideous reputation of ruining topology, but if used in the right circumstances, they can be useful. And in the end, they will be turned into quads anyways. Don’t take this as a green light to use non-quads all you want, but don’t freak out if you have one or two that aren’t ruining your topology flows.
4. Keep your Quads Square
I know you’ve probably heard this one a zillion times. But I still see lots of models with very rectangular quads. This is one of the most basic things you can do to your model to improve it. Keeping your quads square will help keep your model looking even and smooth. As well as helping other tasks like UV mapping.
5. Model using Modifiers
Modifiers are non-destructive. Meaning you can turn their effects on or off at any point in your modeling process. Different 3d modeling apps have different tools. But whichever app you’re using, find out which modifiers could help you when modeling. They can save hours of work.
6. Creases for small or distant Objects
Instead of adding holding edges to keep your corners sharp, crease your edge instead. It will keep your polygon count down and will look perfectly adequate for small or distant objects.


The Guitar Shop
Thank you!
Thank you for contacting The Guitar Shop. A member of our team will respond promptly.
Home
Buy new & Used
Guitar & Amp Repair


Welcome to Game Of Life Multiplayer!
Click on cells to make them alive and paint them with the color assigned to you (highlighted user icon is you).
Game flows following these rules:
- Any live cell with fewer than two live neighbors dies, as if caused by under-population.
- Any live cell with two or three live neighbors lives on to the next generation.
- Any live cell with more than three live neighbors dies, as if by overcrowding.
- Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.
- When a dead cell revives by rule #4, it will be given a color that is the average of its neighbors (that revive it).


--- layout: newsstory title: OFFICIAL CHAMBERS RESIGNS match: Weymouth 4 Yeltz 1 ---
The club has released the following press release:
Halesowen Town FC Official Club Press Statement "Following Saturday's 4-1 defeat at Weymouth John Chambers has resigned. The club have accepted his resignation. Assistant Manager Alan Moore has been put in temporary charge of team affairs."
The Weymouth game was one of the worst from a Halesowen team that many people can remember - our goal was a first half equaliser from Stuart Payne - but then we went down 4-1 to give Weymouth their 1st win of the season, and our 4th defeat out of 5.
We're not bottom of the table as Tamworth don't have any points at all, but it's already looking like we're in for a long, hard relegation struggle.
Tuesday brings old rivals Burton Albion to The Grove in a warm-up for our FA Cup game later in the month. I've decided to concentrate on the cups this season.
Weymouth: Potter; Cameron, Hale, Hare, Browne, Cross (Funnell 15), Gammon (Spiller 78), Hutchinson (Nicholson 76), Robotham, Underhay, Tilley
Halesowen Town: Quy; Wood, Owen, Comyn, Ford, Cartwright, Collins, Mansell (Dodd 65), Griffiths (Piggott 61), Payne, Hines. Sub: Lloyd
Booked: Wood, Hale, Payne, Collins Referee: B. Baker (Andover) Attendance: 730
John Chambers resigned as manager of Halesowen Town after two years in charge at The Grove following another disturbing defeat against a Weymouth side without a win and suffering from a number of key injuries. Harry Rudge would have called it a "bad day at Black Rock" with another chapter in the history of HTFC about to close and all the pre-season promise finally turning to ashes.
One bright spot was the form of goalkeeper Andy Quy who put in an another excellent display for the Yeltz. The tone of play for the afternoon was set in the 5th minute when Quy saved Martin Underhay's 15 yard drive. Quy went on to make further tremendous first half saves from Underhay and Darren Robotham with the visiting defence unable to close down the Weymouth attack. However, Quy had no chance as Weymouth took the lead in the 31st minute with the unmarked Ian Hutchison powerfully heading Anthony Tilley's corner home from 12 yards.
In truth, apart from some early neat play, Halesowen lacked the organisation or balance to pose a serious threat to Weymouth, registering only one shot on target all afternoon. Ross Collins did well to rob the Weymouth midfield and set up Stuart Payne to easily slot home an equaliser in the 43rd minute.
The brief period of hope for the Yeltz faithful disappeared as Weymouth took second half control and went back in front after five minutes of the restart. Quy saved Matthew Hare's goalbound drive from Anthony Tilley's freekick but the defence failed to clear the danger and Robotham was able to latch onto the rebound.
John Chambers introduced Garry Piggott for Michael Griffiths and Andy Dodd brought short Craig Mansell's return to Weymouth, but the substitutions failed to breathe life into the Yeltz who fell further behind to two late goals. Matthew Gammon played a neat interchange with Robotham in the 72nd minute and Matthew Hale had the easy task of beating the exposed Quy from close range. It was no surprise when Hale added a fourth goal five minutes from time after being set up by Robotham again as Halesowen's heads dropped in despair at their dreadful start to the new season.


Sam Class¶
-
class
sam.
Sam
(logProbability, scale, lowerBounds=None, upperBounds=None)¶ A class for sampling from probability distributions.
Instantiates the sampler class and sets the logProbability function.
Parameters: - logProbability – A function which takes one or three arguments and returns the natural log of the probability evaluated at the position given by the first argument. If three arguments are allowed, the second argument provides an array to write the gradient to, and the third argument is a bool indicating whether a gradient is required for that call to the function.
- scale – An array whose length is the number of parameters in the target distribution.
- lowerBounds – An array whose length is the number of parameters which defines lower boundaries below which the parameters will not be sampled. The sampler is optimized so that these boundaries are enforced efficiently, and so will not decrease the acceptance rate. If None, no boundaries are enforced.
- upperBounds – Same as lowerBounds, but defines the upper boundaries
Returns: An instantiated object of the class.
Running the Sampler¶
-
sam.Sam.
run
(self, Size nSamples, x, Size burnIn=0, Size thinning=0, Size recordStart=0, Size recordStop=-1, bool collectStats=False, Size threads=1, bool showProgress=True)¶ Begin sampling the parameters from the given logProbability dist.
Parameters: - nSamples – The desired number of samples to record per thread.
- x – The initial position(s) to start the sampler at.
- burnIn – The number of MCMC steps to take before recording begins.
- thinning – The number of MCMC steps to take between recordings and burn-in steps. This directly multiplies the amount of work the sampler needs to do.
- recordStart – The index of the first parameter to be recorded. Default is 0.
- recordStop – The index of the last parameter to be recorded, plus one. Default is the number of parameters (all are recorded).
- collectStats – Whether the sampler should collect running statistics as it runs. This is probably only desirable if not all parameters are being recorded. Default is False
- threads – The number of computational threads to run in. If this is greater than 1, the multiprocessing library is used to run this many fully independent samplers in parallel.
- showProgress – Whether to print a progress bar as the sampler runs.
Returns: The parameter samples, of the shape [N x M X T], where N is the number of parameters of target distribution, M is the number of samples requested (nSamples), and T is the number of threads used. If threads is 1 the last dimension is omitted. This data is also stored internally and can be accessed later using other functions.
Picking Samplers¶
By default, Sam will use a simple Metropolis-Hastings sampler. You can manage
the different samplers by using the following functions. Note that you can
several samplers in combination, so as to use different algorithms for
different parameters. This is done using the dStart
and dStop
-
sam.Sam.
addMetropolis
(self, covariance=None, Size dStart=0, Size dStop=-1)¶ Adds a metropolis sampler with a non-diagonal covariance.
This sampler sets up a Metropolis-Hastings sampler to be used during the sampling procedure. The proposal distribution is a normal distribution centered at self.x, with a covariance supplied by the user. If no covariance is supplied, default is a matrix with self.scale (set during initialization) as the diagonal (this is slightly faster to produce random numbers for).
Parameters: - covariance – The covariance matrix to be used. Should be [M x M], where M=dStop-dStart. May be None to use a diagonal matrix with self.scale as the diagonals.
- dStart – The index of the first parameter to be included. Default is zero.
- dStop – The index of the last parameter to be included, plus one. Default is the last index + 1.
-
sam.Sam.
addAdaptiveMetropolis
(self, covariance=None, int adaptAfter=-1, int recordAfter=-1, int refreshPeriod=100, double scaling=-1, double eps=1e-9, Size dStart=0, Size dStop=-1)¶ Adds an Adaptive Metropolis sampler to the sampling procedure.
This sampler is the Adaptive Metropolis (AM) algorithm presented in Haario et al. (2001). The algorithm initially samples with a given proposal covariance, but after a number of steps, uses the covariance of the samples to estimate the optimal proposal covariance. Each time the propsal is updated, the cholesky (order n^3) must be computed, so it may be advisable not to set the refresh period too low if n is large. Note that the estimated covariance is updated every time the sampler is called, but that this is not propagated to the sampler until the refresh occurs.
Parameters: - covariance – The initial proposal covariance to sample with. Should be [M x M], where M = nStop - nStart.
- adaptAfter – How many times the sampler must be called (and thereby collect samples) before the adapted covariance is used. Must be larger than the number of dimensions being adapted to. The default (triggered by any negative number) is three times that or 100, whichever is greater.
- recordAfter – How many times the sampler must be called before the adapted covariance begins to take in samples. This is to prevent pre-burned-in samples from being used to adapt with, which can dramatically reduce the effectiveness of sampling.
- refreshPeriod – How many times the sampler is called between the cholesky of the covariance being updated (the expensive part).
- scaling – How much to scale the estimated covariance to get the proposal covariance. Default, signified by -1, is to use 5.76/nDim, suggested in Haario et al.
- eps – The epsilon parameter in Haario et al. (2001). It needs to be small but nonzero for the theory to work, but in practice seems to work at zero as well. Default is 1e-9, and probably will not need to be changed by the user unless the covariance is on that scale or less.
- dStart – The index of the first parameter to be included. Default is zero.
- dStop – The index of the last parameter to be included, plus one. Default is the last index + 1.
-
sam.Sam.
addHMC
(self, Size nSteps, double stepSize, Size dStart=0, Size dStop=-1)¶ Adds a Hamiltonian Monte Carlo sampler to the sampling procedure.
This sampler sets up an HMC sampler to be used during the sampling procedure. The proposal distribution is a normal distribution centered at self.x, with diagonal covariance where the scale (set when the sampler object was initialized) is the diagonal components.
Parameters: - nSteps – The number of steps in the trajectory
- stepSize – Multiplied by self.scale to scale the process.
- dStart – The index of the first parameter to be included. Default is zero.
- dStop – The index of the last parameter to be included, plus one. Default is the last index + 1.
-
sam.Sam.
printSamplers
(self)¶ Prints the list of any/all sampling systems set up so far.
This refers to samplers added using e.g. addMetropolis() functions. See the overall class documentation for more information on these. The type of function and any parameters given (unique to each sampler type) are printed.
-
sam.Sam.
clearSamplers
(self)¶ Clears the list of samplers.
Surrogate Sampling¶
Sam supports the use of a Gaussian process (GP) as a surrogate model for the
posterior probability. This means that each time the sampler needs to know
the value of the posterior probability at a point, the GP is consulted first.
If the GP is able to estimate the posterior probability with uncertainty less
than a certain tolerance, then this estimate is used and the logProbability
function provided by the user is not called. Otherwise logProbability
is
called and the result is added to the GP for future reference. This
approach can reduce the number of likelihood evaluations considerably at the
cost of some modest overhead. It becomes less effective for high-dimensional
problems. When the surrogate is enabled, you can access it via
Sam.surrogate
to e.g. retrieve the results of actual likelihood
evaluations ( Sam.surrogate.x
and Sam.surrogate.y
)
-
sam.Sam.
enableSurrogate
(self, xInit, yInit, kernel='matern32', tol=1e-2)¶ Turns on surrogate sampling and initializes the surrogate GP.
In order to get reasonable parameters for the Gaussian process, you must provide at least some initial points to optimize the GP on. More points can help reduce the number of likelihood evaluations, but will slow down GP computation, so don’t overdo it.
Parameters: - xInit – The sample positions to initialize the GP with.
- yInit – The values of the likelihood to initialize the GP with.
- kernel – The kernel to use in the GP surrogate. Must be differentiable if you want to use the gradient.
- tol – How much uncertainty in the log likelihood to permit without calling the likelihood function.
-
sam.Sam.
disableSurrogate
(self)¶ Disables the use of a surrogate model if previously enabled.
Examining the Results¶
-
sam.Sam.
samples
= the samples collected as a Numpy ndarray of shape [nThreads, nSamples, nParameters]¶
-
sam.Sam.
results
= same as ``samples``, but flattend across threads: [(nThreads x nSamples), nParameters]¶
-
sam.Sam.
summary
(self, paramIndices=None, returnString=False)¶ Prints/returns some summary statistics of the previous sampling run.
Statistics are the parameter index, the acceptance rate, mean, and standard deviation, as well as the 16th, 50th, and 84th percentiles.
Parameters: paramIndices – The indices of the parameters to be described. If set to None, then all parameters will be described. Returns: The summary message as a string if returnString is True, otherwise returns None.
-
sam.Sam.
getStats
(self)¶ Returns running-average and standard deviation statistics.
Note that this is only applicable if collectStats was enabled during the sampling procedure (default is off). You will need to compute the values directly from the sample otherwise. This is intended as a tool for tracking nuisance parameters for which it was not worth recording the samples from – see recordStart and recordStop in the self.run arguments.
Returns: An array of means and an array of standard deviations of the parameter samples.
Model Comparison¶
Several functions are available for computing model comparison statistics on the results of a run. Since only the posterior probability is known to the sampler, you must provide a function which returns the prior probability given the parameters in order to compute these.
-
sam.Sam.
getAIC
(self, prior)¶ Approximates the AIC from the sampled values.
This function needs to know the prior because only the full posterior probability was given to the sampler at runtime. The value of the prior is subtracted off, and the sample with the maximum resulting likelihood is identified. The BIC is computed assuming that this is the global maximum likelihood; for a well sampled posterior, this will be a good approximation.
This function shouldn’t be used in a heirarchical setting, as the AIC is not defined for that case (the number of parameters isn’t clearly defined). Consider the DIC instead.
Parameters: prior – a function which takes an array of parameters (same length as the logProbability function) and returns the prior for them. Returns: The estimated AIC for the model as a floating point number.
-
sam.Sam.
getBIC
(self, prior, nPoints)¶ Approximates the BIC from the sampled values.
This function needs to know the prior because only the full posterior probability was given to the sampler at runtime. The value of the prior is subtracted off, and the sample with the maximum resulting likelihood is identified. The BIC is computed assuming that this is the global maximum likelihood; for a well sampled posterior, this will be a good approximation.
This function shouldn’t be used in a heirarchical setting, as the BIC is not defined for that case (the number of parameters isn’t clearly defined). Consider the DIC instead.
Parameters: - prior – a function which takes an array of parameters (same length as the logProbability function) and returns the prior for them.
- nPoints – The number of data points used to evaluate the likelihood.
Returns: The estimated BIC for the model as a floating point number.
-
sam.Sam.
getDIC
(self, prior)¶ Approximates the DIC from the sampled values.
This function needs to know the prior because only the full posterior probability was given to the sampler at runtime. The value of the prior is subtracted off, and the sample with the maximum resulting likelihood is identified. The BIC is computed assuming that this is the global maximum likelihood; for a well sampled posterior, this will be a good approximation.
Parameters: prior – a function which takes an array of parameters (same length as the logProbability function) and returns the prior for them. Returns: The estimated DIC for the model as a floating point number.


Pronouns Nominative
Pronouns Genitive
Noun Plurals
Nouns Genitive
Accusative Singular
A-Type Verbs
A-Type Verbs Vocabulary
I-Type Verbs
I-Type Verbs Vocabulary
O-Type Verbs
O-Type Verbs Vocabulary
Verbs Future
Locative Singular
Places in the City, part 1
Places in the City, part 2
Places in the City, part 3
Present Forms of "To Be" Verb
Case Questions
Verbs Past : O-Type
Verbs Past : E-Type
Numbers Ordinal Nominative
Colours
Adjectives : Singular Endings
Adjectives : Antonyms
Adjectives : Vocabulary
Adjectives Nominative Plural
Nouns Dative
Professions Vocabulary EnLt


{% unless page.template == 'alt-1-topic-landing' %}
{% if path contains 'disability-benefits' %}
{% include "content/includes/action-bar.html" action_text="Apply for Disability Benefits" action_url="/disability-benefits/apply-for-benefits/" action_class="va-action-bar--header" %}
{% endif %}
{% if path contains 'education' %}
{% include "content/includes/action-bar.html" action_text="Apply for Education Benefits" action_url="/education/apply-for-education-benefits/" action_class="va-action-bar--header" %}
{% endif %}
{% if path contains 'healthcare' %}
{% if showactionbar == true %}
{% else %}
{% include "content/includes/action-bar.html" action_text="Apply for VA Health Care" action_url="/healthcare/apply/application" action_class="va-action-bar--header" %}
{% endif %}
{% endif %}
{% endunless %}
{% include "content/includes/breadcrumbs.html" %}
{{ title }}
{{ contents }}
{% include "content/includes/main-navigation.html" %}


Welcome to AngularFaces 2.1!
Based firmly in the future...
This demo uses the new JSF 2.2 HTML5 style to define the components.
Add on server (AF AJAX)
Add on server (JSF AJAX)
Add on server (without AJAX)


An Enumeration of all possible CannedACLs that can be used for S3 Buckets or S3 Objects. More...
Public Member Functions | |
| (id) | - initWithStringValue: |
Static Public Member Functions | |
| (S3CannedACL *) | + private |
| Owner gets FULL_CONTROL. | |
| (S3CannedACL *) | + publicRead |
| Owner gets FULL_CONTROL and the anonymous principal is granted READ access. | |
| (S3CannedACL *) | + publicReadWrite |
| Owner gets FULL_CONTROL, the anonymous principal is granted READ and WRITE access. | |
| (S3CannedACL *) | + authenticatedRead |
| Owner gets FULL_CONTROL, and any principal authenticated as a registered Amazon S3 user is granted READ access. | |
| (S3CannedACL *) | + bucketOwnerRead |
| Object Owner gets FULL_CONTROL, Bucket Owner gets READ. | |
| (S3CannedACL *) | + bucketOwnerFullControl |
| Object Owner gets FULL_CONTROL, Bucket Owner gets FULL_CONTROL. | |
Protected Attributes | |
| NSString * | stringValue |
An Enumeration of all possible CannedACLs that can be used for S3 Buckets or S3 Objects.
| + (S3CannedACL * S3CannedACL.)bucketOwnerFullControl |
Object Owner gets FULL_CONTROL, Bucket Owner gets FULL_CONTROL.
This ACL applies only to objects and is equivalent to private when used with PUT Bucket. You use this ACL to let someone other than the bucket owner write content (get full control) in the bucket but still grant the bucket owner full rights over the objects.
| + (S3CannedACL * S3CannedACL.)bucketOwnerRead |
Object Owner gets FULL_CONTROL, Bucket Owner gets READ.
This ACL applies only to objects and is equivalent to private when used with PUT Bucket. You use this ACL to let someone other than the bucket owner write content (get full control) in the bucket but still grant the bucket owner read access to the objects.
| + (S3CannedACL * S3CannedACL.)private |
Owner gets FULL_CONTROL.
No one else has access rights (default).
| + (S3CannedACL * S3CannedACL.)publicRead |
Owner gets FULL_CONTROL and the anonymous principal is granted READ access.
If this policy is used on an object, it can be read from a browser with no authentication.


Jessie Reyez & Pink Sweat$ Connect For "Honesty" Remix
The remix you didn't know you needed.
by Milca P.Honesty (Remix)
Pink Sweat$ Feat. Jessie Reyez
Editor Rating: VERY HOTTTTT
User Rating: meh - 58% (3)
Pink Sweat$ is still crafting his major-label Pink Planet debut, and as we continue to await the finished product, the Philadelphia-bred crooner has reached back into the catalog to deliver on an update to his "Honesty" breakout track.
This time around, he taps Jessie Reyez for the assist as the two engage in an updated dialogue. You'll find the stripped-down acoustic background being treated to a new layer of drums, creating a much more dynamic track. While it certainly doesn't take away from the magic found in the original cut, it serves up an addictive renovation to the selection. It may very well point toward the sound that we can look forward to on Pink Planet.


apps applications Health diabetes mobile conditions World collab: number hearing Diabetes commercial app health results Organization {border-style Asthma px;} #ffffff;} monitoring prevalent million IEEE Med developed review type loss low research Internet condition used General Global Hearing designed care case depression literature vision Anemia BlackBerry Figure different mHealth people published (Google Android Headache International Nonclinical Table Wireless anemia asthma developing mellitus order patients play) use wireless (not ./db- Analysis App Snapshot Text, application apps, apps. commercial) condition, condition. eHealth educational followed functions important informative loss, migraine new papers phone px; smartphones {font-family Apps Basic Mobile Osteoarthritis Ovi Res SIGN Windows affected analysis articles countries devices diabetes, font-size graphs lack management related review. selected types using visualization "depressive Area Conference Depression Fact Finally, IDA Store Type alcohol anemia, clinical data depressive disease double; knee m-health osteoarthritis search shown store study text use, vision, visual "condition Apple Biol Conf EZReader Eng Guide Log Migraine Network OnTrack PAGAS Patient Positive Proc Series: Simple Soc Theme Valladolid aimed asthma, behavioral border-color border-width called children common comparing conditions. dedicated diseases existing iOS pictures reviews shows software solid; specific technologies total tracking unipolar {font-style {font-weight > ./EMBC.. ./jmir. Allergic Care Control Data Engineering Free Happy Low Networks New OA, Occasional Phone Proceedings Program Regular Results Review Rhinitis Software Technology Test University VirtualClinic VizWiz Web Worldwide Yes article assistive attacks audio bold burden cases cell conditions, courier; creating depression, developers development disorders em; estimated evaluation fewer field following friend: guide guidelines impairment in-depth intervention latest majority nonclinical play prevalence pt;} public searching second smartphone strings systematic tablets technology therefore, tools use. usually work


About
Support
Connect
In return for your support at each level, please accept a complimentary gift:
At the $25 level, you will recieve a Ron Sticker
At the $100 level, you will recieve Breakfast
At the $1,000 level, you will recieve a Hunting Cabin
At the $50 level, you will recieve a Meat Tornado
At the $500 level, you will recieve an official Shirt
At the $2,700 level, you will recieve a hand-made Canoe
$25
$50
$100
$500
$1,000
$2,700
Payment Information
If you have given previously, enter your credit card number and check the box below
Credit Card Number:
CCV:
I have given previously
Personal Information
First Name:
Last Name:
Phone Number:
Email:
Billing Information
Address:
City:
State:
Zip:
Donate!


Skip to menu
Skip to content
Skip to footer
{{ bookmark.split('/')[1] }}
Name
Owner
Last Modified
File size
Permission