text:
Given a dialog with two grid-style tables, what's the best approach to visually showing that the selected row of the left table is what populates the right table? The best I can think of is an arrow between the tables, but the problem that is the divider between the tables is drag-able (tables re-size to fill the space they're given), so I feel like an arrow says "drag this way" or "collapse this side."
I've considered an arrow that always stays next to the selected row, but typically there will be many more rows than are visible, and it seems like calculating the placement of the arrow could be a bit of a pain.
Is there an obvious solution anyone else sees, or should I bite the bullet and go with the arrow?


text:
Germany and Belgium are beginning to recover from historic flooding that has devastated parts of those countries and left more than 180 people dead. German Chancellor Angela Merkel toured some of the affected areas today.
NPR's Rob Schmitz has spent the day in one of the hard-hit towns in Germany, and he's here with us now to tell us more of what he saw. Rob, thanks so much for being here.
ROB SCHMITZ, BYLINE: Well, thanks for having me, Michel.
MARTIN: Could you just start by telling us where you are?
SCHMITZ: Yeah. I visited today the town of Bad Neuenahr-Ahrweiler. It's a winegrowing region southwest of Bonn.
MARTIN: And it's been a few days since the floods hit that town. What does it look like there today?
SCHMITZ: Well, the bones of the town are intact. You know, you see houses, churches, playgrounds. But, you know, in between all of that, it sort of resembles a muddy landfill - waterlogged, destroyed cars, uprooted trees - all of it stuck in this thick, brown mud.
MARTIN: And in addition to all that physical destruction, you know, obviously, there's a terrible human toll as well, right?
SCHMITZ: Yeah, it's - it is terrible. Dozens of people in the town I visited today died in the flooding. And there are still many people unaccounted for. I spoke with resident Claudia Krah, whose family was cleaning out the mud and destroyed furniture from their home. A tiny creek called the Ahr runs through the town, about a football field away from Krah's home. She told me it's usually less than a foot deep and that she often walks across it barefoot to get to the other side of town. But on Wednesday night, it rained so hard that this creek - just inches deep - grew within an hour or so to around 25 feet deep. And it flooded much of the town, carrying trees, cars and debris with it and reaching the second story of her house. And here's what she told me.
CLAUDIA KRAH: It was so fast that you can't go outside because then you got hit from a wave. And then you were gone. It's so truly sad because we Ahrweiler people love our hometown. And it's gone. It's gone. Historical buildings, no restaurant, no businesses running - it's over.
MARTIN: Wow. Well, Rob, we mentioned that Chancellor Merkel visited some of the flooded areas today. What did she have to say?
SCHMITZ: Well, she reminded everyone that this is Germany's worst natural disaster in 60 years. She had a chance today to survey the damage in the river valley where I was reporting today. And it seemed to have a pretty deep impact on her. Here's what she said.
ANGELA MERKEL: (Speaking German).
SCHMITZ: And, Michel, she's saying here that it's frightening. She almost wants to say that the German language barely has the words for the devastation that had been wrought on this area. But she added that despite all of this, she was reassured today by how people and communities are sticking together and how they're helping each other in showing solidarity. She was also asked about climate change. And she said that it was just a single event but that if you believe in the science like she does, this event was definitely related to the extreme weather events that typically occur due to climate change.
MARTIN: And, Rob, are these towns out of the woods now? I mean, are the rains over? Can people truly start to try to recover?
SCHMITZ: Well, the rains are over, but they're far from being out of the woods. Residents told me they've been told gas won't be restored for months. Electricity may take weeks to restore. I saw a lot of community spirit, though, today in the town that I visited - friends and families helping loved ones whose homes have been mostly destroyed. And it's clear that whatever is in store for this region, the people who live here have a lot of help.
MARTIN: That is NPR's Rob Schmitz. Rob, thank you so much.
SCHMITZ: Thank you. Transcript provided by NPR, Copyright NPR.

subset: commoncrawl


text:
Pebble Ring Polished, LOW Profile
$ 75.00
This river stone inspired sheath ring is light and easy to wear and won't get in the way of your daily tasks. The ultra thin design is perfect for wearing multiples on middle/ring finger or pinky/ring finger. Will form to finger shape over time.
Consider ordering up to 1/2 size larger than normal wide band size. We recommend ordering our ring sizer for accurate sizing.
10mm Wide Band
Sterling Silver 925, Polished finish
Rings are handmade in our studio and will show artist marks unique to each ring.
"The guitar pickers friend."
Sizing Tips:
- LOW profile makes a great pinky ring. Also a good choice for shorter fingers with not much area between knuckles.
- MEDIUM profile typically fits most fingers.
HIGH profile is great statement ring for middle fingers. May be too high for shorter fingers with not much area between knuckles. (Melissa wears this profile almost every day.)


text:
Use this map to select one or more (up to 4) plant or animal species (use either scientific or common names). View where these species have been collected in Maine. Each colored quadrant in a pin indicates the presence of one of the selected species. A white quadrant (or the absence of pin) indicates that the species has not been collected at this location. Notes: (1) Before a species name is entered in the search box, the map initially displays locations of all taxon records in the database. Once species name(s) have been selected, the pins display locations of the selected species, only. (2) Clusters display multiple records for an area. Zoom in to reveal individual pins. (3) Not all species have common names. Consequently, when the Common Name radio button is clicked, the initial cluster map displays only those taxa which have common names. In contrast, when the Scientific Name radio button is clicked, the initial cluster map displays ALL taxon records, since all taxa have a scientific name. (Data sources are provided in the pop-up boxes associated with each pin.)
Sites are grouped. Click here to un-group sites.
Filter spatial data on any one of the following selections:
Search on: Scientific Name Common Name


text:
Dr. West, meet Dr. Tinkle, Creationist eugenicist
As many have noted, the Intelligent Design movement's echo chamber has been recently belaboring the connection between Darwinian evolutionary ideas and eugenics. That's not surprising: the Discovery Institute-headed machine has been on the ropes for a while, unable to make any significant scientific, legal or political headway against evolution science (a.k.a. "Darwinism" in ID/Creationist parlance), and it has naturally turned to what it does best, that is media-based attack campaigns on straw-man stand-ins for evolutionary biology.
The transparent goal of this new P.R. offensive is to tarnish 150 years of scientific discovery with the stain of one of its aberrations, the logical equivalent of attacking experimental medicine by claiming that it is based on analogous principles as Josef Mengele's experiments in Nazi concentration camps. Oblivious to logic and intellectual honesty, the "Darwinism = eugenics" meme nevertheless has been widely promoted by several ID advocates, most prominently by John G. West, Associate Director of the Discovery Institute's Center for the Renewal of Science and Culture.
West's argument is not particularly subtle. Not only he points out that "eugenics was in reality a reasonable deduction from Darwin's theory"[1], which depending on interpretations may not be not too far off, but he actually argues that eugenics is a necessary consequence, a "corollary"[2] of evolutionary biology and "thoroughly grounded in the principles of Darwin's theory"[1]. The Discovery Institute's President Bruce Chapman echoed the same sentiments, stating that "eugenics was not just connected to Darwinism, but derived from Darwin's own work"[3] (emphasis mine). I guess the idea is that by pointing out its necessary evil consequences, people will turn against "Darwinism" whether or not it is scientifically supported (moral choices should apparently trump reality in the Discovery Institute's brave new scientific world).
Minor and even less subtle ID characters have then jumped in to dutifully amplify the sound-bite, but doing so have inadvertently exposed the religious motivations behind the argument. Thus, human April Fool's joke and neurosurgeon Michael Egnor has not only claimed that eugenics' "modern scientific foundation is Darwinism"[4] (though bizarrely claiming elsewhere that selective breeding, the main tool of eugenics, is an application of ID principles[5]), but also that "[t]he ideology that drives Darwinism and eugenics is materialism"[4] and "[t]he basis for eugenics was philosophical materialism, which denied the inherent dignity and sanctity of every human life"[5]. Hatchet-wielding ID-friendly journalist David Klinghoffer, writing in the Weekly Standard, upped the ante with characteristically hammy rhetoric:
The major ethical impact of the Darwinian idea has been to undercut what contemporary Princeton bio-ethicist Peter Singer decries as the "Hebrew view" of a purposefully-designed humanity, crowned by the solemn and central theme: "And God said, Let us make man in our image." [6]
(Go ahead and tell us how the "Hebrew view" of the crowning solemnity of God-given human dignity applied to the Amalekites, Mr. Klinghoffer.)
Of course, the origins and history of eugenics are far more complex and nuanced than this. The modern eugenics movement certainly drew much of its scientific aura and justification from Darwinian ideas, especially as the latter became more and more supported and accepted. But eugenics also stemmed from Mendelian genetics, with its static view of genetic transmission, and from the rising prestige of scientific medicine and medical psychiatry in the early 20th century. In addition, the rise of eugenics was fed by traditional views on "bloodlines" and hereditarianism, Victorian ideas on class and aristocracy, conservative socio-economic theories, positivist philosophy, racism and anti-immigrant sentiment in the US, etc.[7]
In fact, eugenics is pretty much as old as human society, and pervasive throughout its history. Most cultures of course have prohibitions against incest, and several US States still ban marriage even between third-degree relatives (first cousins). The Talmud explicitly endorses negative eugenics when it forbids marriage for individuals coming from families with perceived hereditary defects (e.g. lepers and epileptics), and positive eugenics by encouraging marriages with members of scholarly families (a bit self-serving from the highly educated Talmudic authors, for sure!). Greeks (not just the notorious Spartans, see also Plato and Aristotle) and Romans routinely and swiftly got rid of their "undesirables", as many other cultures did (and still do) less officially and openly. More close to home, the decrease in the incidence of certain genetic diseases in high-risk populations (e.g. thalassemia in Sardinia and Cyprus, Tay-Sachs disease among Ashkenazi Jews) through voluntary screening and genetic counseling has been one of the most significant success stories of medical genetics, and enjoys wide public support and participation in the affected communities.
Even more problematic for the claim that "Darwinism" was critical and instrumental in the development of eugenics is the uncomfortable fact that eugenics was also openly embraced by opponents of evolution (the first eugenics sterilization laws in the world were passed in 1907 Indiana, hardly a hotbed of "Darwinists"). The most notable of these anti-evolution eugenics supporters was probably William J. Tinkle, geneticist and prominent Creationist. Tinkle taught at religious LaVerne College and Taylor University, and participated in the activities of the Deluge Society, the first "Creation Science" organization. He then joined forces with the "young lions" of Creationism, Henry Morris, Duane Gish and Walter Lammerts, and with them he was one of the 10 Founding Fathers of the Creation Research Society, which later became the Institute for Creation Research.
Tinkle opposed evolution and Darwinian theory, but was an enthusiastic proponent of eugenics, and published several articles on the subject. In his 1939 textbook "Fundamentals of Zoology" he devotes a section to "The Need of Human Betterment", where he laments the existence of "defective families" who "give birth to offspring like themselves", producing "persons of low mentality, paupers and criminals in much greater ratio than the general population"[8, p. 130]. Negative eugenics via institutionalization seems to have been his preferred eugenic solution:
It is an excellent plan to keep defective people in institutions for here they are not permitted to marry and bear children.[8, p. 131]
[Scientists who are working at the task of improving the human race] would like to increase the birth rate of families having good heredity, while those people having poor heredity should not marry at all.[8, p. 131]
Figure 65 from Tinkle's "Fundamentals of Zoology" illustrates the effect of differential reproduction on human population demographics. Pace the Discovery Institute propaganda, Tinkle did not need "Darwinism" or materialism to draw his eugenical conclusions.
Unsavory as they sound to us today, Tinkle's writings in 1939 are probably within the mainstream of his time, and fall well short of those of Nazi apologists and proponents of extermination of "defectives" (such as conservative Catholic and Nobel Prize winner Alexis Carrel [9]). Like the majority of American eugenicists of the time, Tinkle seems to have thought that eugenics would humanely solve otherwise apparently intractable social problems and relieve human suffering (indeed, many progressive Christian clergymen and churches in America endorsed eugenics for precisely these reasons [10]).
Much more troubling, however, are Tinkle's opinions of almost 30 years later, in his book "Heredity. A study in science and the Bible" published in 1967, while Tinkle was the Secretary of the Creation Research Society. In its chapter "The prospect for eugenics", far from having abandoned his support for the practice, Tinkle sounds more radical about it. He writes positively about sterilization for the "feeble-minded" (carefully classified as "morons", "imbeciles" and "idiots") and people with other hereditary conditions. Sterilization in a male, he says "is a simple operation", and "in a girl or woman, [it] is as serious as removal of the vermiform appendix" [11, p. 139]. While he admits that it is impractical to sterilize all "defectives", he still thinks it's worth a shot when possible:
At the present time there are in the United States more than a million people with serious hereditary defects, and to reduce their numbers by even a few thousand would reduce the amount of discomfort and hardship in the future. Unfortunate births are reduced by segregation also but there are not enough institutions to house nearly all the ones who have unfortunate genes. Institutional care is expensive but as compared to total government expenditure it is small.
Sterilization is sometimes employed with the consent of the patient for non-eugenic purposes. An example is a woman who has borne three children by Caesarean section and could not stand another birth. Persons who are on the borderline of normal mentality may be able to marry and care for themselves but would not be good parents. Their children might be normal or might be defective, and at any rate would have poor home discipline. Such persons sometimes are prevailed upon to submit to sterilization, to their own advantage. [11, pp140-141]
Tinkle was well aware of the dangers of eugenics, and mentions the horrors of Nazism (though he disturbingly feels it necessary to specifically note that among the millions of people killed by that regime "many [were] of the highest types") and of forced sterilization (only however insofar as it was applied as a punishment for sex offenses and other forms of "misbehavior", and thus "flout[ing] the law"). But those concerned with the "sanctity of human life" should not fear, because Tinkle was on top of it:
A careful reading of eugenic literature reveals that it may inculcate less respect for human life. In this way it runs counter to democracy, which stresses the worth and rights of the individual. The Bible teaches that life comes from God and that it is wrong to take that which one can not give. Unfortunately there are other programs also which destroy the idea of the sacredness of life. We refer to murder on the screen, war, and the teaching that man originated from, and still is, an animal. [emphasis mine]
We mention these unfortunate results [i.e. Nazism and "misapplied" sterilization] as dangers only; not as objections to attempting to improve our race by application of known genetics principles. [11, p.143]
Thus, on the eve of the Apollo moon landing, the Secretary of the preeminent Creationist organization in the US was denouncing the teaching of evolution as immoral, but thought sterilization on the "feeble-minded" was A-OK. I hope Dr. West & C will include this interesting case in their future discussions of how "Darwinism" was the origin and key motivation for eugenics, and materialism its philosophical basis.
So, the pill the ID advocates are trying to get the public to swallow is - surprise! - filled with over-simplified and dishonestly slanted propaganda: while the modern eugenic movement embraced and built on the ideas of Darwin and of evolutionary biology, among other disciplines, for its theoretical foundations, eugenics in itself is neither necessarily Darwinian nor inherently materialistic in nature, and its historical, social and philosophical roots reach far wider and deeper than the simple flow-chart Darwin -> Galton -> eugenics. The ID advocates' misrepresentation and exploitation of this argument for their quixotic battles against evolutionary science is, once again, a disservice to the public.
[1] J. West, "Darwinism and Eugenics Revisited", Evolution News and Views blog, 4/20/07 [2] quoted in: M Bansal "Policy Expert Sees Darwinism-Eugenics Link", CNSNews.com, 5/1/07 [3] B Chapman, "John West and the Darwin-Eugenics Link", Evolution News and Views blog, 5/1/07 [4] M Egnor, "Eugenic Birthdays", Evolution News and Views blog, 3/30/07 [5] M Egnor, "Pseudo-Darwinism: Dr. Cartwright's Error and Eugenics", Evolution News and Views blog, 3/30/07 [6] D. Klinghoffer, "Happy Darwin Day! Celebrating mankind's discovery of eugenics.", The Weekly Standard, 2/12/07. Incidentally, that sentence misrepresents Singer's point, which in context refers not to divinely-derived, universal human rights and dignity (for which the Hebrew people objectively had little use), but to the Genesis-based justification of human "dominion" over other living creatures. The original is here. [7] for serious scholarly treatment of the subject, see Daniel J. Kevles, In the Name of Eugenics. Genetics and the Uses of Human Heredity, Alfred A Knopf Inc, 1985 and Harvard University Press, 1995; and Elof A Carlson The Unfit: A History of a Bad Idea, Cold Spring Harbor Laboratory Press, 2001. Another interesting read is John Waller's article Ideas of Heredity, Reproduction and Eugenics in Britain, 1800-1875 (Stud. Hist. Phil. Biol. & Biomed. Sci. 32, 457–489, 2001), which describes the social and intellectual milieu in which Galton's ideas were formed and flourished, and shows how in fact widespread eugenic sentiments and even explicit calls for eugenics-oriented social intervention predated not only Galton's Hereditary Talent and Character, but also On the Origin of Species. [8] W. J. Tinkle Fundamentals of Zoology, Zondervan, 1939. [9] Andres H. Reggiani God's Eugenicist: Alexis Carrel And the Sociobiology of Decline, Berghahn Books, 2006. [10] Christine Rosen, Preaching Eugenics: Religious Leaders and the American Eugenics Movement, Oxford University Press, 2004. [11] William J Tinkle Heredity: A Study in Science and the Bible, St. Thomas Press, 1967.


text:
ESP-IDF FreeRTOS SMP Changes¶
The vanilla FreeRTOS is designed to run on a single core. However the ESP32 is dual core containing a Protocol CPU (known as CPU 0 or PRO_CPU) and an Application CPU (known as CPU 1 or APP_CPU). The two cores are identical in practice and share the same memory. This allows the two cores to run tasks interchangeably between them.
The ESP-IDF FreeRTOS is a modified version of vanilla FreeRTOS which supports symmetric multiprocessing (SMP). ESP-IDF FreeRTOS is based on the Xtensa port of FreeRTOS v8.2.0. This guide outlines the major differences between vanilla FreeRTOS and ESP-IDF FreeRTOS. The API reference for vanilla FreeRTOS can be found via http://www.freertos.org/a00106.html
For information regarding features that are exclusive to ESP-IDF FreeRTOS, see ESP-IDF FreeRTOS Additions.
Backported Features: Although ESP-IDF FreeRTOS is based on the Xtensa port of FreeRTOS v8.2.0, a number of FreeRTOS v9.0.0 features have been backported to ESP-IDF.
Tasks and Task Creation: Use xTaskCreatePinnedToCore()
to create tasks in ESP-IDF FreeRTOS. The
last parameter of the two functions is xCoreID
. This parameter specifies
which core the task is pinned to. Acceptable values are 0
for PRO_CPU,
for APP_CPU, or tskNO_AFFINITY
which allows the task to run on
Round Robin Scheduling: The ESP-IDF FreeRTOS scheduler will skip tasks when implementing Round-Robin scheduling between multiple tasks in the Ready state that are of the same priority. To avoid this behavior, ensure that those tasks either enter a blocked state, or are distributed across a wider range of priorities.
Scheduler Suspension: Suspending the scheduler in ESP-IDF FreeRTOS will only
affect the scheduler on the the calling core. In other words, calling
on PRO_CPU will not prevent APP_CPU from scheduling, and
vice versa. Use critical sections or semaphores instead for simultaneous
access protection.
Tick Interrupt Synchronicity: Tick interrupts of PRO_CPU and APP_CPU
are not synchronized. Do not expect to use vTaskDelay()
as an accurate method of synchronizing task execution
between the two cores. Use a counting semaphore instead as their context
switches are not tied to tick interrupts due to preemption.
Critical Sections & Disabling Interrupts: In ESP-IDF FreeRTOS, critical sections are implemented using mutexes. Entering critical sections involve taking a mutex, then disabling the scheduler and interrupts of the calling core. However the other core is left unaffected. If the other core attemps to take same mutex, it will spin until the calling core has released the mutex by exiting the critical section.
Floating Point Aritmetic: The ESP32 supports hardware acceleration of single
precision floating point arithmetic (float
). However the use of hardware
acceleration leads to some behavioral restrictions in ESP-IDF FreeRTOS.
Therefore, tasks that utilize float
will automatically be pinned to a core if
not done so already. Furthermore, float
cannot be used in interrupt service
Task Deletion: Task deletion behavior has been backported from FreeRTOS
v9.0.0 and modified to be SMP compatible. Task memory will be freed immediately
when vTaskDelete()
is called to delete a task that is not currently running
and not pinned to the other core. Otherwise, freeing of task memory will still
be delegated to the Idle Task.
Thread Local Storage Pointers & Deletion Callbacks: ESP-IDF FreeRTOS has backported the Thread Local
Storage Pointers (TLSP) feature. However the extra feature of Deletion Callbacks has been
added. Deletion callbacks are called automatically during task deletion and are
used to free memory pointed to by TLSP. Call
to set TLSP and Deletion
Configuring ESP-IDF FreeRTOS: Several aspects of ESP-IDF FreeRTOS can be
set in the project configuration (idf.py menuconfig
) such as running ESP-IDF in
Unicore (single core) Mode, or configuring the number of Thread Local Storage Pointers
each task will have.
Backported Features¶
The following features have been backported from FreeRTOS v9.0.0 to ESP-IDF.
Static Alocation¶
This feature has been backported from FreeRTOS v9.0.0 to ESP-IDF. The CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION option must be enabled in menuconfig in order for static allocation functions to be available. Once enabled, the following functions can be called…
(see Backporting Notes below)
(see Backporting Notes below)
Other Features¶
Backporting Notes¶
1) xTaskCreateStatic()
has been made SMP compatible in a similar
fashion to xTaskCreate()
(see Tasks and Task Creation). Therefore
can also be called.
2) Although vanilla FreeRTOS allows the Timer feature's daemon task to
be statically allocated, the daemon task is always dynamically allocated in
ESP-IDF. Therefore vApplicationGetTimerTaskMemory
does not need to be
defined when using statically allocated timers in ESP-IDF FreeRTOS.
3) The Thread Local Storage Pointer feature has been modified in ESP-IDF
FreeRTOS to include Deletion Callbacks (see Thread Local Storage Pointers & Deletion Callbacks). Therefore
the function vTaskSetThreadLocalStoragePointerAndDelCallback()
can also be
Tasks and Task Creation¶
Tasks in ESP-IDF FreeRTOS are designed to run on a particular core, therefore
two new task creation functions have been added to ESP-IDF FreeRTOS by
appending PinnedToCore
to the names of the task creation functions in
vanilla FreeRTOS. The vanilla FreeRTOS functions of xTaskCreate()
and xTaskCreateStatic()
have led to the addition of
and xTaskCreateStaticPinnedToCore()
ESP-IDF FreeRTOS (see Backported Features).
For more details see freertos/task.c
The ESP-IDF FreeRTOS task creation functions are nearly identical to their
vanilla counterparts with the exception of the extra parameter known as
. This parameter specifies the core on which the task should run on
and can be one of the following values.
pins the task to PRO_CPU
pins the task to APP_CPU
allows the task to be run on both CPUs
For example xTaskCreatePinnedToCore(tsk_callback, "APP_CPU Task", 1000, NULL, 10, NULL, 1)
creates a task of priority 10 that is pinned to APP_CPU with a stack size
of 1000 bytes. It should be noted that the uxStackDepth
parameter in
vanilla FreeRTOS specifies a task's stack depth in terms of the number of
words, whereas ESP-IDF FreeRTOS specifies the stack depth in terms of bytes.
Note that the vanilla FreeRTOS functions xTaskCreate()
have been defined in ESP-IDF FreeRTOS as inline functions which call
and xTaskCreateStaticPinnedToCore()
respectively with tskNO_AFFINITY
as the xCoreID
Each Task Control Block (TCB) in ESP-IDF stores the xCoreID
as a member.
Hence when each core calls the scheduler to select a task to run, the
member will allow the scheduler to determine if a given task is
permitted to run on the core that called it.
The vanilla FreeRTOS implements scheduling in the vTaskSwitchContext()
function. This function is responsible for selecting the highest priority task
to run from a list of tasks in the Ready state known as the Ready Tasks List
(described in the next section). In ESP-IDF FreeRTOS, each core will call
independently to select a task to run from the
Ready Tasks List which is shared between both cores. There are several
differences in scheduling behavior between vanilla and ESP-IDF FreeRTOS such as
differences in Round Robin scheduling, scheduler suspension, and tick interrupt
Round Robin Scheduling¶
Given multiple tasks in the Ready state and of the same priority, vanilla FreeRTOS implements Round Robin scheduling between each task. This will result in running those tasks in turn each time the scheduler is called (e.g. every tick interrupt). On the other hand, the ESP-IDF FreeRTOS scheduler may skip tasks when Round Robin scheduling multiple Ready state tasks of the same priority.
The issue of skipping tasks during Round Robin scheduling arises from the way
the Ready Tasks List is implemented in FreeRTOS. In vanilla FreeRTOS,
is used to store a list of tasks that are in the Ready
state. The list is implemented as an array of length configMAX_PRIORITIES
where each element of the array is a linked list. Each linked list is of type
and contains TCBs of tasks of the same priority that are in the
Ready state. The following diagram illustrates the pxReadyTasksList
Each linked list also contains a pxIndex
which points to the last TCB
returned when the list was queried. This index allows the vTaskSwitchContext()
to start traversing the list at the TCB immediately after pxIndex
implementing Round Robin Scheduling between tasks of the same priority.
In ESP-IDF FreeRTOS, the Ready Tasks List is shared between cores hence
will contain tasks pinned to different cores. When a core
calls the scheduler, it is able to look at the xCoreID
member of each TCB
in the list to determine if a task is allowed to run on calling the core. The
ESP-IDF FreeRTOS pxReadyTasksList
is illustrated below.
Therefore when PRO_CPU calls the scheduler, it will only consider the tasks in blue or purple. Whereas when APP_CPU calls the scheduler, it will only consider the tasks in orange or purple.
Although each TCB has an xCoreID
in ESP-IDF FreeRTOS, the linked list of
each priority only has a single pxIndex
. Therefore when the scheduler is
called from a particular core and traverses the linked list, it will skip all
TCBs pinned to the other core and point the pxIndex at the selected task. If
the other core then calls the scheduler, it will traverse the linked list
starting at the TCB immediately after pxIndex
. Therefore, TCBs skipped on
the previous scheduler call from the other core would not be considered on the
current scheduler call. This issue is demonstrated in the following
Referring to the illustration above, assume that priority 9 is the highest priority, and none of the tasks in priority 9 will block hence will always be either in the running or Ready state.
1) PRO_CPU calls the scheduler and selects Task A to run, hence moves
to point to Task A
2) APP_CPU calls the scheduler and starts traversing from the task after
which is Task B. However Task B is not selected to run as it is not
pinned to APP_CPU hence it is skipped and Task C is selected instead.
now points to Task C
3) PRO_CPU calls the scheduler and starts traversing from Task D. It skips
Task D and selects Task E to run and points pxIndex
to Task E. Notice that
Task B isn't traversed because it was skipped the last time APP_CPU called
the scheduler to traverse the list.
4) The same situation with Task D will occur if APP_CPU calls the
scheduler again as pxIndex
now points to Task E
One solution to the issue of task skipping is to ensure that every task will enter a blocked state so that they are removed from the Ready Task List. Another solution is to distribute tasks across multiple priorities such that a given priority will not be assigned multiple tasks that are pinned to different cores.
Scheduler Suspension¶
In vanilla FreeRTOS, suspending the scheduler via vTaskSuspendAll()
prevent calls of vTaskSwitchContext
from context switching until the
scheduler has been resumed with xTaskResumeAll()
. However servicing ISRs
are still permitted. Therefore any changes in task states as a result from the
current running task or ISRSs will not be executed until the scheduler is
resumed. Scheduler suspension in vanilla FreeRTOS is a common protection method
against simultaneous access of data shared between tasks, whilst still allowing
ISRs to be serviced.
In ESP-IDF FreeRTOS, xTaskSuspendAll()
will only prevent calls of
from switching contexts on the core that called for the
suspension. Hence if PRO_CPU calls vTaskSuspendAll()
, APP_CPU will
still be able to switch contexts. If data is shared between tasks that are
pinned to different cores, scheduler suspension is NOT a valid method of
protection against simultaneous access. Consider using critical sections
(disables interrupts) or semaphores (does not disable interrupts) instead when
protecting shared resources in ESP-IDF FreeRTOS.
In general, it's better to use other RTOS primitives like mutex semaphores to protect
against data shared between tasks, rather than vTaskSuspendAll()
Tick Interrupt Synchronicity¶
In ESP-IDF FreeRTOS, tasks on different cores that unblock on the same tick count might not run at exactly the same time due to the scheduler calls from each core being independent, and the tick interrupts to each core being unsynchronized.
In vanilla FreeRTOS the tick interrupt triggers a call to
which is responsible for incrementing the tick
counter, checking if tasks which have called vTaskDelay()
have fulfilled
their delay period, and moving those tasks from the Delayed Task List to the
Ready Task List. The tick interrupt will then call the scheduler if a context
switch is necessary.
In ESP-IDF FreeRTOS, delayed tasks are unblocked with reference to the tick interrupt on PRO_CPU as PRO_CPU is responsible for incrementing the shared tick count. However tick interrupts to each core might not be synchronized (same frequency but out of phase) hence when PRO_CPU receives a tick interrupt, APP_CPU might not have received it yet. Therefore if multiple tasks of the same priority are unblocked on the same tick count, the task pinned to PRO_CPU will run immediately whereas the task pinned to APP_CPU must wait until APP_CPU receives its out of sync tick interrupt. Upon receiving the tick interrupt, APP_CPU will then call for a context switch and finally switches contexts to the newly unblocked task.
Therefore, task delays should NOT be used as a method of synchronization between tasks in ESP-IDF FreeRTOS. Instead, consider using a counting semaphore to unblock multiple tasks at the same time.
Critical Sections & Disabling Interrupts¶
Vanilla FreeRTOS implements critical sections in vTaskEnterCritical
disables the scheduler and calls portDISABLE_INTERRUPTS
. This prevents
context switches and servicing of ISRs during a critical section. Therefore,
critical sections are used as a valid protection method against simultaneous
access in vanilla FreeRTOS.
On the other hand, the ESP32 has no hardware method for cores to disable each
other's interrupts. Calling portDISABLE_INTERRUPTS()
will have no effect on
the interrupts of the other core. Therefore, disabling interrupts is NOT
a valid protection method against simultaneous access to shared data as it
leaves the other core free to access the data even if the current core has
disabled its own interrupts.
For this reason, ESP-IDF FreeRTOS implements critical sections using mutexes, and calls to enter or exit a critical must provide a mutex that is associated with a shared resource requiring access protection. When entering a critical section in ESP-IDF FreeRTOS, the calling core will disable its scheduler and interrupts similar to the vanilla FreeRTOS implementation. However, the calling core will also take the mutex whilst the other core is left unaffected during the critical section. If the other core attempts to take the same mutex, it will spin until the mutex is released. Therefore, the ESP-IDF FreeRTOS implementation of critical sections allows a core to have protected access to a shared resource without disabling the other core. The other core will only be affected if it tries to concurrently access the same resource.
The ESP-IDF FreeRTOS critical section functions have been modified as follows…
are all macro defined to callvTaskEnterCritical()
are all macro defined to callvTaskExitCritical()
macro identifies the context of execution, i.e ISR or Non-ISR, and calls appropriate critical section functions (port*_CRITICAL
in Non-ISR andport*_CRITICAL_ISR
in ISR) in order to be in compliance with Vanilla FreeRTOS.
For more details see freertos/include/freertos/portmacro.h and freertos/task.c
It should be noted that when modifying vanilla FreeRTOS code to be ESP-IDF FreeRTOS compatible, it is trivial to modify the type of critical section called as they are all defined to call the same function. As long as the same mutex is provided upon entering and exiting, the type of call should not matter.
Floating Point Aritmetic¶
The ESP32 supports hardware acceleration of single precision floating point
arithmetic (float
) via Floating Point Units (FPU, also known as coprocessors)
attached to each core. The use of the FPUs imposes some behavioral restrictions
on ESP-IDF FreeRTOS.
ESP-IDF FreeRTOS implements Lazy Context Switching for FPUs. In other words,
the state of a core's FPU registers are not immediately saved when a context
switch occurs. Therefore, tasks that utilize float
must be pinned to a
particular core upon creation. If not, ESP-IDF FreeRTOS will automatically pin
the task in question to whichever core the task was running on upon the task's
first use of float
. Likewise due to Lazy Context Switching, interrupt service
routines must also not use float
ESP32 does not support hardware acceleration for double precision floating point
arithmetic (double
). Instead double
is implemented via software hence the
behavioral restrictions with regards to float
do not apply to double
. Note
that due to the lack of hardware acceleration, double
operations may consume
significantly larger amount of CPU time in comparison to float
Task Deletion¶
FreeRTOS task deletion prior to v9.0.0 delegated the freeing of task memory
entirely to the Idle Task. Currently, the freeing of task memory will occur
immediately (within vTaskDelete()
) if the task being deleted is not currently
running or is not pinned to the other core (with respect to the core
is called on). TLSP deletion callbacks will also run immediately
if the same conditions are met.
However, calling vTaskDelete()
to delete a task that is either currently
running or pinned to the other core will still result in the freeing of memory
being delegated to the Idle Task.
Thread Local Storage Pointers & Deletion Callbacks¶
Thread Local Storage Pointers (TLSP) are pointers stored directly in the TCB. TLSP allow each task to have its own unique set of pointers to data structures. However task deletion behavior in vanilla FreeRTOS does not automatically free the memory pointed to by TLSP. Therefore if the memory pointed to by TLSP is not explicitly freed by the user before task deletion, memory leak will occur.
ESP-IDF FreeRTOS provides the added feature of Deletion Callbacks. Deletion Callbacks are called automatically during task deletion to free memory pointed to by TLSP. Each TLSP can have its own Deletion Callback. Note that due to the to Task Deletion behavior, there can be instances where Deletion Callbacks are called in the context of the Idle Tasks. Therefore Deletion Callbacks should never attempt to block and critical sections should be kept as short as possible to minimize priority inversion.
Deletion callbacks are of type
void (*TlsDeleteCallbackFunction_t)( int, void * )
where the first parameter
is the index number of the associated TLSP, and the second parameter is the
TLSP itself.
Deletion callbacks are set alongside TLSP by calling
. Calling the vanilla
FreeRTOS function vTaskSetThreadLocalStoragePointer()
will simply set the
TLSP's associated Deletion Callback to NULL meaning that no callback will be
called for that TLSP during task deletion. If a deletion callback is NULL,
users should manually free the memory pointed to by the associated TLSP before
task deletion in order to avoid memory leak.
CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS in menuconfig can be used to configure the number TLSP and Deletion Callbacks a TCB will have.
For more details see FreeRTOS API reference.
Configuring ESP-IDF FreeRTOS¶
The ESP-IDF FreeRTOS can be configured in the project configuration menu
(idf.py menuconfig
) under Component Config/FreeRTOS
. The following section
highlights some of the ESP-IDF FreeRTOS configuration options. For a full list of
ESP-IDF FreeRTOS configurations, see FreeRTOS
CONFIG_FREERTOS_UNICORE will run ESP-IDF FreeRTOS only
on PRO_CPU. Note that this is not equivalent to running vanilla
FreeRTOS. Behaviors of multiple components in ESP-IDF will be modified such
as esp32/cpu_start.c. For more details regarding the
effects of running ESP-IDF FreeRTOS on a single core, search for
occurences of CONFIG_FREERTOS_UNICORE
in the ESP-IDF components.
CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS will define the number of Thread Local Storage Pointers each task will have in ESP-IDF FreeRTOS.
CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION will enable the backported
functionality of xTaskCreateStaticPinnedToCore()
in ESP-IDF FreeRTOS
CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION will trigger a halt in particular functions in ESP-IDF FreeRTOS which have not been fully tested in an SMP context.
CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER will enclose all task functions
within a wrapper function. In the case that a task function mistakenly returns
(i.e. does not call vTaskDelete()
), the call flow will return to the
wrapper function. The wrapper function will then log an error and abort the
application, as illustrated below:
E (25) FreeRTOS: FreeRTOS task should not return. Aborting now!
abort() was called at PC 0x40085c53 on core 0


text:
School traffic management is challenging, but also critically important for safety and convenience.
In order to keep students, families and staff safe, schools implement arrival and dismissal procedures to facilitate the process and keep traffic moving.
There's a right way to navigate the school car line, and a wrong way... actually, so many wrong ways.
Taking the kids to school in the morning and collecting them again in the afternoon are quite possibly two of the most agonizing events in a parent's day, but it doesn't have to be this way.
The drop-off and pickup process must be efficient for students and parents arriving by bus or private motor vehicle, as well as those who arrive on foot and bicycle.
Some parents are reluctant to allow their children to walk or bicycle to school due to the traffic congestion and perceived traffic dangers.
This often results in more parents driving their children to school which adds to the extra congestion and safety problems at the school, creating an increasing cycle of more traffic problems.
You don't want to risk that any parent or child misses out on critical traffic instructions, so you need to be heard loud and clear.
That's why you should consider an AmpliVox Megaphone to help you with this critical task. Introducing a portable PA system to give directions, make announcements, and deliver messages improves the drop-off and pickup process.
Mity-Meg Megaphone
The AmpliVox SB602MR Megaphone has a convenient detachable mic and rechargeable battery.
Comfortable pistol grip and 3 modes: Talk, Siren and Whistle with an effective range up to one mile (1760 yards).
If you need more power and range, use the AmpliVox Half-Mile Hailer.
Half-Mile Hailer
A powerful loudspeaker PA that can be clearly heard up to half a mile away, all from a compact and portable all-weather unit.
An easy to use 50 Watt amp really powers out the sound, just turn it on, adjust the volume and start talking.
Safety Wand Megaphone
The S606 Safety Wand Megaphone is a traffic control baton that combines the features of a LED safety wand with a loudspeaker megaphone, increasing your visibility and amplifying your voice within the same unit.
The light has a visibility of up to 3000 yards, to ensure that warnings and signals won't be missed. Its built-in rechargeable battery provides up to 100 hours of use.
To see the full line up of AmpliVox megaphones go to our website, you can even get a cloth cover for the megaphone horn that can have your school logo on it.
Make sure your children are safe by hearing you loud and clear with an AmpliVox megaphone.


text:
August 22, 2017
Felix Neck Wildlife Sanctuary, Edgartown
During the record-breaking winter of 2014/15, Amy Montague and I hatched a plan for a special kind of Artist Residency, during which I would travel around Massachusetts to visit and work at Mass Audubon's wildlife sanctuaries. The contract we agreed upon specified that I visit at least 45 sanctuaries, but in the back of my mind, I knew I wanted to visit all 57 public properties. What I didn't know was how long it would take. We settled on a two-year timeframe, wrapping up with an exhibition at the Museum of American Bird Art in Spring/Summer 2017. By the time my show opened in May 2017, I had worked at 52 sanctuaries, leaving five properties yet to visit. There was no reason to stop, now!
Flash forward to the morning of August 22, 2017. I've been stuck in traffic for over an hour on the Bourne Rotary, waiting to make my way across the Bourne Bridge and then on to the Martha's Vineyard Ferry at Woods Hole. I thought I had left myself plenty of time to make the ferry, but unbeknownst to me, an accident on the Sagamore Bridge earlier that morning had redirected all traffic over the Bourne – resulting in this horrendous traffic snarl on a Tuesday morning!
As it happens, I did make the ferry that morning – arriving last in line and just in time to get on the boat.
My final sanctuary visit, to Felix Neck Wildlife Sanctuary, was underway!
The first thing that caught my eye as I arrived at the Felix Neck parking area, was a large, strangely proportioned birdhouse mounted on poles.
The structure had been used by Barn Owls for many seasons, but has had no owls in residence for the past three years. Barns Owls are at the northern edge of their range in Massachusetts, and in recent decades, Martha's Vineyard has been the most reliable breeding locality for these birds (nine pairs nested on the Island in 1985). Unfortunately, they are vulnerable to severe winters with heavy snow cover (such as the winter of 2014/15). One can only hope that they will re-colonize the island in the near future.
The Felix Neck Wildlife Sanctuary is a roughly 200 acre neck of land surrounded on three sides by the protected waters of Sengekontacket Pond. The Pond itself is separated from the ocean by a narrow barrier beach comprising the Joseph Sylvia State Beach (more on that to come). Ocean waters pass in and out of Sengekontacket Pond beneath a bridge on the state beach known locally as "The Jaws Bridge", since it figured prominently in some scenes from the movie JAWS!
Sharks were far from my mind, however, when I set out on the Marsh Trail to explore the sanctuary. A green heron skulked along the edge of the waterfowl pond, but flushed when I took out my sketchbook. Further out on the marsh, some Great Egrets were more cooperative, and I spent some time mapping out the odd angles formed by those impossibly long necks.
Along the Marsh Trail, pitch pine forests border the marsh, with an understory of huckleberry. Where the forest gives way to the open marsh , "high tide bush" (marsh elder) forms tall, billowy shrubs. I like the way the waters of the marsh form a bright, level ribbon beyond the pine trunks and branches, and get to work on a watercolor.
I use a small sheet of Arches 300 lb cold-press that is just right for painting the roughly textured pitch pines. There's a gracefulness to the curving sweep of some of the branches, but there's awkwardness, too, in the chaotic angles and weird undulations of the trunks. I find this intriguing – the graceful and the ungainly mixed together.
From a spur trail that leads out to the shore, I have a view of Sarson's Island across the water. It's labeled as a "bird nesting colony" on my trail map, so I scan it slowly with my scope. I see mostly cormorants and gulls, but mixed in are oystercatchers, plovers, turnstones, dowitchers, willets and peeps. A small flock of Black Skimmers flies past the island and I follow them out over the waters of Sengekontacket Pond.
I try some sketching of the Oystercatchers on Sarson's Island, but they are too far away for meaningful drawing, so I instead take a landscape approach. Four cormorants are perched on a rather odd structure consisting of a cable hanging between two sturdy posts. Later, I learn from director Suzan Bellincampi that the posts and cable were originally erected to encourage egrets to nest, though we couldn't quite figure out how this rig might have worked!
Here's the watercolor after the first layer of washes:
Working at a distance through a telescope has the effect of reducing contrast and softening colors, due to the intervening atmosphere. I hope to retain this effect in my painting, and keep the tones close and subdued.
Note that there are three species depicted in this watercolor: double-crested cormorant, black-bellied plover and great black-backed gull. One of my champions, John Busby of Scotland, often did scenes like this with multiple species, and I was thinking of him as I worked on this painting. One tricky aspect here is keeping the various species in proper scale to one another.
I continue along the shore on the Marsh Trail, pausing to draw some bayberry twigs heavy with those waxy, silvery gray berries. The thick, shiny leaves curl at the edges, and have other slight undulations that catch the light – making them challenging to draw and paint.
Further along the shore, I finally get a close look at an Oystercatcher – a single bird with a crippled (right) leg, which dangles uselessly as it hops along the shore. The bird is well-known to sanctuary staff, who have been observing it for weeks. Its plumage is unkempt, probably due to the difficulty of preening while balancing on one leg, but otherwise the bird seems to be getting along.
The views along the shore are alluring, with their lush green tufts of marsh grass interspersed with bright little sand beaches – all surrounded by the sparkling waters of Sengekontacket Pond. I start a watercolor near the terminus of the Shad Trail, looking up into the protected waters of Majors Cove (I'm now on the westernmost shore of Felix Neck).
I paint until the light starts to fade, then head back to the car.
note: my visit to Martha's Vineyard has been broken into three parts – one for each day I spent on the inland. Please stay tuned for parts 2 and 3…


text:
Sometimes your home is in need of major home repairs. Major Home Repairs can mean anything from your roof to your foundation and everything in between. With the proper knowledge of what is going on with your home and the proper major home repairs, your home will be a safe and happy place to live.
Thank you for visiting our home repair and improvement website. Please contact us with any questions or comments about our home repair and improvement products or services.
RR Commercial Painting, Inc
348 Orchard Hill Road
Pomfret Center , CT 06259
We would love to solve your home repair and improvement needs and provide you a Service unlike any other company in Willington, CT could.


text:
What you need to know
You know how much we love a multitasker at Azurina; chic designs that take us seamlessly from brunch to boogie (and potentially back again...). But even we can't get over the audacity of the Trento- 3 bags in one with more possible combos than our current quarantine brains can handle!
Wear all 3 together with the chunky nylon strap, use the front or small bag solo, add the chain strap into the mix, ditch all the straps and use as clutches or make up bags, remove the coin purse when you just need your keys and card... see what we mean?!
Hello, Trento, we're so glad we made you.
The 411
- Real Leather
- Hardware: Gold
- The Measurements: All parts detachable
- Main Bag: H:13cm, W:23cm, D:5cm
- Front Bag: H:12cm, W:20cm D:4cm
- Circle Coin Bag: H:10cm, D:3cm
- Straps: All removable
- Adjustable cross body strap: 76- 115cm
- Removable chain shoulder strap: 65cm
Free gift Wrap On Request
Our packaging & note cards are 100% recyclable (yep, even the tape!), we use eco-friendly, vegan ink and once you've recycled our (biodegradable) box, it can be remade and reused in just TWO weeks. ALL. THE. GOOD. STUFF.


text:
Isaiah, 1
1. The vision of Isaiah the son of Amoz, which he saw concerning Judah and Jerusalem in the days of Uzzi'ah, Jotham, Ahaz, and Hezeki'ah, kings of Judah.
2. Hear, O heavens, and give ear, O earth; for the LORD has spoken: "Sons have I reared and brought up, but they have rebelled against me.
3. The ox knows its owner, and the ass its master's crib; but Israel does not know, my people does not understand."
4. Ah, sinful nation, a people laden with iniquity, offspring of evildoers, sons who deal corruptly! They have forsaken the LORD, they have despised the Holy One of Israel, they are utterly estranged.
5. Why will you still be smitten, that you continue to rebel? The whole head is sick, and the whole heart faint.
6. From the sole of the foot even to the head, there is no soundness in it, but bruises and sores and bleeding wounds; they are not pressed out, or bound up, or softened with oil.
7. Your country lies desolate, your cities are burned with fire; in your very presence aliens devour your land; it is desolate, as overthrown by aliens.
8. And the daughter of Zion is left like a booth in a vineyard, like a lodge in a cucumber field, like a besieged city.
9. If the LORD of hosts had not left us a few survivors, we should have been like Sodom, and become like Gomor'rah.
10. Hear the word of the LORD, you rulers of Sodom! Give ear to the teaching of our God, you people of Gomor'rah!
11. "What to me is the multitude of your sacrifices? says the LORD; I have had enough of burnt offerings of rams and the fat of fed beasts; I do not delight in the blood of bulls, or of lambs, or of he-goats.
12. "When you come to appear before me, who requires of you this trampling of my courts?
13. Bring no more vain offerings; incense is an abomination to me. New moon and sabbath and the calling of assemblies -- I cannot endure iniquity and solemn assembly.
14. Your new moons and your appointed feasts my soul hates; they have become a burden to me, I am weary of bearing them.
15. When you spread forth your hands, I will hide my eyes from you; even though you make many prayers, I will not listen; your hands are full of blood.
16. Wash yourselves; make yourselves clean; remove the evil of your doings from before my eyes; cease to do evil,
17. learn to do good; seek justice, correct oppression; defend the fatherless, plead for the widow.
18. "Come now, let us reason together, says the LORD: though your sins are like scarlet, they shall be as white as snow; though they are red like crimson, they shall become like wool.
19. If you are willing and obedient, you shall eat the good of the land;
20. But if you refuse and rebel, you shall be devoured by the sword; for the mouth of the LORD has spoken."
21. How the faithful city has become a harlot, she that was full of justice! Righteousness lodged in her, but now murderers.
22. Your silver has become dross, your wine mixed with water.
23. Your princes are rebels and companions of thieves. Every one loves a bribe and runs after gifts. They do not defend the fatherless, and the widow's cause does not come to them.
24. Therefore the Lord says, the LORD of hosts, the Mighty One of Israel: "Ah, I will vent my wrath on my enemies, and avenge myself on my foes.
25. I will turn my hand against you and will smelt away your dross as with lye and remove all your alloy.
26. And I will restore your judges as at the first, and your counselors as at the beginning. Afterward you shall be called the city of righteousness, the faithful city."
27. Zion shall be redeemed by justice, and those in her who repent, by righteousness.
28. But rebels and sinners shall be destroyed together, and those who forsake the LORD shall be consumed.
29. For you shall be ashamed of the oaks in which you delighted; and you shall blush for the gardens which you have chosen.
30. For you shall be like an oak whose leaf withers, and like a garden without water.
31. And the strong shall become tow, and his work a spark, and both of them shall burn together, with none to quench them.


text: As a compliment to our customers, we are expanding our product offering to cover a wider range of bathroom accesories, including shower heads in more than one high-end finish to match our copper bathroom sinks and faucets. To view more details about a particular shower head, just click on the corresponding image. A full set of detailed images will be displayed along with detailed product description and pricing.


text:
One goal of the ARLHS is to honor the maritime purposes of the world's illuminated marine aids to navigation present and past. Time takes a toll on inactive light structures causing many of them to become historic. We do our best to locate the original positions of these lights in the WLOL. Happily, some inactive marine lights find new homes well away from their original locations. For these special cases, the WLOL catalogs the original ATON location for DXpedition and historical reference plus the current 'moved to' location as two distinct ARLHS identifiers differing only in suffix.
The information contained within the ARLHS World List of Lights is Copyright 2003-2024 ARLHS, LLC.
Visit ARLHS for usage information.
Database HTML Rendering Programs, MySQL Schema and Web Site Content (excluding the actual lighthouse data)
Copyright 2006-2024 John Huggins
PHP/MySQL Database Engine: $Revision: 1.90 $
Lighthouse Display Program: $Revision: 1.50 $


text:
10 Sexiest Female Voices in All of Country Music
Age is not a number when it comes to country music's sexiest female voices. The 10 women on this list — each suggested by multiple Taste of Country readers — range in age from mid-20s to mid-50s. Like their music, their ability to get someone's attention is timeless.
Country men are more prone to releasing seductive love songs, but at least one woman on this list video has cut a lyric that is as aching as anything Lothario would write. No. 9's submission is more sweet than spicy, while No. 4's tones are tinged with regret. No. 2 is the kinda sexy you want to marry!
Who's No. 1? Which female has the sexiest voice in country music? When we asked readers, one name kept coming up again and again. Her husband made our list of the 10 sexiest male voices below (that's a huge hint), and she's steadily fed us a diet of Lawdy, OMG and Humina Humina.
Newcomers like Lindsay Ell and Maren Morris made this list as well, but for the most part, the 10 sexy female vocalists chosen are established hitmakers who've learned and loved a little bit more for a little bit longer. Maturity and experience are very sexy attributes, it seems.
Watch, subscribe to the Taste of Country YouTube channel and then check out the men. A new episode of This List comes every Saturday morning at 10AM CT.
Country Music's Sexiest Male Voice? Who's Your No. 1?


text:
What makes a person an outstanding talent leader? Is it the ability to set a vision, develop a strategy, or manage a budget? Or is it something much less visible and subtler?
Leadership is not something we are born with, although we may have a general aptitude. It takes insight into what leadership is all about and the desire to practice it in a deliberate, thoughtful, and consistent way to become good.
The points below amplify what I have learned from many successful leaders over the years.
Rule #1: You Are Not a Recruiter Anymore
Leaders cannot be technical experts and expect their functions to be great. Good leadership is much more about setting the stage for success, garnering support and resources, and assembling teams that excel.
Most recruiting and talent leaders spend too much time doing what they are familiar with, rather than practicing the skills of leadership. It is always easy to justify jumping in to help out, to keep a few requisitions for yourself, and to train recruiters in the skills you have.
But this is not leading — it is doing.
Rule #2: Keep It Lean
All business has been focused on reducing waste, speeding up delivery times, reducing labor costs, and building in automation. Manufacturing, in particular, is more efficient and productive than ever before. This is partly the cause of the current unemployment around the globe, as fewer people are needed to do even more work than before. The service sector lags in achieving these goals, but is on the path leading to greater productivity.
Successful leaders find ways to do more with fewer people by improving efficiency and streamlining processes. Functions that focus on these will gain business leader respect and support.
Specific actions include reducing paperwork, reducing process steps, implementing technology, cutting out meetings, removing management layers, or reducing reporting.
Rule #3: Focus on Simplicity
A recruiting function should operation like an iPad. It should look and be easy to understand and be so easy for a hiring manager to hire someone who they think they did it all themselves.
Easy and simple does not mean lazy, basic, or stripped down. It means something elegantly suited for its function and doing no more or less than is needed. An Apple iPad, for example, has almost no external buttons, and has an interface so simple one needs no instructions on how to use it. It has no operation manual because it is so simple. Yet, beneath that simplicity is a very complex and difficult-to-understand series of chips, wires, batteries, and displays.
Your job is to keep the sourcing, screening, and interviewing pieces humming quietly — honed to be highly efficient. The hiring manager should see only the output of these pieces — a qualified candidate who is eager for the position.
Effective leaders should remove the things that inhibit sharing and communication (including recruiters who won't share candidates or information). They should ruthlessly look for ways to make doing something easier, faster, and cheaper.
Rule #4: Get Out of the Way
Micromanagement is a scourge. Great leaders set the tone, hire good people, provide development and mentorship, and let them do their job unhindered. If a recruiter needs constant supervision, that recruiter should be replaced. If you have established guidelines and hire smart, capable people then your job is to create the environment where they can thrive.
You are a micromanager if you feel the need to hold regular meetings with a recruiter or group of recruiters to make sure they are making progress. You are a micromanager if you require weekly/monthly reports, if you are not comfortable being gone for a few days, and if you feel angry when decisions are made without consulting you.
Rule #5: Embrace Teams — Not Individuals
Collaboration and teamwork are more effective in getting results than individuals. Don't organize into functional silos with sourcers, screeners, recruiters, and so on. If you have specialists, mingle them together to create cross-functional teams. Include hiring managers and business leaders on your teams whenever you can.
If you look at your job as providing the best talent — not as filling requisitions — then your recruiters and the hiring managers should engage in discussions about what type of candidates to look for and even work together on the best ways to find them.
Rise above the transactional mindset to one of making a strategic difference. Challenge a team to better identify what kind of talent is needed and become efficient in finding and hiring these types of people. Make all rewards based on team performance. Encourage sharing, cross learning, and leveraging each persons' skills.
Rule #6: Accept the Limits
There is never enough of anything. In decades in the recruitment world I have never heard anyone say they had all the money, time, or people they needed to do their job. And I am pretty sure I never will.
Rather than complain, use the limits to your advantage. When there are not enough people, learn other ways to get a task done. It may require out-of-the-box thinking and may even require you to get a team together to brainstorm some possible solutions.
Rule #7: Build Internal Relationships
Relationships are the key to success and happiness in every social setting, and organizations are social settings. Getting to know and support your own leadership team will help remove constraints and perhaps even provide more resources.
Spending time to chat with business leaders, and getting to know them and their problems and needs, will help you to focus your efforts, redirect priorities, and improve your relevance.
Good relationships clarify communications, help overcome misunderstandings, and streamline getting though bureaucracy. Talent leaders should spend almost half their time building internal relationships, offering talent-related information and analytics, and showing how better candidates and better hires lead to greater profits.
Rule #8: Use Technology; Don't Fall in Love with It
Using technology well is the key to increasing productivity, but do not forget that recruiting is a people-to-people business. Relationships — virtual or face-to-face — are the basis for generating interest in a position and in getting hiring managers to accept candidates you send to them.
Technology helps immensely and increases productivity and expands the reach of your recruiters and provides data and insights you would not get otherwise. But it does not replace the need for recruiters to continuously refine their ability to connect with candidates and convince them of the opportunity offered. Nor does it replace the face-to-face conversations with hiring managers that build the credibility of your department and improves candidate acceptance.
Technology is always advancing, so look at each new app or solution and see where it might fit in a process flow. What would it enhance? What would it replace? Does it seem useful in achieving one of the leadership goals I have mentioned above?
But remember that most of all your job is to set the stage for success and do everything you can to make sure your recruiters have the skills, tools, and empowerment to achieve the goals of the organization.


text:
10 Movie Adaptions That Brought Popular Songs to Life
10 Miraculous Advances Toward Curing Incurable Diseases
10 Undeniable Signs That People's Views of Mushrooms Are Changing
10 Strange Attempts to Smuggle Animals
10 Natural Rock Formations That Will Make You Do a Double Take
10 Actors Hidden in Your Favorite Movies
10 Science Facts That Will Change How You Look at the World
10 Incredible Female Comic Book Artists
10 Terrifying Serial Killers from Centuries Ago
10 Things You May Not Know about the Statue of Liberty
10 Movie Adaptions That Brought Popular Songs to Life
10 Miraculous Advances Toward Curing Incurable Diseases
Who's Behind Listverse?
Jamie Frater
Head Editor
Jamie founded Listverse due to an insatiable desire to share fascinating, obscure, and bizarre facts. He has been a guest speaker on numerous national radio and television stations and is a five time published author.
More About Us10 Undeniable Signs That People's Views of Mushrooms Are Changing
10 Strange Attempts to Smuggle Animals
10 Natural Rock Formations That Will Make You Do a Double Take
10 Actors Hidden in Your Favorite Movies
10 Science Facts That Will Change How You Look at the World
10 Incredible Female Comic Book Artists
10 Terrifying Serial Killers from Centuries Ago
Top 10 Battles of World War II
World War II was the bloodiest conflict in human history. The world was in a state of "total war." Motivated by the threat of global tyranny, the Allies eventually prevailed, but this victory was marked by battles won and lost. This list looks at ten battles that decisively changed the course of the war. Battles are ranked based on what was at stake, and the effect they had on the war as a whole.
After the German conquest of Poland in September 1939, Hitler turned his attention to the west. His ultimate goal was to invade the Soviet Union, but he knew the defeat of the Western European nations was a necessity to avoid a two-front war. The first step was to invade the Low Countries (The Netherlands, Luxembourg, and Belgium) and France. Hypothetically, Germany could then conquer Britain, re-deploy to the East, and fight a one-front war against the Russians.
The German Army was actually outnumbered by the Allies. However, the numbers game didn't matter because the German plan was so effective. Once the Germans invaded the Low Countries, the French Army, and British Expeditionary Force (BEF) moved north to face the Germans head-on. This allowed German Army Group A to cut through the Allied defenses in the Ardennes and advance towards the English Channel, effectively trapping them with their backs against the sea. A new offensive was launched against Paris, France fell, and the BEF was evacuated at Dunkirk. The country was divided into German occupation zones and Vichy France. Germany was then free to focus on knocking Britain out of the war.
By the summer of 1944, the Red Army was at Germany's doorstep. There is no doubt that the Russians could have singlehandedly defeated Nazi Germany (hence this ranking at number 9), but Stalin had been putting pressure on the West to open a second front in an attempt to divert German resources and bring a quicker end to the war. The American Air Forces and British Royal Air Force (RAF) had been waging a strategic bombing campaign since 1942. The Allies controlled the Mediterranean theater, and invaded Italy in 1943. However, it was strategically necessary to launch a full-scale invasion of France to destroy the main force of the German Army in Northern Europe.
Operation Overlord commenced with the Normandy landings in June of 1944. By August, there were more than 3 million Allied troops in France. Paris was liberated on 25 August, and the German Army had been pushed back completely, and retreated across the River Seine by 30 August. Germany was forced to reinforce the Western Front with resources from the Eastern and Italian Fronts. The result was a decisive Allied strategic victory. By September, Western Allied forces were approaching the German border. Nazi Germany would surrender less than a year later. More importantly, Western Europe was not to be controlled by communist Russia, which had immense postwar political implications.
Up until August 1942, the Allies had been on the defensive in the Pacific Theatre. The offensive capability of the Japanese had been reduced following the naval battles of Coral Sea and Midway. However, Japan was still on the offensive and was planning invasions of Fiji, New Caledonia, and Samoa. By August 1942, the Imperial Japanese Navy was in the process of constructing a series of bases in the Solomon Islands that would provide a staging area for these planned invasions and offer protection of their major base at Rabaul. The Allies saw this as a major threat to Australia. The Japanese were in the process of constructing an airfield on Guadalcanal that could increase Japanese air cover for their naval forces advancing in the South Pacific. The Allies planned to invade the Solomon Islands in an effort to deny the use of the islands by the Japanese. This would also be the starting point for an Island hopping campaign aimed at retaking the Philippines and eventually invading the Japanese mainland.
On 7 August, 11,000 Marines of the 1st Marine Division under the command of Major General Alexander Vandergrift landed on Guadalcanal. The only resistance the Marines faced was the jungle itself. On 8 August, they successfully secured the Japanese airfield, which the Marines named "Henderson Field." The American Navy planned to withdraw from the area on 9 August after Japanese aircraft attacked the fleet during the initial landings. During the night of 8 August, the Japanese Navy surprised the Allied warships and sank one Australian and three American cruisers. The Navy could not afford to lose another carrier, so they left the Marines without unloading needed equipment and supplies. The Marines formed a perimeter around Henderson Field and small contingent of American aircraft, known as the "Cactus Air Force," stationed there. The Japanese landed thousands of troops throughout the month and continually attacked the Marines in an attempt to recapture the airfield. Finally, in February of 1943 the Japanese withdrew their forces from the Island. The victory at Guadalcanal was an important military and psychological victory for the Allies. After the campaign, Allied personnel regarded the Japanese military with less fear than previously. Japanese general Torashiro Kawabe even said, "As for the turning point, when the positive action ceased or even became negative, it was, I feel, at Guadalcanal."
In June 1944 the Americans had breached Japan's inner defensive ring and had bases that could be used by B-29 Superfortresses to bomb the Japanese home islands. The next step was to cut Japanese supply lines by invading the Philippines or Formosa (Taiwan). The Allies didn't have the manpower to take Formosa, and General Douglas Macarthur had championed an invasion of the Philippines ever since 1942 when he famously pronounced, "I shall return." The Japanese response was to attack the American landing force that was attempting to take the Philippine island of Leyte. The Japanese Northern Force would try to lure the American forces away from Leyte. The Southern Force and the powerful Center Force would then attack the landing area.
The Northern Force successfully diverted the US 3rd fleet under the command of Admiral William Halsey. The Japanese Southern Force was intercepted and destroyed by the 7th Fleet Support Force; a substantial fleet of six battleships, four heavy cruisers, and four light cruisers. Halsey's decision to take all of the available strength of the 3rd Fleet northwards left the northern landing area guarded by 7th Fleet's slow escort carriers and small destroyers. The Japanese Center Force of four battleships, six heavy cruisers, two light cruisers, and eleven destroyers caught the American ships by surprise. The American destroyers, "small boys," were ordered to attack. The destroyers' suicidal attacks on the Center Force convinced the Japanese that they were in fact being attacked by Halsey's 3rd fleet. The Japanese withdrew after losing four carriers, three battleships, eight cruisers, and twelve destroyers. The Battle of Leyte Gulf was the largest naval battle in history and basically resulted in the destruction of the Imperial Japanese Navy. For the remainder of the war, the Japanese could only rely on land forces and Kamikaze attacks. Their supply of oil and other important war materials from Southeast Asia had been cut.
Hitler's objective in invading the Soviet Union (Operation Barbarossa) was always Moscow. This capital city was considered to be extremely important militarily and politically. The original Axis plan was to capture Moscow within four months after the start of the invasion of the USSR. The Axis wished to take the capital before the onset of winter. Autumn rains and stiffened resistance slowed the Germans, but by December they were less than 19 miles from Moscow. The exhausted Red Army was saved by a terrible Russian winter, and fresh troops from Siberia, trained for winter warfare. Temperatures dropped as low as 50 below zero. German troops had no winter clothing, and the Panzers were not designed to operate in such low temperatures. On 5 December 1941 the Russians counterattacked and pushed the German army back.
For the first time, the Germans retreated on a large scale. Operation Barbarossa had failed. Hitler now faced a war of attrition, something he was bound to lose. The Germans sustained around 400,000 casualties. More importantly, Hitler took personal charge of the military and set most experienced German officers against him. Hitler's distrust of his senior officers reduced the German advantage of superior military leadership. The Soviets did launch offensive the following spring, but this did little more than set the stage for the Battle of Stalingrad, a battle which they would win.
The Battle of Kursk took place after the Battle of Stalingrad, and was the final offensive the Germans were able to launch in the east. The Germans envisioned breaking through the northern and southern flanks to encircle the Soviet forces. However, the Soviets knew Hitler's intentions and constructed a series of defensives. The Germans delayed the attack to wait for new Tiger and Panther tanks, giving the Red Army even more time to dig in and gather forces for a counterattack. To give some perspective, the defensive networks around Kursk were 10 times deeper than the Maginot Line. The main German attack began on 5 July. Due to the depth of the Russian defenses, the German blitzkrieg was stopped. This was the first time a blitzkrieg offensive had been defeated before it could break through enemy defenses and into its strategic depths. After the failed attack, the Red Army counterattacked. The Germans would be on the defensive for the rest of the war in the east.
The war in Europe would last for two more years, but the time the Battle of Kursk was over, the Americans and British were on the verge of invading Italy, the Red Army was on the offensive, and the Allies were producing more war materials than the Germans. At Kursk alone, the Germans lost 720 tanks, 680 aircraft, and sustained 170,000 casualties. The battle was the largest tank battle in history, and the Germans paid dearly. By the end of 1943, they were being pushed back across a broad front in the East, and faced the possibility of a second front in the west. After three years of war, the Allies finally had the strategic advantage.
After Pearl Harbor and the Battle of the Coral Sea, the Japanese hoped to eliminate the United States as a strategic power in the Pacific Theatre. They chose to occupy Midway Atoll to extend their defensive perimeter, and to lure the American aircraft carriers into a fight. Luckily for the Americans, they had broken the Japanese code and knew roughly where, when, and in what strength the Japanese would appear. The Japanese, on the other hand, had no real knowledge of the American's strength or location. They thought they would be up against two American carriers, since the USS Yorktown was severely damaged at the Battle of the Coral Sea. The Yorktown was repaired in only 72 hours, and was able to join the carriers Enterprise and Hornet for the battle. They faced four Japanese carriers, but had an airfield on Midway, so the field was basically even. It was only a matter of which side discovered the other first.
American B-17s from Midway found the Japanese, under the command of Admiral Nagumo, on June 3, but failed to hit any targets. On 4 June the initial attack was launched on Midway. Most American planes operating from Midway were destroyed, but Nagumo chose to attack Midway again. They had detected a single American carrier, and decided to arm the planes with anti-ship weapons, which would take 45 minutes. This wouldn't matter because the American aircraft that would deliver the crushing blow were already on their way. A low flying American torpedo plane squadron was completely destroyed by the Japanese air patrol, but this opened the door for the SBD Dauntless dive bombers. Four Japanese carriers were sunk, and most of the veteran pilots aboard were killed. By the time the Japanese replaced their three carriers, the US had commissioned two dozen. Midway paved the way for the landings at Guadalcanal, and gave the Allies the strategic initiative to be on the offensive for the rest of the war in the Pacific.
The Nazi invasion of the Soviet Union began on 22 June 1941 and ended with the Battle of Moscow (this specific battle was listed at number five due to its importance). The total operation involved 8.9 million combatants, over 18,000 tanks, 45,000 aircraft, and some 50,000 artillery pieces on both sides combined. Like Operation Overlord, Operation Barbarossa actually consisted of several decisive battles, but the numbers involved, and the fact that the Soviet Union was plunged into war, places it a number three on this list. When Germany invaded, the Red Army was caught completely off guard. A non-aggression pact was signed before the German and Soviet invasion of Poland. Both countries invaded and occupied Poland, but Hitler had always seen Russia as a source of agriculture, slave labor, oil, and other raw materials. Even before the Nazis concluded their conquest of the Balkans, they began to mass over 4.5 million Axis troops near the Soviet border. Three Army groups were formed; each assigned to capture specific regions and cities. Army Group North would attack through the Baltic States and take Leningrad. Army Group Center was tasked with taking Moscow, and Army Group South was to attack the agricultural heartland of the Ukraine and move eastward toward the oil-rich Caucasus. The Red Army, although numerically superior to the Germans, was dispersed, unprepared, and suffered from poor leadership.
The Germans swiftly advanced across the entire front. Key battles took place at Smolensk, Uman, and Kiev. Panzer armies were able to encircle and capture three million Soviet soldiers by the time they reached Moscow. By December, they had surrounded Leningrad in the north, reached the outskirts of Moscow in the center, and occupied the entire Ukraine in the south. They held 500,000 square miles of Soviet territory with over 75 million people. The Soviets held at Moscow, but not before 800,000 troops were killed, 3,000,000 wounded, and over 3,000,000 captured. 20,000 Soviet tanks and 21,000 aircraft were destroyed. The Germans casualties included 250,000 killed, 500,000 wounded, 2,000 aircraft destroyed, and 2,700 tanks lost. The Soviet Union would lose 14% of its population in the war: almost 24 million people.
The Battle of Stalingrad was the Midway of the Eastern Front. The battle was a disaster for Germany, and made victory in the East virtually impossible. After the Red Army had prevailed at Moscow, the Eastern Front had stabilized in line running from Leningrad to Rostov near the Black Sea. Hitler was confident he could defeat the Red Army when the weather was no longer an issue. The capture of Stalingrad was important because it was a vital transportation route between the Caspian Sea and northern Russia, and was the gateway to the oil-rich Caucasus region. Its capture would also be an ideological victory due to the fact that Stalingrad bore the name of Joseph Stalin. The battle began with the Luftwaffe reducing the city to rubble and rendering the River Volga, vitally important for bringing supplies into the city, unusable. By the end of August, the Germans had reached Stalingrad.
The Soviets tried to keep their front lines as close to the Germans as possible. This "hugging" tactic in an urban environment negated the German doctrine which relied on close cooperation between infantry, tanks, engineers, artillery, and aircraft. German infantry units were forced to fight on their own, or risk taking casualties from their own supporting fire. The Soviets were able to hold onto the city until winter. At certain points in the battle, the Germans held 90% of the city, but the Red Army counterattacked in November and were able to encircle 300,000 Axis troops. The Germans sustained 841,000 casualties, and would only launch one more offensive at Kursk, which would end up being another disastrous defeat.
If the United Kingdom was knocked out in the war, Hitler could have focused all of Germany's military might on the Soviet Union. The Americans and Soviets would have to fight the Axis alone, and the British Isles could not have been used as a staging point for Operation Overlord. For these reasons, The Battle of Britain is without a doubt the most important battle of the Second World War. The British Expeditionary Force was, for the most part, successfully evacuated at Dunkirk following the Battle of France. However, most of their equipment was left in France. At the beginning of the Battle of Britain the only fully equipped division in England was Canadian. If Germany achieved air supremacy over the skies of Britain, they could have launched Operation Sea Lion (the invasion of the British Isles). The Royal Navy would have been ineffective in stopping the invasion without air cover.
The initial Luftwaffe strategy was to destroy Royal Air Force bases. This worked quite well until the strategy changed to bombing towns and cities. This gave the RAF a chance to replace its lost aircraft. Radar was essential. Without it, the RAF would have to keep planes in the air at all times. They lacked the resources to do this. Radar allowed fighters to wait on the ground and coordinate attacks on the German bomber formations. By October of 1940, the Luftwaffe was running low on aircrews and aircraft. German air supremacy was not achieved, and Hitler postponed Sea Lion indefinitely. The end of the Battle allowed Britain to rebuild its military and establish itself as an Allied stronghold. Winston Churchill summed the battle with the words, "Never in the field of human conflict was so much owed by so many to so few."
The Battle of Khalkhin Gol was the decisive engagement of the Soviet-Japanese Border War. Japan occupied Manchuria in 1931 (some consider this the start of World War II). Military interest was then turned to Soviet territories that bordered this area. The first clash between Japanese and Soviet forces was in 1938. There were frequent engagements along the border of Manchuria, but the Japanese were decisively defeated at Khalkhin Gol in May of 1939. The engagement was relatively small compared to later battles of the war. Only 95,000 troops were involved, but the implications of the battle were huge. The Japanese saw the resources in the Soviet Union as unattainable. They instead seized resource-rich territories in Southeast Asia.
The Empire of Japan and the Soviet Union signed the Japanese-Soviet Nonaggression Pact in April of 1941, and both countries remained at peace until Stalin declared war on Japan in 1945 (after the atomic bombs were dropped). With Japan's eyes turned eastward, Stalin was free to transfer his Siberian divisions west, where they played a crucial role in defeating the Germans at the Battle of Moscow.


text:
Seychelles is a cluster of charming islands found in the warm waters of the Indian Ocean, off East Africa. While it's true that the archipelago serves as a tropical, luxury honeymoon hotspot, this island nation also proves that it's much more than that with its gorgeous landscapes, abundant nature, and rich culture. The waters here show off a sensational spectrum of blues, greens and everything in between. You'll often find yourself reluctant to get out of the water and leave the beach.
Although it isn't easy or cheap to make your way to Seychelles, the trip is certainly worth it, and you'll leave with no regrets. Below are some of the best and most popular things to do around its islands.
- 1
Victoria Market
Get a whiff of local life on the islands
- Budget
- Food
- History
- Shoppers
Seychelles' most famous market is in its capital, Victoria, known as the Sir Selwyn Selwyn Clarke Market, and more commonly as the Victoria Market. The market's liveliness marks it as the true heart of the capital and shows a harmonious blend of the old and new Seychellois way of life. Seychellois love to share their enthusiasm for local Creole food and culture – don't be afraid to ask questions as you dip in and out of stalls.
Souvenir stalls are also scattered throughout the market with sarongs, flavoured oils and art. The market is open Monday to Saturday from 4am to 5pm. Other markets worth mentioning are Victoria Bazaar every Friday on Market Street, and Bazar Labrin on Beau Vallon beach every Wednesday and on the last Saturday of the month.
photo by patano (CC BY-SA 3.0) modified
- 2
Vallée de Mai on Praslin
An ancient forest filled with Coco de Mer palms
- Adventure
- Budget
- Families
- History
Vallée de Mai is a stunning nature reserve and UNESCO World Heritage Site located on the island of Praslin. As home to the remnants of Seychelles' original palm jungles and with over 4,000 trees of the legendary Coco de Mer, this historic reserve has often been described as the 'Garden of Eden'. An afternoon in this magical forest sees you basking in the green glow of the palm trees, which are endemic to Seychelles.
With the largest and heaviest seeds in the world, the female tree produces a heart-shaped fruit similar to the shape of a woman's pelvic region – make sure to ask locals about the conspiracy around the trees. Look out for some unique birds such as the Seychellois bulbul and the rare black parrot.
Location: Vallée de Mai, Praslin, Seychelles, Seychelles
Open: Daily from 8.30 am to 4.30 pm
Phone: +248 4 236 220
Mapphoto by So Seychelles (CC BY 2.0) modified
- 3
One of the world's smallest capitals is on Mahé island
- Adventure
- Budget
- Families
- History
Victoria may not fulfil your typical fantasies of a tropical paradise, but the town does well as the vibrant, bustling hub of Seychelles, especially when you scratch beneath its surface. With about a third of the population residing in this town, this would be the place to observe local Seychellois life.
See the clock tower, a silver-painted copy of that on London's Vauxhall Bridge Road, which came to Mahé in 1903. Wander around rows of attractive and colourful Creole-style buildings, through markets and manicured gardens. For a little history, visit the excellent National Museum of History. Look out for the town's impressive backdrop of towering granite mountains as you stroll around.
Location: Victoria, Seychelles
Mapphoto by Marco Verch (CC BY 2.0) modified
- 4
La Digue Island
Home to the stunning Anse Source d'Argent beach
- Budget
- Families
- History
On La Digue island, you'll find L'Union Estate farm, which acts a sort of 'theme park' for Seychellois' history. In this part of Seychelles, coconut production is sustainable and managed, and visitors get to see an ox-powered oil extraction machine, the historic Old Plantation House, vanilla plantations, a colonial-era graveyard, a boatyard and a tortoise pen. Rent a bicycle and explore the farm and then head to the famous Anse Source d'Argent beach, which is just as stunning as people say.
Order a piña colada and find a spot on one of the three beaches, where ash-grey boulders line and dot the teal-colored waters making for breathtaking scenery.
Location: Allée Kersley, La Digue, Seychelles
Open: Daily 6 am to 6.30 pm
Phone: +248 4 234 240
Mapphoto by Bjørn Christian Tørrissen (CC BY-SA 4.0) modified
- 5
Island-hopping boat trip
Pop into Cousin Island, Curieuse Island and St Pierre
- Adventure
- Families
- History
You can't really go wrong with an island-hopping boat trip, so it's without saying that this a must-do if you have enough time (and the money). For those with limited time, multiple boat companies offer full days with lunch where you can visit islands such as Cousin Island, Curieuse Island and St Pierre.
For those with time on their hands, we recommend picking a few islands and spreading out a few days amongst them so that you can really explore and get a feel of each of them. For the main three to visit: Cousin Island is brimming with diverse wildlife, Curieuse Island follows close behind with magnificent mango forests and St Pierre is popular for its amazing snorkelling spots.
- 6
Mahé Island hiking trails
Choose between many gorgeous trails
- Budget
- Families
- History
As the largest island of Seychelles, Mahé Island holds some truly beautiful nature trails, which take you through idyllic scenes of vibrant wildlife and to stunning views across the island. Perhaps the easiest of the islands' trails is the Copolia Trail, which is found in the Morne Seychellois National Park and takes you 500m above sea level. Expect a 2-hour hike with some steep sections.
Morne Blanc Trail is another beautiful trail with views well worth its challenging nature; the trail takes roughly 45 minutes each way. To see some amazing rock formations, walk the Anse Major Trail, which is relatively easy and takes around an hour and a half. This trail is also the only way to get to Anse Major beach by foot.
Map - 7
Seychelles beaches
Drive or hike to and from countless gorgeous beaches
- Budget
- Families
- History
The beaches in Seychelles are arguably some of the best in the world and each island is splattered with stunning coasts and little alcoves. Among the islands' most attractive beaches are near resorts. There's Anse Georgette beach on Praslin island near the Constance Lemuria resort and Anse Lazio beach (on the same island) near Raffles resort. If you're looking to stay in one part of the island, this is your best bet.
Anse Georgette has gorgeous characteristic granite boulders with sumptuous stretches of white sand. Anse Lazio has more powerful waves and terrific sunsets. On La Digue, visit Anse Source d'Argent and Anse Cocos, on Mahé visit Anse Intendance, Beau Vallon, Anse Louis, Petite Anse. A visit to any of these beaches will make you fall in love immediately.
photo by So Seychelles (CC BY 2.0) modified
- 8
Giant tortoises
Found on either Curieuse Island or Cousin Island
- Families
- History
- Unusual
A trip to Seychelles without seeing the giant tortoises would be a sore mistake. These gentle giants are a delight to meet and can be found on either Curieuse Island or Cousin Island. The only other place these tortoises exist is in the Galapagos Islands.
From Praslin, you can take a quick boat ride to Curieuse Island and from their hike your way to a conservation and rehabilitation centre where you'll find tortoises with shells the size of bathtubs. You can see more tortoises on Cousin Island, as well as on the coral atoll called Aldabra. The atoll is more remote and requires booking in advance.
Map - 9
Watch baby Hawksbill sea turtles venture into the sea
It's where they lay eggs in broad daylight!
- Families
- History
- Unusual
Seeing this phenomenon is truly a sight to behold. Found on either Cousin, North Island or Bird Island, Hawksbill sea turtles lay their eggs every year out on these sunlit beaches. Nesting season is from September onwards, hatchling season is from January to March and monitoring volunteering is held between November to March.
Each female turtle lays up to 1000 eggs a season and returns to the beaches as many as five times. There's also a good chance of seeing them – and their tiny offspring – on beaches around La Digue as well as Praslin. Hotels with nesting beaches include Banyan Tree and Constance Lemuris.
- 10
Creole takeaway
Order fresh grilled fish and curries from street food stalls
- Food
- History
The abundance of Creole takeaway stands on any of the Seychellois islands never fails to disappoint and is one of the best ways to try the local cuisine. The most famous and common dishes is a box stuffed with rice, seafood (which is guaranteed fresh), and green papaya. Due to the islands' colonial history, a large part of the country's population is of Indian descent, meaning the local cuisine is a delightful mixture of diverse cultures.
The Indian seafood throughout the island is delicious – look out for the octopus chapati which is worth searching for. The rule of thumb here is to stick to seafood rather than meat, as it's almost always guaranteed to be fresh.


text:
To help you get the longest possible life from your electric shaver, we make a point of carrying every available spare part for all of the shavers we sell. If you service and repair your electric shaver with our original manufacturer, branded replacement parts, including shaver foils, rotary heads, spares and accessories you can continue to get years of use from your trusty friend.
We're also proud to be the UK authorised service agent for Philips and Braun grooming products, so if you can't see find what you need, we have the knowledge, just contact us and we'll point you in the right direction.
Out Of Stock
Out Of Stock
Replacing your shaver's cutting heads?
Fitting a new foil to your foil based shaver
Replacing the cutting parts on a foil electric shaver is a piece of cake, especially when it comes to newer models where the foil and cutter are combined into a single cutting head cassette. Simply locate the release button on each side of the shaver head and press firmly to release and separate the cartridge from the shaver. Some older models supply their foil and cutter as two independent parts which need to be changed in two steps. First remove the foil, either by pressing the release button (if your shaver has one), or simply by pulling the foil away from the body of the shaver. Removing the foil exposes the blades so take care not to touch them as they will still be sharp enough to cut your fingers. Hold the cutter block at its sides, rotate it 90 degrees counter-clockwise, so it is vertical to the shaver and then just pull it off. To fit the new cutting parts, carry out the same procedure in reverse.
It's good practice to replace both the foil and cutter at the same time for the optimum performance of your shaver. Having said that, if only the foil is damaged and the cutters are still sharp, you can get away with just replacing the foil. It's a good idea to check the foil for dents and tears before each shave as exposed blades can cause painful nicks!
Fitting new rotary heads to your rotary based shaver
You replace the blades on rotary shavers in one of two ways, depending on your shaver model. For some you simply disconnect and replace the whole shaver head - easy peasy! The other method, which involves replacing the individual cutters is a bit more tricky, especially on the first time around but once you get the knack it only takes a minute. Press the release key on the front edge of the shaver head and it will flip up and open allowing you to pull the head off the shaver body completely. Once disconnected you are ready to remove the cutters. Depending on the make and model you will either have a combined locking mechanism that locks all of the cutters into the head together or each cutter will be individually locked into place. Either way, twist the locking mechanism anti-clockwise to release and remove and put to one side. The individual cutters are then free to be removed one by one and the new ones slotted into place. Each cutter has 2 dog ears on it with a groove in between them. These have corresponding shapes in the head to fit into, (the groove faces into the centre of the head) so ensure they fit snugly in the right way and lock them back into place. Reconnect the head back onto the shaver body and you're good to go!