text:
Marquette UniversityLeadership
University Leadership Council
(2017) Financial audit
(2011) Financial report
(2010) President's report
Mission & Guiding Values
Marquette.edu // Leadership // University Leadership Council (ULC) //
Dr. Kimo Ah Yun
Dr. Kimo Ah Yun is the provost and executive vice president for academic affairs. He previously served as the dean of the J. William and Mary Diederich College of Communication. Prior to joining Marquette University, he was associate dean of the College of Arts and Letters at California State University, Sacramento, where he also served as chair of the department of communication studies, director of the Center for Teaching and Learning, and professor of communication studies. During his 20-year tenure at Sacramento State, he co-chaired the President's Committee to Build Campus Unity, which programmed and executed campuswide conversations on topics such as discrimination, identity and privilege.
Ah Yun has received teaching awards from California State University, Sacramento, and the International Communication Association. He also received the President's Research Award from California State University, Sacramento, and the Jack Hunter Meta-Analysis award from the International Communication Association. He has published in Communication Education, Journal of Early Childhood Teacher Education, Communication Research, Wisconsin Medical Journal, Communication Studies, Journal of Applied Communication Research, Journal of the Association for Communication Administration, Metropolitan Universities Journal, and The National Teaching and Learning Forum. His research has been supported with grants from the Centers for Disease Control, Wisconsin Department of Public Health, California Criminal Justice Cabinet, California Department of Transportation, and the Henry J. Kaiser Family Foundation.
Ah Yun earned his bachelor's degree in communication studies from California State University, Sacramento, his master's degree in communication studies from Kansas State University, and his doctorate in communication from Michigan State University.
Emeriti Trustees
University Leadership Council (ULC)
To report another problem with the president or leadership websites, please contact jennifer.staab@marquette.edu.


Risk management telematics monitoring solutions for varied sectors. It's what makes us different. To create the best customer service level, we start in our own community by creating an open, inclusive, and diverse organization where all team members are recognized for what they bring. We're looking for a talented Fleet Risk Coordinator to help take us to the next level. In this role you will assist the Risk Liaison manager with closely monitoring and alerting all exceptions, safeguarding various assets and commodities etc.. If you have an entrepreneurial spirit, like tackling aggressive goals, and want to be part of the next big thing with us, we would love to meet you!


text:
from django.db import models
from django.utils.translation import ugettext_lazy as _

from userena.models import UserenaLanguageBaseProfile
from userena.utils import user_model_label

import datetime

class Profile(UserenaLanguageBaseProfile):
    """ Default profile """
    GENDER_CHOICES = (
        (1, _('Male')),
        (2, _('Female')),
    )

    user = models.OneToOneField(user_model_label,
                                unique=True,
                                verbose_name=_('user'),
                                related_name='profile')

    gender = models.PositiveSmallIntegerField(_('gender'),
                                              choices=GENDER_CHOICES,
                                              blank=True,
                                              null=True)
    website = models.URLField(_('website'), blank=True)
    location =  models.CharField(_('location'), max_length=255, blank=True)
    birth_date = models.DateField(_('birth date'), blank=True, null=True)
    about_me = models.TextField(_('about me'), blank=True)
    interests = models.TextField(_('interests'), blank=True)

    @property
    def age(self):
        if not self.birth_date: return False
        else:
            today = datetime.date.today()
            # Raised when birth date is February 29 and the current year is not a
            # leap year.
            try:
                birthday = self.birth_date.replace(year=today.year)
            except ValueError:
                day = today.day - 1 if today.day != 1 else today.day + 2
                birthday = self.birth_date.replace(year=today.year, day=day)
            if birthday > today: return today.year - self.birth_date.year - 1
            else: return today.year - self.birth_date.year

redpajama_set_name: RedPajamaGithub


The Mermaid Witch is a fantasy tale told in rhyme.
A Witch falls off her broom into the ocean and transforms herself into a mermaid so she can live under the sea. While on vacation the Mermaid Witch meets and helps a new friend, Mr. Monkey.


Budapest, Hungary - 1088 Budapest, József Krt. 2 Ist Floor.
All the rooms have their own bathrooms, brand-new comfortable double and twin beds and individual design. Located on Blaha Lujza square, at the legendary New York Café.


Calcium mobilization can regulate a wide range of essential functions of respiratory epithelium, including ion transport, ciliary beat frequency, and secretion of mucus, all of which are modified in cystic fibrosis (CF). SERCA2, an important controller of calcium signaling, is deficient in CF epithelium. We conducted this study to determine whether SERCA2 deficiency can modulate airway epithelial responses to environmental oxidants such as ozone. This could contribute to the pathogenesis of pulmonary exacerbations, which are important and frequent clinical events in CF. To address this, we used air-liquid interface (ALI) cultures of non-CF and CF cell lines, as well as differentiated cultures of cells derived from non-CF and CF patients. We found that ozone exposure caused enhanced membrane damage, mitochondrial dysfunction and apoptotic cell death in CF airway epithelial cell lines relative to non-CF. Ozone exposure caused increased proinflammatory cytokine production in CF airway epithelial cell lines. Elevated proinflammatory cytokine production also was observed in shRNA-mediated SERCA2 knockdown cells. Overexpression of SERCA2 reversed ozone-induced proinflammatory cytokine production. Ozone-induced proinflammatory cytokine production was NF-κB- dependent. In a stable NF-κB reporter cell line, SERCA2 inhibition and knockdown both upregulated cytomix-induced NF-κB activity, indicating importance of SERCA2 in modulating NF-κB activity. In this system, increased NF-κB activity was also accompanied by increased IL-8 production. Ozone also induced NF-κB activity and IL-8 release, an effect that was greater in SERCA2-silenced NF-κB-reporter cells. SERCA2 overexpression reversed cytomix-induced increased IL-8 release and total nuclear p65 in CFTR-deficient (16HBE-AS) cells. These studies suggest that SERCA2 is an important regulator of the proinflammatory response of airway epithelial cells and could be a potential therapeutic target. © 2011 Ahmad et al.


text:
require "guard"
require "guard/plugin"
require "guard/puma/runner"
require "rbconfig"
require "guard/puma/version"

module Guard
  class Puma < Plugin
    attr_reader :options, :runner

    def self.default_env
      ENV.fetch('RACK_ENV', 'development')
    end

    DEFAULT_OPTIONS = {
      :port => 4000,
      :environment => default_env,
      :start_on_start => true,
      :force_run => false,
      :timeout => 20,
      :debugger => false
    }

    def initialize(options = {})
      super
      @options = DEFAULT_OPTIONS.merge(options)
      @runner = ::Guard::PumaRunner.new(@options)
    end

    def start
      server = options[:server] ? "#{options[:server]} and " : ""
      UI.info "Guard::Puma will now start your app on port #{options[:port]} using #{server}#{options[:environment]} environment."
      runner.start if options[:start_on_start]
    end

    def reload
      UI.info "Restarting Puma..."
      Notifier.notify("Puma restarting on port #{options[:port]} in #{options[:environment]} environment...", :title => "Restarting Puma...", :image => :pending)
      if runner.restart
        UI.info "Puma restarted"
        Notifier.notify("Puma restarted on port #{options[:port]}.", :title => "Puma restarted!", :image => :success)
      else
        UI.info "Puma NOT restarted, check your log files."
        Notifier.notify("Puma NOT restarted, check your log files.", :title => "Puma NOT restarted!", :image => :failed)
      end
    end

    def stop
      Notifier.notify("Until next time...", :title => "Puma shutting down.", :image => :pending)
      runner.halt
    end

    def run_on_change(paths)
      reload
    end
  end
end


text:
Chaetarthriomyces är ett släkte av svampar. Chaetarthriomyces ingår i familjen Laboulbeniaceae, ordningen Laboulbeniales, klassen Laboulbeniomycetes, divisionen sporsäcksvampar och riket svampar.

Källor

Sporsäcksvampar
Chaetarthriomyces

redpajama_set_name: RedPajamaWikipedia


text:
edited by Laird Barron
The review is based on a bought copy of the magazine
To advertise a new short fiction magazine can prove to be tricky. Nowadays there is plenty of material to be found, both in print and online, so a new such magazine needs interesting elements to attract readership. The first thing that attracted me at "Phantasmagorium" was its editor, Laird Barron. Since his short stories are something that I cannot easily forget, stories I first read on my favorite yearly collections such as "The Year's Best Fantasy and Horror" and "The Best Horror of the Year" and then in Laird Barron's two personal collections, "The Imago Sequence" and "Occultation", I was very curious to see Laird Barron transit from the talented writer to the editor position in the case of "Phantasmagorium". The second thing was the presence of Paul Tremblay on the second issue's line-up of stories. Paul Tremblay's presence on the magazine it's the second thing that advertise "Phantasmagorium" to me because I discovered it on its second issue, but nonetheless made me curious since Paul Tremblay's "The Little Sleep" was a truly an interesting ride for me. With these in mind there was only one thing left for me to do and that was to experience "Phantasmagorium" on the first hand.
The magazine contains three short stories and two poems. I am not very familiar with poetry, I read and continue to read poems, but only occasionally at best, so I cannot say that I have a lot of experience with it. Still, "Having Sex with Sylvia Plath" by Steve Harris didn't do much for me, while Mike Allen's "Budding" proved to be another species entirely. Steve Harris' "Having Sex with Sylvia Plath" associates the intimate act with a series of visions, some of them interesting, some a little uncomfortable. Especially, when it is something similar with Prometheus' ordeal. Mike Allen's "Budding" is a very short poem, but inversely proportional in quality to its length. It has some very beautiful and unsettling verses.
"Endless Life" by Nadia Bulkin – General Jon Henry Fest, a ruthless and bloody dictator, committed suicide in a hotel room, but when tourists and TV shows come in search of thrills to this room they will discover the haunting ghost of Melanie, a hotel maid who died in the same place. My country experienced in its recent history the overthrown of a dictatorial figure through a bloody revolution and although these are very different events Nadia Bulkin's story contains plenty of similarities with our past and present to ring very true for me. "Endless Life" approaches the human existence under such governance from the perspective of the ruler, but especially from that of the people. Also history plays an important part in the story, with the past becoming distorted with the passing of time, from people starting to forget the horrible events to the newer generation that see them as mere entries in the history books.
"Almost, Majic Man, Posters and Doors that Never Lock" by Chesya Burke – In a small town a strange pandemic breaks loose raising the small community to high psychosis levels. The story will not reveal its every facet, there are layers that remain unreachable to a point. That is what makes Chesya Burke's story a personal experience for every reader. Also, the end of the story will bring the fear that brought hysteria to the small town on a new level, while at the same time opens a new and surprising dimension for the main character.
"House of Windows" by Paul Tremblay – Overnight a new building appears next to the public library and after some time it begins to grow on its own while in other places around the city similar buildings spring forth. "House of Windows" is a weird story full of deeper meanings. It is an urban and social comment in which lines and boundaries begin to blur and disappear. Very much the same with things from our modern society that seem to grow on their own accord, only they are not as visible as the one in Paul Tremblay's story.
Despite reading "Phantasmagorium" almost breathlessly I did have a problem with this new magazine. Just above its title can be found "The Horror quarterly publication" statement, but that buries plenty of very good things under a label that lately proves to become more and more a misconception. The horror label drives readers away although it stretched its limits of inflicting terror just for fear or shock sake. That is why I regret "Phantasmagorium" cover statement, because the issue I read will not cause horror to any reader through shocking images, but instead will offer plenty of reasons for reflection and thought. I do know that it still nudges and probes my mind.
Posted by Mihai A. at 12:30 PM

redpajama_set_name: RedPajamaCommonCrawl


Lochee United make the short trip to meet Broughty Athletic for our next Super League fixture. The Fed have been on fire this season winning all their league and cup matches to date. Lochee have done likewise so something has to give in this game. Whatever the result the league won't be won or lost at this stage of the season despite what's being reported in some quarters. With a full squad bar Kevin Buchan the manager has some decisions to make. The match kicks off at 2.30pm....Picture courtesy of Chris Ritchie, Connor Birse scoring his first goal and our second last week against Downfield.


text:
Monday's Monument: Battle of Nashville Peace Monument, Nashville, Tennessee
by Susan | Dec 14, 2020 | Monuments
The Ladies Battlefield Association commissioned Italian artist Guiseppe Moretti for this monument, dedicated on Armistice Day 1927, to all those who fought during the 1864 Battle of Nashville. The marble obelisk and angel were destroyed in the tornadoes of 1974; the...
Monday's Monument: Children's Holocaust (Paper Clip) Memorial, Whitwell, Tennessee
by Susan | Sep 28, 2020 | Monuments
In 1998 a Whitwell Middle School History class discussing World War II learned that six million Jews were slaughtered in the Nazi camps. A student asked how big six million is; another student read that people from Norway wore paperclips as a symbol of resistance...
Monday's Monument: Clinton 12: Walking Into History, Clinton, Tennessee
by Susan | May 11, 2020 | Monuments
On August 27, 1956, twelve African American young people from Clinton, Tennessee, became the first students to desegregate a public high school in the American South. This was a year before the more famous integration of Little Rock High School in Arkansas. Black...
Africa (10) Alabama (4) Arkansas (3) Asia (14) Australia (4) Austria (4) Brazil (3) California (16) campus (21) Canada (10) Caribbean (3) Central America (3) Colorado (6) Czech Republic (4) England (25) Europe (119) Florida (3) France (12) Georgia (4) Germany (19) Hungary (3) Illinois (9) Massachusetts (8) Mexico (5) Michigan (4) Mississippi (3) New Jersey (5) New York (20) New Zealand (5) North America (18) North Carolina (4) Norway (3) Ohio (3) Oregon (3) Pennsylvania (9) Republic of Ireland (7) South Africa (5) South America (6) South Korea (3) Spain (5) Sweden (4) Tennessee (3) Texas (24) USA (178) Washington DC (16)


text:
Die Tour der englischen Cricket-Nationalmannschaft nach Sri Lanka in der Saison 1981/82 fand vom 13. bis zum 21. Februar 1982 statt. Die internationale Cricket-Tour war Bestandteil der Internationalen Cricket-Saison 1981/82 und umfasste einen Test und zwei ODIs. England gewann die Test-Serie 1–0, während die ODI-Serie 1–1 unentschieden endete.

Vorgeschichte
England spielte zuvor eine Tour in Indien, für Sri Lanka war es die erste Tour der Saison.
Es war das erste Aufeinandertreffen der beiden Mannschaften bei einer Tour.

Stadien

Die folgenden Stadien wurden für die Tour als Austragungsort vorgesehen.

Kaderlisten
Die Kaderlisten wurden vor der Tour bekanntgegeben.

One-Day Internationals

Erstes ODI in Colombo

Zweites ODI in Colombo

Test in Colombo

Weblinks
 Die Serie auf Cricinfo

Internationale Cricket-Saison 1981/82
Tour der englischen Cricket-Nationalmannschaft in Sri Lanka
Sportveranstaltung in Colombo


Mom does all the trying on, I sit and photograph her. Until they tell me I'm not allowed to take photos in Kaliyana. Oops.
Though truthfully sometimes even daughters don't get it. Their stuff is sometimes gorgeous, sometimes silly, always different.


text:
package sinalgo.configuration;

import java.awt.Color;
import java.io.PrintStream;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;

import javax.naming.ConfigurationException;

import sinalgo.runtime.Global;
import sinalgo.runtime.Main;
import sinalgo.tools.statistics.Distribution;
import sinalgo.tools.storage.SortableVector;

/**
 * This class provides globally visible constants and access to the custom settings from the
 * configuration file.
 *

 * Most of these constants are project specific and are set through the configuration file
 * of the project when the framework loads the project. They are defined in the framework
 * section of the configuration file.
 *
You should not modify the members of this class directly. Instead change the corresponding
 * values in the configuration file of your project. The values in this class are only used
 * as default values if there is no configuration file.
 *

 * This class also holds the project specific custom fields of the configuration file. They are stored
 * in a lookup table. The key is the concatenation of the enclosing tag-names, separated by slashes.
 */
public class Configuration {

	/**
	 * The version of the release - this is needed especially for bug-tracking
	 */
	public static final String versionString = "0.75.3"; // also change the value in the build.xml file

	/**
	 * The annotation to be used for fields that are included by default
	 * in the configuration file.
	 * The description contains a brief description of this field.
	 */
	@Target(ElementType.FIELD)
	@Retention(RetentionPolicy.RUNTIME)
	public @interface DefaultInConfigFile {
		/** */
		String value();
	}

	/**
	 * The annotation to be used for fields that included optionally
	 * in the configuration file.
	 * The description contains a brief description of this field.
	 */
	@Target(ElementType.FIELD)
	@Retention(RetentionPolicy.RUNTIME)
	public @interface OptionalInConfigFile {
		/** */
		String value();
	}

	/**
	 * An annotation to be attached to the first member in a section
	 * such that other applications may order the annotated members
	 * of this class according to these section info.
	 * The description contains the title of this section.
	 */
	@Target(ElementType.FIELD)
	@Retention(RetentionPolicy.RUNTIME)
	public @interface SectionInConfigFile {
		/** */
		String value();
	}

	/**
	 * Annotation used for private settings in this config file that
	 * are set through setters and getters (i.e. the edgeType)
	 */
	@Target(ElementType.FIELD)
	@Retention(RetentionPolicy.RUNTIME)
	public @interface PrivateInConfigFile {
		/** */
		String value();
	}

	/**
	 * Annotation used for settings in this config file that
	 * contain the name of an implementation. They are displayed
	 * as drop down choices in the project selector, containing
	 * the implementations in the given folder, e.g. 'nodes/edges'
	 * for the edges, or 'models/mobilityModels' for the mobility
	 * models.
	 */
	@Target(ElementType.FIELD)
	@Retention(RetentionPolicy.RUNTIME)
	public @interface ImplementationChoiceInConfigFile {
		/** */
		String value();
	}

	/**
	 * BEGIN of FRAMEWORK-BLOCK
	 *
	 * ATTENTION: DO NOT CHANGE THE VALUES HERE. THESE ARE JUST THE INTERNAL INITIALISAZION VALUES
	 * IF YOU CHANGE THEM, THEY GET OVERWRITTEN BY THE VALUES IN THE SPECIFIED CONFIGURATION XML
	 * FILE.
	 * The project specific Config.xml is the place where you are supposed to change
	 * the values annotated with OverwriteInConfigFile.
	 */

	//-------------------------------------------------------------------------
	// Simulation Area
	//-------------------------------------------------------------------------
	@SectionInConfigFile("Simulation Area")
	@DefaultInConfigFile("Number of dimensions (2 for 2D, 3 for 3D)")
	public static int dimensions = 2;

	/** */
	@DefaultInConfigFile("Length of the deployment field along the x-axis.")
	public static int dimX = 500;

	/** */
	@DefaultInConfigFile("Length of the deployment field along the y-axis.")
	public static int dimY = 500;

	/** */
	@DefaultInConfigFile("Length of the deployment field along the z-axis.")
	public static int dimZ = 500;

	///** */
	//@OptionalInConfigFile("True if the simulation area is connected like a torus.")
	//public static boolean isTorus = false; // this is not yet implemented

	//-------------------------------------------------------------------------
	// Simulation
	//-------------------------------------------------------------------------

	/** */
	@SectionInConfigFile("Simulation")
	@DefaultInConfigFile("Switches between synchronous and asynchronous mode.")
	public static boolean asynchronousMode = false;

	/** */
	@DefaultInConfigFile("If set to true, the runtime obtains for each node a new\n" +
	                       "position from the mobility model at the beginning of each\n" +
	                       "round. This flag needs to be turned on if the chosen \n" +
	                       "mobility model of any node may change the node's position.\n" +
	                       "Set this flag to FALSE for static graphs whose nodes do never\n" +
	                       "change their position to increase performance.")
	public static boolean mobility = true;

	/** */
	@DefaultInConfigFile("If set to true, the chosen interference model is called at the\n" +
	                       "end of every round to test for interferring packets.\n" +
	                       "To increase performance, set this flag to FALSE if you do not\n" +
                         "consider interference.")
	public static boolean interference = true;

	/** */
	@DefaultInConfigFile("Set this flag to true if interference only decreases if\n" +
	                     "fewer messages are being sent and increases if more messages\n" +
	                     "are being sent.\n" +
	                     "If this flag is NOT set, interference for all messages currently\n" +
	                     "being sent is reevaluated whenever a new message is being sent, and\n" +
	                     "whenever a message stops being sent. When this flag is set,\n" +
	                     "interference tests are reduced to a minimum, using the additivity\n" +
	                     "property.\n" +
	                     "This flag only affects the asynchronous mode. In synchronous mode,\n" +
	                     "interference is checked exactly once for every message in every round.")
	public static boolean interferenceIsAdditive = true;

	/** */
	@DefaultInConfigFile("Set this flag to true if a node can receive messages while\n" +
	                     "it is sending messages itself, otherwise to false. This flag\n" +
	                     "is only relevant if interference is turned on, and it must be\n" +
	                     "handled properly in the used interference model.")
	public static boolean canReceiveWhileSending = true;

	/** */
	@DefaultInConfigFile("Set this flag to true if a node can receive multiple messages\n" +
	                     "in parallel, otherwise to false. When set to false, concurrent\n" +
	                     "packets are all dropped. This flag is only relevant if\n" +
	                     "interference is turned on, and it must be handled properly in\n" +
	                     "the used interference model.")
	public static boolean canReceiveMultiplePacketsInParallel = true;

	/**
	 * The type of the edge to be created in the edge factory.
	 * This field is private, but has a setter and getter method.
	 */
	@ImplementationChoiceInConfigFile("nodes/edges")
	@PrivateInConfigFile("The type of the edges with which nodes are connected.")
	private static String edgeType = "Edge";

	/** */
	@DefaultInConfigFile("If set to true, the application exits as soon as the\n" +
	                       "termination criteria is met. This flag only affects\n" +
	                       "the GUI mode.")
	public static boolean exitOnTerminationInGUI = false;

	/** */
	@DefaultInConfigFile("If set true, in asynchronous mode the connections are initialized\n" +
			"before the first event executes. Note that this flag is useless in synchronous mode\n" +
			"as the connections are updated in every step anyway.")
	public static boolean initializeConnectionsOnStartup = false;

	/** */
	@DefaultInConfigFile("Defines how often the GUI is updated. The GUI is\n" +
                       "redrawn after every refreshRate-th round.")
	public static int refreshRate = 1;

	/** */
	@DefaultInConfigFile("If set to true, the framework will inform a sender whenever \n" +
	                     "a unicast message is dropped. In synchronous mode, the sender \n" +
	                     "is informed in the round after the message should have arrived, and \n" +
	                     "immediately upon arrival in asynchronous mode.")
	public static boolean generateNAckMessages = false;

	/** */
	@DefaultInConfigFile("This flag only affects the asynchronous simulation mode. \n" +
	                     "When set to true, the framework calls handleEmptyEventQueue \n" +
	                     "on the project specific CustomGlobal whenever the event queue \n" +
	                     "becomes empty.")
	public static boolean handleEmptyEventQueue = true;

	/** */
	@DefaultInConfigFile("The java-command used to start the simulation process.\n" +
	                     "E.g. 'java', 'nice -n 19 java', 'time java'\n" +
	                     "This command should NOT contain the -Xmx flag, nor set\n" +
	                     "the classpath of java.")
	public static String javaCmd = "java";

	/** */
	@DefaultInConfigFile("Maximum memory the Java VM is allowed to use (in MB)")
	public static int javaVMmaxMem = 500;

	//-------------------------------------------------------------------------
	// Seed for random number generator
	//-------------------------------------------------------------------------

	/** */
	@SectionInConfigFile("Random number generators")
	@DefaultInConfigFile("If set to true, the random number generators of the\n" +
                       "framework use the same seed as in the previous run.")
  public static boolean useSameSeedAsInPreviousRun = false;

	@DefaultInConfigFile("If set to true, and useSameSeedAsInPreviousRun is set to false, \n" +
	                     "the random number generators of the\n" +
	                     "framework uses the specified fixed seed.")
	public static boolean useFixedSeed = false;

	/** */
	@DefaultInConfigFile("The seed to be used by the random number generators\n" +
		                   "if useFixedSeed is set to true.")
	public static long fixedSeed = 77654767;

	//-------------------------------------------------------------------------
	// Logging
	//-------------------------------------------------------------------------

	/** */
	@SectionInConfigFile("Logging")
	@DefaultInConfigFile("Name of the default log file, used by the system,\n" +
	                       "but also for use by the end-user. (This log file\n" +
	                       "is stored under sinalgo.runtime.Global.log.)")
	public static String logFileName = "logfile.txt";

	/** */
	@DefaultInConfigFile("Redirects the default log file to the console.\n" +
	                       "No logfile will be created if set to true.")
	public static boolean outputToConsole = true;

	/** */
	@DefaultInConfigFile("Indicates whether all log-files of the current simulation \n" +
	                       "are stored in a new directory. The name of the new directory\n" +
	                       "is given by the string-representation of the date\n" +
	                       "when the simulation starts.")
	public static boolean logToTimeDirectory = true;

	/** */
	@DefaultInConfigFile("If set to true, the system configuration is written to\n" +
	                       "the default log file after the application has been started.")
	public static boolean logConfiguration = true;

	/** */
	@DefaultInConfigFile("If set to true, the log files are flushed every time\n" +
	                       "a new log is added.")
	public static boolean eagerFlush = false;

	//-------------------------------------------------------------------------
	// GUI
	//-------------------------------------------------------------------------

	/** */
	@SectionInConfigFile("GUI")
	@DefaultInConfigFile("If true, the application shows an extended control panel.")
	public static boolean extendedControl = true;

	/** */
	@DefaultInConfigFile("If true, the graph edges are drawn as directed arrows,\n otherwise simple lines.")
	public static boolean drawArrows = false;

	/** */
	// @OverwriteInConfigFile("If true, draw ruler along the axes of the graph")
	public static boolean drawRulers = true;

	/** */
	@OptionalInConfigFile("Fraction of the old and new zoom values for a zoom step.")
	public static double zoomStep = 1.2;

	/** */
	@OptionalInConfigFile("Fraction of the old and new zoom values for a zoom \n" +
	                      "step when zooming with the mouse wheel.")
	public static double wheelZoomStep = 1.05;

	/** */
	@OptionalInConfigFile("The minimum required zoom")
	public static double minZoomFactor = 0.05;

	/** */
	@OptionalInConfigFile("If set to true, the nodes are ordered according to their \n" +
	                      "elevation before drawing, such that nodes closer to the \n" +
	                      "viewer are drawn on top. This setting only applies to 3D.")
	public static boolean draw3DGraphNodesInProperOrder = true;

	/** */
	@OptionalInConfigFile("If set to true and in 3D mode, the cube is drawn\n" +
	                      "with perspective.")
	public static boolean usePerspectiveView = true;

	/** */
	@OptionalInConfigFile("Factor that defines the distance of the observer from the cube\n" +
			                  "when useing the perspective view in 3D. Default: 30")
	public static int perspectiveViewDistance = 40;

  //-------------------------------------------------------------------------
	// Background Map for GUI
	//-------------------------------------------------------------------------

	/** */
	@SectionInConfigFile("Background map in 2D")
	@DefaultInConfigFile("If set to true, the background of a 2D simulation is colored\n" +
	                       "according to a map, specified in a map-file, specified\n" +
	                       "by the field map")
	public static boolean useMap = false;

	/** */
	@DefaultInConfigFile("In 2D, the background can be colored depending on a map file.\n" +
	                        "This field contains the file name for this map, which is supposed\n" +
	                        "to be located in the source folder of the current project.\n" +
	                        "The map is only painted if useMap is set to true.")
	public static String map = "Map.mp";

	//-------------------------------------------------------------------------
	// The models that are selected by default.
	//-------------------------------------------------------------------------
	@SectionInConfigFile("Models")
	@ImplementationChoiceInConfigFile("models/messageTransmissionModels")
	@OptionalInConfigFile("The message transmission model used when none is specified")
	public static String DefaultMessageTransmissionModel = "ConstantTime";

	/** */
	@ImplementationChoiceInConfigFile("models/connectivityModels")
	@OptionalInConfigFile("Default connectivity model used when none is specified")
	public static String DefaultConnectivityModel = "UDG";

	/** */
	@ImplementationChoiceInConfigFile("models/distributionModels")
	@OptionalInConfigFile("Default distribution model used when none is specified")
	public static String DefaultDistributionModel = "Random";

	/** */
	@ImplementationChoiceInConfigFile("models/interferenceModels")
	@OptionalInConfigFile("Default interference model used when none is specified")
	public static String DefaultInterferenceModel = "NoInterference";

	/** */
	@ImplementationChoiceInConfigFile("models/mobilityModels")
	@OptionalInConfigFile("Default mobility model used when none is specified")
	public static String DefaultMobilityModel = "NoMobility";

	/** */
	@ImplementationChoiceInConfigFile("models/reliabilityModels")
	@OptionalInConfigFile("Default reliability model used when none is specified")
	public static String DefaultReliabilityModel = "ReliableDelivery";

	/** */
	@ImplementationChoiceInConfigFile("nodes/nodeImplementations")
	@OptionalInConfigFile("Default node implementation used when none is specified")
	public static String DefaultNodeImplementation = "DummyNode";

	/** */
	@OptionalInConfigFile("Show the models implemented by all projects in the drop\n" +
	                      "down options. When set to false, only the models by the\n" +
	                      "selected project and the default project are shown.")
	public static boolean showModelsOfAllProjects = false;

	//-------------------------------------------------------------------------
	// The default transformation and node collection implementations for the 2D / 3D case
	//-------------------------------------------------------------------------

	/** */
	@SectionInConfigFile("Node storage, position transformation")
	@OptionalInConfigFile("Transformation implementation for 2D. (This is\n" +
	                      "used to translate between the logic positions used by\n" +
	                      "the simulation to the 2D coordinate system used by the\n" +
	                      "GUI to display the graph)")
	public static String guiPositionTransformation2D = "sinalgo.gui.transformation.Transformation2D";

	/** */
	@OptionalInConfigFile("Transformation implementation for 3D. (This is\n" +
	                      "used to translate between the logic positions used by\n" +
	                      "the simulation to the 2D coordinate system used by the\n" +
	                      "GUI to display the graph)")
	public static String guiPositionTransformation3D = "sinalgo.gui.transformation.Transformation3D";

	/** */
	@OptionalInConfigFile("Node collection implementation for 2D.")
	public static String nodeCollection2D = "sinalgo.runtime.nodeCollection.Geometric2DNodeCollection";

	/** */
	@OptionalInConfigFile("Node collection implementation for 3D.")
	public static String nodeCollection3D = "sinalgo.runtime.nodeCollection.Geometric3DNodeCollection";

	//-------------------------------------------------------------------------
	// Export Settings
	//-------------------------------------------------------------------------
	/** */
	@SectionInConfigFile("Export Settings")
	@OptionalInConfigFile("EPS 2 PDF command:\n" +
	                      "This is the command that is used to convert an EPS file \n" +
	                      "into a PDF file. You can use the following parameters:\n" +
	                      "  %s is the complete path from the root folder of the\n" +
	                      "     framework to the SOURCE file (the eps)\n" +
	                      "  %t is the complete path from the root folder of the\n" +
	                      "     framework to the TARGET file (the pdf)\n" +
	                      "These placeholders are set by the framework.\n" +
	                      "Example:\n" +
	                      "  'epstopdf %s')")
	public static String epsToPdfCommand = "epstopdf %s";

	/** */
	@OptionalInConfigFile("Enables the drawing of the bounding box of the deployment to EPS/PDF.")
	public static boolean epsDrawDeploymentAreaBoundingBox = true;

	/** */
	@OptionalInConfigFile("Indicates whether the background in the ps should be\n " +
	                      "white or gray.\n " +
	                      "The gray version is easier to understand (especially in 3D)\n" +
	                      "but the white one should be more useful to be imported in reports." + "")
	public static boolean epsDrawBackgroundWhite = true;

	//-------------------------------------------------------------------------
	// Diverse
	//-------------------------------------------------------------------------
	/** */
	@SectionInConfigFile("Animation Settings")
	@OptionalInConfigFile("Draw an envelope for each message that is being sent")
	public static boolean showMessageAnimations = false;

	/** */
	@OptionalInConfigFile("Width of the envelope (when the message animation is enabled)")
	public static double messageAnimationEnvelopeWidth = 30;

	/** */
	@OptionalInConfigFile("Height of the envelope (when the message animation is enabled)")
	public static double messageAnimationEnvelopeHeight = 20;

	/** */
	@OptionalInConfigFile("Color of the envelope (when the message animation is enabled)")
	public static Color messageAnimationEnvelopeColor = Color.YELLOW;

	//-------------------------------------------------------------------------
	// Diverse
	//-------------------------------------------------------------------------
	/** */
	@SectionInConfigFile("Diverse Settings")
	@OptionalInConfigFile("Show hints on how to further optimize the simulation when\n" +
	                      "some parameters seem not to be set optimally.")
	public static boolean showOptimizationHints = true;

	/** */
	@OptionalInConfigFile("Indicates whether the edges are drawn in the default\n" +
	                      "draw implementation for the graph.")
	public static boolean drawEdges = true;

	/** */
	@OptionalInConfigFile("Indicates whether the nodes are drawn in the default\n" +
	                      "draw implementation for the graph.")
	public static boolean drawNodes = true;

	/** */
	@OptionalInConfigFile("The number of future events that are shown in the control\n" +
			"panel")
	public static int shownEventQueueSize = 10;

	/** */
	@OptionalInConfigFile("Height of the output text field in pixels.")
	public static int outputTextFieldHeight = 200;

	/** */
	@OptionalInConfigFile("The length of the arrows. This length is multiplied by the current " +
	                      "zoomLevel.")
	public static int arrowLength = 8;

	/** */
	@OptionalInConfigFile("The width of the arrows. This width is multiplied by the current " +
	                      "zoomLevel.")
	public static int arrowWidth = 2;

	/** */
	@OptionalInConfigFile("The dsfault value of the rounds field.")
	public static int defaultRoundNumber = 1;

	/**
	 * Indicates whether the three plotted frame lines are also exported to the eps as a dotted line.
	 */
	//public static final boolean drawFrameDotted = false;

	/*************************************************************************************************************
	 * END of FRAMEWORK-BLOCK
	 *************************************************************************************************************/

	//-------------------------------------------------------------------------
	// Edge pool stuff
	//-------------------------------------------------------------------------

	/**
	 * A boolean indicating whether the type of the edges has changed. This is used that we can get rid
	 * of the reflection, if the same type of edges has to be created again.
	 *

	 * Note that this member MUST NOT have any annotations!
	 */
	private static boolean edgeTypeChanged = true;

	/**
	 * The short name of the edge (e.g. Edge, myProject:MyEdge)
	 */
	private static String edgeTypeShortName = "";

	/**
	 * @return Whether the edge type has changed.
	 */
	public static boolean hasEdgeTypeChanged() {
		return edgeTypeChanged;
	}

	/**
	 * Sets the member edgeTypeChanged, which indicates whether the edge type
	 * has been changed, but the edge factory has not yet reacted to the change.
	 * @param changed
	 */
	public static void setEdgeTypeChanged(boolean changed) {
		edgeTypeChanged = changed;
	}

	/**
	 * This method sets the type of the edge to create. It also sets the edgeTypeChanged flag.
	 *
	 * @param selectedType The name of the type to set the type to.
	 */
	public static void setEdgeType(String selectedType){
		edgeTypeShortName = selectedType;
		if(selectedType.compareTo("Edge") == 0) { // the default edge from the framework
			edgeType = "sinalgo.nodes.edges.Edge";
		}
		else if(selectedType.compareTo("BidirectionalEdge") == 0) { // the bidirectional edge from the framework
			edgeType = "sinalgo.nodes.edges.BidirectionalEdge";
		}
		else if(selectedType.contains(":")) { // edge specification of the form project:edgeName
			String[] modelParts = selectedType.split(":");
			edgeType = Configuration.userProjectsPath+"."+modelParts[0]+".nodes.edges."+modelParts[1];
		}
		else if(!selectedType.contains(".")){ // just the name of an edge (without '.') -> from the default project
			edgeType = Configuration.defaultProjectPath+".nodes.edges."+selectedType;
		}
		else { // the edge is given already in explicit form
			edgeType = selectedType;
			edgeTypeShortName = Global.toShortName(edgeType);
		}
		edgeTypeChanged = true;
	}

	/**
	 * This method returns the current type of the edges.
	 *
	 * @return The type of the Edges.
	 */
	public static String getEdgeType(){
		return edgeType;
	}

	/**
	 * @return
	 */
	public static String getEdgeTypeShortName() {
		return edgeTypeShortName;
	}

	//-------------------------------------------------------------------------
	// Setters and getters for objects
	// There is an assign() and a getText() method that needs to be implemented
	// for each object (except the String)
	//-------------------------------------------------------------------------

	private static Object textToObject(Class<?> c, String text) throws ConfigurationException {
		if(c.equals(String.class)) {
			return text;
		}
		if(c.equals(java.awt.Color.class)) {
			// try if it's the name of a system color, e.g. yellow, red, black, ...
			try {
				Field f = Color.class.getDeclaredField(text.toLowerCase());
				return (Color) f.get(null);
			} catch(Throwable t) {
			}
			// otherwise, assume that its of the form r=RR,g=GG,b=BB
			String[] list = text.split("[^0123456789]");
			String[] colors = new String[3];
			// move the non-empty entries to the beginning of the list
			int offset = 0;
			for(String s : list) {
				if(!s.equals("")) {
					colors[offset++] = s;
					if(offset > 2) {
						break;
					}
				}
			}
			if(offset < 3) {
				throw new ConfigurationException("Invalid color description (" + text + ") : The description is expected to" +
						  " be the name of a color (which is a member of java.awt.Color), or of the form" +
						  " r=255,g=255,b=0");
			}

			try {
				int r = Integer.parseInt(colors[0]);
				int g = Integer.parseInt(colors[1]);
				int b = Integer.parseInt(colors[2]);
				return new Color(r,g,b);
			} catch(NumberFormatException e) {
				throw new ConfigurationException("Invalid color description (" + text + ") : The description is expected to" +
						  " be the name of a color (which is a member of java.awt.Color), or of the form" +
						  " r=255,g=255,b=0");
			} catch(IllegalArgumentException e) {
				throw new ConfigurationException("Invalid color description (" + text + ") : The description is expected to" +
						  " be the name of a color (which is a member of java.awt.Color), or of the form" +
						  " r=255,g=255,b=0. The values for each color must be in the range 0..255.");
			}
		}

		throw new ConfigurationException("In order to use configuration entries of type " + c.getClass().getName() +
				"\n" + "you need to implement the Configuration.assign(...) method for this class.");
	}

	/**
	 * This method may also be called with the primitive types
	 * @param o
	 * @return A textual representation for the given object
	 */
	public static String getConfigurationText(Object o) {
		if(o instanceof String) {
			return o.toString();
		}
		if(o instanceof java.awt.Color) {
			Color c = (Color) o;
			return "r=" + c.getRed() + ",g=" + c.getGreen() + ",b=" + c.getBlue();
		}
		return o.toString();
	}

	//-------------------------------------------------------------------------

	/**
	 * The hash map, where the parameters from the specified xml file are stored. They can be accessed by the
	 * get method of the HashMap. The key is the name together with all the nested tags from custom to the
	 * value itself.
	 * For example, if you have the following XML entries:

	 * <UDG><Sample><Factor value="7"></Factor></Sample></UDG>
	 *

	 * Then you can access it by calling 'String value = paramters.get("UDG/Sample/Factor");'. This will result
	 * in the String 'value' to be "7".
	*/
	private static HashMap<String, String> parameters = new HashMap<String, String>();

	/**
	 * Adds a property entry to the list of properties.
	 * @param key The key of the property, which is converted to lower-case.
	 * @param property The value of the property
	 */
	public static void putPropertyEntry(String key, String property) {
		parameters.put(key.toLowerCase(), property);
	}

	/**
	 * Retrieves an entry of the configuration file given the corresponding key.
	 *

	 * The key is first converted to lower-case.
	 * @param key The key to the configuration file entry, which is case-insensitive.
	 * @return The configuration file entry corresponding to the entry.
	 * @throws CorruptConfigurationEntryException If no entry is associated with the key.
	 */
	public static String getStringParameter(String key) throws CorruptConfigurationEntryException {
		key = key.toLowerCase();
		if(parameters.containsKey(key)) {
			return parameters.get(key);
		} else {
			throw new CorruptConfigurationEntryException("Missing entry in the configuration file: An entry for the key '"
			                                             + key + "' is missing in the config file of project '"+Global.projectName+"'.");
		}
	}

	/**
	 * Tests whether the configuration file had a custom entry with the given key.
	 *

	 * Note: The method also returns true if the user has assigned a value to the key
	 * using the overwrite flag.
	 * @param key The key of the entry, which is first converted to lower case.
	 * @return true if there is an entry for this key, otherwise false.
	 */
	public static boolean hasParameter(String key) {
		return parameters.containsKey(key.toLowerCase());
	}

	/**
	 * Retrieves an entry of the configuration file corresponding to the given key and converts it to
	 * a double value.
	 * @param key The key of the configuration entry, which is first converted to lower case.
	 * @return The entry in the configuration file corresponding to the key, converted to a double.
	 * @throws CorruptConfigurationEntryException If no entry is associated with the key or the entry cannot be converted to a double.
	 */
	public static double getDoubleParameter(String key) throws CorruptConfigurationEntryException {
		key = key.toLowerCase();
		if(parameters.containsKey(key)) {
			try {
				return Double.parseDouble(parameters.get(key));
			} catch(NumberFormatException e) {
				throw new CorruptConfigurationEntryException("The entry '" + key + "' in the configuration file cannot be converted to a double value.");
			}
		} else {
			throw new CorruptConfigurationEntryException("Missing entry in the configuration file: An entry for the key '"
					+ key + "' is missing.");
		}
	}

	/**
	 * Retrieves an entry of the configuration file corresponding to the given key and converts it to
	 * an integer value.
	 * @param key The key of the configuration entry, which is first converted to lower case.
	 * @return The entry in the configuration file corresponding to the key, converted to a integer.
	 * @throws CorruptConfigurationEntryException If no entry is associated with the key or the entry cannot be converted to a integer.
	 */
	public static int getIntegerParameter(String key) throws CorruptConfigurationEntryException {
		key = key.toLowerCase();
		if(parameters.containsKey(key)) {
			try {
				return Integer.parseInt(parameters.get(key));
			} catch(NumberFormatException e) {
				throw new CorruptConfigurationEntryException("The entry '" + key + "' in the configuration file cannot be converted to a integer value.");
			}
		} else {
			throw new CorruptConfigurationEntryException("Missing entry in the configuration file: An entry for the key '"
					+ key + "' is missing.");
		}
	}

	/**
	 * Retrieves an entry of the configuration file corresponding to the given key and converts it to
	 * an boolean value.
	 * @param key The key of the configuration entry, which is first converted to lower case.
	 * @return The entry in the configuration file corresponding to the key, converted to a boolean.
	 * @throws CorruptConfigurationEntryException If no entry is associated with the key.
	 */
	public static boolean getBooleanParameter(String key) throws CorruptConfigurationEntryException {
		key = key.toLowerCase();
		if(parameters.containsKey(key)) {
			return Boolean.parseBoolean(parameters.get(key));
		} else {
			throw new CorruptConfigurationEntryException("Missing entry in the configuration file: An entry for the key '"
					+ key + "' is missing.");
		}
	}

	/**
	 * Retrieves an entry of the configuration file corresponding to the given key and converts it to
	 * a Color object.
	 * @param key The key of the configuration entry, which is first converted to lower case.
	 * @return The entry in the configuration file corresponding to the key, converted to a Color object.
	 * @throws CorruptConfigurationEntryException If no entry is associated with the key or the entry
	 * is not a valid color name (a static Color member of the java.awt.Color class).
	 */
	public static Color getColorParameter(String key) throws CorruptConfigurationEntryException {
		key = key.toLowerCase();
		if(!parameters.containsKey(key)) {
			throw new CorruptConfigurationEntryException("Missing entry in the configuration file: An entry for the key '"
					+ key + "' is missing.");
		}
		String color = parameters.get(key);
		try {
			Field f = Color.class.getDeclaredField(color.toLowerCase());
			return (Color) f.get(null);
		} catch(Throwable t) {
			throw new CorruptConfigurationEntryException("Invalid color: '" + color + "' specified by the configuration entry" + key +
			"\nValid color names are the static color members of the java.awt.Color class.");
		}
	}

	/************************************************************************************************
	 * BEGIN of ADDITIONAL SETTINGS
	 *
	 * These settings affect the behavior of the simulation framework and
	 * are not contained in the XML-configuration-file. If you want to change
	 * these settings, you can do it directly in this source-file (or add them
	 * yourself to the XML config file.)
	 ************************************************************************************************/

	/**
	 * The directory where the logfiles are stored.
	 */
	public static final String logFileDirectory = "logs";

	/**
	 * The name of this application.
	 */
	public final static String appName = "SINALGO";

	/**
	 * The path where the default project is stored.
	 */
	public static final String defaultProjectPath = "projects.defaultProject";

	/**
	 * The directory where the default project is stored.
	 */
	public static final String defaultProjectDir = "projects/defaultProject";

	/**
	 * The path where user-specific projects are stored. This path has to be postfixed with
	 * the users project name.
	 */
	public static final String userProjectsPath = "projects";
	/**
	 * The directory where user-specific projects are stored. This path has to be postfixed with
	 * the users project name.
	 */
	public static final String userProjectDir = "projects";

	/**
	 * The directory where the source tree starts.
	 */
	public static final String sourceDirPrefix = "src";

	/**
	 * The directory where the project tree starts in the source dir.
	 */
	public static final String projectDirInSourceFolder = "projects";

	/**
	 * The name of the description file in the project folder.
	 */
	public static final String descriptionFileName = "description.txt";

	/**
	 * The name of the description file in the project folder.
	 */
	public static final String configfileFileName = "Config.xml";

	/**
	 * The directory where the class files are located.
	 */
	public static final String binaryDir = "binaries/bin";

	/**
	 * The directory where the images are stored.
	 * Remember to use the ClassLoader.getResource() method to
	 * map the file name to a url, such that the images can be
	 * accessed when they are stored in a jar file.
	 */
	public static final String imageDir = "sinalgo/images/";

	/**
	 * A semicolon separated list of folder-names that should not
	 * be considered as user-projects
	 */
	public static final String nonUserProjectDirNames = "defaultProject;template;CVS";

	/**
	 * Assigns a value to the configuration file. This method should only be called
	 * during initialization of the framework.
	 *

	 * This method terminates with a fatal error upon any failure.
	 * @param fieldName The name (case sensitive) of the field to be assigned
	 * @param value The value (in textual string format) to assign to the field
	 */
	public static void setFrameworkConfigurationEntry(String fieldName, String value) {
		if(fieldName.equals("edgeType")) { // special case for the 'edgeType'
			Configuration.setEdgeType(value);
		}	else {
			Field field = null;
			try{
				field = Configuration.class.getField(fieldName);

				if(!Modifier.isPublic(field.getModifiers())) {
					Main.fatalError("Error while parsing the configuration file: The entry '" +
					                fieldName + "' in Configuration.java is not public.");
				}
				if(!Modifier.isStatic(field.getModifiers())) {
					Main.fatalError("Error while parsing the configuration file: The entry '" +
					                fieldName +	"' in Configuration.java is not static.");
				}

				// Integer
				if(field.getType() == int.class){
					try {
						field.setInt(null, Integer.parseInt(value));
					} catch(NumberFormatException ex) {
						Main.fatalError("Error while parsing the specified parameters: Cannot convert '" +
						                value+ "' to an integer value for the configuration entry '" + fieldName + "'.");
					}
				}
				// Boolean
				else if(field.getType() == boolean.class){
					// Parse boolean manually, as Boolean.parseBoolean(String) converts anything not 'false' to true.
					if(value.compareTo("true") == 0){
						field.setBoolean(null, true);
					}	else if(value.compareTo("false") == 0){
						field.setBoolean(null, false);
					} else {
						Main.fatalError("Error while parsing the specified parameters: Cannot convert '" + value +
						                "' to a boolean value for the configuration entry '" + fieldName + "'.");
					}
				}
				// Long
				else if(field.getType() == long.class) {
					try {
						field.setLong(null, Long.parseLong(value));
					} catch(NumberFormatException ex) {
						Main.fatalError("Error while parsing the specified parameters: Cannot convert '" +
						                value+ "' to a long value for the configuration entry '" + fieldName + "'.");
					}
				}
				//double
				else if(field.getType() == double.class){
					try {
						field.setDouble(null, Double.parseDouble(value));
					} catch(NumberFormatException ex) {
						Main.fatalError("Error while parsing the specified parameters: Cannot convert '" +
						                value+ "' to a double value for the configuration entry '" + fieldName + "'.");
					}
				}
				else {
					try {
						field.set(null, textToObject(field.getType(), value));
					} catch(Exception e){
						Main.fatalError("Error while parsing the configuration file: Cannot set the field '" +
								fieldName + "' of type '" + field.getType().getName() + "' to '" +
								value + "'." + "\n\n" + e.getMessage());
					}
				}
			} catch (NumberFormatException e){
				Main.fatalError("Error while parsing the configuration file: Cannot set the field '" +
				                fieldName + "' of type '" + field.getType().getName() + "' to '" +
				                value + "'. Cannot convert the given value to the desired type:\n" + e);
			}	catch (SecurityException e) {
				Main.fatalError("Error while parsing the configuration file: Cannot set the field '" +
				                fieldName + "' to '" + value + "':\n" + e);
			} catch (NoSuchFieldException e) {
				Main.fatalError("Invalid configuration file: " +
				                "The field '" + fieldName + "' is not a valid framework entry as it is not " +
				                "contained in Configuration.java. " +
				                "Check the spelling of this field or " + "move it to the custom entries.");

			} catch (IllegalArgumentException e) {
				Main.fatalError("Error while parsing the configuration file: Cannot set the field '" +
				                fieldName + "' to '" + value + "':\n" + e);
			}	catch (IllegalAccessException e) {
				Main.fatalError("Error while parsing the configuration file: Cannot set the field '" +
				                fieldName + "' to '" + value + "':\n" + e);
			}
		}
	}

	/**
	 * Prints the entire configuration of the framework, including the custom-fields of the
	 * xml configuration file to the given stream.
	 * @param ps A print-stream to print the configuration to
	 */
	public static void printConfiguration(PrintStream ps) {

		// Print the system environment settings
		ps.println("\n------------------------------------------------------\n" +
		           "General Config\n" +
		           "------------------------------------------------------"
		           );
		// Command Line Args
		ps.print("Command Line arguments: ");
		if(Main.cmdLineArgs != null) {
			for(String entry : Main.cmdLineArgs) {
				ps.print(entry + " ");
			}
		}
		ps.println();
		// The VM arguments
		RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
		List<String> list = bean.getInputArguments();
		ps.print("Java VM arguments: ");
		for(String entry : list) {
			ps.print(entry + " ");
		}
		ps.println();
		// other VM data
		ps.println("Class path: " + bean.getClassPath());
		// ps.println("Library path: " + bean.getLibraryPath());

		ps.println("------------------------------------------------------\n" +
		           "Configuration settings\n" +
		           "------------------------------------------------------"
		           );
		Field[] fields = Configuration.class.getDeclaredFields();
		for(Field f : fields) {
			try {
				DefaultInConfigFile dan = f.getAnnotation(DefaultInConfigFile.class);
				OptionalInConfigFile oan = f.getAnnotation(OptionalInConfigFile.class);
				SectionInConfigFile san = f.getAnnotation(SectionInConfigFile.class);
				PrivateInConfigFile pan = f.getAnnotation(PrivateInConfigFile.class);
				if(dan != null || oan != null || pan != null) {
					if(san != null) { // print section
						ps.println(" " + san.value());
					}
					ps.println("    " + f.getName() + " = " + getConfigurationText(f.get(null)));
				}
			} catch (IllegalArgumentException e) {
				ps.println(f.getName() + "      ERROR - CANNOT GET THE VALUE OF THIS FIELD.");
			} catch (IllegalAccessException e) {
				ps.println(f.getName() + "      ERROR - CANNOT GET THE VALUE OF THIS FIELD.");
			} catch (NullPointerException e) {
				ps.println(f.getName() + "      ERROR - CANNOT GET THE VALUE OF THIS FIELD. It is probably not static.");
			}
		}
		ps.println("------------------------------------------------------\n" +
		           "Custom settings\n" +
		           "------------------------------------------------------"
		);
		// sort the custom settings
		SortableVector<String> sv = new SortableVector<String>();
		for(Entry<String, String> e :parameters.entrySet()) {
			sv.add(" " + e.getKey() + " = " + e.getValue());
		}
		sv.sort(); // sorts ascending
		for(String s : sv) {
			ps.println(s);
		}

		ps.println("------------------------------------------------------\n" +
		           "Seed for Random Number Generators\n" +
		           "------------------------------------------------------"
		);

		if(Configuration.useSameSeedAsInPreviousRun) {
			ps.println(" The same seed as for the previous run: " + Distribution.getSeed());
		} else if(Configuration.useFixedSeed) {
			ps.println(" Fixed seed: " + Distribution.getSeed());
		} else {
			ps.println(" Randomly selected seed: " + Distribution.getSeed());
		}
		ps.println("------------------------------------------------------\n" +
		           "End of settings\n" +
		           "------------------------------------------------------\n"
		);
	}
}


text:
Tiger Woods's days of dominance might be history
Tiger Woods withdrew after nine holes at the Players Championship on Thursday. (Chris O'Meara/Associated Press)
By Tracee Hamilton
Is Tiger Woods finished as a golfer? No. Is he finished as Tiger Woods? Sadly, I think the answer is yes. I don't see how Woods can ever again be as dominant as he once was, before his knee and his personal life fell apart.
When Woods pulled out of the first round of The Players Championship on Thursday after shooting a 42 for nine holes, many fans expressed surprise and dismay. But perhaps the surprise, at least, is misplaced, for two reasons.
First, Woods has always liked to mess with his swing, but as his game gets worse, that obsession gets stronger. It's hard to tell which is the chicken and which is the egg in that vicious cycle.
The other reason is more simple and impossible to control: age. Woods was simply so superb for so long, that it's hard for many to accept that he's 35 years old and being stalked around the course by guys 10 years younger, with healthy knees and stable private lives and without the unending scrutiny of media and fans.
At Sawgrass, he apparently injured his left knee on the first hole, which then impacted his Achilles' tendon, which then impacted his calf. For any other golfer, that news would be worrisome. For Woods, it could be catastrophic. His left knee has long been an issue: He has undergone three arthroscopic knee surgeries over the years (1994, 2002, 2008) and after winning his 14th (and last) major, the 2008 U.S. Open, with a torn ACL and two stress fractures in his left tibia, he needed surgery yet again.
No one doubted then that Woods — with his devotion to the game and his fitness regimen — would be able to rehab the knee and come back as strong as ever. And he managed six wins in 2009.
In fact, in October 2009, Woods had it all: more money than perhaps any athlete in the world in winnings and endorsement deals, a beautiful blonde wife, two adorable children. Oh, and he was widely regarded as the best golfer in the history of the game. He was a real-life Roy Hobbs; when he strode down fairways around the world, people did say, "There goes the best that ever was."
Then came the car wreck, the subsequent revelations of infidelity and sex addiction, highly publicized mistresses and a costly divorce. Woods's life forever changed, and that's on him. He claims to be a much better father in the wake of the incident, and that's commendable.
But perhaps karma isn't quite done with Woods yet. Every person ages differently, but 35 is still not 25, and it may be important to remember that Woods has been swinging a golf club for 33 years.
Maybe his late father should have waited a few years before putting a club in his son's hands, but then maybe he'd never have been the dominant player we watched all these years. Life is full of trade-offs.
Woods has a powerful swing; his devotion to weight-lifting was at first mocked, then copied by the younger generation of golfers. The torque a golf swing puts on a knee is not natural. And Woods's knee is not 35 — with all those procedures, his knee has aged faster than the rest of him.
The good news is that while there was much hand-wringing about Woods's decline leading to the death of golf, the game has moved on during his absences, with a plethora of fist-pumping young stars such as Rory McIlroy, Rickie Fowler and Jason Day clogging the leader boards.
Summer Sundays may not be as much fun, but golf will survive with Tiger Woods being less than Tiger Woods. Whether Tiger Woods can survive it is the tougher question.
Tracee Hamilton Tracee Hamilton came to The Post in 1993 as the Sunday editor in Sports, and has had a number of responsibilities in the 25 years since then, most recently as a digital editor in the Sports blog pod. Follow


text:
Saskatchewan Writers' Guild names U of S student as first ever Youth Poet Laureate
By Cleo Nguyen	 March 14, 2019 in Culture
The first Youth Poet Laureate of the SWG, Alasdair Rees, poses for a photograph in his living room on March 10, 2019.
The Saskatchewan Writers' Guild has appointed its first ever Youth Poet Laureate, Saskatoon Fransaskois artist Alasdair Rees, whose devotion and passion has shown through in the brilliance of both his spoken-word art and written poetry.
Poetry continues to be one of the many forms of art that transcends time. Words possess the capacity to touch what seems to be an infinite audience, Rees explains in an email to the Sheaf regarding the importance of writing.
"The written word allows us to speak through time. It's a technology on which our culture depends, and I suspect it will also play a significant part in getting us out of the ecological and political disasters our global community is currently faced with," Rees said. "So much fear stifles so much creative expression every day, and the world gets cheated of all that beauty."
While students are well versed in academic writing thanks to their studies, the University of Saskatchewan is lucky to also have an impressive number of young writers and poets amidst its creative community, which continues to be vibrant and thriving.
Among them is Rees, an alumnus who graduated with an honours degree in French, who now teaches cultural studies and French courses here at the university.
Aside from his academic life, Rees has an accomplished artistic profile that features works in GUTS, ÖMËGÄ and various other contemporary cultural publications. The publications all have a common theme of offering unique urban perspectives of artists from communities that are often overshadowed by normative narratives. Simultaneously, it challenges the status quo by bringing forth new waves of artists and works that are both curious and compelling.
The first Youth Poet Laureate of the SWG, Alasdair Rees, photographed through a
reflection in his living room mirror, poses for a photograph on March 10, 2019.
Rees is known and credited for his presence in the spoken-word scene as well as having been a former Saskatoon individual poetry slam champion. In 2016, Rees was chosen by the local group Tonight It's Poetry to represent Saskatoon at the Canadian Individual Poetry Slam.
While the university can take pride in its creative undergraduates and alumni, it is the city of Regina that is home to the SWG, a non-profit organization that seeks to showcase and promote Saskatchewan writers while simultaneously acting as their primary advocates and support since 1969.
The SWG has dedicated itself to promoting personal development in writers throughout their literacy careers and enabling broader public access to Saskatchewan writers and their works.
Support for writers is shown in a number of programs facilitated by the SWG through workshops and services such as the mentorship program, the Indigenous mentorship program, a manuscript evaluation service, an annual reading series and province-wide tour — just to name a few.
Rees' title, Youth Poet Laureate, is a recent addition onto the broader framework of the Saskatchewan Poet Laureate Program, which started in 2000.
By adding the position of the Youth Poet Laureate, the organization continues to honour the tradition of the program while simultaneously creating a title that will offer Saskatchewan youths more opportunities to engage and reach out to the provincial community.
Rees has become an ambassador of the SWG, an advocate for the art of poetry and spoken word and an advocate who celebrates the works of fellow poets and spoken-word artists.
Undoubtedly, Rees also did all this prior to achieving the position by contributing his voice to the poetry scene and participating in spaces that promote and uphold virtues of inclusiveness.
However, upon being designated the Youth Poet Laureate, his work now comes with official recognition as stated by the selection committee on the SWG website regarding their impression of Rees.
"His work embraces multiple communities, including Saskatoon's Queer, Fransaskois and visual arts communities… His passion, initiative and commitment to the power of poetry and spoken word [ensure] Alasdair will be a vibrant and energetic Youth Poet Laureate for Saskatchewan."
Rees also offers his own remarks on the incredible opportunity.
"I'm looking forward to sharing my love of language with the people of this place that I love so much," Rees said. "I'm also hopeful that I'll be able to use this platform to elevate some of my favourites among the amazing voices currently writing and performing in the province."
Cleo Nguyen
All photos by: Riley Deacon / Photo
Tags: poetry
Young: A collection of poems by Toria Summerfield
A work of poetry from local singer-songwriter Toria Summerfield.
Youth poetry group gives young people a stage for their art to be heard
From poetry and writing to spoken word, these organizations are giving young people a much needed
Poetry By Amanda Slinger
Haiku #1 A peacock feather Shining iridescent hues Golds, greens, blacks and blues. Haiku #2 A
HMT Entertainment presents a new age of VRcades: The future of social gaming
Gone are the days of grimy arcade tokens. We've entered the age
From poetry and writing to spoken word, these organizations are


text:
Q: How to model data I am attempting to model a specific variable's sensitivity to a feature set. In concrete terms, I am trying to predict the duration (PAUSE_KS) of a letter (KS) within a word. I know that the letter's duration is sensitive to the probability of the word, the probability of the letter itself, and the location of the letter within the word. My data file has fields such as below.
KS  WORD    P_WORD_     P_KS_   INDEX   PAUSE_KS
lt  tilt    0.173       0.016   2       187
th  The     0.01923     0.4299  0       219
er  there   0.043       0.22    2       672
re  altered 0.02        0.016   4       281
lt  alt     0.03        0.010   1       141

How can I go about assessing the forces acting upon this variable? Ultimately, I would like to be able to create an algorithm/model for this.
Any help at all is appreciated. Please feel free to offer edits if the question is not worded clearly.

redpajama_set_name: RedPajamaStackExchange


text:
Changes in Time
Sophie Kerman / May 13, 2013
Briana Zora Libby, Heather Spear, and Chris Little in "Changes in Time". Photo by Rebecca Jean Lawrence Photography.
by SOPHIE KERMAN
For both political and theatrical reasons, the story of gender transition is not told enough. Changing one's gender presentation is by definition a form of theater; a dress can become a costume, and facial hair can transform a bearer of XX chromosomes into someone who is confident walking into the men's bathroom. In addition to the uniqueness of each individual experience of feeling trapped in the wrong body, there are also the high interpersonal stakes of telling friends and family that the awkward girl they knew is gone, replaced by a much more self-assured but somewhat unfamiliar man.
In this world premiere of Changes in Time (actually three short plays about the same character), playwright EB Boatner takes a look at three different stages in the transitioning process, each about 20 years apart. Wishes portrays an uncomfortable moment between two friends at summer camp; Dresses follows the main character Lorraine, now in her mid-30s, as her mother tries to force her into a bridesmaid's dress; and Changes takes places after Laurence has been living as a man for six years.
One of the strongest parts of Boatner's writing is in the way he captures the language and the cultural norms of the 1950's, 1970's, and 1990's; the characters are distinct citizens of their own times. The 20% Theatre Company, under Claire Avitabile's direction, also does an excellent job with the details – everything from the characters' mannerisms to the handling of an old car is carefully thought out to provide a vivid historical setting with minimal scenery.
The three plays, however, are uneven. The standout of the trio was Dresses, both for its crisp writing and for the fine-tuned and nuanced performances by Heather Spear as Lorraine and Muriel Bonertz as Margaret, Lorraine's mother. As Margaret struggles with her child's gender identity, we see generational differences being played out with compassion for both characters' individual points of reference. It is the kind of play where each gesture and glance speaks volumes; more is said in that 30 minutes of theater than in many full-length shows I have seen.
The other two plays fall prey to different flaws. Wishes is cute and has an interesting twist, but doesn't mine its subject matter (gender identity vs sexual orientation) quite enough to achieve real emotional depth. On the other hand, Changes falls prey to a more conventional problem in GLBT theater: as Laurence (in a solid performance by first-time actor Chris Little) confronts his father with his new name and gender presentation, the script gets mired in explanations that, at this point in Twin Cities theater, many viewers might feel they no longer need. (The fact that it is set in a funeral home is particularly unfortunate; Laurence's poor mother seems entirely forgotten in the father-son clash of wills.)
Despite some shortcomings, however, Changes in Time is an interesting and well-executed primer on transgender issues. Those familiar with the trans community may not find the revelations they hope for, but they will find some top-notch theater in Dresses. It makes me hopeful that GLBT theater is, after decades of needing to justify its existence, moving beyond explanations and into the real drama of fashioning an authentic identity in a sometimes hostile environment.
Changes in Time, by EB Boatner, at the Minneapolis Theatre Garage, 711 W Franklin Avenue, Minneapolis, 55405. May 11-25, 2013. Tickets $5-25 sliding scale at www.tctwentypercent.org or 612-227-1188.
May 13, 2013 in Reviews. Tags: 20% Theatre Company, LGBT, Theater, World Premiere
Becoming a Man in 127 EASY Steps
Venus in Fur
← An Iliad
Tesla →


text:
The Top Five Anti-Environment Objectives of ALEC
Finding a greener future
Mrs. Gemstone via Flickr/CC BY-SA 2.0
The American Legislative Exchange Council has at least five "model bills" waiting in the wings to roll back environmental protections for the benefit of polluting industry. ALEC, as you'll recall, is the conservative organization (or "stealth business lobbyist," as the NY Times calls it) that allows corporations to have a direct hand in drafting legislation with state policymakers. That "model" legislation can then be passed onto other states, where it's advocated by other ALEC members.
When major members like Coca Cola, Kraft, and Proctor & Gamble began fleeing the group due to its hand in creating "stand your ground" gun laws, ALEC announced a departure from that legislative arena. It also said it would no longer seek to push voter ID laws. But observers say that it seems to be doubling down in other areas—like the environment. At the behest of its polluting members, ALEC is currently working on model bills that would roll back air pollution protections, shut down renewable energy policies, or otherwise have a deleterious effect on the environment.
Stephen Lacy and Jessica Goad lay out five of ALEC's most potentially destructive anti-environmental objectives over at Climate Progress. Here's the list—for details on each, check out the full report:
Stopping a Price on Carbon
Stripping Targets for Renewable Energy
Turning Over Public Lands to the States
Watering Down Public Disclosure of Fracking Chemicals
Preventing Regulation of Toxic Coal Ash
Again, for the details of each proposal, see Climate Progress.
The American Legislative Exchange Council has at least five "model bills" waiting in the wings to roll back environmental protections for the benefit of polluting industry. Take a look:
No, green lifestyles aren't 'only for the rich'
Lazivores unite: A manifesto for lazy gardening
Extinction Rebellion spreads to North America
Duke University faces community pressure to embrace light rail


Surrounded by the charming atmosphere of Cape Cod, Briarwood is close to all the attractions which have made this part of New England a favorite resort location for years. Cape Cod is noted for its picturesque fishing villages, historic sites, scenic harbors, museums, and the beautiful, unspoiled national seashore. The resort offers the perfect vacation setting filled with fun for the entire family. Enjoy the outdoor pool and tennis courts during the summer months. Beaches are just a short drive away from the resort.


In a medium saucepan over medium heat, combine cranberries, maple syrup, and water. Cook for 5 – 10 minutes or until the cranberries start to pop open.
Add the apple, zest, and juice and simmer for 30 – 35 minutes or until the cranberry sauce has thickened.
Remove from heat, let cool completely and then refrigerate until ready to serve.


Trustees of Derby Public Cemetery were appointed on 1 April 1908 (Government Gazette 10 April 1908). By-laws for the Derby Cemetery were published in the Government Gazette on 8 April 1909. On 24 September 1915 the West Kimberley Road Board was appointed as Trustees of the Derby Public Cemetery Reserve.


text:
Q: Physically based camera values too small I am currently working on a physically based camera model and came across this blog: https://placeholderart.wordpress.com/2014/11/21/implementing-a-physically-based-camera-manual-exposure/
So I tried to implement it myself in OpenGL. I thought of calculating the exposure using the function getSaturationBasedExposure and pass that value to a shader where I will multiply the final color with that value:
float getSaturationBasedExposure(float aperture,
                             float shutterSpeed,
                             float iso)
{
    float l_max = (7800.0f / 65.0f) * Sqr(aperture) / (iso * shutterSpeed);
    return 1.0f / l_max;
}

colorOut = color * exposure;

But the values I get from that function are way too small (like around 0.00025 etc) so I guess I am missunderstanding the returned value of that function.
In the blog a test scene is mentioned in which the scene luminance is around 4000, but I haven't seen a shader implementation working with color range from 0 to 4000+ (not even HDR goes that high, right?).
So could anyone explain me how to apply the calculations correctly to a OpenGL scene or help me understand the meaning behind the calculations?


The only shop I hopped in was the one I work at: Whimsy Cottage.
I worked every day of shop hop and had a lot of fun meeting new people.
My girls came with me to work the first day and helped out by stamping peoples passports. They are so good at entertaining themselves as well as others! Although I'm not sure Em looks so excited in this photo!
We finally received a big shipment of Wool we'd been waiting on and it was so nice to have several people in the shop to help process it. It is so beautiful.
She such a cute, sad little girl.
Have you ever attended a Quilt Shop Hop?


text:
Q: How to mount a host directory into a running docker container I want to mount my usb drive into a running docker instance for manually backup of some files.
I know of the -v feature of docker run, but this creates a new container.
Note: its a nextcloudpi container.

A: You can only change a very limited set of container options after a container starts up.  Options like environment variables and container mounts can only be set during the initial docker run or docker create.  If you want to change these, you need to stop and delete your existing container, and create a new one with the new mount option.
If there's data that you think you need to keep or back up, it should live in some sort of volume mount anyways.  Delete and restart your container and use a -v option to mount a volume on where the data is kept.  The Docker documentation has an example using named volumes with separate backup and restore containers; or you can directly use a host directory and your normal backup solution there.  (Deleting and recreating a container as I suggested in the first paragraph is extremely routine, and this shouldn't involve explicit "backup" and "restore" steps.)
If you have data that's there right now that you can't afford to lose, you can docker cp it out of the container before setting up a more robust storage scheme.

A: As David Maze mentioned, it's almost impossible to change the volume location of an existing container by using normal docker commands.
I found an alternative way that works for me. The main idea is convert the existing container to a new docker image and initialize a new docker container on top of it. Hope works for you too.
# Create a new image from the container
docker commit CONTAINERID NEWIMAGENAME

# Create a new container on the top of the new image
docker run -v HOSTLOCATION:CONTAINERLOCATION NEWIMAGENAME

A: I know the question is from May, but for future searchers:
Create a mounting point on the host filesystem:
sudo mkdir /mnt/usb-drive

Run the docker container using the --mount option and set the "bind propagation" to "shared":
docker run --name mynextcloudpi -it --mount type=bind,source=/mnt/usb-drive,target=/mnt/disk,bind-propagation=shared nextcloudpi

Now you can mount your USB drive to the /mnt/usb-drive directory and it will be mounted to the /mnt/disk location inside the running container.
E.g: sudo mount /dev/sda1 /mnt/usb-drive
Change the /dev/sda1, of course.
More info about bind-propagation: https://docs.docker.com/storage/bind-mounts/#configure-bind-propagation


text:
Tennis Player to Run her First Marathon in New York City
Caroline Wozniacki, well known for her adept skill on the tennis court, surprised fans with a recent announcement of pursing another passion, according to an article completed by CBS Sports. The tennis player, formerly the number one ranking player in the world, announced that she intends to run the New York City Marathon; the event would be her first marathon. As a result of the strenuous run, Wozniacki has already begun training intensively, which doesn't take place until the second of November.
Many may be surprised that Wozniacki would require additional training for the marathon, outside of her already accelerated preparation program for tennis. It is true; she does run quite a bit to prepare herself for matches. However, the article reported that she has never completed a run longer than ten kilometers, which obviously falls short of the demands of a marathon. Therefore, despite her thorough efforts to prepare herself for the upcoming U.S. Open, Wozniacki continues to add to her training schedule, as she has a lot of preparation to attend to before she can hope to be successful in the New York Marathon.
The article did not explain why Wozniacki specifically chose the New York City Marathon as her first choice. However, with the women's final for the U.S. Open scheduled for the eighth of September, perhaps it merely made sense to Wozniacki to stay in New York and continue to contribute to the city's sports endeavors. The article did, however, speculate behind Wozniacki's reasoning for choosing to run the marathon at this specific time. The tennis player was engaged to Rory McIlroy—a golf player also always on the edge of the number one ranking in the world—until he broke off the engagement in late May. Many have speculated that this is what gave Wozniacki the final push to pursue her dream, as a means of distraction. However, the article denounces this theory, as it includes a statement from Wozniacki to the Associated Press, in which she claims that the two events aren't tied at all. To bolster this defense, she claims that her performance in this year's Wimbledon indicated to her that her body was finally ready, and that she could possibly manage a marathon before the end of the year.
Regardless of her motivation, Wozniacki has chosen New York as her ideal marathon setting and has shown further support of the city in her preparations. She tweeted asking for financial support for the charity she's running for—New York based Team for Kids, which features adult runners who donate their winnings towards children living in the city that are in need.


text:
layout: recipe
title: Tomato Mozzarella tarts
from: Better Homes and Gardens
fromurl: http://www.bhg.com/recipe/appetizers-snacks/tomato-and-mozzarella-tarts/
time: 30 minutes
---

##### Ingredients:

* ½ 17.3 ounce package frozen puff pastry sheets (1 sheet), thawed
* 1 ½ tablespoons finely shredded Parmesan cheese
* 3 ounces salted fresh mozzarella cheese, very thinly sliced (8 or 9 slices)
* 1 large roma tomato, thinly sliced (8 or 9 slices)
* Salt and ground black pepper
* Small fresh basil leaves

##### Directions:

1. Preheat oven to 400° F. Line a baking sheet with parchment paper; set aside.
2. On a lightly floured surface, unfold pastry. Cut into 9 squares.
3. Place 1 inch apart on the prepared baking sheet. Bake about 10 minutes or until puffed.
4. Sprinkle rounds with Parmesan cheese; top with mozzarella cheese and tomato slices. Sprinkle with salt and pepper.
5. Bake for 12 to 14 minutes or until pastry is golden brown. Sprinkle tarts with basil. Serve warm. Makes 8 or 9 tarts.


We are delighted that Rick Gekoski has been shortlisted for the Authors Club Best First Novel Award for his debut novel Darke, written at the age of 71. Darke is an acerbically witty tale written in scalding prose, which through a stunningly vivid protagonist confronts some of humanity's greatest and most uncomfortable questions about how we choose to live, and to die.
The winner will be announced by A.L. Kennedy, this year's guest adjudicator, at a dinner at the National Liberal Club: Friday 22 June. Gekoski's second novel, A Long Island Story, will be published this July.
Congratulations to Rick and the other shortlisted authors!


You did what many of us in this chapter of our lives wouldn't dare to try. You are a champion through and through regardless of the score and placement in the tournament. Well done, great and inspiring read.