The proportion of female students studying economics A-level in the UK remains stubbornly low. But it was the marked decline in numbers taking the exam during the 1990s that triggered Ashworth and Evans' research.
The pair surveyed 1,000 A-level students in 1996/7 across 35 schools, including all year 13 students studying economics and 767 students who were not.
Of those students studying economics A-level, females rated their interest in the subject at 3.72 on a scale of 1-5 whereas males rated it 3.56. Likewise, for those students studying economics but choosing not to take it at university, 55 per cent of females said that although they found it interesting, they performed better in their other subjects. This compared with 54 per cent of males.
Again, there was no significant difference, indicating that once taken, female students were no less likely to dislike the subject or perceive themselves to perform at a lower level compared with their other subjects.
The main difference came when analysing responses from students who had chosen not to study the subject at A-level. When asked why, the percentage of males who said that they knew nothing about the subject was 17 per cent compared with 31 per cent of female students: a significant difference.
The authors suggest that with more information, all students – and particularly females – may be more likely to take it. In addition to better information and a need for greater economics awareness in lower years at school, they also discuss introducing GCSE economics, re-examining the curriculum to consider how it might appeal more to females, and the importance of other females already studying economics in the school as potential levers for change.
As an economics teacher since 2004, I found this research interesting, first because of the trend data. I have seen increasing interest in the subject from both genders, particularly since things got interesting in the world economy in 2008.
Analysis by Geoff Riley of Tutor2U, who annually tracks the number of students studying economics from Joint Council for Qualifications (JCQ) data, reveals that there has been a significant change from the data reported in this 1999 paper, with an 87 per cent increase in the number studying the subject at AS and A2 since
2002, with 70,424 students sitting AS and A2-levels in 2014.
I took a closer look at the QCA data to identify any trends in gender uptake and although the numbers of male and female students have increased over this period, 58 per cent and 53 per cent respectively, the proportion of females remained consistently at 32 or 33 per cent each year, unchanged since Ashworth and Evans' research. This suggests that, despite the subject's increasing popularity, the question as to why more females don't take it remains.
Like many other economics teachers I'm sure, I find that year 9 or 11 students consistently display misconceptions as to what the subject entails, be they male or female. Most consider it to be about money; few have an inkling that it centres on the allocation of scarce resources. I have wondered whether confidence may be at play here, that female students are more likely to admit their lack of knowledge.
GCSEs in economics or related subjects might reduce this knowledge gap. Likewise, PSHE or economics awareness programmes could do better at supporting knowledge of economics, rather than the typical diet of personal finance and budgeting. The suggestion of "feminising" the curriculum sits less well with me. I would be concerned that altering it on the chance that it might appeal to some female students would reduce the subject's credibility for uncertain gains.
Overall, then, the economics A-level landscape has changed somewhat since Ashworth and Evans' writing in 1999. However, although they are successful once they take up the subject, females still only make up a third of all students. Ashworth and Evans offer some sensible suggestions as to what work could be done to increase this proportion.


text: The FUSE, successfully launched in June 1999, is an astrophysics satellite designed to provide high spectral resolving power over the interval 90.5-118.7 nm. The FUSE optical path consists of four co-aligned, normal incidence, off-axis parabolic mirrors which illuminate separate Rowland circle spectrograph channels equipped with holographic gratings and delay line microchannel plate detectors. We describe the hardware and methods used for the optical 'end- to-end' test of the FUSE instrument during satellite integration and test. Cost and schedule constraints forced us to devise a simplified version of the planned optical test which occurred in parallel with satellite thermal- vacuum testing. The optical test employed a collimator assembly which consisted of four co-aligned, 381 mm diameter Cassegrain telescopes positioned above the FUSE instrument, providing a collimated beam for each optical channel. A windowed UV light source, remotely adjustable in three axes, was mounted at the focal plane of each collimator. Problems with the UV light sources, including high f-number and window failures, were the only major difficulties encountered during the test. The test succeeded in uncovering a significant problem with the secondary structure used for the instrument cavity and, furthermore, showed that the mechanical solution was successful, the hardware was also used extensively for simulations of science observations, providing both UV light for spectra and visible light for the fine error sensor camera.

source: m-a-p/FineFineWeb


A super-hero published by DC Comics. He first appeared in Crack Comics #1 in August 1940.
The origin of the Black Condor begins in Mongolia in the early part of the 20th century. A young archaelogist named Richard Grey, his wife, and new-born son are part of an expedition that is attacked by bandits. The bandits killed all of the members of the group except the infant. He is left to die, but is rescued from certain death by a group of highly intelligent condors. Not only is it amazing that the condors took the human child in and raised it as their own, but it is equally amazing that they were in Asia at all, as condors are native to the mountain ranges of North and South America.
Despite their obvious misplacement in central Asia, the condors raise young Grey as their own. The child possessed the ability of flight in another unexplained turn of events, so he grew as a member of the flock like any other. Only his odd appearance ever gave the young man any idea that he was not a condor, until the day that he met Father Pierre, a friendly hermit.
Father Pierre taught the young Grey to speak English, despite being French, taught him to act like a human, and told him of his tragic past. When Pierre was killed by the same group of bandits that had slain Grey's parents 20 years earlier, Grey was overcome by the implausibility of his own origin and wreaked havoc upon the villains, taking solace in his revenge.
Grey then traveled to the United States as Richard Grey, Jr., but soon became embroilled in trying to foil a plot to kill U.S. Senator Thomas Wright. Along the way, Grey adopted Wright's identity and defeated those who sought to kill Wright. Again, in another odd turn of events, Grey kept Wright's identity and continued to serve in the U.S. Congress, showing that the people in Wright's district really don't keep up with national politics. While serving as a Senator, Grey/Wright also adventured as the Black Condor.
The Black Condor became a member of both the All-Star Squadron and the Freedom Fighters.


In Part 1 of this two-part series, I covered the 'Microsoft Troubleshooting Packs' and ACL permission checks using PowerShell scripting. This article will focus on two more scripts, one to check if a host is alive and, if it is not, send a notification email, and another to check disk space, delete data from a given folder if a certain threshold is met and then notify a user by email.
Ping and Notify
Of primary importance to any network admin is server availability. Being able to regularly monitor if a group of hosts are alive and then give you a 'heads up' when they aren't is a useful tool to have. The idea behind this script is to use the ping command to verify the availability of a destination host(s) at specified intervals and take action based on the response that is received; if the response is positive then do nothing, if the response is negative, send a notification email.
To construct this script, we need the following main elements:
1) The SMTP details for sending the email
2) An Array to store the hosts to ping
3) The Get-WmiObject cmdlet that uses the Win32_PingStatus class
4) A ForEach loop to perform an operation on each element in the Array
5) An If statement to perform a conditional action based on the result.
The first part of the script sets the email properties and stores each of them in a variable; $smtpServer holds the SMTP Server Name/IP Address, $smtpFrom stores the FROM address and $smtpTo stores the TO address.
An Array called $PingHosts is used to store the destination hosts to ping. The ForEach-Object cmdlet is used to execute the Get-WmiObject Win32_PingStatus command stored in $WmiPingStatus against the hosts stored in $PingHosts to the left of the pipe. The Select-Object cmdlet is used to obtain the Address and StatusCode property of each ping result.
A ForEach loop and If statement is then used to circle through each ping result and check if the status code is equal to 0. If it is equal to 0, no action is taken. If it is not equal to 0 then the email subject and body are set using the details of the non-responsive host and a message is sent using the Net.Mail.SmtpClient class. The image below shows a sample of the notification email that will be sent out to the address stored in $smtpTo.
Script:
# Set e-mail properties
$smtpServer = "192.168.0.5″;
$smtpFrom = "_EMAIL_";
$smtpTo = "_EMAIL_";
# Create an Array to store the destination hosts to ping
[Array] $PingHosts = "192.168.0.105″, "mailsrv01″, "_URL_"
# Run Get-WmiObject using the Win32_PingStatus class against every host in the Array
$WmiPingStatus = {Get-WmiObject -Class Win32_PingStatus -Filter ("Address='" + $_ + "'") -ComputerName .}
$PingHosts | ForEach-Object -Process $WmiPingStatus | Select-Object -Property Address,StatusCode |
foreach {
# If StatusCode is equal to 0 then do nothing (since 0 = success)
If ($_.StatusCode -eq 0)
 {
# Write-Host "Do nothing for:" $_.Address
}
# Else, if StatusCode is NOT equal to 0 then do something
Else
{
# Set e-mail subject and body using details of non-responsive host
 $subject = "Attention: " + $_.Address + " is down!";
$body = $_.Address + " is not responding to a ping request. Please take action.'n"
 # Set e-mail objects and send e-mail
 $smtpClient = New-Object Net.Mail.SmtpClient($smtpServer);
$emailFrom = New-Object Net.Mail.MailAddress $smtpFrom, $smtpFrom;
$emailTo = New-Object Net.Mail.MailAddress $smtpTo, $smtpTo;
$mailMsg = New-Object Net.Mail.MailMessage($emailFrom, $emailTo, $subject, $body);
$smtpClient.Send($mailMsg)
 }
}
Disk Space Checker
Hand in hand with my previous script to check whether a host is alive or not, it is important to keep an eye on disk space as low storage could result in performance issues or, at its worst, the system grinding to a halt. The idea behind this script is to use a WMI object to check, at specified intervals, if storage space for each drive on a given machine is less than xGB (5GB in this example) and take action based on this condition; if free space is less than the threshold then perform an action (e.g. delete all files in a given folder – an application log folder for example) and send a notification email, if free space is greater than the threshold then do nothing.
To construct this script, we need the following main elements:
1) The SMTP details for sending the email
2) An Array to store machines to check
3) The Get-WmiObject cmdlet that uses the Win32_LogicalDisk class
4) A ForEach loop to perform an operation on each element in the Array
5) An If statement to perform a conditional action based on the result.
The first part of the script sets the email properties and stores them in a variable; $smtpServer holds the SMTP Server Name/IP Address, $smtpFrom stores the FROM address and $smtpTo stores the TO address.
An Array called $machines is used to store the machines we want to check disk space on. The Win32_LogicalDisk class in the Get-WmiObject cmdlet is used to obtain the drive information for each machine in the $machines variable. The '-Authentication PacketPrivacy' property is used to specify the authentication method, which encrypts all the data that is transferred between the client and the script that is authenticating. The '-Impersonation Impersonate' property is used to specify the impersonation level to use, which allows the objects to use the credentials of the caller. The Where-Object cmdlet is used to retrieve local disk drives only (i.e. DriveType -eq 3), and Select-Object specifies to pull back the SystemName, VolumeName, FreeSpace, and Size information related to each drive.
A ForEach loop and If statement is used to circle through the FreeSpace information of each drive and check if it is greater than 5GB. If it is greater than 5GB then no action is taken. If it is less than 5GB then the Remove-Item cmdlet handles deleting all data in the folder specified within the $cleanDir variable and the email subject and body are set using the details of each machine and drive being checked. Finally, an email message is sent using the Net.Mail.SmtpClient class. The image below shows a sample of the notification email that will be sent out to the address stored in $smtpTo.
Note: The Remove-Item cmdlet can be removed from the script altogether, if you wish for no action to be taken and only an email notification sent out. Alternatively, edit the folder location to be a directory from where you wish files to be removed (e.g. a log files folder).

Script:
# Set e-mail properties
$smtpServer = "192.168.0.5″;
$smtpFrom = "_EMAIL_";
$smtpTo = "_EMAIL_";
# Create an Array to store the destination hosts to ping
[Array] $machines = "192.168.0.5″, "localhost"
# Execute the Get-WmiObject win32_logicaldisk class against the array of machines
Get-WmiObject Win32_LogicalDisk -computername $machines -Authentication PacketPrivacy -Impersonation Impersonate | Where-Object { $_.DriveType -eq 3 } | Select-Object SystemName,VolumeName,FreeSpace,Size | foreach {
# If FreeSpace is greater than 5GB then do nothing
If ($_.FreeSpace -gt 5GB)
 {
 #do nothing
 }
# Else, if FreeSpace is less than 5GB then do something
Else
 {
 # Delete all items from the C:\Temp folder
 $cleanDir = "C:\Temp\*"
 Remove-Item $cleanDir -Recurse -ea SilentlyContinue
 # Set e-mail subject and body using disk volume and machine name info
 $subject = "Attention: Disk space is running low on " + $_.SystemName + "";
 $body = $_.VolumeName + " drive has less than 5GB. Files from the " + $cleanDir + " folder have been deleted.'n"
 # Send e-mail
 $smtpClient = New-Object Net.Mail.SmtpClient($smtpServer);
 $emailFrom = New-


text:
Up to date
This page is up to date for Godot
If you still find outdated information, please open an issue.
High-level vs low-level API¶
The following explains the differences of high- and low-level networking in Godot as well as some fundamentals. If you want to jump in head-first and add networking to your first nodes, skip to Initializing the network below. But make sure to read the rest later on!
Godot always supported standard low-level networking via UDP, TCP and some higher-level protocols such as HTTP and SSL. These protocols are flexible and can be used for almost anything. However, using them to synchronize game state manually can be a large amount of work. Sometimes that work can't be avoided or is worth it, for example when working with a custom server implementation on the backend. But in most cases, it's worthwhile to consider Godot's high-level networking API, which sacrifices some of the fine-grained control of low-level networking for greater ease of use.
This is due to the inherent limitations of the low-level protocols:
TCP ensures packets will always arrive reliably and in order, but latency is generally higher due to error correction. It's also quite a complex protocol because it understands what a "connection" is, and optimizes for goals that often don't suit applications like multiplayer games. Packets are buffered to be sent in larger batches, trading less per-packet overhead for higher latency. This can be useful for things like HTTP, but generally not for games. Some of this can be configured and disabled (e.g. by disabling "Nagle's algorithm" for the TCP connection).
UDP is a simpler protocol, which only sends packets (and has no concept of a "connection"). No error correction makes it pretty quick (low latency), but packets may be lost along the way or received in the wrong order. Added to that, the MTU (maximum packet size) for UDP is generally low (only a few hundred bytes), so transmitting larger packets means splitting them, reorganizing them and retrying if a part fails.
In general, TCP can be thought of as reliable, ordered, and slow; UDP as unreliable, unordered and fast. Because of the large difference in performance, it often makes sense to re-build the parts of TCP wanted for games (optional reliability and packet order), while avoiding the unwanted parts (congestion/traffic control features, Nagle's algorithm, etc). Due to this, most game engines come with such an implementation, and Godot is no exception.
In summary, you can use the low-level networking API for maximum control and implement everything on top of bare network protocols or use the high-level API based on SceneTree that does most of the heavy lifting behind the scenes in a generally optimized way.
Most of Godot's supported platforms offer all or most of the mentioned high- and low-level networking features. As networking is always largely hardware and operating system dependent, however, some features may change or not be available on some target platforms. Most notably, the HTML5 platform currently offers WebSockets and WebRTC support but lacks some of the higher-level features, as well as raw access to low-level protocols like TCP and UDP.
More about TCP/IP, UDP, and networking: _URL_
If you want to use your low-level networking library of choice instead of Godot's built-in networking, see here for an example: _URL_
Adding networking to your game comes with some responsibility. It can make your application vulnerable if done wrong and may lead to cheats or exploits. It may even allow an attacker to compromise the machines your application runs on and use your servers to send spam, attack others or steal your users' data if they play your game.
This is always the case when networking is involved and has nothing to do with Godot. You can of course experiment, but when you release a networked application, always take care of any possible security concerns.
Before going into how we would like to synchronize a game across the network, it can be hel


text:
1. Place potatoes and carrot in a pot, cover with water and bring to a boil. Reduce heat, cover and cook for about 15 minutes, or until fork-tender. Drain and return the pot with potatoes and carrots to the stove top with the burner turned on. Shake the pot for a minute to dry the vegetables out a bit. Cool to a room temperature.
2. To get perfect hard-boiled eggs, place them in a saucepan and cover with cold water. Make sure the tops of the eggs are covered by at least an inch of water. Bring the water to a full boil, cover and remove from the heat. Let stand for 15 minutes. Then place the eggs in a bowl of cold water.
3. Place sliced onion and cucumber in a bowl, add salt and toss. Let stand for about 12 minutes, then firmly squeeze the cucumbers and onions (you can use paper towel) to let some of the juice out.
4. In a small bowl, combine mayonnaise, lemon juice and sugar. Season with pepper.
5. Chop potatoes an carrot into bite size pieces. Chop the eggs.
6. In a large bowl, combine potatoes, carrots and mayo.
7. Add cucumber, onion and eggs, stir to combine. Adjust salt and pepper to taste.
8. Store in refrigerator until serving.


Enter your word and click here to search
Spell check of tribunal
Spellweb is your one-stop resource for definitions, synonyms and correct spelling for English words, such as tribunal. On this page you can see how to spell tribunal. Also, for some words, you can find their definitions, list of synonyms, as well as list of common misspellings.
Correct spelling:
Court of justice.
court (noun)
bar, court-martial, judicature, bench, appellate court, court of law, circuit court, supreme court, board, court, session.
council (noun)
parliament, committee, coalition, forum, inquisition, caucus, convention, assembly, meeting, congress, summit, conference, faction, league, council, legislature, cadre, court, chamber, cabinet, board, panel, congregation, symposium, quorum, body.
Other synonyms:
court, judicature.
Examples of usage:
 1. Then, to extreme disappointment, the august tribunal, acting on behalf of the sovereign people in the interest of peace, declared itself powerless, and got out, and would, doubt, have gone about its business if it had had any. Fulkerson's no - "A Hazard of New Fortunes, Part Fifth", William Dean Howells.
 2. For the County Court in country districts has become a tribunal whose decisions enter, as it were, into the very life of the people. - "Hodge and His Masters", Richard Jefferies.
 3. one knew the precise circumstances, because, like so many similar family disputes, when the lawyers were ready, and the case had come before the tribunal, a compromise was arrived at, the terms of which were only known to the tribunal and the parties directly concerned. No - "Hodge and His Masters", Richard Jefferies.
Common misspellings:
 1. tribuneral (48%)
 2. trubunal (17%)
 3. tribuanl (13%)
 4. tribunial (9%)
 5. tribunual (9%)
 6. tribual (4%)
Discover what are words like tribunal. Discover what is a synonym for tribunal. Discover what is another word for tribunal. Discover what is an alternative word for tribunal. Discover what are more words for tribunal.


Cold war essay
Prompt 2: Heavy Metal & Cold War Cultural Politics
During the Cold War (_PHONE_) the United States and the Soviet Union competed in every
imaginable arena from armed conflicts to space exploration as well as in the sphere of cultural
and ideology. Wind of Change is a podcast explores the role of the arts, especially music,
during the last moments of Cold War. Wind of Change takes its title from a power ballad by the
German metal band, The Scorpions. The song was a massive hit and many refer to it as the
soundtrack to the peaceful revolutions unfolding across Eastern Europe.
The podcast explores a rumor that the American Central Intelligence Agency (CIA) wrote the
song Wind of Change as part of an influence campaign to help topple the Soviet Union. The
podcast explores the role of the CIA in the cultural front of the Cold War as well as the power of
music as force for social change on the grassroots level.
Keeping in mind our discussion of the Cold War and media as well as our larger discussion of
the arts and politics, your job in your essay will be to analyze how this podcast defines the role
of the arts in their political contexts. As you listen, take note of how the podcast host changes
his mind as he learns more about the story he's trying to clarify.
Listen to all 8 episodes and as you listen consider the following questions:
1) What role did culture play in the Cold War? What about music in particular?
2) What did rock music represent for people living in the Soviet Union? How do they
view the Scorpions and the song Wind of Change?
3) In episode 7, there is an exchange between the host and source of his in Russia
where he explains the rumor he heard. Pay attention to her response and how it may
apply to our current political climate and relationship with Russia.
4) Is there music that spoke to you in a profound way during a challenging or important
part of your life? How does it compare to the way Wind of Change spoke to young
people in the Soviet Union?
As you listen take notes. Jot down specific aspects of the episodes that interest you or stand
out. These will help guide your essay. Don't be afraid to pause and rewind to make sure you
wrote down how a specific moment struck you.
Your essay should deal with the questions: what is the role of popular music in global politics?
Does this podcast make your reconsider your relationship to pop music? Does it matter who
was responsible for the song Wind of Change? Why or why not? Use the questions above to
guide your essay, you do not need to address all of them, but you must engage with at least one
of them in the body of your essay. I want to hear what YOU thought of the podcast, so please
just make use of our class materials about the Cold War to help support your analysis and
interpretation of the podcast.
Don't use plagiarized sources. Get Your Custom Essay on
Cold war essay
Order Essay
Homework Sharks
Order NOW For A 10% Discount!
Pages (550 words)
Approximate price: -
Our Advantages
Plagiarism Free Papers
Free Revisions
Originality & Security
24/7 Customer Support
Try it now!
Calculate the price of your order
We'll send you the first draft for approval by at
Total price:
How it works?
Follow these simple steps to get your paper done
Place your order
Proceed with the payment
Choose the payment system that suits you most.
Receive the final file
Our Services
We work around the clock to see best customer experience.
Flexible Pricing
Admission help & Client-Writer Contact
Paper Submission
Customer Feedback


text:
Cathedral of Mary Magdalen Equal to the Apostles (Warsaw)
This was the first orthodox church in Warsaw constructed as a standalone building (before its construction, there were only private chapels). It was built under the direction of Prince Cherkasov, the Tsarist official responsible for internal affairs in the Polish land incorporated into Russia in eighteenth century and for the development of Orthodoxy in this region. The place where the church was built was carefully chosen: it was on the other side of the road from the railway station that connected Warsaw to the central Russian lands. The Orthodox church was to serve the incoming and departing passengers.
Construction started in June 1867. The main architect of the church was a Russian engineer named Palitsyn, while two artists named Vinogradov and Vasiliev made the frescoes inside as well as the magnificent, golden iconostasis. There were plans to install gas lamps inside the church, but the authorities decided to stay with traditional lighting with candles. The tsar's wife, Maria Aleksandrovna, also contributed to the construction by funding some icons for the church. The cathedral was complete after construction period of two years.
After Poland regained its independence in 1918, the new government started a large-scaled program against Orthodoxy in Poland, in which the government planned to make the country fully Roman Catholic. Most of Orthodox chapels and churches in Poland were destroyed. Out of almost twenty churches in Warsaw only two were spared, one being the Mary Magdalen cathedral. Thus, the Mary Magdalen cathedral in Warsaw became the most splendid Orthodox church in Poland. In 1921, it was made the Metropolitan's Cathedral.
The Cathedral of Mary Magdalen is located in the Praga Północ district of Warsaw.
- K. Sokoł, A. Sosna, Kopuły nad Wisłą. Prawosławne cerkwie w centralnej Polsce w latach _PHONE_, Moskwa, MID "Synergia" 2003, ISBN 5-7368-0301-2

source: HuggingFaceFW/fineweb-edu


current implementation it is not currently possible to hop from one thread to another.
The e and E commands are currently fairly minimal - see h e and h E.
Note that threading support was built into the debugger as of Perl version 5.8.6 and debugger version 1.2.8.
OPTION PROCESSING
The debugger's options are actually spread out over the debugger itself and dumpvar.pl; some of these are variables to be set, while others are subs to be called with a value. To try to make this a little easier to manage, the debugger uses a few data structures to define what options are legal and how they are to be processed.
First, the @options array defines the names of all the options that are to be accepted.
Second, optionVars lists the variables that each option uses to save its state.
Third, %optionAction defines the subroutine to be called to process each option.
Last, the %optionRequire notes modules that must be required if an option is used.
There are a number of initialization-related variables which can be set by putting code to set them in a BEGIN block in the PERL5DB environment variable. These are:
$rl - readline control XXX needs more explanation
$warnLevel - whether or not debugger takes over warning handling
$dieLevel - whether or not debugger takes over die handling
$signalLevel - whether or not debugger takes over signal handling
$pre - preprompt actions (array reference)
$post - postprompt actions (array reference)
$pretype
$CreateTTY - whether or not to create a new TTY for this debugger
$CommandSet - which command set to use (defaults to new, documented set)
The default die, warn, and signal handlers are set up.
The pager to be used is needed next. We try to get it from the environment first. If it's not defined there, we try to find it in the Perl Config.pm. If it's not there, we default to more. We then call the pager() function to save the pager name.
We set up the command to be used to access the man pages, the command recall character (! unless otherwise defined) and the shell escape character (! unless otherwise defined). Yes, these do conflict, and neither works in the debugger at the moment.
We then set up the gigantic string containing the debugger help. We also set the limit on the number of arguments we'll display during a trace.
SETTING UP THE DEBUGGER GREETING
The debugger greeting helps to inform the user how many debuggers are running, and whether the current debugger is the primary or a child.
If we are the primary, we just hang onto our pid so we'll have it when or if we start a child debugger. If we are a child, we'll set things up so we'll have a unique greeting and so the parent will give us our own TTY later.
We save the current contents of the PERLDB_PIDS environment variable because we mess around with it. We'll also need to hang onto it because we'll need it if we restart.
Child debuggers make a label out of the current PID structure recorded in PERLDB_PIDS plus the new PID. They also mark themselves as not having a TTY yet so the parent will give them one later via resetterm().
READING THE RC FILE
The debugger will read a file of initialization options if supplied. If running interactively, this is .perldb; if not, it's perldb.ini.
The debugger does a safety test of the file to be read. It must be owned either by the current user or root, and must only be writable by the owner.
The last thing we do during initialization is determine which subroutine is to be used to obtain a new terminal when a new debugger is started. Right now, the debugger only handles TCP sockets, X11, OS/2, amd Mac OS X (darwin).
RESTART PROCESSING
This section handles the restart command. When the R command is invoked, it tries to capture all of the state it can into environment variables, and then sets PERLDB_RESTART. When we start executing again, we check to see if PERLDB_RESTART is there; if so, we reload all the information that the R command stuffed into the environment variables.
PERLDB_RESTART - flag only, contains no restart data itself.
PERLDB_HIST - command history, if it's available
PERLDB_ON_LOAD - breakpoints set by the rc file
PERLDB_POSTPONE - subs that have been loaded/not executed,
 and have actions
PERLDB_VISITED - files that had breakpoints
PERLDB_FILE_... - breakpoints for a file
PERLDB_OPT - active options
PERLDB_INC - the original @INC
PERLDB_PRETYPE - preprompt debugger actions
PERLDB_PRE - preprompt Perl code
PERLDB_POST - post-prompt Perl code
PERLDB_TYPEAHEAD - typeahead captured by readline()
We chug through all these variables and plug the values saved in them back into the appropriate spots in the debugger.
SETTING UP THE TERMINAL
Now, we'll decide how the debugger is going to interact with the user. If there's no TTY, we set the debugger to run non-stop; there's not going to be anyone there to enter commands.
If there is a TTY, we have to determine who it belongs to before we can proceed. If this is a slave editor or graphical debugger (denoted by the first command-line switch being '-emacs'), we shift this off and set $rl to 0 (XXX ostensibly to do straight reads).
We then determine what the console should be on various systems:
Several other systems don't use a specific console. We undef $console for those (Windows using a slave editor/graphical debugger, NetWare, OS/2 with a slave editor).
If there is a TTY hanging around from a parent, we use that as the console.
SOCKET HANDLING
The debugger is capable of opening a socket and carrying out a debugging session over the socket.
If RemotePort was defined in the options, the debugger assumes that it should try to start a debugging session on that port. It builds the socket and then tries to connect the input and output filehandles to it.
If no RemotePort was defined, and we want to create a TTY on startup, this is probably a situation where multiple debuggers are running (for example, a backticked command that starts up another debugger). We create a new IN and OUT filehandle, and do the necessary mojo to create a new TTY if we know how and if we can.
To finish initialization, we show the debugger greeting, and then call the afterinit() subroutine if there is one.
SUBROUTINES
DB
This gigantic subroutine is the heart of the debugger. Called before every statement, its job is to determine if a breakpoint has been reached, and stop if so; read commands from the user, parse them, and execute them, and then send execution off to the next statement.
Note that the order in which the commands are processed is very important; some commands earlier in the loop will actually alter the $cmd variable to create other commands to be executed later. This is all highly optimized but can be confusing. Check the comments for each $cmd ... && do {} to see what's happening in any given command.
watchfunction()
watchfunction() is a function that can be defined by the user; it is a function which will be run on each entry to DB::DB; it gets the current package, filename, and line as its parameters.
The watchfunction can do anything it likes; it is executing in the debugger's context, so it has access to all of the debugger's internal data structures and functions.
watchfunction() can control the debugger's actions. Any of the following will cause the debugger to return control to the user's program after watchfunction() executes:
GETTING READY TO EXECUTE COMMANDS
The debugger decides to take control if single-step mode is on, the t command was entered, or the user generated a signal. If the program has fallen off the end, we set things up so that entering further commands won't cause trouble, and we say that the program is over.
If there's an action to be executed for the line we stopped at, execute it. If there are any preprompt actions, execute those as well.
WHERE ARE WE?
XXX Relocate this section?
The debugger normally shows the line corresponding to the current line of execution. Sometimes, though, we want to see the next line, or to move elsewhere in the file. This is done via the $incr, $start, and $max variables.
$incr controls by how many lines the current line should move forward after a command is executed. If set to -1


text:
|Posted by Paul Eagles on March 1, 2016 at 6:00 PM||comments (0)|
St. George Lance, Thursday June 26, 1997
BRANCHTON — A special ceremony was recently held to dedicate a remnant of Carolinian forest to conservation.
Thanks to the foresight of the local community, a nine-acre (three-hectare) site in Branchton now known as Branchton Village Woods, has been preserved. The property was purchased in January by the Branchton Village Land Trust, composed of members of the local community.
The Branchton Village Land Trust is a private charity dedicated to preserving the landscape, ecology and native wildlife in the Branchton area. "Our group realized the importance of protecting and preserving this small remnant of Carolinian forest because of the many varieties and rarity of some species of vegetation and wildlife found within," says James Voll, President of the Trust. "This none-acre forested woodlot is situated in the centre of the village and greatly enhances the beauty of the village. It is our hope that the forest continues to flourish over time and that all residents, young and old, continue to enjoy and learn from it."
The Branchton Village Woods is adjacent to a provincially significant Class 1 wetland and is part of the Branchton Swamp Forest complex, a regionally significant environmentally sensitive area. The woods is an excellent example of an oak-hickory forest with the largest documented stand of Sassafras and the largest individual Sassafras tree in the region of Waterloo. The forest provides habitat for a wide variety of breeding birds including the Scarlet Tanager, Wood Thrust, Red¬headed Woodpecker and the Yellow-throated Vireo.
The property was purchased by the land trust thanks to the generous financial contributions made by Jack and Mary-Lou Hessler, the Ontario Heritage Foundation (OHF), Canada Trust's Friends of the Environment Foundation, the Nature Conservancy of Canada and the residents of the village of Branchton.
Joanna Bedard, Chair of the OHF says, 'This community successfully took on a very ambitious project. We applaud all of the individuals and groups who stepped forward to protect this significant woodland.
Future generations will continue to benefit from the beauty of the property and foresight of these local stewards."
"Protecting the environment begins in our own backyards and the Friends of the Environment Foundation is delighted to assist in the preservation of this significant piece of Carolinian forest history," says Paul Morris, Cambridge Chapter Secretary for the Friends of the Environment Foundation.
Through the Nature Conservancy of Canada's Community Forest Conservancy Program, funded by the Richard Ivey Foundation, the Conservancy assisted the land trust in the negotiations to purchase the property and provided legal and other advice. An interest-free loan was provided to the Branchton Land Trust by the Conservancy which enabled the land trust to close the deal.
'The Branchton Village Land Trust and the other contributors should be praised for securing this remnant Carolinian forest for the people of Branchton and Ontario," says Elva Kyle, Chair of the Nature Conservancy of Canada. "The protection of this property is significant since one-third of all of Canada's rare, threatened or endangered species are found in the Carolinian zone. The dedication celebrates the protection of this area which present and future generations will be able to enjoy as a place to learn, to teach and to wonder."
Since its formation in 1962, the Nature Conservancy of Canada has worked with individuals, corporations, foundations and governments to protect more than 1.2 million acres (490,000 hectares) of prime wildlife habitat across the country.
|Posted by Paul Eagles on January 19, 2016 at 3:40 PM||comments (0)|
The Branchton Village Land Trust received a grant from The Region of Waterloo Environmental Stewardship Fund in 2015. The money was used to bring down dangerous, dead trees. After the ice storm of late 2014, there were many brokend and leaning trees in the forest. These created a danger to anyone in the forest. The grant enabled the Land Trust to hire a forestry company to cut down the trees. The wood was left on the ground to decompose naturally.
|Posted by Paul Eagles on October 31, 2011 at 6:20 PM||comments (0)|
Message from the President
October 31, 2011
The objectives of the land trust are to ensure thepreservation of the land, forest, animal and plant life found within the nineacres of the forest lands. We also wanted to ensure the lands were nevercommercially logged. With the newly produced "Branchton Village Land TrustBotanical Report", we now know just how significant this parcel of land is andare proud to have protected it during this time.
It should also be noted that wildlife has flourished withinthe woods. Deer, wild turkeys and a large variety of birds amongst others, maketheir home in the forest.
For us, as residents and homeowners, it is nice to know thatstudies dealing with real estate values, properties, not just those abuttingsuch forested lands, are significantly more valuable when they are near this type of land feature.
However, with the responsibility of managing the Trust comesthe function of protecting the forest from encroachments, dumping, hunting andtrespassing. Twice each year we walk the forest to pick up garbage andneighbour's garden clippings. We do not appreciate the dumping but, more over,the clippings interfere with the natural vegetation as they re-seed and grow.The no trespassing notices on the land is a necessity for the Trust and its Directors to enforce, as we do not want to see anyone be injured or place any undue liability on the Trust and Directors. While we have always had this policy, we will be posting NO TRESSPASSING signs in the fall of 2011.
The good news is that anyone wishing a tour of the woods cancontact Dr. Paul Eagles. He would be more than happy to accommodate where andwhen possible. Another good way to see the woods is to help us clean up the woods when we do our spring and fall cleanup. We would welcome your help.
Branchton Village Land Trust
|Posted by Paul Eagles on September 5, 2011 at 7:35 PM||comments (0)|
The Branchton Village Land Trust Website was launched September 5, 2011.


text:
Callback Handling for Asynchronous Calls
Marketing Cloud recommends using an HTTPPost callback to return the results of asynchronous API requests, rather than receiving the results in an email.
To secure your public callback URL:
- Submit the HTTPPost using HTTPS.
- Allowlist Marketing Cloud IP addresses.
Retrieve the call's status using one of these actions:
- Set the asynchronous calls to return an HTTP POST or email message after processing.
- Perform a retrieve on the ResultMessage object and filter by the ResultID of the original request.
To use an HTTPPost callback to return the results of asynchronous API requests, set
HTTPPost and specify a publicly accessible URL for
SendResponseTo.ResponseAddress. The callback URL receives a standard HTTPPost request with the
application/x-www-form-urlencoded content type and these fields:
Unlike synchronous API calls, all successful asynchronous calls return a status of OK. This status indicates that the API received the call and it was queued. The callback does not indicate whether the call executed or failed or include unnecessary fields. For example, StatusMessage or ErrorCode values aren't included for successful calls.
If an HTTPPost throws an exception, the system logs an error and stops the process. The system does not retry the call.
The callbacks you receive correspond to the number of calls you make. If you send 500 async SOAP calls, the callback URL is called 500 times. To receive fewer callbacks, you have a few options:
- Send multiple objects in a single call.
- To get a callback only if an error occurs, modify the RespondWhen setting to be RespondWhen.OnError.
- To capture only successful callbacks, perform a retrieve on the ResultItem and ResultMessage objects, and return only the RequestID and OverallStatusCode.

source: openbmb/Ultra-FineWeb


Oyeku Ofun Temple
By Professor Wande Abimbola
By "Ifa divination" we mean Ifa and related systems of divination based on the stories and symbols of the Odu such as dida owo (divination with the sacred divining chain called opele) and etıte-ale (divination with the sacred palm nuts), eerındınlogun (divination with the sixteen cowries), agbigba (divination with a divining chain slightly different from opele), and obi (divination with kola nuts). The purpose of this essay is to examine the intimate connection of Osun with Ifa divination both in her own right as a person, and through the instrumentality of Osetuura, her son. We will start with the popular view of the involvement of Osun in Ifa divination which states that she got to know about Ifa through Orunmıla, her husband. In the later pages of this essay, I will make the claim that Osun has much more to do with the origins of Ifa divination than the babalawo (Ifa priests) are ready to admit. I will, indeed, put forward the hypothesis that the entire divination system of Ifa started from Osun from whom it got to Orunmıla and not the other way round. I will base my claims on verses of Ifa which give us hints to that effect. We will then examine the possibility that eerındınlogun is older than dida owo and etıte-ale which are probably later developments of Ifa divinations.
Let us begin with the popular view that Osun was introduced to Ifa divination by Orunmıla. Several verses of Ifa tell us about this. For example, a verse of Ogbe"Sa states that Orunmıla created the sixteen-cowry divination system and gave it to Osun as a reward for saving his life. In this particular verse, it was after Orunmila had created the sixteen cowrie system for Osun that both of them became married. But as will be seen later from another verse of Ifa, even though they were husband and wife, they did not live together in one place because it was not the custom for couples to live together at that time.
Let me now take some time to tell the story of Osun and Orunmıla as contained in Ogbe'Sa, especially because it relates to the importance of eerındınlogun in the Ifa divination system. The story goes as follows. It happened at a time that Olodumare summoned all the four hundred-and-one Orisa to Orun. But to their greatest surprise, the Orısa encountered a group of wicked "cannibals" in heaven (probably witches known to the Yoruba as aje) who started to kill and eat up the Orısa one by one. But since Orunmıla had performed sacriﬁce before he left earth, he was miraculously saved by Osun who successfully hid Orunmıla from the cannibals, and substituted goat meat for the ﬂesh of Orunmıla which the cannibals had planned to eat on that particular day.
When both Osun and Orunmıla returned to the earth, they became much closer than ever before. It was probably at this time that Orunmıla and Osun became husband and wife. Orunmila then decided to reward Osun for saving his life, and that was how he put together the sixteen-cowry system of divination and taught Osun how to use it. Let me now quote a short portion of this verse of Ogbe'Sa. It goes as follows:
This was how Orunmıla and Osun became close.
Orunmıla said that the good turn which she did for him
Was an exceptional one.
He wondered what he should do in return.
This was the most important reason why Orunmıla
Created the sixteen cowries.
He then handed them to Osun.
Of all the Orısa who use sixteen cowries,
There is none who had it before Osun.
It was Ifa who gave it to Osun.
And asked her to cast it
And use it as another form of divination.
This was what Ifa used to reward Osun.
That is why the relationship between Ifa and Osun
Is such that nobody else can know
What is between the two of them.
Orunmıla then got married to Osun.
Of the several forms of divination,
Eerındınlogun is next in rank to Ifa.
According to this particular story in Ogbe'Sa, even though Orunmıla was the one who created eerındınlogun, this system of divination later received its own ase from Olodumare. It happened as follows:
Every sixteen years
Olodumare, Olofin of Orun,used to
Subject diviners of earth to a test
To ﬁnd out whether they were telling lies to the inhabitants of the earth Or whether they were telling the truth.
This test involved
Calling on Orunmıla and other diviners of the earth.
Olodumare would say that he wanted to see all of them.
When they arrived,
Olodumare would ask them to divine for him.
So, Olodumare asked Orunmıla to divine for him.
When Orunmıla ﬁnished divining,
Olodumare asked, "Who is next?"
Orunmıla said that the next person was his partner
Who was a woman.
Olodumare then answered,
"Is she also a diviner?"
To which Orunmıla replied, "That is true."
Olodumare then asked her to divine for him.
When Osun examined Olodumare,
She hit on all those things in his mind.
But she did not say it in full.
She mentioned the gist
But she did not tell the root of the matter like Ifa.
Olodumare asked Orunmıla,
"What is this one?"
Orunmıla then explained to Olodumare
How he honored Osun with the sixteen cowries.
Olodumare said, "It is all right."
He further said that even though she did not go into details,
He, Olodumare gave his assent to it.
He added, "From today on and forever,
Even if what eerındınlogun says may not be detailed,
Anybody who disbelieves it
Would see the consequences instantly.
It must not wait till the following day."
This is why the predictions of eerındınlogun come to pass quickly
Even though the stories may not be impressive.
That was how eerındınlogun received ase
Directly from Olodumare.
Osetuura and Ifa Divination Sacriﬁce
We will now turn our attention to myths of Ifa divination which tell us about the importance of Osun in Yoruba religion generally and how Osetuura became the representative of Osun in Yoruba divination and sacriﬁce. The full story goes as follows:
When the Orısa ﬁrst came to the earth, they must have arrived in waves—not all the four hundred-and-one Orısa arrived at once. In any case, according to this myth from the Odu Ose Otura, there were only seventeen Orısa in the ﬁrst party, and Osun was the seventeenth. Olodumare gave instructions to the Orısa about what they should do as soon as they arrived on earth to make the young earth a pleasant place to live. They carried out all the instructions without involving Osun in any of their activities. The result was that things did not go well for them... Rain did not fall. There was illness, bitterness, and restlessness all over the earth. Let us quote a few lines from this Odu at this juncture:
When they arrived on earth,
They created a sacred forest for Oro.
They created a sacred forest for Opa.
They made a small road leading to Ife.
They sent people to make okun beads.
They sent people to make brass objects.
But nobody involved Osun in anything.
Whereas Osun was the person taking care of them
Giving them food and other things.
All the things which the Orı.a were doing, none was successful.
They prayed for rain, but it did not rain.
Bitterness engulfed the earth.
Restlessness took over the streets of the city.
They exclaimed "Did Olodumare tell us a lie?
What is this?
We are doing everything according to his instructions."
The Orısa then decided to send Orunmıla to Olodumare to ﬁnd out what actually happened. When Orunmıla got to Olodumare, he stated the problem. He said that they were living on earth in accordance with the instructions of Olodumare, but to their greatest surprise nothing they did on earth was good. Olodumare then asked whether they involved the only woman among them in all they were doing. But Orunmıla replied that since she was a woman, they did not involve her. To which Olodumare replied as follows:
Olodumare said that he was a creator
But he would never create any person or thing twice.
He told Orunmıla


text:
What does the first stanza describe in "Because I Could Not Stop for Death" by Emily Dickinson?
The first stanza of "Because I Could Not Stop for Death" describes the gentleman caller who appears in order to take the speaker with him in his carriage. This caller is Death personified.
As readers of this poem peruse the stanzas, they realize the gentleman caller is Death. He appears to the speaker in the form of a man, but the mention of the carriage containing only the speaker, driver, and Immortality indicates the driver's role: he is transporting the speaker from her earthly house to the "House" that seems but a "swelling of the ground" with a scarcely visible roof. In other words, Death is carrying the speaker through her life to its end, the grave. As they ride, the speaker views her youth as the children playing at recess in school. She then views the "Fields of Gazing Grain" that represent her maturity into womanhood. Finally, they pass "the Setting Sun" as she reaches the end of her life.
In the final stanza, the speaker addresses her audience from the grave as she recalls her realization that her caller was transporting her "toward Eternity."


.
 3. At least one literal evaluates to true. Nothing to do.
 4. At least 2 literals are not assigned, and the clause is not satisfied. Remove this clause from the watchlist that brought us here, add it to a watchlist of different literal.
This trick ensures that we only visit clauses with the potential to become unit-clauses, speeding up BCP significantly. It is not without its disadvantages though, using these lazy checks means that we cannot easily answer queries like "how many clauses currently have 3 unassigned literals" because the only thing we know about a clause is that it is either satisfied, or it still has at least 2 unassigned literals. Implementation of backtracking is also a bit trickier than using the naive implementation of BCP updates, but not overly so.
Note that we do not restore the original watches when backtracking, we keep the replaced ones. The invariant provided by the watches still holds, and there is no reason to do the extra work.
Over time, two more practical optimizations emerged:
 1. Store literals to propagate directly in watch for binary clauses
Binary clauses consist of precisely two literals, and we use 2 watches per clause. In other words, once one of the watches is triggered, it will force unit-propagation to happen to the other literal. By specializing path for binary clauses, we can save time it would take to bring the clause from memory and determine that there is only one literal left, and instead, we can start propagating the assignment directly.
 1. Copy the watched literals into a separate location
This is another optimization based around decreasing cache pressure when working with watches. As it turns out when a clause is examined because of a watch, the most common result of the visit is option 3, that is, the clause is satisfied, and there is nothing to do. Furthermore, the most common reason for the clause being satisfied is the other watched literal.
Copying the watched literals of each clause into a separate location allows us to take advantage of this fact because we can check this case without reading the whole clause from memory, thus alleviating the cache pressure a bit[9].
Clause deletion
In the introduction, I said that the difference between the DPLL and CDCL algorithms is that the latter learns new clauses during its search for a solution. This learning improves the scalability of CDCL significantly[10], but it also carries a potential for a significant slowdown, because each learnt clause takes up valuable memory and increases the time needed for BCP. Given that the upper bound on the number of learnable clauses is $2^{|Vars|}$, storing all of the learnt clauses obviously does not work, and we need to have a strategy for pruning them.
Let's start with a very naive strategy, first in, first out (FIFO). In this strategy, we decide on an upper limit of learnt clauses, and when adding a newly learnt clause exceeds this limit, the oldest learnt clause is deleted. This strategy avoids the problem with the ballooning number of learnt clauses, but at the cost of discarding potentially useful clauses. In fact, we are guaranteed to discard useful clauses because every learnt clause has a deterministic lifetime.
Let's consider a different naive strategy, random removal. In this strategy, we again decide on an upper limit of learnt clauses, but this time the clause to remove is picked completely randomly. This has the advantage that while we might remove a useful clause, we are not guaranteed that we remove useful clauses. While this distinction might seem minor, the random pruning strategy usually outperforms the FIFO one.
It is evident that a strategy that just keeps n best learnt clauses dominates both of these. The problem with this idea is that we need a way to score clauses on their usefulness, and doing so accurately might be even harder than solving the SAT instance in the first place. This means that we need to find a good (quickly computable and accurate) heuristic that can score a clause's usefulness.
Clause usefulness heuristics
The number of possible heuristics is virtually unlimited, especially if you count various hybrids and small tweaks, but in this post, we will look only at 3 of them. They are:
 1. Clause activity
This heuristic is used by the MiniSat solver. A clause's activity is based on how recently it was used during conflict resolution, and clauses with low activity are removed from the learnt clause database. The idea behind this is that if a clause was involved in conflict resolution, it has helped us find a conflict quicker and thus let us skip over part of the search space. Conversely, if a clause has not been used for a while, then the slowdown and memory pressure it introduces is probably not worth keeping it around.
 1. Literal Block Distance (LBD)
This heuristic was introduced in a 2009 paper and subsequently implemented in the Glucose solver. This heuristic assumes that we have a mapping between variables currently assigned a truth value and the decision level (recursion level) at which they were assigned that value. Given clause $C$, $LBD(C)$ is then calculated by taking the decision levels from variables of all literals in that clause, and counting how many different decision levels were in this set.
The less there are, the better, and clauses for which $LBD(C) = 2$ are called glue clauses[11]. The idea is that they glue together variables from the higher (later) decision level (later in the search tree) to a variable[12] from a lower (earlier) decision level, and the solver can then use this clause to set these variables earlier after backtracking. Solvers that use the LBD heuristic for learnt clause management almost always keep all of the glue clauses and for removal only consider clauses where $LBD(C) \geq 3$.
 1. Clause size
The third heuristic we will look at is extremely simple, it is just the clause's size, $|C|$, with a lower score being better. To understand the reason why shorter clauses are considered better, consider a unit clause $\neg x_3$. Adding this clause to a problem forces assignment $x_3 := false$, effectively removing about half of the possible search space. The story is similar for binary clauses, e.g. $(x_3 \vee x_5)$ cuts out about $1 \over 4$ of the possible variable assignments, because it forbids assignment $x_3 := false \wedge x_5 := false$. More generally, if we do not consider overlaps, an n-ary clause forbids $1 \over 2^{n}$ possible variable assignments.
Using clause size metric for learnt clause management is then done by picking a threshold k and splitting learnt clauses into two groups, those where $|C| \leq k$ and those where $|C| \gt k$. Pruning the learnt clauses then only considers the latter group for removal, where the longer clauses are deleted first. It should also incorporate a bit of randomness, to give a chance to not delete the useful, but long, clause in lieu of the useless, but short(er), clause. The final rating of a clause is then $|C| + random()$.
Let's compare these 3 heuristics across 3 criteria:
 1. How much is the clause's rating dependent on the path the solver took to learn this clause, or, how dynamic is the heuristic
 2. What does it base its claims of predictive strength on
 3. Real-world performance
Here is a quick overview:
Clause activity LBD Clause size
Dynamicity High Some None[13]
Prediction basis Clauses's recent performance How many decision layers are involved in the clause Size of the cut the clause makes in the decision tree
Performance in the real world Used in MiniSat to good effect Used in Glucose to good effect MiniSat with randomized clause size as the management supposedly outperforms Glucose[14]
There are various reasons why it is hard to compare different strategies for learnt clause management objectively. For starters, they are often implemented in entirely different solvers so they cannot be compared directly, and even if you vivify them and port these different strategies to the same solver, the results do not have to generalize. The different solvers might use different learning algorithms, different variable-selection heuristics (see below), different restart strategy and so on, and all of these design consideration must be optimized to work together.
Another reason why generalization is hard is that different heuristics might perform differently on different kinds of instances, and the average user cares about their kind of instances a lot more than some idealized average. After all, my employer uses SAT in our core product, and if we could get 10% more performance for "our kind" of instances at the cost of a 10x slowdown on the other kinds, we would take it in a heartbeat.
So, instead of trying to compare these heuristics objectively, I will leave you with some food for your thoughts:
 - Glucose is seen as better performing than MiniSat, but a lot of it is its better performance on unsolvable instances, and there are more differences than just the learnt clause management
 - More dynamic heuristics likely need more CPU and RAM for bookkeeping
 - More static heuristics have to evaluate clauses with less instance-specific context
 - As is often disclaimed, "past performance is no guarantee of future results."
Variable heuristics
As was already mentioned, the solver's performance on a specific problem strongly depends on the order in which it assigns values to variables. In other words, a quickly-computable heuristic approximating "good" order is an essential part of


text:
Clinical Evaluation of the ExoDx Prostate (IntelliScore) in men presenting for initial biopsy: impact on decision-making and health economics
1.1. Primary Objective 1.1.1. Evaluate impact of the ExoIntelliScore Prostate on the decision to perform an initial prostate biopsy for men presenting with an elevated PSA (2-10 ng/mL). 1.2. Secondary and Exploratory Objectives 1.2.1. Assess physician satisfaction with the ExoIntelliScore Prostate report including test result presentation, graphics and interpretation. 1.2.2. Assess patient satisfaction for ease of understanding test results and role on decision process to have a biopsy. 1.2.3. Determine the medical economic impact of the ExoIntelliScore Prostate in the prostate biopsy decision process. 1.2.4. Correlation of the ExoIntelliScore Prostate score with the actual biopsy result. 1.2.5. The goal of this study is to evaluate how the urologist will utilize the ExoIntelliScore Prostate score in the decision process to perform an initial prostate needle biopsy for men presenting for an equivocal PSA.


BoKS from FoxT
Access Control
Differentiation between Authentication and Authorization
Access control is the means of authorizing a user to access a certain resource at a certain time. This is different from authentication where you are only verifying a user's identity. Granted, when you log into a system there is normally an authentication that takes place as well as an authorization. For example letís look at a typical Windows login scenario:
A user goes up to a workstation in a Windows domain and types his or her username and password.
This gets sent to the domain controller which first authenticates the user (is the user valid), then authorizes the user to log into the workstation (authorization). In most cases this is done behind the scenes where the user doesnít realize (or even care) what is taking place.
Now let's look at an exception:
The user may have a valid account, but may be trying to log into a server or other resource. The server may be restricted to certain accounts so the user would see an error message that says they cannot log into this workstation. This is authorization.
Access Control in a UNIX World
In a typical UNIX environment, if you have an account with a valid username and password you can log in. This goes for any of the services such as FTP, TELNET, SSH, any of the "R" commands (RLOGIN, RSH, REXEC and so forth). Whilst most of the newer flavors of UNIX are coming out with some form of access control OR the operating system is locked down to allow only SSH (and SSH related commands), the same rule holds; if you have a valid username and password you can log into the system.
Special Consideration for the "root" account?
Now what about the "root" account? Best practices with respect to security dictate that users have "least privilege", that is the least amount of access required for their job function. However, without implementing something akin to "sudo", giving someone root access is giving them the keys to the city. In addition, "sudo" is system specific.
BoKS Manager
The solution to UNIX access woes are solved with BoKS Manager from FoxT. With 20 years of experience with UNIX Access Control, nobody does a better job of UNIX access control. Here are some key advantages of BoKS Manager:
 - Centralized user account management
- Control over the typical services such as TELNET, FTP, RLOGIN, REXEC as well as SSH Enhanced "root" access with SUEXEC that includes keystroke logging
- Logging of all access attempts, administration and security activities to provide non- repudiation
And more...
At MBD Consulting, we have vast experience with this product as well, spanning from its relative infancy in 1995. Call us or email us today to find out how BoKS Manager can simplify and enhance your UNIX environment.
Copyright 2010 by MBD Consulting, LLC


Actions
The Action object describe what is to be done with a message. They are implemented via output modules.
The action object has different parameters:
 - those that apply to all actions and are action specific. These are documented below.
 - parameters for the action queue. While they also apply to all parameters, they are queue-specific, not action-specific (they are the same that are used in rulesets, for example). The are documented separately under queue parameters.
 - action-specific parameters. These are specific to a certain type of actions. They are documented by the output modules in question.
General Action Parameters
Note: parameter names are case-insensitive.
 - name word
 This names the action. The name is used for statistics gathering and documentation. If no name is given, one is dynamically generated based on the occurrence of this action inside the rsyslog configuration. Actions are sequentially numbered from 1 to n.
 - type string
 Mandatory parameter for every action. The name of the module that should be used.
 - action.writeAllMarkMessages on/off
 This setting tells if mark messages are always written ("on", the default) or only if the action was not recently executed ("off"). By default, recently means within the past 20 minutes. If this setting is "on", mark messages are always sent to actions, no matter how recently they have been executed. In this mode, mark messages can be used as a kind of heartbeat. This mode also enables faster processing inside the rule engine. So it should be set to "off" only when there is a good reason to do so.
 - action.execOnlyEveryNthTime integer
 If configured, the next action will only be executed every n-th time. For example, if configured to 3, the first two messages that go into the action will be dropped, the 3rd will actually cause the action to execute, the 4th and 5th will be dropped, the 6th executed under the action, … and so on.
 - action.execOnlyEveryNthTimeout integer
 Has a meaning only if Action.ExecOnlyEveryNthTime is also configured for the same action. If so, the timeout setting specifies after which period the counting of "previous actions" expires and a new action count is begun. Specify 0 (the default) to disable timeouts. Why is this option needed? Consider this case: a message comes in at, eg., 10am. That's count 1. Then, nothing happens for the next 10 hours. At 8pm, the next one occurs. That's count 2. Another 5 hours later, the next message occurs, bringing the total count to 3. Thus, this message now triggers the rule. The question is if this is desired behavior? Or should the rule only be triggered if the messages occur within an e.g. 20 minute window? If the later is the case, you need a Action.ExecOnlyEveryNthTimeTimeout="1200" This directive will timeout previous messages seen if they are older than 20 minutes. In the example above, the count would now be always 1 and consequently no rule would ever be triggered.
 - action.errorfile string
 New in version 8.32.0.
 When an action is executed, some messages may permanently fail. Depending on configuration, this could for example be caused by an offline target or exceptionally non-numerical data inside a numerical database field. If action.errorfile is specified, those messages are written to the specified file. If it is not specified (the default), messages are silently discarded.
 The error file format is JSON. It contains the failed messages as provided to the action in question, the action name as well as the rsyslog status code roughly explaining why it failed.
 - action.errorfile.maxsize integer
 In some cases, error file needs to be limited in size. This option allows specifying a maximum size, in bytes, for the error file. When error file reaches that size, no more errors are written to it.
 - action.execOnlyOnceEveryInterval integer
 Execute action only if the last execute is at last seconds in the past (more info in ommail, but may be used with any action)
 - action.execOnlyWhenPreviousIsSuspended on/off
 This directive allows to specify if actions should always be executed ("off," the default) or only if the previous action is suspended ("on"). This directive works hand-in-hand with the multiple actions per selector feature. It can be used, for example, to create rules that automatically switch destination servers or databases to a (set of) backup(s), if the primary server fails. Note that this feature depends on proper implementation of the suspend feature in the output module. All built-in output modules properly support it (most importantly the database write and the syslog message forwarder). Note, however, that a failed action may not immediately be detected. For more information, see the rsyslog execOnlyWhenPreviousIsSpuspended preciseness FAQ article.
 - action.repeatedmsgcontainsoriginalmsg on/off
 "last message repeated n times" messages, if generated, have a different format that contains the message that is being repeated. Note that only the first "n" characters are included, with n to be at least 80 characters, most probably more (this may change from version to version, thus no specific limit is given). The bottom line is that n is large enough to get a good idea which message was repeated but it is not necessarily large enough for the whole message. (Introduced with 4.1.5).
 - action.resumeRetryCount integer
 [default 0, -1 means eternal]
 Sets how often an action is retried before it is considered to have failed. Failed actions discard messages.
 - action.resumeInterval integer
 Sets the action's resume interval. The interval provided is always in seconds. Thus, multiply by 60 if you need minutes and 3,600 if you need hours (not recommended). When an action is suspended (e.g. destination can not be connected), the action is resumed for the configured interval. Thereafter, it is retried. If multiple retries fail, the interval is automatically extended. This is to prevent excessive resource use for retries. After each 10 retries, the interval is extended by itself. To be precise, the actual interval is (numRetries / 10 + 1) * action.resumeInterval. Using the default value of 30, this means that on the 10th try the suspension interval will be 60 (seconds) and after the 100th try it will be 330 (seconds).
 - action.resumeIntervalMax integer
 Default: 1800 (30 minutes)
 This sets an upper limit on the growth of action.resumeInterval. No wait will be larger than the value configured here. Going higher than the default is only recommended if you know that a system may be offline for an extended period of time and if it is acceptable that it may take quite long to detect it came online again.
 - action.reportSuspension on/off
 Configures rsyslog to report suspension and reactivation of the action. This is useful to note which actions have problems (e.g. connecting to a remote system) and when. The default for this setting is the equally-named global parameter.
 - action.reportSuspensionContinuation on/off
 Configures rsyslog to report continuation of action suspension. This emits new messages whenever an action is to be retried, but continues to fail. If set to "on", action.reportSuspension is also automatically set to "on". The default for this setting is the equally-named global parameter.
 - action.copyMsg on/off
 Configures action to copy the message if on. Defaults to off (which is how actions have worked traditionally), which causes queue to refer to the original message object, with reference-counting. (Introduced with 8.10.0).
Legacy Format
Be warned that legacy action format is hard to get right. It is recommended to use RainerScript-Style action format whenever possible! A key problem with legacy format is that a single action is defined via multiple configurations lines, which may be spread all across rsyslog.conf. Even the definition of multiple actions may be intermixed (often not intentional!). If legacy actions format needs to be used (e.g. some modules may not yet implement the RainerScript format), it is strongly recommended to place all configuration statements pertaining to a single action closely together.
Please also note that legacy action parameters do not affect RainerScript action objects. So if you define for example:
$actionResumeRetryCount 10
action(type="omfwd" target="server1.example.net")
@@server2.example.net
server1's "action.resumeRetryCount" parameter is not set, instead server2's is!
A goal of the new RainerScript action format was to avoid confusion which parameters are actually used. As such, it would be counter-productive to honor legacy action parameters inside a RainerScript definition. As result, both types of action definitions are strictly (and nicely) separated from each other. The bottom line is that if RainerScript actions are used, one does not need to care about which legacy action parameters may (still…) be in effect.
Note that not


text:
Get Daimler-Benz DB 601 essential facts below. View Videos or join the Daimler-Benz DB 601 discussion. Add Daimler-Benz DB 601 to your PopFlock.com topic list for future reference or share this resource on social media.
The DB 601 was basically an improved DB 600 with direct fuel injection. Fuel injection required power to be taken off the drive shaft, but in return, improved low-RPM performance significantly and provided aerobatic performance in maneuvers where a carburated engine like the British Rolls-Royce Merlin would lose power when the carburetor ran dry.
The 601's fuel injection provided a significant boost in performance which its competitor, the Junkers Jumo 210, did not match for some time. By the time the fuel-injected 211 arrived, the 601 had already cemented its place as the engine for high-performance designs like fighters, high-speed bombers, and similar roles. The 211 would be relegated to bombers and transport aircraft. In this respect, the 601 was the counterpart to the Merlin engine of roughly the same size and power.
Based on the guidelines laid down by the German "Reichverkehrsministerium" (Reich Ministry of Transport), in 1930 Daimler-Benz began development of a new aero engine of the 30 l (1,800 cu in) displacement class: a liquid-cooled inverted-vee 12-cylinder piston engine. This was designated F4, and by 1931 two prototypes were running on the test bench. These were followed by the improved F4B, which became the prototype for the DB 600.
In 1933, Daimler-Benz finally received a contract to develop its new engine and to build six examples of the DB 600. For the year after, the DB 600 was the only German aero engine in the 30-litre class. In total, 2,281 DB 600s were built.
The DB 601A-1 was a development of the DB 600 with mechanical direct fuel injection. Like all DB 601s, it had a 33.9 litre displacement. The first DB 601A-1 prototype, designated as F4E, was test run in 1935, and an order for 150 engines was placed in February 1937.
Serial production began in November 1937, and ended in 1943, after 19,000 examples of all types were produced.
DB 601 A-1
Up to 1,100 PS (809.0 kW; 1,085.0 hp) at sea-level with 2,400 rpm, up to 1,020 PS (750.2 kW; 1,006.0 hp) at 2,400 rpm and 4,500 m (14,800 ft) altitude, B4 fuel
DB 601 Aa
Up to 1,175 PS (864.2 kW; 1,158.9 hp) at sea-level with 2,500 rpm, up to 1,100 PS (809.0 kW; 1,085.0 hp) at 2,400 rpm and 3,700 m (12,100 ft) altitude, B4 fuel
DB 601 B-1
Same as DB601 A-1 for use in Messerschmitt Bf 110 and/or bomber aircraft (different prop/engine ratio, 1:1.88 instead of 1:1.55)
DB 601 Ba
Similar to Aa for use in Messerschmitt Bf 110 and/or bomber aircraft (different prop/engine ratio, 1:1.88 instead of 1:1.55)
^Schneider, Helmut (Dipl.Ing.) (1944). Flugzeug-Typenbuch. Handbuch der deutschen Luftfahrt- und Zubehör-Industrie 1944 (in German) (Facsimile reprint 1986 ed.). Leipzig: Herm. Beyer Verlag. p. 388. ISBN381120484X.


text:
Muddy Waters is a legendary name in blues music who had a fascinating life and career. Muddy Waters' legacy of blues musical genius landed him critical accolades. By the time of his passing, Muddy Waters had won six Grammys, had four songs inducted into the Rock and Roll Hall of Fame, and won five Blues Foundation Awards.
However, much of this success was partly fueled by his marriage to Geneva Morganfield, his third wife, and the other half of his longest marriage. Geneva Morganfield is an important part of the bluesman's legacy.
Who is Muddy Waters?
Muddy Waters, born McKinley Morganfield near Rolling Fork, Mississippi on April 4, 1915, was a legendary blues performer. His musical career began early and by 17 years old he was playing both the guitar and harmonica, styling his own work after blues musicians such as Son House and Robert Johnson.
Waters' first brush with fame was when he was recorded by Alan Lomax for the Library of Congress in 1941 as a national archival project, and by 1943 he began work as a musician.
By the 1950s Muddy Waters and his band would record legendary blues songs such as "Hoochie Coochie Man" and "I"m ready." The work of Muddy Waters would go on to influence music across many genres.
His career would continue on into the early 1980s, finding him collaborating with the likes of Eric Clapton and The Rolling Stones. Muddy Waters would pass away in his sleep from cancer-related heart failure on April 30, 1983.
Who is Geneva Morganfield?
Geneva Morganfield, born Geneva Wade in 1915, married Muddy Waters in the late 1940s. The exact date of their marriage is unknown. She and Muddy Waters were together until she passed away in 1973.
Geneva Morganfield was the third wife of Muddy Waters, but part of his longest-lasting marriage.
When did they get married? How long were they married?
The date of marriage for Geneva Wade and Muddy Waters is unknown but is likely to have happened shortly after his first marriage, to Mabel Berry, came to an end. Waters and Berry were married from 1932 to 1935.
Shortly after he married Sally Ann Adams in 1942, and had ended their relationship before the end of the 1940s. Some sources suggest Muddy Waters and Geneva Morganfield married in the late 1940s, though dates vary.
Given that Muddy Waters remained married to Geneva Morganfield until her death in 1973, it is likely that they were married for 20 or more years.
Do they have kids? Who are their children?
Muddy Waters had at least six children, but not all of them were with Geneva. His first three children were with Geneva and included Joseph, Renee, and Rosalind Morganfield. Muddy Waters would have an additional three children later with his third wife, Marva Jean. These children would be his sons Larry "Mud" Morganfield, Big Bill Morganfield, and Joseph "Mojo" Morganfield.
Complicating this genealogy was Waters' infidelity where it is said that he had likely fathered several children outside of his marriages.
When and how did she die?
Geneva Morganfield died on March 15th, 1973, from cancer. The type of cancer that took her life is unknown. Sadly, Muddy Waters would die from cancer-driven heart failure nearly a decade later.
Did Muddy Waters remarry after Geneva die?
Muddy Waters did remarry after Geneva's passing. He would marry then 19-year old Marva Jean Brooks in 1979. He would remain married to Marva Jean until his passing in 1983.
Where are Geneva and Muddy buried?
Geneva Morganfield and Muddy Waters are buried next to one another in Restvale Cemetary in Cook Count, Illinois. Their graves can be visited in Section H, Lot 133.


text: We present the use of an entropy focus criterion to enable automatic focusing of motion corrupted magnetic resonance images. We demonstrate the principle using illustrative examples from cooperative volunteers. Our technique can determine unknown patient motion or use knowledge of motion from other measures as a starting estimate. The motion estimate is used to compensate the acquired data and is iteratively refined using the image entropy. Entropy focuses the whole image principally by favoring the removal of motion induced ghosts and blurring from otherwise dark regions of the image. Using only the image data, and no special hardware or pulse sequences, we demonstrate correction for arbitrary rigid-body translational motion in the imaging plane and for a single rotation. Extension to three-dimensional (3-D) and more general motion should be possible. The algorithm is able to determine volunteer motion well. The mean absolute deviation between algorithm and navigator-echo-determined motion is comparable to the displacement step size used in the algorithm. Local deviations from the recorded motion or navigator-determined motion are explained and we indicate how enhanced focus criteria may be derived. In all cases we were able to compensate images for patient motion, reducing blurring and ghosting.


UIKit vs. SwiftUI - A general discussion
· 2 min read
UIKit vs. SwiftUI - A general discussion
UIKit vs. SwiftUI
UIKit and SwiftUI are two different frameworks for building user interfaces on Apple platforms.
UIKit
UIKit is the older of the two frameworks, and has been around since the early days of iOS development. It is a mature and powerful framework that provides a wide range of tools and APIs for building user interfaces, and is widely used by developers to create iOS and macOS applications. We can either use XIB, Storyboard or code to generate the user interface with the help of UIKit.
SwiftUI
SwiftUI, on the other hand, is a relatively new framework that was introduced in 2019 with the release of iOS 13. It is designed to make it easier and faster to build user interfaces for all of Apple's platforms, using the concept of declarative programming and a modern design philosophy. SwiftUI is built on top of the same underlying technologies as UIKit, but it offers a different way of thinking about and building user interfaces.
Which one should I choose
When deciding whether to use UIKit or SwiftUI, the main factor to consider is the platform and devices you are targeting, as well as your personal development preferences. UIKit is the older of the two frameworks, and it is the primary framework for building user interfaces on iOS and macOS. It is a mature and powerful framework that provides a wide range of tools and APIs for building user interfaces, and it is widely used by developers to create iOS and macOS applications.
If you are building an app for one of these platforms and you are comfortable with UIKit, then it is probably the best choice for your project. UIKit also has the advantage of being well-established and well-documented, so there is a wealth of information and resources available to help you get started and overcome any challenges you may encounter.
On the other hand, if you are building an app for one of Apple's newer platforms, such as watchOS or tvOS, or if you are looking for a more modern and efficient way to build user interfaces, then SwiftUI may be a better choice for your project. SwiftUI is designed to make it easier and faster to build user interfaces for all of Apple's platforms, using a declarative syntax and a modern design philosophy. It is built on top of the same underlying technologies as UIKit, but it offers a different way of thinking about and building user interfaces.
Ultimately, the choice between UIKit and SwiftUI will depend on your specific project requirements and your personal development preferences. Both frameworks have their strengths and weaknesses, and it is important to carefully evaluate your options and choose the one that is best suited to your needs.
Summary
In general, SwiftUI is seen as a more modern and efficient way to build user interfaces, and it is likely to become increasingly popular among developers in the coming years. However, UIKit is still a powerful and widely used framework, and it will continue to be a valuable tool for developers who need to create complex user interfaces or integrate with older technologies.


10 Things You Didn't Know About Steven Chu
Steven Chu is President-elect Obama's pick for energy secretary.
Steven Chu
1. Steven Chu was born Feb. 28, 1948, in St. Louis.
2. Chu spent most of his childhood in Garden City, N.Y., where his family was one of very few of Chinese descent. Chu's father had emigrated from China to study at MIT in 1943, and his mother did the same two years later.
3. Chu has said that he was not an outstanding student in high school. While he enjoyed a few subjects like geometry and physics, he found most of his classes "a chore." Although he graduated with an A-minus average, he thought of himself as the "academic black sheep" of his family: Many of his relatives hold graduate degrees from prestigious schools.
4. Chu attended the University of Rochester, where he graduated in 1970 with bachelor's degrees in physics and mathematics.
5. Continuing his education in physics, Chu did graduate work at UC-Berkeley. He received his doctorate from there in 1976.
6. After finishing a postdoctoral fellowship, Chu was offered a position as an assistant professor at Berkeley. He decided to take a leave of absence to work at Bell Laboratories, and he stayed there until 1987, eventually becoming head of the quantum electronics research department.
7. While he worked at Bell Labs, Chu was part of a team that won the Nobel Prize in 1997. The research involved using lasers to trap individual atoms by supercooling them.
8. Chu returned to academia in 1987 to teach physics and applied physics at Stanford University. He later became chair of the physics department there.
9. In 2004, Chu was named director of the Lawrence Berkeley National Laboratory. (As a national laboratory, its work is supported by the U.S. Department of Energy.) While there, he has made combating global warming and researching renewable energy sources top priorities.
10. Chu's wife, Jean, is also a physicist and a former professor. Chu has two adult sons from an earlier marriage.


text:
Why Is Cheese So Expensive in Canada?
It's a struggle most Canadian dairy lovers are familiar with: Cheese up there is so expensive that a pound of cheddar can end up costing more than a pound of steak. Our neighbors to the north aren't exaggerating when they complain about steep cheese prices—costs are sometimes three times higher than comparable products sold in the States, and it's not because the Canadian air makes cows pump out liquid gold. It's all thanks to a little something called supply management.
Supply management is a blanket term used to describe the policies regulating Canada's dairy (and egg and poultry) markets. The dairy industry works differently in Canada than it does in other cheese-loving parts of the world. Both the European Union and the United States subsidize their dairy farmers—the Canadian government does not. Instead, they use other ways to get farmers the financial support they need.
Minimum price-setting for domestic dairy products keeps cheese prices above a certain mark, while strict quotas and high taxes on imports keep foreign competition under control. International cheeses account for a tiny fraction of the market, so cheese made in France, Italy, and other places abroad is difficult to find outside specialty shops. The result is more profits for Canadian producers taken straight from the consumers' pockets come check-out time.
When supply management was introduced to Canada in the 1960s and '70s, it served a clear purpose. The policies were put in place to protect farmers from unpredictable market fluctuations and keep their livelihoods secure. Since then many of the small family farms that were originally protected under the laws have been replaced with factory farms, and the relevance of supply management is now a topic of hot debate.
The laws aren't terribly popular among citizens (even police officers have been known to help smuggle cheese across the border), and it's not just because of the high grocery bills. Opponents argue that the regulations are bad for innovation, free trade negotiations, and restaurateurs. Canadian farmers still insist the benefits outweigh the costs. On the Dairy Farmers of Canada's web page, they write:
"While farmers around the world face unexpected and inexplicable wild market fluctuations, Canadian farmers sell their milk at constant and stable prices. As a result, Canadian dairy farming is one of the few agricultural sectors that are self-sufficient – providing income security for farmers and requiring no government subsidy. This means Canadian farmers can invest in their farms, communities and Canada."
Because farmers hold significant power in Canadian politics, supply management boasts supporters from every major party. But not all hope is lost for Canadian connoisseurs of affordable cheese. Progress on their front was made last year when a trade deal was signed slightly increasing the quota on foreign dairy imports. Consumers may benefit from the resulting price cuts, while Canadian farmers and processors will receive $4.3 billion from the government over 15 years to make up for the revenue loss. So next time you enjoy a plate of poutine, feel free to be a little less conservative with the cheese curds.


text:
Based on plotpdftex
Calls matlabfrag to create the *.eps and *.tex Files. After that pdflatex is used to create the pdf File.
mlf2pdf creates the PDF file of the current graphical figure (CGF)
mlf2pdf(H) creates the PDF file from the graphical figure with
handle H, named LaTeXfile.pdf
mlf2pdf(H,FILENAME) creates the PDF file from the graphical figure
with handle H, named FILENAME.PDF (FILENAME is a character array of
the filename, with or without the extension.PDF)
mlf2pdf(H,FILENAME,PACKAGES) to adding
packages such as fonts, mathfont,...
ex: PACKAGES = 'amssymb, times'
It now supports Windows AND Unix Systems.