Olin's consideration of the entire product life cycle, from idea to market, led me towards working for and creating various startups. While each startup was different in the product or service we were designing, the considerations of human-centric design were central to every project. We often worked with our target users to co-design our product, whether that be Olin or middle school students, firefighters, teachers, non-profits or other student startups. In this part of the portfolio, I will walk through a timeline of startups I worked on in my time at Olin, many of which had roots in education in some way.
The following timeline is made up of five separate projects I worked on at Olin College, starting with IdeaTree Design: a startup I worked on starting in my first year, and culminates with a description of my work for Alleyoop: a startup looking to redefine the notion of college preparation beyond traditional academic boundaries in a way that incorporates a social, fun environment. These projects each involved learning some aspect of product creation, and I have focused each section on a specific observation in product creation while providing a general project overview as well.
IdeaTree Design is a startup based out of Olin College's Foundry program that ran in 2007-2008, and best summarized by Erik Kennedy (Olin '10) who also worked on IdeaTree Design with me in his Pecha Kucha video reflection of IdeaTree Design: "IdeaTree is a student-created and run startup design organization that helps student teams engineer design services for non-profit organizations." My involvement with the project was primarily in the summer of 2007, when I worked full-time on the project with Erik Kennedy and Molly Crowther (Olin '09) and I was a part of what must have been the third leadership and organization scheme envisioned for the IdeaTree venture. As it turns out, 80% of the work that was necessary in running IdeaTree was finding exciting, appropriately scoped, and well supported projects from outside non-profits to connect to students, but we spent much of our time focusing on filing for non-profit status, working on funding sources for early projects, among other things. IdeaTree ended in 2008 when an Olin professor started Olin's Sustainability Design Lab, a lab where students could work on meaningful design projects that connected to the real world in some tangible way.
Specific Observation: Project momentum and execution are both more important than clarity and planning in the long term.
In many ways this Olin Faculty + student venture was the elegant solution to the need IdeaTree's original founders had identified of finding real-world design projects for Olin students. If we had focused as a team on working on real projects ourselves, rather than the organizational, financial, and legal requirements of non-profit status and funding, we might have made this discovery ourselves! As Erik describes in his video reflection above, one important lesson from IdeaTree Design was the idea that project momentum is more critical than a clear vision for exactly what your product or service will wind up being. This same build as you go mentality had reshaped the way many (Internet) startups operate nowadays, valuing progress and momentum over complete clarity and understanding. By attempting to plan and script the whole IdeaTree Design organization we overlooked key issues like lack of student time, difficulty of finding non-profit relationships that would work, and other huge barriers that would never have moved IdeaTree from a student venture into an actual firm that might have supported actual alumni involvement as employees, which was the vision for the company at one point.
Central to Olin's educational trajectory is a series of design courses that emphasize the importance of user and environmental understanding in any problem solving or design context. The course User-Oriented Collaborative Design (UOCD) is central to this series of design courses, and is a course all Olin sophomores take where teams follow a user group (in my case: Firefighters) through research and codesign phases, and culminates in the rough specifications for a product or service that would help this user group. Our project was a visual alarm network meant to aid firefighters in what we called the "Flip from Scene to Station." This describes the moments surrounding an incoming dispatch alarm to a station where firefighters drop whatever they're doing, process what their response should be if they're involved, and then react by getting to the scene as fast as they can. Since the station is where firefighters live they might be in the middle of sleeping, showering, preparing meals, or any other number of activities. Few other professions have this abrupt on-off switch built into their day to day lives, and we thought it was an interesting opportunity to explore. Rather than attempt to recreate any sort of reflection about what this course meant for me academically, I've included a visual gallery of the various images and deliverables our team created in UOCD.
If I were to note any specific "product creation" observation from this project it would be an understanding of how to ensure a genuine human-centric perspective is considered when designing a product or service.
and parents begin to get "ohh nothing," or "I dunno…" responses from their children when asked what their school day was like.
In middle school, social dynamics take precedence over classroom material in such a way that the disconnect in technology integration with the way students now engage socially (Facebook, SMS, etc) exacerbates a perceived disconnect in relevancy for classroom learning. Our team spent three months doing research into our middle school user group, reading dozens of education-related books, designing curriculum plans and instructing 9th grade students through Olin's Saturday STEM Academy, attending education/technology conferences and meet ups, visiting and interviewing dozens of local area middle schools as well as local education-oriented non-profit groups. We visited schools ranging from a troubled school gone technology integration success story school called CIS339 in the Bronx to private Massachusetts boarding schools, covering private and public schools in between the two as well. Concurrently with this research and immersion into the problem area we worked to synthesize our findings into a project we could get our heads around as a team. In the end we built an online classroom learning tool called Alight Learning, and far from being a simple yearlong project, we'd build instead the foundation for a highly flexible learning platform that was impossible to complete in the time we had. By the end of the year we'd secured some funding and hired four software development interns, bringing the total of number of people working full time the summer after our project started to seven. I was one of the part-time team members at the time, working full time as a User Experience Designer at Microsoft FUSE Labs. You can see the final output of our project's vision as well as information about our prototype still at AlightLearning.com, though the remaining team members havent actively developed the prototype in over a year. In the near two year length of active research and product development, we designed a working alpha prototype of our platform that was tested in classrooms by some admirably patient and forward-thinking local middle school teachers. If I'm to reflect on a part of the project I wish I could change, it would have been to address formally the issues of a large co-founding team by vocalizing the varying team member expectations for the project. As it turns out divergence in business goals and presumed direction often leads to issues among co-founders, though at the time we didn't know this.
Specific observation: Forcing extreme clarity and depth to a co-founder's definition of their personal expectations for a startup is important; most people who haven't seen a business grow to the point where initial assumptions are strained are likely to overlook differences that can be catastrophic to a team.
In addition to the pitfalls of diverging co-founder expectations, I would also highlight to the need to accept lower thresholds of agreement as a team in order to speed up the product design process. As a team we spent far too much time on product research and distracting idea competitions, both of which contributed to an unnecessarily comprehensive project scope. While continued reasearch made us better able to quickly design later in the project, it also meant our ability to shop anything to the real world was severely compromised. In the end, if was a learning experience primarily, so I'm not that concerned with our limited real market exposure for the prototype.
I came into Olin somewhat dreading the business aspect of the curriculum but in the end I wound up working on six or so startups at varying levels of depth and scope, and as a result I anticipate pursuing my own ventures at some point after graduation, even concurrently with other employment. Alight Learning was central to my expectations to work on my own software-oriented ventures, and for this reason I am forever grateful to the Foundry and Babson's Summer Venture Programs, as well as the Olin faculty members who helped us throughout that year.
My work with Alight Learning led me to attend various technology and startup events in the Boston area, and at one of these events I was approached by the Director of Engineering for Microsofts Startup Labs (now Microsoft FUSE Labs) and asked to explain our project. Eventually this led to a role as a User Experience Designer at Microsoft Startup Labs, an incubator for "future social experiences" that exists at the intersection of Microsoft's two weak points: consumer + web. (This description is admittedly in generalized contrast to Microsoft's clear successes in "enterprise" and "desktop.") In my short summer at Startup Labs, I received the best professional mentorship I could have asked for thanks to three rockstar designers. At Startup Labs I worked on several project teams, and while most of the projects I worked on didn't ever ship, I did get to work on an early version of what looks like is now Microsoft FUSE's Montage. Montage, a project I remember as "Topic Map." Topic Map was a way to create social representations of an event on the web. The idea is that by collecting quotes, tweets, images, news articles and videos we can create a social and visual representation for any large event. (e.g. debt ceiling debate, death of Michael Jackson, etc). I'm forever grateful to my coworkers at FUSE, who gave me much more latitude to self-define mini-projects and tangential research than I probably deserved at the time.
As fate would have it, I've returned to work at Alleyoop after my summer long internship which happened between my junior and senior years, so rather than describe my internship experience there I've decided to postpone reflection on this experience for a while.


text:
Q: How can I create a table of sliders? I'm trying to do the following:
I have a table:
w = Table[ToExpression[ToString[h] <> ToString[i]], {i, 1, Length[c]}]

This table is suposed to generate variables, like the following list:
{h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11}

I'm trying to create a table of vertical sliders with this by adding this to the code:
w = Table[VerticalSlider[Dynamic[ToExpression[ToString[h] <> ToString[i]]]], {i, 1, Length[c]}]

It create a it gives me an error:
Set::write: "Tag ToExpression in \!\(ToExpression[\"hi\"]\) is Protected.

I'm aware that this may not be the best way todo this but it's all I can imagine, I guess the other feasible way would be with loops, I don't know. Can you help me?

A: The problem is that Dynamic is preventing ToExpression from evaluating to a symbol.  When you drag the slider it's trying to evaluate:
ToExpression[ToString[h] <> ToString[1] = 0.1

and you get a message about not being able to set the value of ToExpression.
I would use With to create the symbols and insert them into the Dynamic:
w = Table[With[{var = ToExpression[ToString[h] <> ToString[i]]},
       VerticalSlider[Dynamic[var]]], {i, 1, Length[c]}]

A: Depending on what you're going to do next, this might be useful:
 x = {.1, .2, .3, .4, .5};
 Outer[Slider[Dynamic[x[[#1]]], {0, 1}] &, Range[Length[x]]]

This creates a collection of sliders, one for each element of x. The values of x provide the initialization, and when you move a slider, the corresponding element of x changes. You can see this happening in real time using
 Dynamic[x]

redpajama_set_name: RedPajamaStackExchange


Services – Pool and Spa Builders, Inc.
Pool and Spa Builders, Inc. provides maintenance services throughout the Los Angeles area. Whether you need pool and spa service or you have a water feature that needs regular maintenance we are here to help. Our dedicated service staff is made up of service professionals, repair manager, a service manager and our office manager. Our staff strives to achieve excellence whether its maintaining your swimming pool or constructing it you can rely on Pool and Spa Builders to get the job done.
We have outlined below what our Los Angeles pool and spa services consist of.
Don't hesitate to contact us with any questions or concerns you have regarding your swimming pool.
Spa and Pool Builders Inc. - Call Us Today 1-888-234-7665 - Toll Free 1-888-234-POOL - Serving Canyon Country, Saugus, Valencia, all of Santa Clarita, Los Angeles, San Fernando Valley and its surrounding areas.


Brokers ! Have a Meeting With Your Agents About Real Estate Fraud, NOW !
Brokers, set up a meeting with your agents and talk about real estate fraud, now !
Choose any five recent cases from the hundreds below for a roundtable discussion.
You might keep an agent out of prison and save your brokerage.


text:
package org.guvnor.m2repo.backend.server;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.maven.model.Model;
import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
import org.codehaus.plexus.util.IOUtil;
import org.drools.core.io.impl.ReaderInputStream;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.artifact.DefaultArtifact;
import org.eclipse.aether.util.artifact.SubArtifact;
import org.guvnor.common.services.project.model.GAV;
import org.guvnor.m2repo.backend.server.repositories.ArtifactRepository;
import org.guvnor.m2repo.backend.server.repositories.DistributionManagementArtifactRepository;
import org.guvnor.m2repo.backend.server.repositories.FileSystemArtifactRepository;
import org.guvnor.m2repo.backend.server.repositories.LocalArtifactRepository;
import org.guvnor.m2repo.preferences.ArtifactRepositoryPreference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.uberfire.apache.commons.io.FilenameUtils;

import static org.guvnor.m2repo.utils.FileNameUtilities.*;

@ApplicationScoped
public class GuvnorM2Repository {

    private static final Logger log = LoggerFactory.getLogger(GuvnorM2Repository.class);

    public static String M2_REPO_DIR;

    private static final int BUFFER_SIZE = 1024;

    private final List<ArtifactRepository> repositories = new ArrayList<>();
    private final List<ArtifactRepository> pomRepositories = new ArrayList<>();

    private ArtifactRepositoryPreference preferences;

    public GuvnorM2Repository() {
    }

    @Inject
    public GuvnorM2Repository(ArtifactRepositoryPreference preferences) {
        this.preferences = preferences;
    }

    @PostConstruct
    public void init() {
        preferences.load();
        setM2Repos();
    }

    private void setM2Repos() {
        final String M2_REPO_ROOT = FilenameUtils.separatorsToSystem(preferences.getDefaultM2RepoDir());

        final String meReposDir = System.getProperty("org.guvnor.m2repo.dir");

        if (meReposDir == null || meReposDir.trim().isEmpty()) {
            M2_REPO_DIR = M2_REPO_ROOT;
        } else {
            M2_REPO_DIR = meReposDir.trim();
        }

        final LocalArtifactRepository localRepository = new LocalArtifactRepository("local-m2-repo");
        final FileSystemArtifactRepository fileSystemRepository = new FileSystemArtifactRepository("guvnor-m2-repo",
                                                                                this.M2_REPO_DIR);
        final DistributionManagementArtifactRepository distributionManagementArtifactRepository = new DistributionManagementArtifactRepository("distribution-management-repo");

        repositories.add(localRepository);
        repositories.add(fileSystemRepository);
        repositories.add(distributionManagementArtifactRepository);

        pomRepositories.add(localRepository);
        pomRepositories.add(fileSystemRepository);
    }

    public String getM2RepositoryRootDir() {
        if (!M2_REPO_DIR.endsWith(File.separator)) {
            return M2_REPO_DIR + File.separator;
        } else {
            return M2_REPO_DIR;
        }
    }

    public String getRepositoryURL() {
        File file = new File(getM2RepositoryRootDir());
        return "file://" + file.getAbsolutePath();
    }

    public void deployArtifact(final InputStream jarStream,
                               final GAV gav,
                               final boolean includeAdditionalRepositories) {
        //Write JAR to temporary file for deployment
        File jarFile = new File(System.getProperty("java.io.tmpdir"),
                                toFileName(gav,
                                           "jar"));

        try {

            inputStreamToFile(jarStream,
                              jarFile);

            //Write pom.xml to JAR if it doesn't already exist
            String pomXML = loadPomFromJar(new File(jarFile.getPath()));
            if (pomXML == null) {
                pomXML = generatePOM(gav);
                jarFile = appendFileToJar(pomXML,
                                          getPomXmlPath(gav),
                                          jarFile.getPath());
            }

            //Write pom.properties to JAR if it doesn't already exist
            String pomProperties = loadGAVFromJarInternal(new File(jarFile.getPath()));
            if (pomProperties == null) {
                pomProperties = generatePomProperties(gav);
                jarFile = appendFileToJar(pomProperties,
                                          getPomPropertiesPath(gav),
                                          jarFile.getPath());
            }

            deployArtifact(gav,
                           pomXML,
                           jarFile,
                           includeAdditionalRepositories);
        } finally {
            try {
                jarFile.delete();
            } catch (Exception e) {
                log.warn("Unable to remove temporary file '" + jarFile.getAbsolutePath() + "'");
            }
        }
    }

    public void deployPom(final InputStream pomStream,
                          final GAV gav) {
        //Write POM to temporary file for deployment
        File pomFile = new File(System.getProperty("java.io.tmpdir"),
                                toFileName(gav,
                                           "pom"));

        try {

            inputStreamToFile(pomStream,
                              pomFile);

            deployPom(gav,
                      pomFile);
        } finally {
            try {
                pomFile.delete();
            } catch (Exception e) {
                log.warn("Unable to remove temporary file '" + pomFile.getAbsolutePath() + "'");
            }
        }
    }

    private void inputStreamToFile(final InputStream inputStream,
                                   final File file) {

        FileOutputStream fos = null;
        try {
            if (!file.exists()) {
                file.getParentFile().mkdirs();
                file.createNewFile();
            }
            fos = new FileOutputStream(file);

            final byte[] buf = new byte[BUFFER_SIZE];
            int byteRead = 0;
            while ((byteRead = inputStream.read(buf)) != -1) {
                fos.write(buf,
                          0,
                          byteRead);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            if (fos != null) {
                try {
                    fos.flush();
                    fos.close();
                } catch (IOException e) {
                    log.error("Error occurred when trying to close stream",
                              e);
                }
            }
        }
    }

    public void deployParentPom(final GAV gav) {
        //Write pom.xml to temporary file for deployment
        final File pomXMLFile = new File(System.getProperty("java.io.tmpdir"),
                                         toFileName(gav,
                                                    "pom.xml"));

        try {

            String pomXML = generateParentPOM(gav);
            writeStringIntoFile(pomXML,
                                pomXMLFile);
            //pom.xml Artifact
            Artifact pomXMLArtifact = new DefaultArtifact(gav.getGroupId(),
                                                          gav.getArtifactId(),
                                                          "pom",
                                                          gav.getVersion());
            pomXMLArtifact = pomXMLArtifact.setFile(pomXMLFile);

            final Artifact finalPomXMLArtifact = pomXMLArtifact;
            this.pomRepositories.forEach(artifactRepository -> {
                artifactRepository.deploy(pomXML,
                                          finalPomXMLArtifact);
            });
        } finally {
            try {
                pomXMLFile.delete();
            } catch (Exception e) {
                log.warn("Unable to remove temporary file '" + pomXMLFile.getAbsolutePath() + "'");
            }
        }
    }

    private void deployArtifact(final GAV gav,
                                final String pomXML,
                                final File jarFile,
                                final boolean includeAdditionalRepositories) {
        //Write pom.xml to temporary file for deployment
        final File pomXMLFile = new File(System.getProperty("java.io.tmpdir"),
                                         toFileName(gav,
                                                    "pom.xml"));

        try {

            writeStringIntoFile(pomXML,
                                pomXMLFile);

            //JAR Artifact
            Artifact jarArtifact = new DefaultArtifact(gav.getGroupId(),
                                                       gav.getArtifactId(),
                                                       "jar",
                                                       gav.getVersion());
            jarArtifact = jarArtifact.setFile(jarFile);

            //pom.xml Artifact
            Artifact pomXMLArtifact = new SubArtifact(jarArtifact,
                                                      "",
                                                      "pom");
            pomXMLArtifact = pomXMLArtifact.setFile(pomXMLFile);

            final Artifact finalJarArtifact = jarArtifact;
            final Artifact finalPomXMLArtifact = pomXMLArtifact;
            this.repositories.forEach((repository) -> repository.deploy(pomXML,
                                                                        finalJarArtifact,
                                                                        finalPomXMLArtifact));

            //Only deploy to additional repositories if required. This flag is principally for Unit Tests
            if (!includeAdditionalRepositories) {
                return;
            }
        } finally {
            try {
                pomXMLFile.delete();
            } catch (Exception e) {
                log.warn("Unable to remove temporary file '" + pomXMLFile.getAbsolutePath() + "'");
            }
        }
    }

    private void writeStringIntoFile(final String string,
                                     final File file) {
        FileOutputStream fos = null;
        try {
            if (!file.exists()) {
                file.getParentFile().mkdirs();
                file.createNewFile();
            }

            fos = new FileOutputStream(file);
            IOUtils.write(string,
                          fos);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            if (fos != null) {
                try {
                    fos.flush();
                    fos.close();
                } catch (IOException e) {
                    log.error("Error occurred trying to close a stream",
                              e);
                }
            }
        }
    }

    private void deployPom(final GAV gav,
                           final File pomFile) {
        //POM Artifact
        Artifact pomArtifact = new DefaultArtifact(gav.getGroupId(),
                                                   gav.getArtifactId(),
                                                   "pom",
                                                   gav.getVersion());
        pomArtifact = pomArtifact.setFile(pomFile);

        final Artifact finalPomArtifact = pomArtifact;
        this.pomRepositories.forEach(artifactRepository -> {
            artifactRepository.deploy(null,
                                      finalPomArtifact);
        });
    }

    /**
     * Finds files within the repository.
     * @return an collection of java.io.File with the matching files
     */
    public Collection<File> listFiles() {
        return listFiles(null);
    }

    /**
     * Finds files within the repository with the given filters.
     * @param filters filter to apply when finding files. The filter is used to create a wildcard matcher, ie., "*filter*.*", in which "*" is
     * to represent a multiple wildcard characters.
     * @return an collection of java.io.File with the matching files
     */
    public List<File> listFiles(final String filters) {
        return listFiles(filters,
                         null);
    }

    /**
     * Finds files within the repository with the given filters and formats.
     * @param filters filter to apply when finding files. The filter is used to create a wildcard matcher, ie., "*filter*.*", in which "*" is
     * to represent a multiple wildcard characters.
     * @param fileFormats file formats to apply when finding files, ie., [ "jar", "kjar" ].
     * @return an collection of java.io.File with the matching files
     */
    public List<File> listFiles(final String filters,
                                List<String> fileFormats) {
        final List<String> wildcards = new ArrayList<String>();
        String wildcardPrefix = "";

        if (filters != null) {
            wildcardPrefix = "*" + filters;
        }

        if (fileFormats == null) {
            fileFormats = new ArrayList<String>();
            fileFormats.add("jar");
            fileFormats.add("kjar");
            fileFormats.add("pom");
        }

        for (String fileFormat : fileFormats) {
            wildcards.add(wildcardPrefix + "*." + fileFormat);
        }

        final List<File> files = new ArrayList<File>(getFiles(wildcards));

        return files;
    }

    public List<Artifact> listArtifacts(final String filters,
                                        List<String> fileFormats) {
        final List<String> wildcards = new ArrayList<String>();
        String wildcardPrefix = "";

        if (filters != null) {
            wildcardPrefix = "*" + filters;
        }

        if (fileFormats == null) {
            fileFormats = new ArrayList<String>();
            fileFormats.add("jar");
            fileFormats.add("kjar");
            fileFormats.add("pom");
        }

        for (String fileFormat : fileFormats) {
            wildcards.add(wildcardPrefix + "*." + fileFormat);
        }

        final List<Artifact> files = new ArrayList<>(getArtifacts(wildcards));

        return files;
    }

    protected Collection<File> getFiles(final List<String> wildcards) {
        return this.repositories.stream()
                .flatMap(artifactRepository -> artifactRepository.listFiles(wildcards).stream())
                .collect(Collectors.toList());
    }

    protected Collection<Artifact> getArtifacts(final List<String> wildcards) {
        return this.repositories.stream()
                .flatMap(artifactRepository -> artifactRepository.listArtifacts(wildcards).stream())
                .collect(Collectors.toList());
    }

    public static String getPomText(final String path) {
        final File file = new File(M2_REPO_DIR,
                                   path);

        final String normalizedPath = file.toPath().normalize().toString();
        if (isJar(normalizedPath) || isKJar(normalizedPath)) {
            return loadPomFromJar(file);
        } else if (isDeployedPom(normalizedPath)) {
            return loadPom(file);
        } else {
            throw new RuntimeException("Not a valid jar, kjar or pom file: " + path);
        }
    }

    private static String loadPomFromJar(final File file) {
        try {
            ZipFile zip = new ZipFile(file);

            for (Enumeration e = zip.entries(); e.hasMoreElements(); ) {
                ZipEntry entry = (ZipEntry) e.nextElement();

                if (entry.getName().startsWith("META-INF/maven") && entry.getName().endsWith("pom.xml")) {
                    return zipEntryToString(zip,
                                            entry);
                }
            }
        } catch (ZipException e) {
            log.error(e.getMessage());
        } catch (IOException e) {
            log.error(e.getMessage());
        }

        return null;
    }

    private static String loadPom(final File file) {
        try (InputStream is = new FileInputStream(file);
             InputStreamReader isr = new InputStreamReader(is,
                                                           "UTF-8")) {
            StringBuilder sb = new StringBuilder();
            for (int c = isr.read(); c != -1; c = isr.read()) {
                sb.append((char) c);
            }
            return sb.toString();
        } catch (IOException e) {
            log.error(e.getMessage());
        }

        return null;
    }

    public GAV loadGAVFromJar(final String jarPath) {
        File zip = new File(M2_REPO_DIR,
                            jarPath);

        try {
            final String pomProperties = loadGAVFromJarInternal(zip);

            final Properties props = new Properties();
            props.load(new StringReader(pomProperties));

            final String groupId = props.getProperty("groupId");
            final String artifactId = props.getProperty("artifactId");
            final String version = props.getProperty("version");

            return new GAV(groupId,
                           artifactId,
                           version);
        } catch (IOException e) {
            log.error(e.getMessage());
        }

        return null;
    }

    private String loadGAVFromJarInternal(final File file) {
        try {
            ZipFile zip = new ZipFile(file);

            for (Enumeration e = zip.entries(); e.hasMoreElements(); ) {
                ZipEntry entry = (ZipEntry) e.nextElement();

                if (entry.getName().startsWith("META-INF/maven") && entry.getName().endsWith("pom.properties")) {
                    return zipEntryToString(zip,
                                            entry);
                }
            }
        } catch (ZipException e) {
            log.error(e.getMessage());
        } catch (IOException e) {
            log.error(e.getMessage());
        }

        return null;
    }

    public static String loadPomFromJar(final InputStream jarInputStream) {
        try {

            InputStream is = getInputStreamFromJar(jarInputStream,
                                                   "META-INF/maven",
                                                   "pom.xml");
            StringBuilder sb = new StringBuilder();
            for (int c = is.read(); c != -1; c = is.read()) {
                sb.append((char) c);
            }
            return sb.toString();
        } catch (IOException e) {
            log.error(e.getMessage());
        }

        return null;
    }

    public static String loadPomPropertiesFromJar(final InputStream jarInputStream) {
        try {

            InputStream is = getInputStreamFromJar(jarInputStream,
                                                   "META-INF/maven",
                                                   "pom.properties");
            StringBuilder sb = new StringBuilder();
            for (int c = is.read(); c != -1; c = is.read()) {
                sb.append((char) c);
            }
            return sb.toString();
        } catch (IOException e) {
            log.error(e.getMessage());
        }

        return null;
    }

    private static InputStream getInputStreamFromJar(final InputStream jarInputStream,
                                                     final String prefix,
                                                     final String suffix) throws IOException {
        ZipInputStream zis = new ZipInputStream(jarInputStream);
        ZipEntry entry;

        while ((entry = zis.getNextEntry()) != null) {
            final String entryName = entry.getName();
            if (entryName.startsWith(prefix) && entryName.endsWith(suffix)) {
                return new ReaderInputStream(new InputStreamReader(zis,
                                                                   "UTF-8"));
            }
        }

        throw new FileNotFoundException("Could not find '" + prefix + "/*/" + suffix + "' in the jar.");
    }

    private File appendFileToJar(final String content,
                                 final String contentPath,
                                 final String jarPath) {
        File originalJarFile = new File(jarPath);
        File appendedJarFile = new File(jarPath + ".tmp");

        try (ZipFile war = new ZipFile(originalJarFile);
             ZipOutputStream append = new ZipOutputStream(new FileOutputStream(appendedJarFile))) {

            // first, copy contents from existing war
            copyEntriesFromExistingWar(war,
                                       append);

            // append pom.xml
            ZipEntry e = new ZipEntry(contentPath);
            append.putNextEntry(e);
            append.write(content.getBytes());
            append.closeEntry();
        } catch (IOException e) {
            log.error(e.getMessage());
        }

        return appendedJarFile;
    }

    private void copyEntriesFromExistingWar(final ZipFile war,
                                            final ZipOutputStream append) throws IOException {
        Enumeration<? extends ZipEntry> entries = war.entries();
        while (entries.hasMoreElements()) {
            ZipEntry e = entries.nextElement();
            append.putNextEntry(e);
            if (!e.isDirectory()) {
                IOUtil.copy(war.getInputStream(e),
                            append);
            }
            append.closeEntry();
        }
    }

    protected String toFileName(final GAV gav,
                                final String fileName) {
        return gav.getGroupId() + "-" + gav.getArtifactId() + "-" + gav.getVersion() + "-" + Math.random() + "." + fileName;
    }

    public String generatePOM(final GAV gav) {
        Model model = new Model();
        model.setGroupId(gav.getGroupId());
        model.setArtifactId(gav.getArtifactId());
        model.setVersion(gav.getVersion());
        model.setModelVersion("4.0.0");

        StringWriter stringWriter = new StringWriter();
        try {
            new MavenXpp3Writer().write(stringWriter,
                                        model);
        } catch (IOException e) {
            log.error(e.getMessage());
        }

        return stringWriter.toString();
    }

    public static String generatePomProperties(final GAV gav) {
        StringBuilder sBuilder = new StringBuilder();
        sBuilder.append("groupId=");
        sBuilder.append(gav.getGroupId());
        sBuilder.append("\n");

        sBuilder.append("artifactId=");
        sBuilder.append(gav.getArtifactId());
        sBuilder.append("\n");

        sBuilder.append("version=");
        sBuilder.append(gav.getVersion());
        sBuilder.append("\n");

        return sBuilder.toString();
    }

    public String getPomXmlPath(final GAV gav) {
        return "META-INF/maven/" + gav.getGroupId() + "/" + gav.getArtifactId() + "/pom.xml";
    }

    public String getPomPropertiesPath(final GAV gav) {
        return "META-INF/maven/" + gav.getGroupId() + "/" + gav.getArtifactId() + "/pom.properties";
    }

    public String generateParentPOM(final GAV gav) {
        Model model = new Model();
        model.setGroupId(gav.getGroupId());
        model.setArtifactId(gav.getArtifactId());
        model.setVersion(gav.getVersion());
        model.setPackaging("pom");
        model.setModelVersion("4.0.0");

        StringWriter stringWriter = new StringWriter();
        try {
            new MavenXpp3Writer().write(stringWriter,
                                        model);
        } catch (IOException e) {
            log.error(e.getMessage());
        }

        return stringWriter.toString();
    }

    public boolean containsArtifact(final GAV gav) {
        return this.repositories.stream()
                .anyMatch(artifactRepository -> artifactRepository.containsArtifact(gav));
    }

    public File getArtifactFileFromRepository(final GAV gav) {
        final List<File> artifacts = this.repositories
                .stream()
                .map(artifactRepository -> artifactRepository.getArtifactFileFromRepository(gav))
                .filter(artifact -> artifact != null)
                .collect(Collectors.toList());
        return artifacts.get(0);
    }

    protected static String zipEntryToString(ZipFile zip,
                                             ZipEntry entry) throws IOException {
        final InputStream is = zip.getInputStream(entry);
        final InputStreamReader isr = new InputStreamReader(is,
                                                            "UTF-8");
        StringBuilder sb = new StringBuilder();
        for (int c = isr.read(); c != -1; c = isr.read()) {
            sb.append((char) c);
        }
        return sb.toString();
    }
}

redpajama_set_name: RedPajamaGithub


text:
Elementary school principal who molested taxi driver...Court Discipline Party
(อ่าน 453/ ตอบ 0)
kimmypark
kimmypark@gmail.com
http://www.betsarang.com
หัวข้อ :Elementary school principal who molested taxi driver...Court Discipline Party 13/01/2019 , 09:32
A court has ruled that it is justifiable to dismiss an elementary school principal who sexually harassed a taxi driver.
The Administrative Department 1 of the Gwangju District Court (Ha Hyun-kook, the chief judge of the Gwangju District Court) announced on Thursday that it had rejected the petition of A (South) in a lawsuit filed by the superintendent of elementary schools against the superintendent of Gwangju Metropolitan Office of Education.
A, who worked as a principal at an elementary school in Gwangju, was questioned by police on September 9, 2017 on charges of molesting a woman driver who was driving in the driver's seat on a road in the western Gwangju area of the city.
In October 2017, he received a suspended indictment from the Gwangju District Prosecutors' Office.
The Gwangju Metropolitan 사설토토 Office of Education dismissed A in December last year.
A argued that the punishment was harsh because he accidentally committed an act of indecision when he was drunk and could not distinguish things, and did not use his superior status to target students, and agreed with the victims peacefully.
Link: คลิ๊กที่นี่
*สถานะ บุคคลทั่วไป เจ้าของเว็บไซต์
รหัสผ่าน : (ในกรณีที่เป็นสมาชิก)
หมายเหตุ : : กรุณากรอกข้อมูลที่มี * ทุกช่อง

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: Java pass values into method/function Ok, first of all: hello!
I'll be short.
    public static Boolean or (boolean... args){
    // some code to process args and return true or false
return hasArgs & kiekFalse!=args.length ? true : false;
    }

Here I have a function called "or" and it has unknown amount of parameters that can be passed into it. I need it, cause I really can't know it.
so
I can use it like that
System.out.println(or(true,true,true,false,true,false));
BUT
what to do when I need to read values for example, for keyboard?
read and convert to Boolean array? does not work, it requires Boolean, not Boolean[]. Cannot resolve method 'or(java.lang.Boolean[]'
Pass one by one? nope, I need to pass none or required amount at once.
Any ideas or suggestions?
Ideally, I'd need to figure out how to pass N Booleans from keyboard to or function.. Else I'll just need to rewrite some (a lot of) code.

A: You can read an entire line as a string and then parse it:
System.out.println("Enter some booleans (true/false) separated by spaces: ");
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();

Boolean[] booleans =
    Arrays.stream(line.split(" ")).map(Boolean::valueOf).toArray(Boolean[]::new);

A: You can pass an array of boolean to the method. I wrote a quick example of parsing a boolean from a string, storing it in an array and passing it to your or method:
public static void main(String[] args) {

    boolean[] vals = new boolean[1];
    vals[0] = Boolean.parseBoolean("false");
}

public static boolean or(boolean... args) {
    return hasArgs & kiekFalse!=args.length ? true : false;
}

I would suggest to read the booleans line by line from the keyboard input and just pass then into an array or a list.
Hope it solves your problem.

A: Create an overload which takes a Collection<Boolean>, converts it to a boolean[], then invokes the method:
Boolean or(Collection<Boolean> c) {
  boolean[] b = new boolean[c.size()];
  int i = 0;
  for (Boolean cb : c) {
    b[i++] = cb; // assuming no nulls.
  }
  return or(b);
}

(Or you can take a Boolean[] parameter; it makes little difference, you just have to use length instead of size().)
Then you can just read your booleans in from user input into a List, and invoke this method.
List<Boolean> listOfBooleans = new ArrayList<>();
// Read values, add to list
Boolean result = or(listOfBooleans);

If you're already using Guava, you can use Booleans.toArray():
or(Booleans.toArray(listOfBooleans))


text:
Travis Scott issues statement on Astroworld tragedy
2021 Nov 07, 12:29, Houston
Rapper Travis Scott has issued a statement after the tragedy at his Astroworld festival in Houston, which left eight people dead and many injured on Friday night.
Scott took to his Twitter handle to offer his condolences to the families of the people who lost their lives.
He wrote, "I'm absolutely devastated by what took place last night. My prayers go out to the families and all those impacted by what happened at Astroworld Festival."
"Houston PD has my total support as they continue to look into the tragic loss of life. I am committed to working together with the Houston community to heal and support the families in need," he added.
"Thank you to Houston PD, Fire Department and NRG Park for their immediate response and support. Love You All," the rapper concluded.
Scott also took to his Instagram Stories to speak about the issue at length. The 29-year-old rapper told his fans that he is hoping to reach the victims' families.
"I just want to send out prayers to the ones that was lost last night. We're actually working right now to identify the families to assist them through this tough time," he said.
"My fans really mean the world to me, and I always want to leave them with a positive experience," he added.
The star said that he prioritized the safety of his fans at the festival: "Any time I can make out anything that's going on, I'd stop the show and help them get the help they need, you know? I could never imagine this situation."
Scott added that he and his team have "been working closely with everyone to get to the bottom of this -- City of Houston HPD, fire department -- everyone, to help us figure this out" and told fans to contact authorities with any information.
"Everybody continue to keep your prayers," he said.
"I mean, I'm honestly just devastated and I could never imagine anything like this happening. I'm going to do everything I can to keep you guys updated and keep you guys informed of what's going on. Love you all," Scott signed off.
As per People magazine, Scott, who was arrested in 2017 for allegedly inciting a riot during a concert in Arkansas and later pled guilty to disorderly conduct, faced accusations from festival-goers on Saturday who claimed he continued to perform even after seeing distraught and injured fans in the audience.
One festivalgoer, David McGilver, told the outlet that he was "upset" with Scott for not stopping the concert sooner.
"I still can hear this in my head -- I remember me being on the ground and the music stopping and I could hear [Travis] say, 'Y'all know what y'all came here for.' And you can hear everybody screaming out for help. And then the music just plays back again," McGilver said.
However, a source close to the musician told People magazine that Scott was unaware of the magnitude of the situation. "The lights were shining in his eyes and he couldn't see what was happening," the source said. "He thought someone had just passed out, which happens during concerts."
Scott is "in absolute pieces" and is a "mess about what happened. He's incredibly upset about everything and horrified," the source added.
About 30 minutes into his set (which was streamed live on Apple Music), Scott briefly paused the show when he noticed an ambulance driving through the crowd. Later, he stopped his performance again and asked security to "jump in real quick" and help "somebody passed out right here."
Houston Mayor Sylvester Turner confirmed at a news conference on Saturday that eight people -- ranging in age from 14 to 27 -- died, while hundreds of other festival-goers reported injuries at NRG Park.
50,000 fans attended the show, which led to a surge during Scott's performance at the festival outside NRG Park.
At a press conference following the concert, Houston fire chief Samuel Pena clarified the timeline. He said that the crowd began surging forward at 9 pm, as there was panic involving people running for safety.
At that point, Scott paused his set several times to ask security to help out fans, and members of the fire department were sent into the dense crowd to rescue the injured.
Crowd surge kills at least 8 at Houston music festival
Alec Baldwin 'cancelling other projects' after 'Rust' shooting incident
Astroworld Travis Scott Rapper Tragedy Houston Crowd surge incident music festival


New Chapter 11 Bankruptcy Filing - PGHC Holdings Inc.
On Sunday night, the New England Patriots took down the Green Bay Packers but the official pizza of the team took an "L." Indeed, New England local news reported that dozens of area Papa Gino's locations had abruptly shut down. Now we know why. And, it turns out, the dozens were really 95 stores all in. Which, we'd be remiss not to note, affects 1,100 employees who are now out of jobs.
On Monday morning, PGHC Holdings Inc., the parent company of 141 company-owned and 37 franchisee-and-licensee-owned New England restaurant chains Papa Gino's Pizzeria and D'Angelo Grilled Sandwiches, filed for bankruptcy to effectuate a sale to WC Purchaser LLC, an affiliate of Wynnchurch Capital. Wynnchurch will provide a DIP credit facility to fund the case.
Consumer preferences have shifted from in-restaurant dining to delivery and carryout ordering, which require fewer overall restaurants and smaller restaurant size to service the same geographic area. As a result of these shifting consumer preferences, the Debtors' existing footprint is too large — in terms of both number and size of restaurants. In addition, minimum wage increases across many of the Debtors' markets combined with higher employee benefit costs associated with health plans have also pressured the Debtors' cash flows. The Debtors also have faced increased competition and associated price pressure from national chains that have increased their footprint in the Debtors' core New England markets. In addition to these and other operational factors, the Debtors have a substantial debt load that, as noted above, they have been unable to service and are in default under.
Consequently, the debtors have let leases expire, engaged in (mostly unsuccessful) negotiations with landlords on lease forgiveness, changed internal IT systems, emphasized digital media marketing and formulated a smaller more efficient restaurant concept. Nevertheless, these efforts didn't generate enough revenue and profitability to enable the debtors to handle their debt burden.
Wynnchurch will provide the company with a $13.8mm DIP facility, permit the use of cash collateral, and credit bid the debt it took over to the tune of $20mm. In other words, this is effectively a "loan-to-own" play. Bravo!
New Chapter 11 Filing - Hobbico Inc.
Chicago-based designer, manufacturer and distributor of hobby products like radio-control toys filed for bankruptcy after struggling from (i) too much debt, (ii) lack of investment in product innovation and in its core ecommerce platform, (iii) a systemic shift in the drone market (wherein Asian suppliers started competing by selling direct-to-consumer), (iv) the bankruptcy of a key supplier of racing products, and (v) disruption to its Asian supply chain. The company defaulted on its secured debt and is using the chapter 11 process in order to attempt to sell its business as a going-concern.


text:
Good PR Averts the Sriracha Apocalypse
By Claire Daniel
For L.A. cool kids, the hottest ticket in town this weekend was a tour of the Sriracha hot sauce factory in Irwindale, California, which kicked off its grinding season with an open house (and much fanfare).
There, the company's once-reclusive and sometimes-combative CEO David Tran greeted guests amongst red, green and white balloons next to an Instagram-ready cardboard cutout of himself.
Tran didn't just set up a party to combat his company's recent problems stemming from a bad reputation and an insurmountable odor: he opened the doors and let the world smell his spices.
At the registration table, employees checked names on a list as a speaker blasted a playlist of Sriracha-inspired rap songs. Every visitor got a brochure, a gauzy red hairnet and a ticket entitling the bearer to a T-shirt and 9-ounce bottle of Sriracha hot sauce.
Tours ended with tastings of Sriracha caramels, popcorn and ice cream. The new company store, the Rooster Room, was a particularly popular attraction.
"They have underwear!" said one woman, rushing inside. [L.A. Times]
"For 34 years, we have never had any kind of grand opening event. But people asked for this, so we're doing it," Tran said, adding: "We want people to come and see for themselves—is this smell harmful?.. [and] "to prove we make hot sauce, we don't make tear gas."
In case ketchup is more your thing or you've been living under a rock, we'll catch you up: Last year Irwindale residents and officials asked a Los Angeles County Superior court judge to halt operations at the factory after accusing the sauce maker of flooding their city with an offensive spicy odor.
The battle was supposed to come to a head Wednesday, when the City Council considered declaring the Sriracha factory a public nuisance. But after a boisterous public hearing, the council decided to give the factory more time to come up with a solution. In a rare move, officials with the South Coast Air Quality Management District offered to mediate the conflict and offer technical expertise.
So how did the company change things around? It didn't start off well: When things first started getting nasty between the townspeople and Huy Fong Foods, the creator of Sriracha hot sauce, the company's initial response was to fly a "NO TEAR GAS MADE HERE" banner. This move by the infamously reclusive CEO—who had never advertised, granted few interviews and even designed his own machines, taking up a blowtorch to prevent his competitors from duplicating his methods—did little to assuage the public's fears. Public relations deteriorated.
So what did the trick (at least for now)? Tran's decision to open the factory to lawmakers, reporters, residents and, yes, foodies (shudder), thereby allowing them to immerse themselves in its maybe-not-so-offensive aroma.
As Elie Wiesel once said, "Life is not a fist. Life is an open hand waiting for some other hand to enter it." Wise words that in this case prove applicable to brands as well: welcoming the public into the factory appears to have been a public relations coup for Huy Fong.
Read more about the event over at The Los Angeles Times, and check out the video below:
http://adweek.it/2k7D8hL


Oh, brave new world … that world of Facebook. Navigating it as a parent, I'm trying to intuit rules (or make them up) so that my kids don't eject me from a FB friendship. I like FB … not love.
Reporting in from the field, your intrepid reporter spent the weekend hanging with college students. Yes, it was family weekend at DePaul and the car was loaded, the bags were packed and off I went to visit.


As a servicedesk engineer at Barca, you will be working in a dynamic and motivated B2B Support team. You will support users in big IT environments at fortune 500 companies. That way, you can maintain and expand your technical know-how.
•	You configure and install systems and make sure they are operational.
•	Being customer minded is very important to you and you offer the necessary support for requests and incidents at our customers. This way you make sure that interruption of the IT environment is prevented or limited.
•	You manage IMAC (Install/Move/Add/Change) requests to provide the necessary IT support to the customer.
•	You are able to develop small scripts and processes, to make solutions as quick and easy as possible for our customer.
•	Documentation, instructions, procedures and knowledge are things you keep up-to-date on a permanent basis.
•	At Barca you can find a result-driven, no-nonsense approach, and this fits perfect for you.
•	You have a bachelor degree in IT or equal true experience.
•	IT environments are a real passion for you and you have the ambition to grow yourself and your knowledge.
•	Experience at an IT service desk and/or on-site support are a plus (but not mandatory).
•	You have solid technical knowledge of IT hardware, Windows and Office.
•	You speak fluent Dutch, French and English.
•	You are social, communicative and customer minded.
•	Your place to work is Leuven, Hasselt, Brussels or Antwerp. Movements to our customers are part of the job.
•	Barca is a growing company.
•	If you choose to educate yourself, we will provide you with all means we can and reward your success.
•	Barca offers pro-actively a personal growth track, training, certification and education.
•	We offer a competitive salary and extra-legal benefits which matches your knowledge and experience.


text:
Lomaspilis semialbata är en fjärilsart som beskrevs av V.Melaerts. Lomaspilis semialbata ingår i släktet Lomaspilis och familjen mätare. Inga underarter finns listade i Catalogue of Life.

Källor

Mätare
semialbata

redpajama_set_name: RedPajamaWikipedia


text:
Chicago's South Side Beaches: Capturing Their Community Spirit and Style
Chicago Has Beaches, Too: Style and Community on the Shores of the South Side
June 29, 2017 Fashion
Photographed by Adam Jason Cohen
"There are beaches in Chicago!?" It's a response I've become accustomed to receiving when telling people that I grew up hanging out on the sandy, urban edge of the city during the summer. It's certainly not Orange County or Long Island, but we have the same amenities: waves to splash in, volleyball nets to play with, and food stands to buy hot dogs and popsicles from. Much to the shock and awe of many an East or West Coaster, Lake Michigan is as vast, deep, and hard to sail as any major body of water. It's not an ocean, but it's pretty damn close. What does set Chicago beaches apart from the others, however, is their unique sense of urban togetherness. In the Windy City, packing towels, hauling picnic coolers, and busting out the bright swimsuits and cover-ups is more than an annual rite of passage—it's cause for a community celebration.
Kanye West's 2007 song "Good Life" referenced the joyfulness of a warmer, brighter season in his hometown of Chicago. Now, "summertime Chi" has more tragic implications, as the season has become synonymous with a rise in local gun violence. Neighborhood lines are deeply drawn, gangs become even more fractioned, and division runs rampant through the city, and especially the South Side. But from June through August, residents from these communities can also be found hanging out together on the sand. "It's a democratic space," explains writer and educator Helene Achanzar, who grew up going to the 57th Street beach. "Chicago is a place that is so marked by segregation, but this beach brings in a very diverse population." There are students from the nearby University of Chicago, families from Kenwood, and kids born and raised in Hyde Park. Differences between the North, West, and South Sides disappear at the water's edge. "It's open and welcoming to all visitors," she adds.
Near Burnham Harbor and Jackson Park, the beaches act as an oasis. Neighborhood residents strip down to their brightest bathing suits, put on their coolest shades, and venture to the lake for more peaceful days. "The people who come here are amazing," says Lashawn Plunkett, a lifeguard at the 63rd Street beach. "We have people who come to barbecue, to play in the water, and we also have a group of men who play the drums everyday. It's a close-knit community." He adds, "a lot of kids show up in jeans and tees because they just wandered over here; they didn't plan to hang out at the beach, but it's so close and easy to come to." As for the fashion vibes, you can find both vibrant prints and plain denim or spandex here. Girls love their pink, while the men tend to stick to a more neutral palette.
Style, like the wonderful aura at these South Side beaches, is a mixed bag, but freedom is the general feeling: The beaches allow for liberation from the heavy coats and scarves required by Chicago's harsh winters. In reminiscing about the 57th Street beach, Achanzar adds, "It's a beautiful place and people want to feel beautiful there. So much of what we see stigmatizes Chicago, and when people think of the city, they only see violence and poverty. But anyone who is from there knows that it's a complex place. It's not without its problems, of course, but it's a place that cultivates a lot of joy, and the beaches are a huge part of that."
Here, photographer Adam Jason Cohen captures the distinct spirit of summer in the Midwestern city at the beaches of Jackson Park and Burnham Harbor on the South Side.
Senior Visual Editor: Emily Rosser
Senior Designer: Sara Jendusa
In Tel Aviv, Beach Style Is Hot and Heavy (on Accessories)
Taking the Waters: Inside Budapest's Healing Baths
Iceland's Fjords Offer an Invigorating Social Center
The Wistful Wonder of Myrtle Waves Water Park
©2020 Condé Nast. All rights reserved.
Use of and/or registration on any portion of this site constitutes acceptance of our User Agreement (updated 5/25/18) and Privacy Policy and Cookie Statement (updated 5/25/18). Your California Privacy Rights. The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written permission of Condé Nast.
Ad Choices. CN Fashion & Beauty
VOGUE VIP
Vogue App
Vogue Archive
Vogue Podcast
Vogue Worldwide
Condé Nast Digital
Golf World
Vogue Daily - Celebrity style, beauty tips, culture news, and more.
Vogue Runway - Daily fashion news, runway coverage, street style, and more.
Will be used in accordance with our Privacy Rights.


The Lovász Hinge: A Novel Convex Surrogate for Submodular Losses.
Social Image Captioning: Exploring Visual Attention and User Attention.
Memory Impairment, Dementia, and Alzheimer's Disease in Classical and Contemporary Traditional Chinese Medicine.
Metabolomics study on the anti-depression effect of xiaoyaosan on rat model of chronic unpredictable mild stress.


text:
Glenda Eulalia del Rosario Rondán Freira (born 3 February 1946) is a Uruguayan professor and politician, currently a member of the Broad Front.

Biography
Married to Washington Romeo, Rondán had three children: Gabriel, Alejandra, and Washington Hugo (died 2005). She has two grandchildren, Mathías and Micaela.

She graduated as a Professor of Literature from the  (IPA).

Political activity
Rondán served in the Colorado Party beginning in adolescence. During the 1960s she was the secretary of the deputies  and Julio María Sanguinetti (who was later twice president of the Republic). During the civic-military dictatorship, she was kidnapped and detained in a military unit.

She was elected as an alternate official on several occasions, first in 1984, for the department of Montevideo. In the 1999 elections in which Jorge Batlle captured the Presidency of the Republic, Rondán was elected deputy for , holding the position of vice president of the Chamber of Deputies for the term 2000–2005, and coming to occupy the ownership of the presidency of the Chamber. She has always stood out as a fighter for women's rights; along with fellow deputies Beatriz Argimón, Lucía Topolansky, and Margarita Percovich, she constituted the so-called "Women's Bank", composed of women from all parties. She was part of the Equity and Gender Commission, which she chaired in 2001.

In the 2005 municipal elections she headed the list of candidates of Lista 15 to the departmental board of Montevideo, being comfortably elected. That year she was elected to the national executive committee of the Colorado Party (CEN).

In 2009 she supported the presidential candidacy of José Amorín Batlle in the sector Batllismo Siglo XXI with the group "Contra viento & marea", obtaining a place in the National Convention of the Party. For the second round, Rondán said that, against her party's recommendion, she would not vote for candidate Luis Alberto Lacalle of the National Party, but she would for the Broad Front candidate, José Mujica.

She did not support any candidate in the municipal elections of May 2010.

On 20 June 2010, Rondán announced her move to the Broad Front, along with a Batllist column led by her.

Rondán worked as an advisor on gender and equity issues, and is currently director of the centers of the country's Ministry of Education and Culture.

Other activities
In 2007, together with National Party deputy Beatriz Argimón and various Uruguayan actresses and women public figures, Rondán appeared in the play The Vagina Monologues for the benefit of the Casa de la Mujer and for the cause of denouncing violence against women.

References

1946 births
Broad Front (Uruguay) politicians
Colorado Party (Uruguay) politicians
Living people
Members of the Chamber of Representatives of Uruguay
People from Melo, Uruguay
Uruguayan educators
Uruguayan women educators
20th-century Uruguayan women politicians
20th-century Uruguayan politicians
21st-century Uruguayan women politicians
21st-century Uruguayan politicians


The KULR-8 sales team is among the most experienced and professional in the business. We can help you utilize the power of television and the World Wide Web to reach your target consumer. Our SWX channel, which stands for Sports & Weather Right Now, is rapidly growing. We're committed to providing Montana and northern Wyoming with the best in local sports coverage and continuous weather updates from the best meteorologists in the area. SWX broadcasts local high school sports, such as football, basketball, volleyball and a host of local events in our community. In addition to advertising your products on the air, we also have a variety of sponsorship opportunities, banners, pre-roll and mobile ads that can showcase your business 24/7 on KULR8.com and our KULR-8 News mobile app. Establish your brand in the marketplace, and let people know about your products and services through a company that strives to help your business grow. For more details on cost-efficient advertising with KULR-8, please call our General Sales Manager Tim White at (941) 662-6530.


text:
Q: Continuity of a function between two topological spaces What is the motivation behind the definition of continuity of a function between two topological spaces (i.e, $f : X \to Y$ is said to be continuous if $f^{-1}(v)$ is open for all open sets $v$ in $Y$)?

A: Question concerning the motivation of something are often not easy to answer. Yes, the definition of continuity of $f$ by "preimages of open sets are open" is short and elegant, and this is what good definitions should be. But I am not sure whether it is optimal in a motivational sense.
In any textbook you will find various properties of a function $f : X \to Y$ which are equivalent to the continuity of $f$. One of these properties is

For all $M \subset X$, $f(\overline M) \subset \overline{f(M)}$.

Here $\overline{\phantom X}$ denotes closure. In my opinion this explains very nicely what continuity means. Given a set $M \subset X$, the closure $\overline M$ is the set of all points of $X$ which can be arbitrarily closely approximated by points of $M$. Now consider $x \in \overline M$. Then $f(x)$ is contained in the closure $\overline{f(M)}$, i.e. can be arbitrarily closely approximated by points of $f(M)$. In other words, $f$ preserves the approximability relation and does not tear up something.

A: This is only a comment to give details to the above comment of J. W. Tanner. You can prove easily the following:
Let $f:X\to Y$ be a map of topological spaces. The following are equivalent:
(i) For any open subset $V$ of $Y$, $f^{-1}(V)$ is open in $X$.
(ii) For any $x\in X$, and any open subset $V$ of $Y$ containing $f(x)$, there exists an open subset $U$ of $X$ containing $x$ such that $f(U)\subset V$ (continuity at $x$).


text:
Who are the Staunton residents running for a seat on the city council?
Barrett Strong, the Motown singer known for "Money," has died at age 81
Following the new law Henrico schools announce changes in mask policy
Henrik County, Virginia (WRIC) – Students of Henrik County Public Schools and their families will be able to avoid wearing masks at school.
The school district sent a message to parents on Wednesday afternoon that students are encouraged to continue wearing the universal mask at school, but are no longer required. However, the federal mandate for masks for school buses will still be fulfilled.
This announcement is closely followed by the signing of a new bill by Governor Glen Yangkin, which gives parents the opportunity to refuse to wear a mask at school.
Youngkin originally issued an order to terminate the mandate of the mask in Virginia schools, but this caused legal problems and resistance from several school districts.
Busch Gardens will open early access to the world's fastest multi-launch during St. Patrick's Day celebrations
Senator Tim Kane talks about the Russian-Ukrainian conflict


Initially, your Trainer Card, if you look at it, will be colored blue. There is a way to change that! By meeting certain conditions within the game itself, the color will change: it first goes to bronze , then silver , then gold .
There are three conditions to initiate any change, and these can be done in any order (more or less).
Defeat the Elite Four and the Pokémon League Champion.
Earn a 50-win streak in the Battle Maison, including the boss marking the 50th win. It doesn't matter the battle type.
Complete the Hoenn Pokédex in full by capturing one of all Pokémon within it. Jirachi - an Event-only Pokémon - doesn't count towards this, but all 210 others will we believe.


Uganda scored a double victory at the East African Power Industry Awards with the country not only winning the Special Recognition Award for outstanding leadership in the sector, but also scooping up the Award for Excellence in Power Transmission or Distribution for the second year in a row. Taking place during the East African Power Industry Convention (EAPIC) in Nairobi this week, the East African Power Industry Awards gathered some 180 power professionals from the region at a glamorous gala dinner on Wednesday and recognised individuals, companies and projects based on the excellent work they have been doing in the power sector during 2015/2016.
Uganda's Fred Kabagambe-Kaliisa, Permanent Secretary of the Ministry of Energy & Mineral Development of Uganda was honoured for his work in the utility sector with the Special Recognition Award. Umeme Limited, Uganda's main electricity distribution company, won the Excellence in Power Transmission or Distribution Award. Uganda also had a strong presence at EAPIC in Nairobi this week with the Hon Eng Simon D'Ujanga, the Minister of State for Energy, heading up the delegation.
Ethiopia also won two categories at the awards.
Dr Fred Kabagambe-Kaliisa is the Permanent Secretary of the Ministry of Energy and Mineral Development in the Government of Uganda. He has been Permanent Secretary since 1997 and has worked for the Government of Uganda for over 38 years. Dr Kabagambe-Kaliisa has played a central role in the reform of Uganda's electricity industry focusing on industry regulation and private sector participation.
The team he led has since 2007 repackaged the development of Bujagali Hydropower project (250MW) which reached commercial operation in 2012, the development of several renewable energy generation projects, and other important public-private partnerships in power distribution, rural electrification and renewable energy development.
These efforts have resulted into Foreign Direct Investment of US$1.50 billion over the last seven years in the power sector in Uganda and stabilisation of power supply in the country.
"It is a privilege for Umeme to win this award for the second time in a row. It is also a privilege to be recognised for the efforts put in and efficiencies we have achieved in the Ugandan distribution sector. It is wonderful that EAPIC is coming to Uganda next year and we look forward to sharing more of the progress we have made in Uganda with our peers from the region", Mr Sam Zimbe, Deputy Managing Director of Umeme, said on Wednesday evening after receiving the award on behalf of the utility.
Umeme Limited is Uganda's main electricity distribution company. In 2015, Umeme's income grew by 19% to Ushs 1.16 trillion compared to 2014, underpinned by 8% growth in sales units. The commencement of construction works for Isimba (183MW) and Karuma (600MW) hydropower projects affirms the government's commitment to the energy sector and increasing access to electricity across Uganda.
On completion of these projects, among others, over the next 5-6 years, the country's effective generation capacity shall be in excess of 1,600MW. Umeme plans to make significant investments to grow and ready the distribution infrastructure for the new generation capacity.
"We are very happy, proud and feel very overwhelmed; this was a surprise as we did not expect to win. Mobisol is growing very fast and so far we have electrified over 60,000 households in East Africa" said Klaus Maier, Mobisol Corporate Development Manager and Helen Tiemann, Mobisol, Partnerships and Expansion Manager, after receiving the award.
Mobisol has developed an innovative product design and service offering fully adjusted to off grid customers' needs: The mature product-service offer combines high quality solar products, innovative IT solutions and remote monitoring, microfinance via mobile banking and comprehensive customer services. Mobisol's products are made affordable by a rent-to-own instalment scheme offering micro-finance loans over a period of 36 months in small, flexible instalments which are payable via Mobile Money.
"For most of development programs, the impact in terms of improvement of the living standards of women and the rural households is only perceived many years after the programme has been closed. With the ABPP, this impact is immediate, the moment the woman lights her biogas stove, she cooks in a clean and safe environment! Few months later, thanks to the use of bioslurry, the household significantly increase its agricultural production as well" said Jean Marc Sika, ABPP's Renewable Energy Programme Development Manager in East Africa who along with Bert van Nieuwenhuizen, ABPP's Chief Technical Advisor, accepted the award.
The Africa Biogas Partnership Programme (ABPP) is a partnership between the Dutch government, Hivos and SNV in support of national biogas programmes in Ethiopia, Kenya, Tanzania, Uganda, and Burkina Faso. This partnership is geared towards constructing 100,000 biogas plants that will enable half a million people to access a sustainable source of energy by 2017. Already in its second phase, the programme has established a viable market for domestic biogas through effective credit schemes and cost reduction. Successes include 60,000 biogas plants built, 300,000 people with access to renewable energy, improved living standards of175,000 people, contributes to reduction of carbon dioxide emissions.
Ethiopia strives to be the hub of renewably sourced energy in the region and beyond. Ethiopian Electric Power (EEP) is instrumental to this ambitious plan. EEP operates and maintains more than 12 hydropower and three wind power plants distributed in different parts of the country with installed capacity of more than 4290MW.
There are two major hydropower projects under construction, namely the Grand Ethiopian Renaissance Dam (6000MW) and GenaleDawa 3 (254MW). EEP has a portfolio management unit with a track record in managing and administrating more than seven mega generation and transmission projects at a time in the last 10 years.
Azeb Asnake was appointed CEO of the Ethiopian Electric Power Company after the former Ethiopian Electric Power Corporation split into two entities in 2013. Azeb commenced her carrier at the Addis Ababa Water and Sewerage Authority from junior expert to the Directorate of Engineering Directorate. She was transferred to the Ethiopian Electric Power Corporation in 2006, to lead the Gibe III Hydro Power Project, which is expected to generate 1875 MW's of electricity. Azeb is the first woman engineer who had led the project at the capacity of a Project Manager. She is well known for her management skills and has also served as a focal person of UN Habitat Water for Africa Cities Program.
Faith Chege is the CFO at Barefoot Power Africa; with over five years' experience in finance from the non-profit and for-profit private sectors. She is also a Mandela Washington Fellow 2015 and a Global Shaper at the World Economic Forum and Global Entrepreneurship Delegate in 2016. From the for-profit private sector, she brings expertise in lean financial systems minimizing costs while maintaining maximum productivity, management of public private partnerships, project financing, overseeing financial audits, cash flow planning and management, keeping healthy accounts payable and accounts receivable ratios, and managing financial operations of business units in Kenya, Uganda, Rwanda, Ghana and Ethiopia.
The East African Power Industry Awards have become a popular gathering for the who's who in the region's energy sector. Co-Operative Bank and Rosatom were awards sponsors while the results are verified by Mazars.
The 18th edition of EAPIC is expected to gather more than 2000 visitors from more than 30 countries, including from the region's leading power utilities, large industries, project developers and investors as well as dozens of technology and service providers who will showcase their products at the KICC in Nairobi from 21-22 September. Lucy Electric, a global secondary distribution leader in the electricity sector, is this year's platinum sponsor, while Stanbic Bank is the gold sponsor.
The event is organised by Spintelligent, leading Cape Town-based trade exhibition and conference organiser, and the African office of Clarion Events Ltd, based in the UK. Other flagship events in Spintelligent's power portfolio on the continent are African Utility Week, the West African Power Industry Convention (WAPIC), iPAD Rwanda Energy Infrastructure Forum and iPAD Cameroon Energy & Infrastructure Forum.


text:
Some states consider dual standards against terrorism
Tehran, Dec 18, IRNA - Deputy Secretary of the National Security Council of Uzbekistan Baber Shah Yakubov slammed taking dual-standard approach vis-a-vis fighting terrorism.
He made the remarks in the second session of the Regional Security Dialogue in Tehran.
Yakubov noted that establishing peace in Afghanistan should become an international demand, adding that member-states have common stances on regional security.
This opportunity can be used for decreasing security challenges, he added.
Uzbekistan will spare no efforts for maintaining regional cooperation aiming at creating peace and security in Afghanistan.
Yakubov said Uzbekistan supports participation of all groups and people.
He said regional countries' investment in Afghanistan can be the first step for developing its economy.
Elsewhere in his remarks, Yakubov referred to international extremism as a serious danger to global peace and stability.
The 2nd Session of the Regional Security Dialogue started work in the presence of top secretaries and national security advisers of seven countries in Tehran on Wednesday.
National security and senior officials of Iran, Russia, China, India, Afghanistan, Tajikistan, and Uzbekistan gathered in Tehran.
According to the Secretariat of Iran's Supreme National Security Council, Secretary of Russian National Security Council Nikolai Patrushev, Afghan national security adviser Hamdullah Mohib and Deputy National Security Adviser of India Rajinder Khanna took part in the event.


text:
Home / Articles in Palaeobotany / Jurassic Palaeobotany
What is Palaeobotany?
General Palaeobotany
Palaeophytogeography
Plant Evolution
Whole Plant Reconstructions
Overviews of Plant Fossil Lagerstätten and Their Palaeoenvironments
Tertiary Palaeobotany
Cretaceous Palaeobotany
The Rhaetian@
Triassic Palaeobotany@
Early Triassic Floras@
Permian Palaeobotany
Carboniferous Palaeobotany
Silurian and Devonian Palaeobotany
! Focussed on the Fossil Record@
! Chemotaxonomy and Chemometric Palaeobotany@
! The Mass Extinction at the End of the Triassic@
! Teaching Documents about Palaeobotany@
! Fossil Plant and Paleovegetation Reconstructions@
Progress in Palaeobotany and Palynology@
Abscission and Tissue Separation in Fossil and Extant Plants@
Stomatal Density@
Cuticles@
Jurassic Palaeobotany
Anna-Lena Anderberg, Department of Palaeobotany, Swedish Museum of Natural History, Stockholm: Rhaetian and Jurassic plants of Scania. This database includes the Rhaetian and Jurassic plant fossils from Scania, southern Sweden, housed in the Stockholm collections. Go to: Specimens by publication. A reference list.
M. Barbacka et al. (2019): Ferns of the Lower Jurassic from the Mecsek Mountains (Hungary): taxonomy and palaeoecology. Free access, PalZ, 93: 151–185. See also here (in PDF), and there.
M. Barbacka et al. (2016): New data about Matonia braunii (Göppert) Harris from the Early Jurassic of Poland and its ecology. In PDF, Geological Quarterly, 60: 857–868. See also here.
M. Barbacka et al. (2014): European Jurassic floras: statistics and palaeoenvironmental proxies.In PDF, Acta Palaeobotanica, 54: 173-195.
K. Bauer et al. (2015): Lepacyclotes kirchneri n. sp. (Isoetales, Isoetaceae) aus dem unteren Jura von Oberfranken, Deutschland. In PDF, Berichte der Naturwissenschaftlichen Gesellschaft Bayreuth, 27: 429-443.
E.R. Bodor (2015): Plant reproductive organs from the Mecsek Coal Formation. Thesis, (abbreviated version?), ELTE Doctoral School of Earth Sciences, Budapest. In PDF.
B. Bomfleur et al. (2015): Osmunda pulchella sp. nov. from the Jurassic of Sweden - reconciling molecular and fossil evidence in the phylogeny of modern royal ferns (Osmundaceae). In PDF, BMC Evolutionary Biology, 5. See also here.
R. Butzmann (2016): Neu in Angriff genommen:die Bearbeitung der Flora der Fossillagerstätte Brunn Oberes Kimmeridgium. PDF file, in German. Freunde der Bayerischen Staatssammlung für Paläontologie und Historische Geologie München e.V. See also here.
Note fig. 1: The palaeogeographical map.
A. Channing et al. (2011): Equisetum thermale sp. nov.(Equisetales) from the Jurassic San Agustín hot spring deposit, Patagonia: Anatomy, paleoecology, and inferred paleoecophysiology. PDF file, American Journal of Botany, 98: 680-697.
A version archived by Internet Archive Wayback Machine.
T. Choo et al. (2016): Monotypic colonies of Clathropteris meniscioides (Dipteridaceae) from the Early Jurassic of central Patagonia, Argentina: implications for taxonomy and palaeoecologyand palaeoecology. In PDF, Palaeontographica B, 294: 85-109. See also here.
C.J. Cleal & B.A. Thomas, Geological Conservation Review Series (GCR), Joint Nature Conservation Committee (JNCC). The JNCC is the UK government's wildlife adviser, undertaking national and international conservation work on behalf of the three country nature conservation agencies English Nature, Scottish Natural Heritage and the Countryside Council for Wales. Go to: Introduction to the Mesozoic and Tertiary palaeobotany of Great Britain, and List of Sites. PDF files.
D. Contreras et al. (2019): Reconstructing the Early Evolution of the Cupressaceae: A Whole-Plant Description of a New Austrohamia Species from the Cañadón Asfalto Formation (Early Jurassic), Argentina. Int. J. Plant Sci., 180: 834–868. See also here (in PDF).
L.G. Costamagna et al. (2018): A palaeoenvironmental reconstruction of the Middle Jurassic of Sardinia (Italy) based on integrated palaeobotanical, palynological and lithofacies data assessment. Free access, Palaeobio. Palaeoenv., 98: 111–138.
! Peter R. Crane and Patrick S. Herendeen (2009): Bennettitales from the Grisethorpe Bed (Middle Jurassic) at Cayton Bay, Yorkshire, UK. PDF file, American Journal of Botany, 96: 284-295. See also here (abstract).
C. Diéguez et al. (2009): A fern-bennettitalean floral assemblage in Tithonian-Berriasian travertine deposits (Aguilar Formation, Burgos-Palencia, N Spain) and its palaeoclimatic and vegetational implications. In PDF, Journal of Iberian Geology, 35: 127-140.
Specimens preserved as impressions coated with a microbial film up to 5 mm thick made up of bacteria and cyanobacteria.
! A. Elgorriaga et al. (2019): Relictual Lepidopteris (Peltaspermales) from the Early Jurassic Cañadón Asfalto Formation, Patagonia, Argentina. Abstract, Int. J. Plant Sci., 180. See also here (in PDF), and there.
"... and its youngest species, Lepidopteris ottonis, has been used as a Rhaetian marker for several European, Greenlandic, and American localities ..."
"... Lepidopteris scassoi represents the youngest occurrence of the genus by more than 20 Myr. Lepidopteris and Dicroidium lineages, dominant in Southern Hemisphere Triassic ecosystems, show a similar overall pattern of origination (Late Permian), diversification (late Early-Middle Triassic), and decline (Late Triassic), with relict occurrences during the Early Jurassic. ..."
A. Elgorriaga et al. (2019): Southern Hemisphere Caytoniales: vegetative and reproductive remains from the Lonco Trapial Formation (Lower Jurassic), Patagonia. Open access, Journal of Systematic Palaeontology, DOI: 10.1080/14772019.2018.1535456
A. Elgorriaga et al. (2015): Reconstruction and Phylogenetic Significance of a New Equisetum Linnaeus Species from the Lower Jurassic of Cerro Bayo (Chubut Province, Argentina). In PDF, Ameghiniana, 52.
I. Escapa and A. Leslie (2017): A new Cheirolepidiaceae (Coniferales) from the Early Jurassic of Patagonia (Argentina): Reconciling the records of impression and permineralized fossils. Am. J. Bot., 104: 322-334. See also here (abstract).
I.H. Escapa et al. (2011): Seed cone anatomy of Cheirolepidiaceae (Coniferales): Reinterpreting Pararaucaria patagonica Wieland. In PDF, Am. J. Bot., 99: 1058-1068.
J.E. Francis, Earth Sciences, University of Leeds: Fossil Trees in the Basal Purbeck Formation on Portland - The Great Dirt Bed Forest.
Still available via Internet Archive Wayback Machine.
Q. Fu et al. (2018): An unexpected noncarpellate epigynous flower from the Jurassic of China. In PDF, eLife, 7: e38827. See also:
D.W. Taylor and H. Li (2019): Paleobotany: Did flowering plants exist in the Jurassic period.
Q. Fu et al. (2017): Nanjinganthus: An Unexpected Flower from the Jurassic of China. In PDF, bioRxiv (pronounced "bio-archive"). See also here.
G. Guignard et al. (2009): A dipteridaceous fern with in situ spores from the Lower Jurassic in Hubei, China. In PDF, Review of Palaeobotany and Palynology, 156: 104–115.
T.M. Harris: The Problems of Jurassic Palaeobotany. In PDF.
F. Herrera et al. (2020): Reconstructing Krassilovia mongolica supports recognition of a new and unusual group of Mesozoic conifers. Open access, PLoS ONE, 15: e0226779.
Note figs 6, 7: Reconstructions of Krassilovia mongolica. Drawings: Pollyanna von Knorring.
W. Huang et al. (2016): New Phoenicopsis leaves (Czekanowskiales) from the Middle Jurassic Daohugou Biota, China and their roles in phytogeographic and paleoclimatic reconstruction. In PDF, Palaeoworld, 25: 388–398. See also here.
M. S. Ignatov et al. (2012): New Bryokhutuliinia species (Bryophyta) with sporophytes from the Upper Jurassic of Transbaikalia. In PDF, Arctoa, 21: 69-78.
A. Jarzynka (2016): Fossil flora of Middle Jurassic Grojec clays (southern Poland). Raciborski's original material reinvestigated and supplemented. II. Pteridophyta. Osmundales. Acta Palaeobotanica, 56: 183–221.
A. Jarzynka and G. Pacyna (2015): Fossil flora of Middle Jurassic Grojec clays (southern Poland). Raciborski´s original material reinvestigated and supplemented. I. Sphenophytes. In PDF, Acta Palaeobotanica, 55. See also here.
W. Jung (1970): Die Gothan´sche Rhät/Lias-Sammlung der Naturhistorischen Gesellschaft Nürnberg. PDF file, in German. Natur und Mensch, Jahresmitteilungen der naturhistorischen Gesellschaft Nürnberg e.V., 1970: 63-71.
E. Kustatscher et al. (2016): The Krasser collection in the Faculty of Sciences, Charles University, Prague: New insights into the Middle Jurassic flora of Sardinia. In PDF, Fossil Imprint, 72: 140-154. See also here.
M. Le Couls et al. (2016): Becklesia maulnyi sp. nov.: A new cycadean species from the Lower Oxfordian (Upper Jurassic) of Écommoy (Sarthe, NW France). Abstract, Annales de Paléontologie, 102: 95-101. See also here (in PDF).
Gerhard Leubner Lab, University Freiburg, Germany: Seed Evolution. Go to: Jurassic parc/Mesozoic era: Extinct gymnosperms and living ancient gymnosperms. Extant Cycadales and extinct Bennettitales.
R. Li et al. (2019): Ricciopsis sandaolingensis sp. nov., a new fossil bryophyte from the Middle Jurassic Xishanyao Formation in the Turpan-Hami Basin, Xinjiang, Northwest China. Open access, Palaeontologia Electronica. See also here (in PDF).
Z.J. Liu et al. (2019): Zhangwuia: an enigmatic organ with a bennettitalean appearance and enclosed ovules. In PDF, Earth and Environmental Science Transactions of The Royal Society of Edinburgh, 108 (Agora Paleobotanica), : 419-428. See also here.
Z.-J. Liu and X. Wang (2016): A perfect flower from the Jurassic of China. In PDF, Historical Biology, 28: 707-719. See also here (Abstract).
D.E. Lozano-Carmona et al. (2019): Jurassic Flora in Southern Mexico: Anomozamites Schimper, 1870 Emend. Pott et McLoughlin, 2009 from Mixteco Terrane, Phytogeographical Implications of Williamsoniaceae Family (Bennettitales). Open Journal of Geology, 9: 142-156.
D.E. Lozano-Carmona and M.P. Velasco-de León (2016): Jurassic flora in Southeast Mexico: importance and prospects of recent findings in the Mixteco Terrane. In PDF, Paleontología Mexicana, 5: 87-101. See also here (abstract).
S. McLoughlin and C. Pott (2018): Plant mobility in the Mesozoic: Disseminule dispersal strategies of Chinese and Australian Middle Jurassic to Early Cretaceous plants. Abstract, Palaeogeography, Palaeoclimatology, Palaeoecology.
S. McLoughlin (2015): The Landsborough Sandstone: the Sunshine Coast´s Jurassic park. In PDF, Australian Age of Dinosaurs Journal.
S. McLoughlin and B.P. Kear (2014): Gondwanan Mesozoic biotas and bioevents. Abstract.
! S. McLoughlin and C. Pott (2009): The Jurassic flora of Western Australia. Abstract. GFF, 131: 113-136. See also here. (in PDF).
Y. Na et al. (2014): A new species of Phoenicopsis (Czekanowskiales) from the Middle Jurassic of Inner Mongolia, China. In PDF. See also here (search result, Google Scholar).
! N. Nosova et al. (2017): New data on the epidermal structure of the leaves of Podozamites Braun. Abstract, Review of Palaeobotany and Palynology, 238: 88–104. See also here (in PDF).
! G.A. Pattemore (2016): Megaflora of the Australian Triassic–Jurassic: a taxonomic revision. Acta Palaeobotanica, 56: 121–182. See also here (in PDF).
! M. Philippe et al. (2017): The palaeolatitudinal distribution of fossil wood genera as a proxy for European Jurassic terrestrial climate. Abstract, Palaeogeography, Palaeoclimatology, Palaeoecology, 466: 373-381.
M. Pole et al. (2018): Fires and storms—a Triassic–Jurassic transition section in the Sichuan Basin, China. Abstract, Palaeobiodiversity and Palaeoenvironments, 98: 29–47. See also here (in PDF).
Mike Pole, New Zealand:
Horsetail Marshes of the New Zealand Jurassic.
M.E. Popa (2014): Early Jurassic bennettitalean reproductive structures of Romania. Abstract, Palaeobiodiversity and Palaeoenvironments, 94: 327–362. See also here (in PDF).
M.E. Popa and J.H.A. van Konijnenburg-van Cittert (2006): Diversity of Biota Aspects of Romanian Early-Middle Jurassic palaeobotany and palynology. Part VII. Successions and floras. PDF file.
C. Pott and J.H.A. Van Konijnenburg-Van Cittert (2017): The type specimen of Nilssoniopteris solitaria (Phillips 1829) (Bennettitales). Open access, Acta Palaeobotanica, 57: 177–184.
! Allister Rees, GEON SDSC Meeting Webcast Archive, San Diego Supercomputer Center: GEON SDSC Meeting, webcast live: Go to: Dinosaurs and More: Integration of the DINO and PGAP Databases (August 22, 2005). Biomes, climates and floral development from the Permian to the Jurassic.
P.M. Rees and C.J. Cleal (2004): Lower Jurassic floras from Hope Bay and Botany Bay, Antarctica. In PDF, Palaeontological Association.
P.M. Rees (1993): Dipterid ferns from the Mesozoic of Antarctica and New Zealand and their stratigraphical significance. In PDF.
G.W. Rothwell et al. (2013): Diversity of ancient conifers: The Jurassic seed cone Bancroftiastrobus digitata gen. et sp. nov. (Coniferales). In PDF, Int. J. Plant Sci., 174: 937-946.
G.W. Rothwell et al. (2012): The seed cone Eathiestrobus gen. nov.: Fossil evidence for a Jurassic origin of Pinaceae. In PDF, American Journal of Botany, 99: 708–720.
L. Santasalo (2013): The Jurassic extinction events and its relation to CO2 levels in the atmosphere: a case study on Early Jurassic fossil leaves. In PDF, Bachelor´s thesis, Department of Geology, Lund University, Sweden.
S.M. Slater et al. (2018): An introduction to Jurassic biodiversity and terrestrial environments. In PDF, Palaeobiodiversity and Palaeoenvironments, 98: 1–5. See also here.
S.M. Slater and C.H. Wellman (2015): A quantitative comparison of dispersed spore/pollen and plant megafossil assemblages from a Middle Jurassic plant bed from Yorkshire, UK. Abstract, Paleobiology, 41: 640–660. See also here and (in PDF).
School of Ocean and Earth Science, Southampton Oceanography Centre, UK: Geology Collection, Plants. Go to: Jurassic. Images of Cycadeoidea, Cycadeoidea gigantea, Cycadeoidea microphylla.
! A.R.T. Spencer et al. (2017): New insights into Mesozoic cycad evolution: an exploration of anatomically preserved Cycadaceae seeds from the Jurassic Oxford Clay biota. PeerJ 5.
Description of a new genus of anatomically preserved gymnosperm seed from the Callovian–Oxfordian (Jurassic) Oxford Clay Formation (UK), using a combination of traditional sectioning and synchrotron radiation X-ray micro-tomography (SRXMT).
! A.R.T. Spencer et al. (2015): Middle Jurassic evidence for the origin of Cupressaceae: A paleobotanical context for the roles of regulatory genetics and development in the evolution of conifer seed cones. American Journal of Botany, 102: 942-961.
Hans Steur, Ellecom, The Netherlands: The Jurassic flora of North Yorkshire, Bennettitales from Yorkshire.
STOCKEY, RUTH1 and GAR W. ROTHWELL2. 1Department of Biological Sciences, University of Alberta, Edmonton: 2Department of Environmental and Plant Biology, Ohio University, Athens, Ohio: Permineralized cycad seeds from the Jurassic of British Columbia, Canada. Abstract. Botany 2001, August 12 - 16, 2001; Albuquerque, New Mexico.
R.A. Stockey (1977): Reproductive biology of the Cerro Cuadrado (Jurassic) fossil conifers: Pararaucaria patagonica. In PDF, American Journal of Botany, 64: 733-744. See also here.
C. Sun et al. (2015): A New Species of Czekanowskia (Czekanowskiales) from the Middle Jurassic of Ordos Basin, China. In PDF, Botanica Pacifica, 4: 149-155.
Ge Sun et al. (2010): The Upper Triassic to Middle Jurassic strata and floras of the Junggar Basin, Xinjiang, Northwest China. Abstract, Palaeobiodiversity and Palaeoenvironments, 90: 203-214. See also here (in PDF).
M. Taghi Badihagh and D. Uhl (2019): The first occurrence of Phlebopteris dunkeri and P. woodwardii (Matoniaceae) from the middle Jurassic of Iran, In PDF, # Journal of Palaeogeography. See also here.
D.W. Taylor and H. Li (2018): Paleobotany: Did flowering plants exist in the Jurassic period? eLife, 7: e43421.
"... we infer that Nanjinganthus shows substantial similarity to predicted models of ancestral characters and Early Cretaceous angiosperms, so the evidence suggests that it is a Jurassic flowering plant. ..."
V. Vajda et al. (2016): Disrupted vegetation as a response to Jurassic volcanism in southern Sweden. In PDF, from: Kear, B. P., Lindgren, J., Hurum, J. H., Milàn, J. & Vajda, V. (eds): Mesozoic Biotas of Scandinavia and its Arctic Territories. Geological Society, London, Special Publications, 434.
PDF page 17 shows a reconstruction of a volcanic landscape in central Skåne during the late Early Jurassic, with deposition of pyroclastic and lahar sediments and fossilization of autochthonous and allochthonous plant material.
V. Vajda and S. Turner (2009): The Jurassic: In the forefront of science outreach. PDF file, GFF, 131: 1-3.
See fig. 1: Mid Jurassic terrestrial landscape with Australian flora.
J.H.A. van Konijnenburg-van Cittert et al. (2018): Phialopteris heterophylla (Sternberg ex Göppert, 1836) comb. nov., A rare schizaeaceous fern from the Early Jurassic of Bavaria. In PDF, Fossil Imprint, 74: 55–64. See also here.
! Johanna H.A. van Konijnenburg-van Cittert (2008): The Jurassic fossil plant record of the UK area. PDF file, Proceedings of the Geologists' Association 119: 59-72.
! See fig. 6: how to distinguish bennettialean leaf shapes!
Yongdong Wang et al. (2014): The discovery of Jurassic plants in Shenzhen of Guangdong, southern China and related significance. In PDF, Chin. Sci. Bull., 59: 3630-3637.
Yongdong Wang et al. (2009): Starting on PDF page 13, Biodiversity and palaeoclimatic implications of fossil wood from the non-marine Jurassic of China. PDF file, Episodes, 32.
The link is to a version archived by the Internet Archive´s Wayback Machine.
Z. Wang et al. (2017): A New Species of Ginkgo with Male Cones and Pollen Grains in situ from the Middle Jurassic of Eastern Xinjiang, China. In PDF.
X. Wang et al. (2007): Schmeissneria: A missing link to angiosperms? Open access, BMC Evolutionary Biology, 7.
Jian-Wei Zhang et al. (2012): A new species of the extinct genus Austrohamia (Cupressaceae s.l.) in the Daohugou Jurassic flora of China and its phytogeographical implications. In PDF, Journal of Systematics and Evolution, 50: 72-82. See also here (abstract).
M. Zhao et al. (2015): Anomozamites (Bennettitales) from Middle Jurassic Haifanggou Formation, western Liaoning, China. In PDF, Global Geology.
A. Zigno (1868): Flora fossilis formationis oolithicae (= Le piante fossili dell' Oolite /descritte ed illustrate dal barone Achille de Zigno). In PDF. Padova, Tipografia del Seminario, 1856-1885. See also here (Google books) and
! there (in PDF).
H. Zoller (1968): History of palaeobotany and palynology in Switzerland Abstract, Review of Palaeobotany and Palynology, 7: 81-98.