Loch Bras d'Or by Margaret MacPhail
About the book
Author: MacPhail, Margaret, 1887-1976
Title: Loch Bras d’Or
Publication: Windsor, N.S. : Lancelot Press, 1970. ISBN number not available.
DAISY audio format narrated by Mary Delaney. CELA library call number DA45504. 163 pages in the paper edition; 6 hrs., 46 mins. as a recorded book.
About the story
Why did I enjoy this book? The narrator, Mary Delaney: she was superb!
The book itself is chronicles two families in the Cape Breton of the 1880s, one Protestant and the other Catholic (Barra). It’s an ode to the people and the land of this Cape Breton area in the 1880s.
When his exhausted mother dies in childbirth, young Hamish is sent to live with the McNabs. Though not Catholic, they are fine upstanding people and very well-respected in the community. The story that follows is one of poverty and unending toil, strong religion, betrothals and wakes. It’s the story of the old world making way for the new, brought in by the young returning from Boston. It ties the resilient Cape Breton settlers to the Highlanders who emigrated, tracing the first and second generation, celebrating their accomplishments, their joys and their sorrows, their hard and unceasing work.
As a story, I found it a bit too religious and a bit hard to follow, cast-of-characters-wise. At times, it seemed more exposition than fiction, in fact. But this is where the narrator absolutely shines! She uses and defines the Gaelic words so fluently and naturally that it seems like she is discussing familiar concepts with a friend. Not for her the awkward recitation of quoted songs—she actually takes the time to look up the melody (Wild Colonial Boy, in this instance the air was provided) and to set the words to it.  And she has a lovely singing voice.
As the (also sung!) epilogue on the life of the “authoress” explains, Margaret MacPhail came to Loch Bras D’Or as a young girl and wrote the book when she was 83 (it was published in 1970). While not exactly a memoir, it has a very real lived-experience feeling to it and is very much a novel about a time and a place, with people added in to carry the plot along some. McPhail must have written more books, because the Toronto Public Library also lists by the same author The girl from Loch Bras d’Or (1973) and The bride of Loch Bras d’Or (1974). She passed away in 1976.
I’m not sure why the CNIB decided to produce the talking book in 2014, but I’m glad they did, and even gladder that they selected Mary Delaney to narrate it. I’ve become a fan!
Recommended?
Recommended for Delaney’s truly outstanding narration. Not sure I would have read it in paper format.
A view of the Bras d’Or lake in Nova Scotia, courtesy of the Library of Congress.


ONCE WERE WARRIORS A film review by Krishin Asnani Copyright 1995 Krishin Asnani
"Sharp Edged" were the words that floated through my mind when I saw the film from New Zealand called ONCE WERE WARRIORS last night at the chi-chi Paris theater that is adjacent to the very elegantly arching Grace building outside of which are trees with very pretty yellow flickering lights. As I walked back to the car after the film in the freezing night with my hands firmly planted in the pockets of my jacket, none of this beatific scenery outside helped me escape the film which remained lodged in my mind long after it was over.
The opening shot of the film is a picture-perfect postcard view of New Zealand's pristine mountains. We quickly realize this is a billboard poster as the camera pans away from it to reveal a highway and the dilapidated neighbourhood under it which forms the stark canvas of this film. The attention grabbing opening credits with the hip-hop music juxtaposed with very short bluesy guitar riffs set up the brutal tone for the film.
We are in the home of the Heke family who are descendents of the Maori tribe. This tribe has urbanized itself but the members of the family still have varying degrees of ties to the tribe and its rituals. Jake is the brutal-looking and very muscular father who wears small tattoos on his neck and like every member of the member wears leather paraphernalia-all characters in this film look like they belong to a motorcycle gang; Beth is the mother whose face has many similarities to Jeane Moreau though her mouth is not pointed downward like Moreau's and therefore Beth's smile is quite sensuous. (Janet Maslin at the Times actually sees the connection between Beth and Moreau). Her broad forehead, silky golden hair, and a very angular and high cheekboned face convey a sense of congeniality and are pointers to her Maori roots.
Jake and Beth have five children who occupy two rooms. One night the boozy and recently unemployed Jake brings home his huge party of drunkard friends who also belong to the Maori tribe who don the same type of costume as the Hekes; they have a grand time sitting around the living room, drinking and crooning melodious tunes-there is one by Jake and Beth that is really quite affecting. The children sleeping in the next room remark that alcohol brings out the true feelings of love. Beth's bliss is very short-lived, a fight breaks out between Jake and Beth and this is probably the scene that will rattle you and make you recoil-the vividness of Jake's brutal and vicious violence is so acute that you just can't look at the screen but before you know it its over-your eyes have no chance to bolt. The exquisite and the expressive face of Beth is battered. And the "true feelings of love" are very scarce at that point. Not to sound too cold but the editing of this scene is remarkable.
This has been going on for most of the sixteen years of their marriage; Beth endures the husband for the sake of the children. Jake can be a real charmer and that makes Beth forgive him.  There is absolutely no sense of balance let alone self-doubt to him. After this first flare-up, his physical menace is always at the back of our minds. Besides Beth, some of the patrons at a local bar become his punching bags too. The nihilistic onlookers display very little alarm. The man who plays Jake (Temeura Morrison) actually plays a very well-likable doctor in a New Zealand soap opera.
Beth's face has had such a workout that she is unable to go to court next day to prevent her younger son from being taken into a state welfare institution. This son, by the end of the film, achieves some measure of identity--thanks to the teacher at the institute who is able to channelize the son's energy into learning Maori rituals. These rituals performed by the disaffected yet trying to reform youth are a form of martial-arts dance that is accompanied by their beautiful chanting. The direction of these scenes is handled with panache, stylization and theatrics that only an experienced director would be capable of. Surprisingly, this is director Lee Tamahori's debut film.
An older son takes refuge in a gang that has strong ties to the Maori tribe: the members wear very creative tattoos on their faces and their entire body and their uniform is all leather and chains. The initiation rites are brutal but are exquisitely well photographed. Grace, the 13 year daughter in the family is the only sane child with a very innocent face that exudes equanimity in this violent home. Her best friend is a soulful, chain-smoking, dreadlock-wearing homeless boy who lives inside a junked car under a highway.
The relationship between Beth and Grace is well explored in a scene which occurs few days after the violence and Jake has apologized to Beth. The family takes a trip in their new car to see their younger son in the institution. On their way, they stop at a picnic spot to revel in nostalgia of their former lives as tribe members. These scenes are magical in their lyricism, the scenery of the picnic spot is breathtaking. They get back in the car and Jake and Beth sing along to a pop song blaring out from their car radio.
Again, this bliss is transitory: on their way to the institution, Jake stops at a bar for one beer only (he promises) while the family waits for him in the car. After half an hour, when Beth goes in to get him, he shouts at her in a way that will make anyone tremble to stop interrupting him from watching the horse races on the tele. At this point Beth is convinced that she has to dig herself out of this dysfunctional marriage.
After yet another heartfelt tragedy that will go unmentioned here, Beth lectures Jake on the greatness of her tribe and how its characteristics are different from Jake's. The speech is didactic, and it is delivered with great passion: the only face on the screen is Beth's, the wind makes her hair sway back revealing the steely determination of her clear blue eyes in a broad face that deserves a lot better fate.
The film is supposed to be an exercise that explores the rootlessness of this tribe, the politics of how they deal with the present society that knows very little about them and the past that they have little connection to. It has become the most popular film in the history of New Zealand and deserves to be be in the Top 10 lists of US critics at the end of 1995. The director is very talented, has found an interesting topic to explore and has many talented friends in the sound, editing, music and cinematography departments and all pitch in to give this the film a raw, industrial, and a very professional look.
For me, the personal was far more engaging than the political.
-Krishin
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


--- layout: default title: "Bronze" ---
By Georgia Douglas Johnson
Author of 'The Heart of a Woman,' 'An Autumn Love cycle,' etc.
With an Introduction by Dr. W.E.B. DuBois


{% if login_url %}
This media item can only be viewed by University of Cambridge users who have logged in to the Streaming Media
Service with their Raven account
Login
{% else %}
You don't have access to this media.
{% endif %}


 Grab a friend, neighbor, or family member for more fun on the trail. Hiking with a partner, or even in a group, can improve the strength and health of your relationships. Because hiking ranges in difficulty from an extremely challenging climb to a casual way of spending time outside, it’s a great way to strengthen the friendships or bonds you have with your companions. Whether it’s with a younger sibling, neighborhood friend, or even a grandparent, hiking a trail together can bring you closer and help build a healthy relationship.
MUM TERRA SITE


{% extends "marketing-base.html" %} {% block title %}Password Reset Sent - {{ block.super }}{% endblock %} {% block body_id %}pasword-reset-done{% endblock %} {% block body_class %}secondary full{% endblock %} {% block content %}
We’ve emailed you instructions for setting your password to the email address you submitted. You should be receiving it shortly.


SINDyPDE¶
Derived module from sindybase.py for SINDy of PDE
-
class
pySINDy.sindypde.
SINDyPDE
(name='SINDy model') Bases:
pySINDy.sindybase.SINDyBase
Data-driven discovery of partial differential equations reference: http://advances.sciencemag.org/content/3/4/e1602614/tab-pdf
-
compute_spatial_derivatives
(data, dx, order, acc) Compute the spatial derivatives presented in descriptions with proposed method :param data: a dict of arrays, value of state variables :param dx: float or a list of floats, for spatial grid spacing :param order: maximum order of derivatives applied on spatial dimensions :param acc: accuracy of the derivatives :return: a dict of arrays of spatial derivatives
-
static
dict_to_2darray
(data_dict) This function flattens all the arrays in a dict and stack them together :param data_dict: a dict of arrays :return: a 2D numpy array and a list of descriptions
-
fit
(data, dt, dx, poly_degree=2, space_deriv_order=2, cut_off=0.001, deriv_acc=2, sample_rate=1.0) Parameters: - data – a numpy array or a dict of arrays, dynamics data to be processed
- dt – float, for temporal grid spacing
- dx – float or list of floats, for spatial grid spacing
- poly_degree – degree of polynomials to be included in theta matrix (all derivatives remain degree 1)
- space_deriv_order – maximum order of derivatives applied on spatial dimensions
- cut_off – the threshold cutoff value for sparsity
- deriv_acc – (positive) integer, derivative accuracy
- sample_rate – float, proportion of the data to use
Returns: a SINDyPDE model
-
static
orders_to_op
(order, dx, acc) Parameters: - order – orders of the derivative
- dx – a float or a list of floats, grid spacings
- acc – a positive integer, accuracy of the derivatives
Returns:
-
static
product_expansion
(u, v, u_desp, v_desp, included=True) Parameters: - u – a 2D numpy array of features stored in each column
- v – another 2D numpy array of features stored in each column
- u_desp – a list of descriptions for each columns of u
- v_desp – a list of descriptions for each columns of v
- included – a boolean value, indicates whether to include original columns or not
Returns: a 2D numpy array of product features and corresponding descriptions
-
static
sampling_idxs
(shape, space_sample_rate, time_sample_rate, acc_x=2, acc_t=2, major='row') Parameters: - shape – numpy array shape information
- space_sample_rate – proportion of sampling for spatial dimensions
- time_sample_rate – proportion of sampling for time dimension
- width_x – specify the boundary for spatial sampling
- width_t – specify the boundary for temporal sampling
- major – either ‘row’ (row major) or ‘col’ (column major)
Returns: a list of indices of sampling points
-


Mclaren-JonahJhay Record Label
Home
Artistes
Allaccess
Releases
New Singles
Playlists
Our Label
New Singles
Check out the latest music, videos, merch, and more from your favorite Atlantic Records artists
New Music Friday
Your Ears will Tell You More About Us.
Without Music life Would be a mistake.
New Music Sunday
Your Ears will Tell You More About Us.
Without Music life Would be a mistake.
New Music Wednesday
Your Ears will Tell You More About Us.
Without Music life Would be a mistake.
New Music Saturday
Your Ears will Tell You More About Us.
Without Music life Would be a mistake.
New Music Thursday`
Your Ears will Tell You More About Us.
Without Music life Would be a mistake.
New Music Saturday
Your Ears will Tell You More About Us.
Without Music life Would be a mistake.
New Music Saturday
Your Ears will Tell You More About Us.
Without Music life Would be a mistake.
New Music Saturday
Your Ears will Tell You More About Us.
Without Music life Would be a mistake.
New Music Saturday
Your Ears will Tell You More About Us.
Without Music life Would be a mistake.
New Music Saturday
Your Ears will Tell You More About Us.
Without Music life Would be a mistake.
New Music Saturday
Your Ears will Tell You More About Us.
Without Music life Would be a mistake.
New Music Saturday
Your Ears will Tell You More About Us.
Without Music life Would be a mistake.


bokeh.core.templates¶
Provide Jinja2 templates used by Bokeh to embed Bokeh documents and models in various ways.
-
AUTOLOAD_JS
= <Template 'autoload_js.js'>¶ Renders JavaScript code for “autoloading”.
The code automatically and asynchronously loads BokehJS (if necessary) and then replaces the AUTOLOAD_TAG


--- layout: archive title: Zulip Chat Archive permalink: /stream/116395-maths/topic/number.20fields.20in.20lean.3F.html ---
Hi all, currently lean says that number fields needs the basics of f-d vector spaces and noetherian rings, but these seem to be somewhat developed now so I thought I'd try and do some number fields. I made a pretty big mess, but I've almost proved that adjoining a root of a polynomial to Q forms a number field
https://gist.github.com/alexjbest/9fa36a92f833436199a1f891620db6a1
comments about the approach so far would be much appreciated, suggestions to make my life easier etc., as would suggestions as to which parts of my long proofs should be spun out into lemmas . But mostly I would like help with one remaining sorry! It's really dumb but I really can't work it out it's essentially
example (b : ℚ) : (rat.cast b : adjoin_root f) = b := sorry
What do you mean with "currently lean says" in your first sentence?
Just to let you know: a group of undergraduates at Imperial have got some work on splitting fields etc (which I think is not currently publically available) and a masters student doing a summer project in VU is working on proving that ideals factor uniquely into prime ideals.
@Johan Commelin to be specific mathlib says in mathlib-overview.md line 48
@Kevin Buzzard Ok cool, I guess I won't take this too seriously then, thanks.
Aha, now I understand
First feedback: prove https://gist.github.com/alexjbest/9fa36a92f833436199a1f891620db6a1#file-nf-lean-L43 for a general field.
Also, maybe first prove that K^n
is fin.dim, then deduce that K
is findim over K
But that's only if you care about generalisations (-;
https://gist.github.com/alexjbest/9fa36a92f833436199a1f891620db6a1#file-nf-lean-L81 This should be called adjoin_root.mk_is...
Well, if people half-do things and they don't end up in mathlib then other people will redo them. You might want to get in touch with Chris Hughes/Kenny Lau about the splitting field stuff (they surely did adding one root of an irreducible poly) and to Sander Dahmen about the masters student (I am terrible with names, this is the guy I met in VU a couple of weeks ago, but his summer job is to do a bunch of number field stuff so he might well be making serious progress)
@Alex J. Best Maybe first define class finite_field_extension
and then specialise to number fields.
Pretty soon we will want L/K
finite + number_field K
implies number_field L
.
@Antoine Béreau is Sander's student.
That's the guy :-) And @Chris Hughes and @Kenny Lau might know about field extensions too.
We should also prove in general that the characteristic of K
and adjoin_root f
are the same.
The theorem rat.eq_cast
will help fill in the sorry.
We should also prove in general that the characteristic of
K
andadjoin_root f
are the same.
Or more generally, the characteristic of any field extension of anything is the same.
Right, that's even better (-;
@Alex J. Best Sorry, for spamming, I can shut up if you want (-;
I think number_field
should extend algebra
.
Alex J. Best Sorry, for spamming, I can shut up if you want (-;
No this is good thanks, I was just leaning, generalising finitely_generated K K
worked but then it won't apply now :pensive:
I defined finite_dimensional
vector spaces recently. The fact that K
is finite dimensional over K
, should be an automatic instance. The instance path is kind of funny, it's a consequence of the fact that fields are euclidean domains, so they are PIDs, so they are noetherian rings.
The theorem
rat.eq_cast
will help fill in the sorry.
Awesome thanks for this, exactly what I needed!
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


The internet is full of solutions for fixing headers on html tables. Most of them are either very complicated or required special html rigid constructs or needed big frameworks such as jQuery.
That is why I decided to reinvent the wheel. I liked a plain vanilla javascript solution in the spirit of the DOM that respected the css layouts and the semantics of html. The solution proposed here covers two use cases: a full displayed table that maintain the header on top of the window when scrolled and other one that scrolls in a fixed space.
In order to have a scrollable table, there is only need to include a script tag at the end of the <body>
and add a class for the <table>
that is going to be made scrollable. All css is preserved and there is no specific markup required.
| %eax | Name | Source | %ebx | %ecx | %edx | %esx | %edi |
|---|---|---|---|---|---|---|---|
| 1 | sys_exit | kernel/exit.c | int | - | - | - | - |
| 2 | sys_fork | arch/i386/kernel/process.c | struct pt_regs | - | - | - | - |
| 3 | sys_read | fs/read_write.c | unsigned int | char * | size_t | - | - |
| 4 | sys_write | fs/read_write.c | unsigned int | const char * | size_t | - | - |
| 5 | sys_open | fs/open.c | const char * | int | int | - | - |
| 6 | sys_close | fs/open.c | unsigned int | - | - | - | - |
| 7 | sys_waitpid | kernel/exit.c | pid_t | unsigned int * | int | - | - |
| 8 | sys_creat | fs/open.c | const char * | int | - | - | - |
| 9 | sys_link | fs/namei.c | const char * | const char * | - | - | - |
| 10 | sys_unlink | fs/namei.c | const char * | - | - | - | - |
| 11 | sys_execve | arch/i386/kernel/process.c | struct pt_regs | - | - | - | - |
| 12 | sys_chdir | fs/open.c | const char * | - | - | - | - |
This use case is the most common and it is so useful for handling tabulated contents that is a pity that is not considered on current HTML5 standards.
| Release | Codename | Year | Comments |
|---|---|---|---|
| 1.1 | Buzz | 1996 | 474 |
| 1.2 | Rex | 1996 | 848 |
| 1.3 | Bo | 1997 | 974 |
| 2.0 | Hamm | 1998 | 1500 |
| 2.1 | Slink | 1999 | 2250 |
| 2.2 | Potato | 2000 | 3900 |
| 3.0 | Woody | 2002 | 8500 |
| 3.1 | Sarge | 2005 | 15400 |
| 4.0 | Etch | 2007 | 18000 |
| 5.0 | Lenny | 2009 | 23000 |
| 6.0 | Squeeze | 2011 | 29000 |
| 7 | Wheezy | 2013 | 36000 |
| 8 | Jeesie | 2015 | 43000 |
| 9 | Stretch | Soon | |
| 10 | Buster | Future |
This use case defines the fixed space where the table is confined. This could be done assigning width and height to the table. A range with minimum and maximum is also possible both for width and height.
Please note that the table could be ill formed (there is a deliberate error on the last row) or with a complex layout (there is a cell that spans two columns). The only condition is that there must be a <thead>
and a <tbody>
.
Please feel free to create an issue to report any bug, feature requests, and more at github.com/j-pel/dynamize.
There will be some empty space in order to provide enough scroll space to see what happens when the fixed layout table goes on top.


--- layout: post title: AngularJS Hangout with Misko and Brian === Awesome Time! date: 2012-10-28 04:35:10.000000000 -07:00 type: post published: true status: publish categories: - AngularJS - Hangout - JavaScript tags: [] meta: _edit_last: '1' layout: default hide_post_title: default unlink_post_title: default hide_post_meta: default hide_post_date: default hide_post_image: default _thesis_post_image: a:1:{s:5:"image";a:4:{s:3:"url";s:0:"";s:6:"height";s:0:"";s:5:"width";s:0:"";s:2:"id";s:0:"";}} _thesis_post_thumbnail: a:1:{s:5:"image";a:4:{s:3:"url";s:0:"";s:6:"height";s:0:"";s:5:"width";s:0:"";s:2:"id";s:0:"";}} _nina_cross_promo: a:1:{s:8:"template";s:17:"custom_1399328552";} author: login: ohmadmin email<EMAIL_ADDRESS>display_name: Lukas Ruebbelke first_name: Lukas last_name: Ruebbelke ---
Hey Angulars!
I know I had you with that awesome picture of Misko in a pirate hat? Ammaright?!
So this is something new I wanted to try and it turned out 'pretty good' and I am confident it will get better. Misko Hevery and Brian Ford are veritable treasure troves of information on AngularJS and I am SUPER lucky that we are buddies and they put up with me.
And so I wanted to start documenting some of the awesome things that float to the surface when we are talking and so here it is!
PLEASE hit me up with any burning questions you have about AngularJS and I will take it straight to the top! Happy coding!
[youtube width="854" height="480"]http://www.youtube.com/watch?v=E87rXWE62WU[/youtube]


Please tap the users you would like to pay for:
{{contact.prename}}
{{contact.balance | currency}}
Your total balance is: {{totalBalance | currency}}
Please tap the users you would like to pay for:
Your total balance is: {{totalBalance | currency}}


Dr. Naccarato's passion is to help doctors build successful practices so they can focus on the other important things in life, such as God, family, and friends. His focus is to help build practices and lives filled with integrity. This philosophy is evident in the information he teaches, the procedures he encourages, and the manner in which he coaches his doctors.
Dr. Naccarato has a DC degree and a PhD in psychology, is a continuing studies student at Stanford University, and has been a personal business coach for 28 years. As such, he has the experience to help doctors not only make a difference in their practices, but also in their families, relationships, and the world around them. His focus is to help doctors build successful practices while maintaining a balanced life. By working on virtues such as self-control, courage, compassion, hard work, and integrity his program enhances what doctors know, what they do, and ultimately who they are.
Dr. Naccarato has been helping doctors build successful practices since 1991 and was named one of the top five management coaches by the California Chiropractor's Association. He has accumulated over 28 years and 56,000 hours of personal coaching experience. He has spoken for the Chiropractic Associations of California, Utah, Idaho, Iowa, Texas, New Jersey, and Kansas. He has also spoken at the CCA's Best of Management seminars and has his own seminar series which includes The First Two Weeks of Care, Internal Marketing, and External Marketing.
Dr. Naccarato is the founder of The Realigned Practice, the Personal Coaching Program, and the Weekly Email-Coaching Program. He is the developer of The Inner-Circle Approach to Practice Building and has authored several books, including: Principle-Centered Practice Building, The Psychology of Succeeding in Practice: What Every Doctor Must Know, and The Key Indicators of Success and Prosperity for Chiropractors.
Dr. Naccarato owned Naccarato Chiropractic in San Luis Obispo, California and was co-owner and manager of a multi-doctor chiropractic clinic. Before becoming a chiropractor and personal success coach, he was a marketing representative for Weidner Communications, a member of Success Technologies, and a contributing author of Achieving the Balance by Leo Weidner.
Dr. Jim Naccarato has a Bachelor of Science and a PhD in Psychology, and is also a licensed Doctor of Chiropractic.
Many believe material possessions are superficial because they have never seen a hearse pulling a U-Haul. They feel that focusing on making money is not a noble, honorable, or moral endeavor. True for the dead, not true for the living.
Dr. Naccarato has proven that everything in life is either positively or negatively impacted by your success. If you build your practice correctly then you are free to focus on other important things in life. If you build your practice incorrectly then it will become a chain around your neck squeezing the very life out of you. Twenty-four hours a day. Seven days a week.
To build a successful practice you must say the right things, do the right things, and be the right person. To find out how Dr. Naccarato can help you achieve these critical objectives, call and setup an appointment to speak with him personally!


freeCodeCamp Tic Tac Toe
Player
Computer
0
0
Choose
X
O
Player wins
Computer wins
It's a tie
Play again


Get started!
Pick a vibe
Vibes are simple design thinking exercises that you complete. For every vibe we will match you with a fellow maker with complementary skills for a 1:1 chat.
Create with us!
Do you want to create a Vibe ?
Do you have a problem or a design thinking exercise that may work great for our users? Let's chat! hello@hackvibes.com


What to do next ?
- Configure webhooks to be able to deploy branches on dev server
- Write tests and use the Continuous Integration of GitLab
- Create your own feature for your deployment with the GitLab
API
- Everything you need to know about GitLab
(very good documentation)
- Be nice to everybody and contribute


{% extends 'base.html' %} {% load static %} {% block extracss %} {% endblock %} {% block title %} Who are we {% endblock %} {% block main %}
MiYE(Mud in Your Eye) - a new, small hot spring health spa, located in a remote, scenic part of the US. The software must support the spa’s front desk clerks in managing service reservations and statements of service usage for customers.


imhr.eyetracking.ROI()
can identify Region/Area of Interest using machine learning and image coding techniques.
[5]:
# import
import imhr
# parameters
path = imhr.__path__[0]
image_path = '%s/dist/roi/raw/2/'%(path)
output_path = '%s/dist/roi/output/'%(path)
metadata_source = '%s/dist/roi/raw/2/metadata.xlsx'%(path)
position = 'topcenter'
# initiate
roi = imhr.eyetracking.ROI(isMultiprocessing=False, isDebug=True,
# roi detection method and contour shape
detection='manual', shape='straight',
# path to read and export data
image_path=image_path, output_path=output_path, metadata_source=metadata_source,
# stimuli size and screen size
screensize=[1920,1080], recenter=[(1920*.50),(1080*.50)], scale=.75,
# applying new id, renaming variables and output
newcolumn={'position': position}, uuid=['image','roi','position'], append_output_name=position,
# image backend
image_backend='PIL')
# run
df, error = roi.process()
not multiprocessing
starting()
finished()
Here are all of the required parameters that are part of this module:
| Property | Description |
|---|---|
isMultiprocessing : bool |
Should the rois be generated using multiprocessing. Default is False. |
detection : str {‘manual’, ‘haarcascade’} |
How should the regions of interest be detected. Either manually (manual), through the use of highlighting layers in photo-editing software, or automatically through feature detection using haarcascade classifers from opencv. Default manual. |
image_path : str |
Image directory path. |
output_path : str |
Path to save data. |
roi_format : str {‘raw’, ‘dataviewer’, ‘both’} |
Format to export ROIs. Either to ‘csv’ (raw) or to Eyelink DataViewer ‘ias’ (dataviewer) or both (both). Default is both. Note: If roi_format = dataviewer, shape must be either be circle, rotated, or straight. |
metadata_source : str or None {‘path’, ‘embedded’} |
Metadata source. If metadata is being read from a spreadsheet, metadata_source should be equal to path the to the metadata file, else if metadata is embed within the image as a layer name, metadata_source = embedded. Although Photoshop PSD don’t directly provide support for metadata. However if each region of interest is stored as a seperate layer within a PSD, the layer name can be used to store metadata. To do this, the layer name has to be written as delimited text. Our code can read this data and extract relevant metadata. The delimiter can be either ; , | \t or \s (Delimiter type must be identified when running this code using the delimiter parameter. The default is ;.). Here’s an example using ; as a delimiter: >>> imagename = "BM001"; roiname = 1; feature = "lefteye"
Note: whitespace should be avoided from from each layer name. Whitespaces may cause errors during parsing. |
shape : str {‘polygon’, ‘hull’, ‘circle’, ‘rotated’, ‘straight’} |
Shape of machine readable boundaries for region of interest. Default is straight. polygon creates a Contour Approximation and will most closely match the orginal shape of the roi. hull creates a Convex Hull, which is similar to but not as complex as a Contour Approximation and will include bulges for areas that are convex. circle creates a mininum enclosing circle. Finally, both rotated and straight create a Bounding Rectangle, with the only difference being compensation for the mininum enclosing area for the box when using rotated. |
roicolumn : str |
The name of the label for the region of interest in your metadata. For example you may want to extract the column ‘feature’ from your metadata and use this as the label. Default is roi. |
uuid : list or None |
Create a unique id by combining a list of existing variables in the metadata. This is recommended if roi_format == dataviewer because of the limited variables allowed for ias files. Default is None. |
filetype: str {‘psd’, ‘tiff’, ‘dcm’, ‘png’, ‘bmp’, ‘jpg’} |
The filetype extension of the image file. Case insensitive. Default is psd. If psd, tiff or DICOM the file can be read as multilayered |
Here are optional parameters, not required to run the code, but allow output tweaking:
Additional core parameters
These properties control additional core parameters for the API:
| Property | Description |
|---|---|
cores : bool |
(if isMultiprocessing == True) Number of cores to use. Default is total available cores - 1. |
isLibrary : bool |
Check if required packages have been installed. Default is False. |
isDebug : bool |
Allow flags to be visible. Default is False. |
isDemo : bool |
Tests code with in-house images and metadata. Default is False. |
save_data : bool |
Save coordinates. Default is True. |
newcolumn : dict {str , str } or False |
Add additional column to metadata. This must be in the form of a dict in this form {key: value}. Default is False. |
save_raw_image : bool |
Save images. Default is True. |
append_output_name : bool or str |
Add appending name to all exported files (i.e. <’top_center’> IMG001_top_center.ias). Default is False. |
save_contour_image : bool |
Save generated contours as images. Default is True. |
scale : int |
If image is scaled during presentation, set scale. Default is 1. |
offset : list [int ] |
Center point of image, relative to screensize. Default is [960, 540]. |
screensize : list [int ] |
Monitor size is being presented. Default is [1920, 1080]. |
Data processing parameters
These properties control data is processed which include the type of haarcascade used, delimiters for metadata:
| Property | Description |
|---|---|
delimiter : str {‘;’ , ‘,’ , ‘|’ , ‘tab’ , ‘space’} |
(if source == psd) How is metadata delimited. Default is ;. |
classifiers : default or :obj:list of :obj:dict |
(if detection == haarcascade) Trained classifiers to use. Default is {‘eye_tree_eyeglasses’, ‘eye’, ‘frontalface_alt_tree’, ‘frontalface_alt’, ‘frontalface_alt2’,’frontalface_default’, ‘fullbody’, ‘lowerbody’, ‘profileface’, ‘smile’, ‘upperbody’}. Parameters are stored here. If you want to use custom classifiers, you can pass a list of classifiers and their arguments using the following format: >>> [{'custom_cascade': {
... 'file': 'haarcascade_eye.xml',
... 'type': 'profileface',
... 'path': './haarcascade_eye.xml',
... 'minN': 5,
... 'minS':(100,100),
... 'sF': 1.01 }
... }]
You can also pass custom arguments by calling them after initiation: >>> roi = imhr.eyetracking.ROI(detection='manual.....)
>>> roi.default_classifiers['eye']['minNeighbors'] = 10
|
Image export parameters
Here are properties specific to how images are exported after processing. The code can either use matplotlib
or PIL
as a backend engine:
| Property | Description |
|---|---|
image_backend : str {‘matplotlib’, ‘PIL’} |
Backend for exporting image. Either matplotlib or PIL . Default is matplotlib . |
RcParams : bool |
A dictionary object including validation validating functions are defined and associated with rc parameters in class:matplotlib.RcParams. Default is None. |
background_color : list |
Set background color (RGB) for exporting images. Default is [110, 110, 110]. |
dpi : int or None |
(if save_image == True) Quality of exported images, refers to ‘dots per inch’. Default is 300. |
remove_axis : bool |
Remove axis from matplotlib.pyplot . Default is False. |
tight_layout : bool |
Remove whitespace from matplotlib.pyplot . Default is False. |
set_size_inches : bool |
Set size of matplotlib.pyplot according to screensize of ROI. Default is False. |
There are two methods of creating regions of interest to be processed by the api: using manually coded images or haar cascades.
Using multilayered images (psd, dcm)
The recommended method of manually identifying each region of interest is by using a image media file that is able to store multiple layers of content. The two filetypes supported here are Adobe Photoshop Document (psd) and Digital Imaging and Communications in Medicine (dcm) filetypes. Each ROI can be stored as a seperate layer, which can then processed for exporting.
Figure: Example psd in Adobe Photoshop.
Figure: Example DICOM in Adobe Photoshop.
Another method for creating ROI’s is by using automated feature extraction using haar cascades feature classifiers. This is done by using machine-training to identify unique features (eyes, smile) from an image.
Figure: Example face, eye, and smile identfication using haar cascades.
roi/
├── output/
│ ├── bounds.ias
│ ├── bounds.xlsx
│ ├── data/
│ │ ├── 2550_bounds.ias
│ │ └── 2550_bounds.xlsx
│ └── img/
│ ├── bounds/
│ │ ├── 2550.png
│ │ └── roi/
│ │ ├── 2550.1.png
│ │ └── 2550.2.png
│ ├── preprocessed/
│ │ └── 2550.png
│ └── raw/
│ └── 2550.png
└── raw/
├── 1/
│ ├── AM_201.psd
│ ├── AM_201.xcf
│ └── metadata.xlsx
└── 2/
├── 2550.psd
├── 2550.xcf
└── metadata.xlsx
After running the API, the following data will be outputted:
In addition, for each image, their corresponding ROIs will be drawn to a png file (./img/bounds). Individual ROIs are also drawn (‘./img/bounds/roi’).
Bounds can be created for each region of interest with different levels of granularity. The list below provides an example of each, in order of granularity.
Polygon
Hull
Circle
Rectangle (rotated)
Rectangle (straight)
Two types of data are exported, contour shape and boundaries. Boundaries are saved in SR Research DataViewer (ias), and Microsoft Office Open XML Workbook (xlsx) formats, while contour shapes are saved in Hierarchical Data Format (HDF5; h5). Exported data can read either by SR Research DataViewer (ias) or any other data processing tool (xlsx, h5).
Note
Section 5.10.1 of Eyelink DataViewer Users Manual (3.2.1)
has more information about the ias format and how DataViewer can interpret it.
Both xlsx and HDF5 provide all metadata associated with each image, while ias files matches the format required by DataViewer. Of the three filetypes, HDF5 files are the most detailed providing both metadata for each ROI as well as exact pixel coordinates associated with each ROI.
For more information, click bounds.ias, bounds.xlsx, contours.h5 to see an example of each filetype.
[3]:
df
[3]:
| x0 | y0 | x1 | y1 | image | roi | id | shape_d | race | feature | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 937 | 554 | 792 | 422 | AM_201 | roi1 | 1 | RECTANGLE | asian | lefteye |
| 0 | 1118 | 552 | 973 | 420 | AM_201 | roi2 | 2 | RECTANGLE | asian | righteye |
| 0 | 1016 | 650 | 892 | 565 | AM_201 | roi3 | 3 | RECTANGLE | asian | nose |
| 0 | 880 | 756 | 1039 | 670 | AM_201 | roi4 | 4 | RECTANGLE | asian | mouth |
| 0 | 1114 | 862 | 818 | 762 | AM_201 | roi5 | 5 | RECTANGLE | asian | chin |
| 0 | 1109 | 407 | 801 | 307 | AM_201 | roi6 | 6 | RECTANGLE | asian | forehead |
| 0 | 783 | 665 | 704 | 532 | AM_201 | roi7 | 7 | RECTANGLE | asian | leftear |
| 0 | 1207 | 649 | 1144 | 494 | AM_201 | roi8 | 8 | RECTANGLE | asian | rightear |
| 0 | 938 | 524 | 785 | 409 | AM_203 | roi1 | 1 | RECTANGLE | asian | lefteye |
| 0 | 1125 | 525 | 976 | 409 | AM_203 | roi2 | 2 | RECTANGLE | asian | righteye |
| 0 | 1023 | 632 | 899 | 552 | AM_203 | roi3 | 3 | RECTANGLE | asian | nose |
| 0 | 1043 | 735 | 876 | 661 | AM_203 | roi4 | 4 | RECTANGLE | asian | mouth |
| 0 | 1040 | 837 | 862 | 759 | AM_203 | roi5 | 5 | RECTANGLE | asian | chin |
| 0 | 1137 | 382 | 778 | 259 | AM_203 | roi6 | 6 | RECTANGLE | asian | forehead |
| 0 | 766 | 637 | 693 | 474 | AM_203 | roi7 | 7 | RECTANGLE | asian | leftear |
| 0 | 1213 | 634 | 1147 | 462 | AM_203 | roi8 | 8 | RECTANGLE | asian | rightear |
| 0 | 928 | 538 | 778 | 425 | AM_204 | roi1 | 1 | RECTANGLE | asian | lefteye |
| 0 | 1124 | 535 | 975 | 427 | AM_204 | roi2 | 2 | RECTANGLE | asian | righteye |
| 0 | 1022 | 633 | 886 | 567 | AM_204 | roi3 | 3 | RECTANGLE | asian | nose |
| 0 | 862 | 735 | 1050 | 649 | AM_204 | roi4 | 4 | RECTANGLE | asian | mouth |
| 0 | 874 | 831 | 1038 | 755 | AM_204 | roi5 | 5 | RECTANGLE | asian | chin |
| 0 | 1137 | 410 | 776 | 262 | AM_204 | roi6 | 6 | RECTANGLE | asian | forehead |
| 0 | 766 | 658 | 700 | 483 | AM_204 | roi7 | 7 | RECTANGLE | asian | leftear |
| 0 | 1217 | 644 | 1148 | 483 | AM_204 | roi8 | 8 | RECTANGLE | asian | rightear |
| 0 | 944 | 531 | 792 | 406 | AM_223 | roi1 | 1 | RECTANGLE | asian | lefteye |
| 0 | 1132 | 524 | 983 | 405 | AM_223 | roi2 | 2 | RECTANGLE | asian | righteye |
| 0 | 1023 | 641 | 906 | 562 | AM_223 | roi3 | 3 | RECTANGLE | asian | nose |
| 0 | 1038 | 741 | 896 | 670 | AM_223 | roi4 | 4 | RECTANGLE | asian | mouth |
| 0 | 1053 | 847 | 875 | 776 | AM_223 | roi5 | 5 | RECTANGLE | asian | chin |
| 0 | 1150 | 386 | 778 | 275 | AM_223 | roi6 | 6 | RECTANGLE | asian | forehead |
| 0 | 775 | 641 | 695 | 488 | AM_223 | roi7 | 7 | RECTANGLE | asian | leftear |
| 0 | 1226 | 638 | 1145 | 483 | AM_223 | roi8 | 8 | RECTANGLE | asian | rightear |


Remember the titanic data set from the previous section? Let's take a quick peek at it again.
If we also want to use columns like 'Name', 'Sex', 'Ticket', 'Cabin', and 'Embarked' in our predictive model, can we just put them in our model? No we can't! If we want to use them, we first have to convert them into numbers that we can put into a mathematical equation! But before that, we should first take a look at the number of unique categories each variable has.
print(df.shape)
print("Unique names:" , len(df["Name"].unique()))
print("Unique genders:" , len(df["Sex"].unique()))
print("Unique ticket numbers:" , len(df["Ticket"].unique()))
print("Unique cabins:" , len(df["Cabin"].unique()))
print("Unique embarkment location:" , len(df["Embarked"].unique()))
We will get the following output.
(891, 12) Unique names: 891 Unique genders: 2 Unique ticket numbers: 681 Unique cabins: 148 Unique embarkment location: 4
Let's start simple and take a look at the 'Sex' column. There are two categories, male and female. There is a very convenient code in pandas that converts categorical variables into dummy numerical. Let's dive right into it, shall we?
df_sex = pd.get_dummies(df["Sex"])
df_sex.head(5) # Peek at the top 5 rows
Since passengers can only either be male or female, we actually only need one of the columns, since if female = 0, it must mean male = 1. We can replace the 'Sex' column with our new column.
df["Sex"] = df_sex["female"]
df.head(5) # Peek at the top 5 rows
If the passenger's sex is male, they are now assigned a value of 0. If the passenger is female, they are assigned a value of 1.
That was rather simple, wasn't it? But as the number of unique categories get larger, things start to get slighly messier.
Let's take a look at 'Embarked'.
print(df["Embarked"].unique())
The output we get is:
Can we simply replace each location with a different number from 1 to 4? S = 1, C = 2, Q = 3, nan = 4. Is this okay? No, it is not. ... What is to say that each embarkment location has the same constant effect on survivorship? Using an example, assume \({survivorship = coef*embarkment}\). Can we really say changing from location S to location C increases survivorship by the same coefficient, as changing from C to Q?
We cannot.
The proper method of modelling such categorical data is to model each category as a boolean variable. In fact, we have already done this in our 'Sex' example in the intro.
df_embarked = pd.get_dummies(data = df["Embarked"], dummy_na = True)
df_embarked.head(5) # Peek at the top 5 rows
The get_dummies() function does not consider nan values by default. If you want to include nan values in the table, you have to add in the argument dummy_na=True when calling the function.
We can't simply replace the Embarked column, like we did with Sex. In this case, we can append this new df_embarked table to the original table!
df_embarked = df_embarked.drop(np.nan,axis = 1)
df = pd.concat([df,df_embarked], axis = 1)
df.head(5)
Wait, why did we drop one of the columns?
In this case, Embarked can either be C, Q, S, or nan. What happens when C, Q, S = 0? That's right, it's implied that nan = 1 in that case. Including the nan column is redundant here. In fact, this is the same case for all categorical values. You do not need to include the last column, as the last category is implied if all the other categories have the value of 0.
Convert the cabin numbers into dummy numeric variables, and add them to the original dataframe named "df" that is created for you. Drop the original 'Cabin' column.
Did you know, the statsmodels package automatically detects and deals with categorical variables for you? Create a logit model of survivorship regressed against Sex and Embarked! Store your model under the variable named "result".
Congratulations! You have come to the end of the tutorial. This marks the end of the statistical analysis using python tutorial! So far, you have learnt:
The important takeaway from this tutorial is to know how to perform regression analysis, to know the extent of the effect that each regressor has on the dependent variable. What does a change in X have in Y? What happens to Y if X increases by a hundred units? This is what this tutorial aims to teach, and we hope that you have learnt them well.
Home


Class jive.conc.Promise
Extends
jive.conc.observable.
Defined in: promise.js.
| Constructor Attributes | Constructor Name and Description |
|---|---|
|
Promises are objects that are used to reference the outcomes of asynchronous
operations.
|
| Method Attributes | Method Name and Description |
|---|---|
|
addCallback(listener)
Adds a 'success' callback to the promise.
|
|
|
addCancelback(listener)
Adds a 'cancel' callback to the promise.
|
|
|
addErrback(listener)
Adds an 'error' callback to the promise.
|
|
|
always(listener)
Adds a 'complete' callback to the promise.
|
|
|
cancel()
Cancels the promise.
|
|
|
emitError(eventArgs)
Causes the promise to emit 'error'.
|
|
|
emitSuccess(eventArgs)
Causes the promise to emit 'success'.
|
|
|
then(fulfilledHandler, errorHandler)
Accepts an optional success callback and an optional error
callback and binds both.
|
|
|
timeout(delay)
Calling this method with a `delay` argument causes the timeout to abort
after the given length of time.
|
- Methods borrowed from class jive.conc.observable:
- addListener, emit, emitP, listeners, proxyListener, removeListener
Promises are objects that are used to reference the outcomes of asynchronous operations. This implementation is based on the Promise API formerly implemented in Node.js http://nodejs.org/.
For example, consider this function:
function getFriends(userID) {
var url = "/users/"+ userID +"/friends.json";
$.getJSON(url);
// what to return??
}
There is no way to give the result of that REST call as a return value of
getFriends()
because getJSON()
is an asynchronous operation. One way
around this is to allow the caller to provide a callback that can be invoked
when the JSON response is ready:
function getFriends(userID, callback) {
var url = "/users/"+ userID +"/friends.json";
$.getJSON(url, function(json) {
callback(json);
});
}
That approach works nicely. But if you want to do something more advanced like to provide separate callbacks for successes and errors you have to add yet another argument.
Promises abstract the pattern of passing data asynchronously.
jive.conc.Promise
mixes in jive.conc.observable
and can emit three
events: 'succes', 'error', and 'cancel'. A function that performs an
asynchronous operation can a return a promise object which a caller can
listen to for success or error events. Promise
also adds the convenience
methods addCallback()
and addErrback()
to make listening to those events
as simple as possible.
In the getFriends()
example you would use a promise like this:
function getFriends(userID) {
var url = "/users/"+ userID +"/friends.json",
promise = new jive.conc.Promise();
$.ajax({
url: url,
type: 'GET',
dataType: 'json',
success: function(json) {
promise.emitSuccess(json)
},
error: function(xhr) {
promise.emitError(xhr.status);
}
});
return promise;
}
This implementation of getFriends()
might be called like this:
getFriends(myID).addCallback(function(friends) {
friends.forEach(displayFriend);
}).addErrback(function(status) {
if (status == 404) {
alert("Error: you have no friends!");
}
});
Promises can also be given a timeout. If the timeout expires before the promise is fulfilled then the promise will emit an error:
getFriends(myID).timeout(10000).addErrback(function(error) {
if (e.toString().match("timeout")) {
alert("Wow, this server is slooooow.");
}
});
A promise will only emit an event once. Once it has emitted a success, error, or cancel event it will not emit any more events.
- Requires:
- jive.conc.observable
Adds a 'success' callback to the promise.
- Parameters:
- {Function} listener
- function to be called when the promise emits 'success'
- Returns:
- {jive.conc.Promise} returns the receiver so that this method can be cascaded
Adds a 'cancel' callback to the promise. The promise will emit 'cancel' when it is explicitly cancelled.
- Parameters:
- {Function} listener
- function to be called when the promise emits 'cancel'
- Returns:
- {jive.conc.Promise} returns the receiver so that this method can be cascaded
Adds an 'error' callback to the promise.
- Parameters:
- {Function} listener
- function to be called when the promise emits 'error'
- Returns:
- {jive.conc.Promise} returns the receiver so that this method can be cascaded
Adds a 'complete' callback to the promise. The promise will emit 'complete' after it is fulfilled with a success or an error or it is cancelled.
This can be useful if you want to do something like display a spinner when an ajax call is made and to hide that spinner when the call finishes regardless of whether the response was a success.
- Parameters:
- {Function} listener
- function to be called when the promise emits 'complete'
- Returns:
- {jive.conc.Promise} returns the receiver so that this method can be cascaded
Cancels the promise. This causes the promise to emit 'cancel'.
In most cases the class or function that creates a promise will send messages through the promise while callers listen for events. However with 'cancel' it may be useful to do the reverse: the creator of the promise could abort some long running operation when a caller cancels the promise.
Calling this method prevents the promise from emitting any further events.
Causes the promise to emit 'error'. Any arguments given will be passed to callbacks for the promise's 'error' event.
Calling this method prevents the promise from emitting any further events.
- Parameters:
- {...any} eventArgs Optional
- arguments to be passed to 'error' listeners
Causes the promise to emit 'success'. Any arguments given will be passed to callbacks for the promise's 'success' event.
Calling this method prevents the promise from emitting any further events.
- Parameters:
- {...any} eventArgs Optional
- arguments to be passed to 'success' listeners
Accepts an optional success callback and an optional error callback and binds both. This method provides compliance with the Promises/A CommonJS proposal.
- Parameters:
- {Function} fulfilledHandler Optional
- function to be called when the promise emits 'success'
- {Function} errorHandler Optional
- function to be called when the promise emits 'error'
- Returns:
- {jive.conc.Promise} returns a new promise that resolves with the return value of the given success callback
Calling this method with a delay
argument causes the timeout to abort
after the given length of time. If the promise has not emitted some
event by the time the timeout expires then the promise will emit an
'error' event with a single argument of the form, new
Error('timeout')
.
Calling timeout()
with a delay
argument a second time will cancel
the previous timeout and will start a new timeout.
Calling timeout()
with no arguments will have no side-effect but will
return the timeout that has already been set in milliseconds. If no
timeout has been set then calling timeout()
with no arguments will
return undefined
.
- Parameters:
- {number} delay Optional
- time in milliseconds to wait before aborting the promise
- Returns:
- {number} Returns the currently set timeout delay if there is: one. Otherwise returns the receiver.


Intergalactic Astronomical Union
An Elite Dangerous PVE science and exploration player squadron. [IGAU]
Our Goals:
- Connect like-minded squadrons together.
- Help unify data collection efforts throughout the galaxy.
- No aggression towards other CMDR's.
- Offer science assistance freely, and openly.
- Peacefully explore the galaxy, and pursue scientific research.
- Share data openly and appropriately.
Our Rules:
- We will NOT engage in hostile acts against other CMDR's.
- We provide a “safe space” for our members and allies.
- Harassment and disrespect will not be tolerated.
- We strongly support "open" science.
- We do not chase myths, or engage in wild speculation.
- We have fun and enjoy what we do.


{# This template is shown to users less than one day old, on the home page #}
Welcome to wank.party, {{ user.username }}. Here's everything you need to know.
This message goes away tomorrow. Enjoy your stay and keep praising Karpet.


Chartist2Image
With <foreignObject>
Without <foreignObject>
Without <foreignObject> and with inline styles
Convert to image
Convert to image
Convert to image


Pueblo River Trail Marathon
Pueblo CO/USA
Race Winners
(29 runnings)
08 Oct
2000
2:50:22
2:58:01
10 Oct
1999
2:46:54.7
3:02:38.4
11 Oct
1998
---
---
12 Oct
1997
2:51:09
3:23:00
13 Oct 1996
2:36:50.3
3:16:25.4
08 Oct
1995
2:43:09
3:18:07
18 Sep
1994
---
---
10 Oct 1993
---
---
11 Oct 1992
2:47:57.9
3:17:51.0
13 Oct
1991
2:39:41
3:11:47
14 Oct
1990
2:37:17
3:09:48
15 Oct
1989
2:39:43
3:14:20
16 Oct
1988
2:37:26
3:17:19
18 Oct 1987
2:37:20
3:12:52
06 Dec 1986
2:28:42
3:12:35
07 Dec 1985
2:43:29
3:18:08
08 Dec 1984
2:39:25.6
3:08:09.5
1983
---
---
11 Dec 1982
2:38:51.4
3:32:08.2
12 Dec 1981
2:36:22
3:06:42
13 Dec 1980
---
---
15 Dec 1979
2:30:40
4:00:15
16 Dec 1978
2:30:04 3:24:16 17 Dec 1977
2:51:50
n/a
18 Dec 1976
2:35:51
n/a
13 Dec 1975
2:52:57
14 Dec 1974
2:31:51
15 Dec 1973
2:56:14 1972
---
---
18 Dec 1971
2:33:29
3:34:30
Notes: 1971 was the inaugural year. The race was known as the Holiday Marathon thru 1983. In 1984, the course was
changed to a point-to-point course, dropping from 1577 meters to 1431 meters.
Chris Roberdeau (OK/USA)
Madeline Tormoen-2
Phil Ware (CO/USA)
Madeline Tormoen (CO/USA)
n/a
n/a
Brian Chung (CO/USA)
Amy Nesbitt (CO/USA)
Mike Sobolik (CO/USA)
Louise Menashe (FL/USA)
Steve Krebs-2
Tracy Brod-2
n/a
n/a
n/a
n/a
Gary Weston-2
Stella Heffron (CO/USA)
Shawn Delaney (CO/USA)
Corinne Hendren-2
Scott Hajicek
Corinne Hendren (CO/USA)
Gary Weston (CO/USA)
Tracey Bernett
Mike Montano-2
Sharon Foster-2
Jeff Sanchez (CO/USA)
Joyce Rankin (CO/USA)
Steve Catticart (CO/USA)
Cecilla Rosacker-McCord (CO/USA)
Steve Krebs (CO/USA)
Tracy Brod (CO/USA)
Hal Walter
Corky Keefe
n/a
n/a
Ken Willems-2
Sara Ripp
Ken Willems
Barbara Boileau
n/a
n/a
James Gusek (CO/USA)
Dixie Brech (CO/USA)
Albert Grimme (CO/USA)
Sharon Foster (USA)
Mike Montano (CO/USA)
Judy Orban (CO/USA)
Ed Strabel (NC/USA)
Glynn Strabel (CO/USA)
Bob Jackson (CO/USA)
Ron Nabers (CA/USA)
Roger Wilcox (CO/USA)
cancelled
cancelled
Ted Castaneda (CO/USA)
Pam Weigle (CO/USA)
Most Wins (1971/2000)
Men
2
Ken Willems
1981-82
.
Mike Montano (CO/USA)
1977,1988
.
Gary Weston (CO/USA)
1989,1992
.
Steve Krebs (CO/USA)
1985,1995
Women
2
Sharon Foster
(USA)
1978,1988
.
Corinne Hendren (CO/USA)
1990-91
Tracy Brod (CO/USA)
1985,1995
Madeline Tormoen (CO/USA)
1999-2000
Prize Money
(ADR qualified runners)
No prize money information has been received for this race.
Race Time Bias
(sec/km)
Insufficienct data to calculate the race time bias.
Competitive Level
(1990-date)
Insufficienct data to calculate the competitive level.
Quality Performances
Men No man has run under 2:20 Women No woman has run under 2:50
Last Updated on
24 Feb 2009


2 NFL teams interested in Colin Kaepernick, attorney claims
by Paulina Dedaj, Fox NewsFormer San Francisco 49ers quarterback Colin Kaepernick is being looked at closely by two teams in the NFL after holding his own workout over the weekend, his attorney Mark Geragos said.
Speaking on The Adam Carolla Podcast this week, Geragos offered details about the two teams that have shown interest in Kaepernick since he declined to participate in the NFL’s showcase workout over the weekend and instead held his own public session at an Atlanta high school.
“One who is legitimately in need of a quarterback who had a very poor showing on Sunday and has got an owner that I don’t think gives a sh-t,” he said.
Geragos didn’t offer any names but speculation surrounds the Carolina Panthers after rookie quarterback Kyle Allen, who has been filling in for Cam Newton for most of the season, threw four interceptions in Sunday’s loss to the Atlanta Falcons.
The second team could be anyone’s guess as several organizations in the league have struggled this season with injured and underperforming quarterbacks.
Kaepernick has not played a down of football since the 2016 season. In that season, he threw for 2,241 passing yards, 16 touchdown passes and four interceptions. He played in 12 games that year.
Through 69 career games, Kaepernick has racked up 12,271 passing yards, 72 touchdowns and 30 interceptions.
No team has publicly commented on being interested in Kapernick following Saturday’s showcase.
Fox News’ Ryan Gaydos contributed to this report.


Registration
Full Name
College Name
Year
1
2
3
4
Course
B.Tech
MCA
MBA
M.Tech
Contact
E-mail
Register Me!