text:
/*
 * $Id: JavaModule.java 121 2012-01-22 01:40:14Z andre@naef.com $
 * See LICENSE.txt for license terms.
 */
package com.naef.jnlua;

import com.esotericsoftware.reflectasm.ClassAccess;
import com.naef.jnlua.JavaReflector.Metamethod;

import java.lang.reflect.Array;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.*;

import static com.esotericsoftware.reflectasm.util.NumberUtils.convert;
import static com.naef.jnlua.LuaState.toClassName;

/**
 * Provides the Java module for Lua. The Java module contains Java functions for
 * using Java in Lua.
 */
public class JavaModule {
    // -- Static
    private static final JavaModule INSTANCE = new JavaModule();
    private static final Map<String, Class<?>> PRIMITIVE_TYPES = new HashMap<>();
    private static final JavaFunction[] EMPTY_MODULE = new JavaFunction[0];
    private static final Set<Class<?>> WRAPPER_TYPES = new HashSet<>();

    static {
        PRIMITIVE_TYPES.put("boolean", Boolean.TYPE);
        PRIMITIVE_TYPES.put("byte", Byte.TYPE);
        PRIMITIVE_TYPES.put("char", Character.TYPE);
        PRIMITIVE_TYPES.put("double", Double.TYPE);
        PRIMITIVE_TYPES.put("float", Float.TYPE);
        PRIMITIVE_TYPES.put("int", Integer.TYPE);
        PRIMITIVE_TYPES.put("long", Long.TYPE);
        PRIMITIVE_TYPES.put("short", Short.TYPE);
        PRIMITIVE_TYPES.put("void", Void.TYPE);
        WRAPPER_TYPES.add(Boolean.class);
        WRAPPER_TYPES.add(Character.class);
        WRAPPER_TYPES.add(Byte.class);
        WRAPPER_TYPES.add(Short.class);
        WRAPPER_TYPES.add(Integer.class);
        WRAPPER_TYPES.add(Long.class);
        WRAPPER_TYPES.add(Float.class);
        WRAPPER_TYPES.add(Double.class);
        WRAPPER_TYPES.add(Void.class);
        WRAPPER_TYPES.add(String.class);
        WRAPPER_TYPES.add(BigInteger.class);
        WRAPPER_TYPES.add(BigDecimal.class);
    }

    // -- State
    private final JavaFunction[] functions = {new Trace(), new Require(), new New(), new InstanceOf(), new Cast(), new Proxy(), new Pairs(), new IPairs(), new ToLua(), new ToTable(), new Elements(), new Fields(), new Methods(), new Properties()};

    // -- Static methods

    /**
     * Singleton.
     */
    private JavaModule() {
    }

    // -- Construction

    /**
     * Returns the instance of the Java module.
     *
     * @return the instance
     */
    public static JavaModule getInstance() {
        return INSTANCE;
    }

    public final static String nameFormatter = "java.%s(%s)";
    // -- Operations

    /**
     * Loads a type. The named type is a primitive type or a class.
     */
    private static Class<?> loadType(LuaState luaState, String typeName) {
        Class<?> clazz;
        if ((clazz = PRIMITIVE_TYPES.get(typeName)) != null) {
            return clazz;
        }
        try {
            if (!typeName.contains(".")) typeName = "java.lang." + typeName;
            clazz = luaState.getClassLoader().loadClass(typeName);
            return clazz;
        } catch (ClassNotFoundException e) {
            throw new LuaRuntimeException(e);
        }
    }

    /**
     * Opens this module in a Lua state. The method is invoked by
     * {@link LuaState#openLibs()} or by
     * {@link LuaState#openLib(LuaState.Library)} if
     * {@link LuaState.Library#JAVA} is passed.
     *
     * @param luaState the Lua state to open in
     */
    public void open(LuaState luaState) {
        luaState.register("java", functions);
        luaState.pop(1);
    }

    /**
     * Returns a table-like Lua value for the specified map. The returned value
     * corresponds to the return value of the totable() function
     * provided by this Java module.
     *
     * @param map the map
     * @return the table-like Lua value
     */
    public TypedJavaObject toTable(Map<?, ?> map) {
        return ToTable.toTable(map);
    }

    // -- Private methods

    /**
     * Returns a table-like Lua value for the specified list. The returned value
     * corresponds to the return value of the totable() function
     * provided by this Java module.
     *
     * @param list the list
     * @return the table-like Lua value
     */
    public TypedJavaObject toTable(List<?> list) {
        return ToTable.toTable(list);
    }

    public TypedJavaObject toTable(Object[] array) {
        return ToLua.toLua(array);
    }
    // -- Nested types

    private static class Trace extends JavaFunction {
        @Override
        public void call(LuaState luaState, Object[] args) {
            // Check arguments
            int level = (int) luaState.checkInteger(1);
            level = luaState.trace(level);
            luaState.pushInteger(level);
        }

        @Override
        public String getName() {
            return "trace";
        }
    }

    public TypedJavaObject trace(int level) {
        Trace trace = new Trace();
        return new TypedJavaObject() {
            @Override
            public Object getObject() {
                return trace;
            }

            @Override
            public Class getType() {
                return Trace.class;
            }

            @Override
            public boolean isStrong() {
                return false;
            }
        };
    }

    /**
     * Imports a Java class into the Lua namespace. Returns the class and a
     * status code. The status code indicates if the class was stored in the Lua
     * namespace. Primitive types and classes without a package are not stored
     * in the Lua namespace.
     */
    private static class Require extends JavaFunction {
        // -- JavaFunction methods
        String className;

        @Override
        public int invoke(LuaState luaState) {
            // Check arguments
            className = luaState.checkString(1);
            boolean doImport = luaState.checkBoolean(2, false);
            setName(String.format(nameFormatter, "require", className));
            // Load
            Class<?> clazz = loadType(luaState, className);
            luaState.pushJavaObject(clazz);

            // Import
            if (doImport) {
                className = clazz.getName();
                int lastDotIndex = className.lastIndexOf('.');
                if (lastDotIndex >= 0) {
                    String packageName = className.substring(0, lastDotIndex);
                    className = className.substring(lastDotIndex + 1);
                    luaState.register(packageName, EMPTY_MODULE);
                    luaState.pushJavaObject(clazz);
                    luaState.setField(-2, className);
                    luaState.pop(1);
                } else {
                    luaState.pushJavaObject(clazz);
                    luaState.setGlobal(className);
                }
            }
            luaState.pushBoolean(doImport);
            return 2;
        }

        @Override
        public String getName() {
            return "require";
        }
    }

    /**
     * Creates and returns a new Java object or array thereof. The first
     * argument designates the type to instantiate, either as a class or a
     * string. The remaining arguments are the dimensions.
     */

    private static class New extends JavaFunction {
        // -- JavaFunction methods
        String className;

        @Override
        public void call(LuaState luaState, Object[] args) {
            // Find class
            Class<?> clazz;
            if (args[0] instanceof Class) {
                clazz = (Class) args[0];
                className = LuaState.toClassName(clazz);
            } else {
                className = String.valueOf(args[0]);
                clazz = loadType(luaState, className);
            }
            setName(String.format(nameFormatter, "new", className));
            boolean isArray = args.length > 1;
            for (int i = 1; i < args.length; i++) {
                if (args[i] == null) {
                    isArray = false;
                    break;
                }
                final Class c = args[i].getClass();
                if (c != Integer.class && c != int.class && c != double.class && c != Double.class) {
                    isArray = false;
                    break;
                }
                if (((Number) args[i]).intValue() != ((Number) args[i]).doubleValue()) {
                    isArray = false;
                    break;
                }
            }
            if (isArray) {
                // Instantiate
                Object object;
                int dimensionCount = args.length - 1;
                switch (dimensionCount) {
                    case 0:
                        object = Array.newInstance(clazz);
                        break;
                    case 1:
                        object = Array.newInstance(clazz, ((Number) args[1]).intValue());
                        break;
                    default:
                        int[] dimensions = new int[dimensionCount];
                        for (int i = 0; i < dimensionCount; i++) {
                            dimensions[i] = ((Number) args[1 + i]).intValue();
                        }
                        object = Array.newInstance(clazz, dimensions);
                }
                // Return
                luaState.pushJavaObject(object);
            } else {
                Invoker invoker = Invoker.get(clazz, ClassAccess.NEW, "\3");
                LuaState.checkArg(invoker != null, "Cannot find constructor of class %s", toClassName(clazz));
                invoker.call(luaState, args);
            }
        }

        @Override
        public String getName() {
            return "new";
        }
    }

    /**
     * Returns whether an object is an instance of a type. The object is given
     * as the first argument. the type is given as the second argument, either
     * as a class or as a type name.
     */
    private static class InstanceOf extends JavaFunction {
        // -- JavaFunction methods
        String className;

        @Override
        public void call(LuaState luaState, Object[] args) {
            // Get the object
            Object object = args[0];

            // Find class
            Class<?> clazz;
            if (args[1] instanceof Class) {
                clazz = (Class) args[1];
                className = LuaState.toClassName(clazz);
            } else {
                className = String.valueOf(args[1]);
                clazz = loadType(luaState, className);
            }
            setName(String.format(nameFormatter, "instanceof", className));
            // Type check
            luaState.pushBoolean(clazz.isInstance(object));
        }

        @Override
        public String getName() {
            return "instanceof";
        }
    }

    /**
     * Creates a typed Java object.
     */
    private static class Cast extends JavaFunction {
        // -- JavaFunction methods
        String className;

        @Override
        public void call(LuaState luaState, Object[] args) {
            // Find class
            final Class<?> clazz;
            if (args[1] instanceof Class) {
                clazz = (Class) args[1];
                className = toClassName(clazz);
            } else {
                className = String.valueOf(args[1]);
                clazz = loadType(luaState, className);
            }

            // Get the object
            final Object object = convert(args[0], clazz);
            setName(String.format(nameFormatter, "cast", className));
            // Push result
            luaState.pushJavaObject(new TypedJavaObject() {
                @Override
                public Object getObject() {
                    return object;
                }

                @Override
                public Class<?> getType() {
                    return clazz;
                }

                @Override
                public boolean isStrong() {
                    return false;
                }
            });
        }

        @Override
        public String getName() {
            return "cast";
        }
    }

    /**
     * Creates a dynamic proxy object the implements a set of Java interfaces in
     * Lua.
     */
    private static class Proxy extends JavaFunction {
        // -- JavaFunction methods
        String className;

        @Override
        public int invoke(LuaState luaState) {
            // Check table
            luaState.checkType(1, LuaType.TABLE);

            // Get interfaces
            int interfaceCount = luaState.getTop() - 1;
            luaState.checkArg(2, interfaceCount > 0, "no interface specified");
            Class<?>[] interfaces = new Class<?>[interfaceCount];
            for (int i = 0; i < interfaceCount; i++) {
                if (luaState.isJavaObject(i + 2, Class.class)) {
                    interfaces[i] = luaState.checkJavaObject(i + 2, Class.class);
                    className = toClassName(interfaces[i]);
                } else {
                    className = luaState.checkString(i + 2);
                    interfaces[i] = loadType(luaState, className);
                }
            }
            setName(String.format(nameFormatter, "proxy", className));
            // Create proxy
            luaState.pushJavaObjectRaw(luaState.getProxy(1, interfaces));
            return 1;
        }

        @Override
        public String getName() {
            return "proxy";
        }
    }

    /**
     * Provides the ipairs iterator from the Java reflector.
     */
    private static class IPairs extends JavaFunction {
        // -- JavaFunction methods
        String className;

        @Override
        public void call(LuaState luaState, Object[] args) {
            LuaState.checkArg(args[0] != null, "Java object expected, got %s", toClassName(args[0]));
            JavaFunction metamethod = luaState.getMetamethod(args[0], Metamethod.IPAIRS);
            className = toClassName(args[0]);
            setName(String.format(nameFormatter, "ipairs", className));
            metamethod.call(luaState, args);
        }

        @Override
        public String getName() {
            return "ipairs";
        }
    }

    /**
     * Provides the ipairs iterator from the Java reflector.
     */
    private static class Pairs extends JavaFunction {
        String className;

        // -- JavaFunction methods
        @Override
        public void call(LuaState luaState, Object[] args) {
            LuaState.checkArg(args[0] != null, "Java object expected, got %s", toClassName(args[0]));
            JavaFunction metamethod = luaState.getMetamethod(args[0], Metamethod.PAIRS);
            className = toClassName(args[0]);
            setName(String.format(nameFormatter, "pairs", className));
            metamethod.call(luaState, args);
        }

        @Override
        public String getName() {
            return "pairs";
        }
    }

    /**
     * Convert a java Array into native Lua table.
     */
    protected static class ToLua extends JavaFunction {
        public String className;

        @Override
        public void call(LuaState luaState, Object[] args) {
            if (args.length == 0 || args[0] == null) {
                luaState.pushNil();
                return;
            }
            LuaTable table = new LuaTable(new Object[0]);
            table.setTable(args[0]);
            className = toClassName(args[0]);
            setName(String.format(nameFormatter, "tolua", className));
            luaState.pushJavaObject(table);
        }

        public static TypedJavaObject toLua(Object array) {
            return new TypedJavaObject() {
                final LuaTable table = new LuaTable(new Object[0]);

                @Override
                public Object getObject() {
                    table.setTable(array);
                    return table;
                }

                @Override
                public Class getType() {
                    return LuaTable.class;
                }

                @Override
                public boolean isStrong() {
                    return false;
                }
            };
        }

        @Override
        public String getName() {
            return "tolua";
        }
    }

    /**
     * Provides a wrapper object for table-like map and list access from Lua.
     */
    protected static class ToTable extends JavaFunction {
        // -- Static methods
        String className;

        /**
         * Returns a table-like Lua value for the specified map.
         */
        @SuppressWarnings("unchecked")
        public static TypedJavaObject toTable(Map<?, ?> map) {
            return new LuaMap((Map<Object, Object>) map);
        }

        /**
         * Returns a table-list Lua value for the specified list.
         */
        @SuppressWarnings("unchecked")
        public static TypedJavaObject toTable(List<?> list) {
            return new LuaList((List<Object>) list);
        }

        // -- JavaFunction methods
        @SuppressWarnings("unchecked")
        @Override
        public void call(LuaState luaState, Object[] args) {
            className = toClassName(args[0]);
            setName(String.format(nameFormatter, "totable", className));
            if (args[0] instanceof Map) {
                Map<Object, Object> map = (Map<Object, Object>) args[0];
                luaState.pushJavaObject(new LuaMap(map));
            } else if (args[0] instanceof List) {
                List<Object> list = (List<Object>) args[0];
                luaState.pushJavaObject(new LuaList(list));
            } else {
                LuaState.checkArg(1 == 2, "expected map or list, got %s", toClassName(args[0]));
            }
        }

        @Override
        public String getName() {
            return "totable";
        }

        // -- Member types

        /**
         * Provides table-like access in Lua to a Java map.
         */
        protected static class LuaMap extends JavaReflector implements TypedJavaObject {
            // -- Static
            private static final JavaFunction INDEX = new Index();
            private static final JavaFunction NEW_INDEX = new NewIndex();
            // -- State
            private final Map<Object, Object> map;

            // -- Construction

            /**
             * Creates a new instance.
             */
            public LuaMap(Map<Object, Object> map) {
                this.map = map;
            }

            // -- Properties

            /**
             * Returns the map.
             */
            public Map<Object, Object> getMap() {
                return map;
            }

            // -- JavaReflector methods
            @Override
            public JavaFunction getMetamethod(Metamethod metamethod) {
                switch (metamethod) {
                    case INDEX:
                        return INDEX;
                    case NEWINDEX:
                        return NEW_INDEX;
                    default:
                        return null;
                }
            }

            // -- TypedJavaObject methods
            @Override
            public Object getObject() {
                return map;
            }

            @Override
            public Class<?> getType() {
                return Map.class;
            }

            @Override
            public boolean isStrong() {
                return true;
            }

            // -- Member types

            /**
             * __index implementation for maps.
             */
            private static class Index extends JavaFunction {
                // -- JavaFunction methods
                @Override
                public void call(LuaState luaState, Object[] args) {
                    LuaMap luaMap = (LuaMap) args[0];
                    Object key = args[1];
                    LuaState.checkArg(key != null, "attempt to read map with %s accessor", toClassName(args[1]));
                    luaState.pushJavaObject(luaMap.getMap().get(key));
                }
            }

            /**
             * __newindex implementation for maps.
             */
            protected static class NewIndex extends JavaFunction {
                // -- JavaFunction methods
                @Override
                public void call(LuaState luaState, Object[] args) {
                    LuaMap luaMap = (LuaMap) args[0];
                    Object key = args[1];
                    LuaState.checkArg(key != null, "attempt to write map with %s accessor", toClassName(args[1]));
                    Object value = args[2];
                    if (value != null) {
                        luaMap.getMap().put(key, value);
                    } else {
                        luaMap.getMap().remove(key);
                    }
                }
            }
        }

        /**
         * Provides table-like access in Lua to a Java list.
         */
        protected static class LuaList extends JavaReflector implements TypedJavaObject {
            // -- Static
            private static final JavaFunction INDEX = new Index();
            private static final JavaFunction NEW_INDEX = new NewIndex();
            private static final JavaFunction LENGTH = new Length();
            // -- State
            private final List<Object> list;

            // -- Construction

            /**
             * Creates a new instance.
             */
            public LuaList(List<Object> list) {
                this.list = list;
            }

            // -- Properties

            /**
             * Returns the map.
             */
            public List<Object> getList() {
                return list;
            }

            // -- JavaReflector methods
            @Override
            public JavaFunction getMetamethod(Metamethod metamethod) {
                switch (metamethod) {
                    case INDEX:
                        return INDEX;
                    case NEWINDEX:
                        return NEW_INDEX;
                    case LEN:
                        return LENGTH;
                    default:
                        return null;
                }
            }

            // -- TypedJavaObject methods
            @Override
            public Object getObject() {
                return list;
            }

            @Override
            public Class<?> getType() {
                return List.class;
            }

            @Override
            public boolean isStrong() {
                return true;
            }

            // -- Member types

            /**
             * __index implementation for lists.
             */
            private static class Index extends JavaFunction {
                // -- JavaFunction methods
                @Override
                public void call(LuaState luaState, Object[] args) {
                    LuaList luaList = (LuaList) args[0];
                    System.out.println(Arrays.toString(args));
                    LuaState.checkArg(args[1] instanceof Number, "attempt to read list with %s accessor", toClassName(args[1]));
                    int index = ((Number) args[1]).intValue();
                    luaState.pushJavaObject(luaList.getList().get(index - 1));
                }
            }

            /**
             * __newindex implementation for lists.
             */
            private static class NewIndex extends JavaFunction {
                // -- JavaFunction methods
                @Override
                public void call(LuaState luaState, Object[] args) {
                    LuaList luaList = (LuaList) args[0];
                    LuaState.checkArg(args[1] instanceof Number, "attempt to read list with %s accessor", toClassName(args[1]));
                    int index = ((Number) args[1]).intValue();
                    Object value = args[2];
                    if (value != null) {
                        int size = luaList.getList().size();
                        if (index - 1 != size) {
                            luaList.getList().set(index - 1, value);
                        } else {
                            luaList.getList().add(value);
                        }
                    } else {
                        luaList.getList().remove(index - 1);
                    }
                }
            }

            /**
             * __len implementation for lists.
             */
            private static class Length extends JavaFunction {
                // -- JavaFunction methods
                @Override
                public void call(LuaState luaState, Object[] args) {
                    LuaList luaList = (LuaList) args[0];
                    luaState.pushInteger(luaList.getList().size());
                }
            }
        }
    }

    /**
     * Provides an iterator for Iterable objects.
     */
    private static class Elements extends JavaFunction {
        // -- JavaFunction methods
        String className;

        @Override
        public void call(LuaState luaState, Object[] args) {
            className = toClassName(args[0]);
            setName(String.format(nameFormatter, "elements", className));
            Iterable<?> iterable = (Iterable) args[0];
            luaState.pushJavaObject(new ElementIterator(iterable.iterator()));
            luaState.pushJavaObject(iterable);
            luaState.pushNil();
        }

        @Override
        public String getName() {
            return "elements";
        }

        // -- Member types
        private static class ElementIterator extends JavaFunction {
            // -- State
            private final Iterator<?> iterator;

            // -- Construction

            /**
             * Creates a new instance.
             */
            public ElementIterator(Iterator<?> iterator) {
                this.iterator = iterator;
            }

            // -- JavaFunction methods
            @Override
            public void call(LuaState luaState, Object[] args) {
                if (iterator.hasNext()) {
                    luaState.pushJavaObject(iterator.next());
                } else {
                    luaState.pushNil();
                }
            }
        }
    }

    /**
     * Provides an iterator for Java object fields.
     */
    private static class Fields extends JavaFunction {
        // -- JavaFunction methods
        String className;

        @Override
        public void call(LuaState luaState, Object[] args) {
            className = toClassName(args[0]);
            setName(String.format(nameFormatter, "fields", className));
            JavaFunction metamethod = luaState.getMetamethod(args[0], Metamethod.JAVAFIELDS);
            metamethod.call(luaState, args);
        }

        @Override
        public String getName() {
            return "fields";
        }
    }

    /**
     * Provides an iterator for Java methods.
     */
    private static class Methods extends JavaFunction {
        // -- JavaFunction methods
        String className;

        @Override
        public void call(LuaState luaState, Object[] args) {
            className = toClassName(args[0]);
            setName(String.format(nameFormatter, "methods", className));
            JavaFunction metamethod = luaState.getMetamethod(args[0], Metamethod.JAVAMETHODS);
            metamethod.call(luaState, args);
        }

        @Override
        public String getName() {
            return "methods";
        }
    }

    /**
     * Provides an iterator for Java object properties.
     */
    private static class Properties extends JavaFunction {
        // -- JavaFunction methods
        String className;

        @Override
        public void call(LuaState luaState, Object[] args) {
            className = toClassName(args[0]);
            setName(String.format(nameFormatter, "properties", className));
            JavaFunction metamethod = luaState.getMetamethod(args[0], Metamethod.JAVAPROPERTIES);
            metamethod.call(luaState, args);
        }

        @Override
        public String getName() {
            return "properties";
        }
    }
}

redpajama_set_name: RedPajamaGithub


Connor Worthington knew from an early age he was 'different'. But it wasn't until he met Kyle Baker at UCLA lacrosse practice that he knew he wasn't alone.
Fear regarding his sexuality was not new to Connor. He was petrified to let anyone know his true feelings, but was aware everyone around him suspected which way he was heading. Connor played the 'straight' act as long as he could. But it was taking its toll on him. He was sick of it and yearned for a partner and lover.
Kyle recently transferred from the University of Oregon to UCLA, exchanging his Ducks jersey for a Bruin. But what Kyle never expected was to fall head over heels for a long-haired athlete named Connor. The two men instantly grew inseparable, on and off the field. In temporary housing, Kyle needed a roommate and Connor needed to escape the dorms.
Kyle thought he'd found hell when they moved into a small apartment together. Lusting after his roommate distracted him from his studies and practice. But Kyle had a hunch. A hunch that Connor may be in the closet as well.
Their problems had just begun. When the guys on the team begin to suspect Connor is gay, he becomes a target on the field. Kyle had a feeling coming out to a group of macho sportsmen was a mistake, but they did it. Will the decision Connor and Kyle made to reveal their true sexual nature prove the end of the game?
Two men, holding firm to their beliefs, fight a battle against rampant homophobia and find life can be rough. Unnecessarily rough.


The Parisian Planter was born with a unique function: The legs keep the container off the ground so you can wash below, just like the planters in the streets of Paris.
The Parisian Planter is a striking addition to any outdoor patio space. It is available in multiple finishes and looks absolutely stunning when constructed out of copper.
This stylish upscale planter is available in any size and constructed with our without legs. Choose one big enough to fit a large tree, small enough for a single delicate plant or any size in between; this planter can be custom fit for your needs. The unique legs elevate the planter off the ground so you can wash below the planter just like the ones found on the streets of Paris.
The solid steel core and optional copper exterior makes this planter age beautifully and last against the elements. Unlike many other alternative planters the Parisian Planter in copper will patina with age and not chip, crack or peel in the harshest elements.
The Parisian Planter comes with optional redwood liners, drains, water catch pans or self watering reservoirs. The Parisian planter can also be converted into a fire pit feature to use next to a pool or outdoor bar-b-que and controlled using the pool/home control system.
The Parisian Planter is made in the USA in Southern California and fully customizable like all Cooke products.
BURNER: Convert this planter into a fire feature that can be controlled by pool/ home control system.
STANDARD DIMENSIONS: 15" x 15" x 18"
15" x 24" x 18"
15" x 48" x 18"
24" x 36" x 21"
24" x 48" x 21"
28" x 42" x 24"
28" x 60" x 24"


text:
Home / libcom.org reading guide
Unions: reading guide
libcom.org's reading guide around trade or labour unions and the role they play in modern society.
Unions - an introduction - libcom.org's clear and concise guide to unions, their function and how we think workers should relate to them.
Red flags torn: a brief sketch of some problems with unions - Ed Goddard - article briefly explaining some of the problems inherent in the official trade unions and the need for workers to take control of their actions out of the hands union bureaucrats.
Unions: a revolutionary critique - Red and Black Notes - brief text advancing a communist anti-union position, looking at the way unions serve to nullify dissent and channel struggle in "acceptable" directions.
Fighting for ourselves: anarcho-syndicalism and the class struggle - Solidarity Federation - excellent short book, which includes a useful critique of the unions in chapter 1 and proposes a revolutionary alternative.
The origins of the union shop - Tom Wetzel - article about the limitations of union closed shops and how they helped unions act as a tool of discipline of workers instead of a tool for defending their interests.
Organized labour versus "the revolt against work" - John Zerzan - excellent article examining how unions often participate in the exploitation of workers, focussing in particular on the US car manufacturing industry from the 1930s to 1970s (the author much later on in his life wrote a lot of terrible stuff, but we promise this is good).
Institutionalization from below: The unions and social movements in 1970s Italy - Robert Lumley - chapter of Robert Lumley's excellent book on the mass struggles in Italy in the 1960s-70s detailing how the unions re-gained control of the social movements and channelled them into "representative" politics.
"The fight of our lives": an analysis of the UK pensions dispute - Steven Johns - a detailed look at the struggles in 2011-12 in the UK over pensions, and the role the unions played in this.
1970-1972: The Lordstown struggle and the real crisis in production - Ken Weller - highly interesting pamphlet on workers' struggles against the frenetic pace of work at a General Motors plant, and the co-optation of the struggle by the auto workers union.
Wildcat: Dodge Truck June 1974 - detailed article by participants and eyewitnesses about the wildcat strike at the Chrysler truck plant in Michigan, 1974, and the roles of the workers, the union and the left.
Anatomy of an industrial struggle: Chrysler factory at Tonsley Park in Adelaide 1976-1978 - detailed account by one of the workers of two years of struggle at a plant and the role the union played in it.
Other recommended texts
Between a rock and a hard place: thoughts on militant workers as reps - Phil Dickens - Interesting article by a shop steward evaluating the difficulties in being a radical union activist.
On rank-and-file action, trade union representation and building confidence - Phil Dickens - A brief note on why forms of action taken at the behest of trade union structures cannot be equated with rank-and-file led organisation and direct action.
"Just and peaceful labor relations": Why the U.S. government supported collective bargaining - Nate Hawthorn - brief account of some of the history of the capitalist state's sponsorship of contracts for unions in the United States, with an emphasis on the reasoning that politicians and judges gave for their support of collective bargaining.
Thinking about unions: association and representation - Joseph Kay - Interesting article looking at the tensions inside unions between their ability to bring workers together in struggle and their role as representatives/mediators of that struggle.
Better than we know ourselves: a ruling class view of the trade unions - Article adapted from the May 2012 article of Black Flag magazine which examines the trade unions from the perspective of the bourgeoisie.
Trade unions: pillars of capitalism - Internationalist Perspective - Interesting series of articles debating the nature of unions and how we should relate to them.
Unions and political struggle - Mouvement Communiste - French libertarian communist group Mouvement Communiste's analysis and critique of the trade unions.
Unions archive - libcom.org's unions tag containing all our content about the nature of unions and trade unionism.
‹ Spanish civil war 1936-39: reading guide up Women and feminism: reading guide ›
Feb 13 2013 16:11
libcom.org reading guide
Anarchism: reading guide
Anarcho-syndicalism: reading guide
Anthropology: reading guide
Black power: reading guide
Car industry: reading guide
China: reading guide
Council communism: reading guide
France 1968: reading guide
German revolution 1918: reading guide
Hungary 1956: reading guide
Italy 1960s-70s: reading guide
Philosophy: reading guide
Postal service: reading guide
Russian revolution 1917: reading guide
Situationists: reading guide
Spanish civil war 1936-39: reading guide
Women and feminism: reading guide
Work: reading guide
Working class cinema: a video guide
Working class literature: reading guide
World War II: reading guide
libcom.org further reading guide
Spikymike
A more balanced listing of key texts given the continuing arguments on this site around the issue of the trade unions might include some of the following:
One of my favourites:
'Trade Unions Pillars of Capitalism' at http://internationalist-perspective.org/IP/ip-archive/ip_41_trade-unions...
Unions Against Revolution by G.Munis.
Organised Labour versus 'The Revolt Against Work' by J.Zerzan.
Unions and Political Struggle by Mouvement Communiste.
Unions Against the Working Class by the ICC.
and of course some of the old Subversion and Wildcat short texts.
Some similar themes in these of course but not entirely consistent by any means.
If I could offer a bit of flagrant self-promotion:
http://libcom.org/library/better-we-know-ourselves-ruling-class-view-tra...
woooo
Don't forget the communisation critique to
Entdinglichung
during the 1970ies, there was a lively discussion in Germany about the "double character of unions": one the one hand being an elementary expression of the self-organization of the working-class and therefore inherently in a state of confrontation with the ruling class, on the other hand also inherently integrated into capitalism by being the body which negotiates the price of the commodity of labour power with the ruling class and therefor automatically subject to integration (which also applies to revolutionary unions in non-revolutionary-times) ... Marx wrote some stuff about the Janus-headed task of unions inside/against the wage system but I don't know exactly where (probably in The Poverty of Philosophy?)
Marx wrote some stuff about the Janus-headed task of unions inside/against the wage system but I don't know exactly where (probably in The Poverty of Philosophy?)
I'd be interested to read that if anyone can find an excerpt....?
If we're doing self-promotion, I've done a few pieces not only on the role unions play, but also on their own narratives about the role they play:
http://libcom.org/blog/between-rock-hard-place-thoughts-militant-workers...
http://libcom.org/blog/pcs-blinks-first-dispute-hm-revenue-customs-30082...
http://libcom.org/blog/rank-file-action-trade-union-representation-build...
http://libcom.org/blog/trade-unions-crisis-leadership-narrative-21112012
[/shameless plug]
jonthom
Apr 26 2013 13:25
I've not had time to read through all of the above yet but I do have a question: does anyone have a suggested texts for anarchists working within the mainstream unions? I get the impression many anarchists (at least here) are part of whatever the recognised union is where they work, so would be interesting to know what sort of lessons people have learned and whether there's any potential for wider co-ordination (e.g. if a given union has a sizeable enough number of anarchos would it be worthwhile producing some common material?).
I guess a related question would be about the IWW's encouragement of "dual carding"; The Role of the Dual Carder in the IWW (pdf) might be of interest in this regard?
Joakim
A basic pro union text:
https://libcom.org/library/swedish-syndicalism-outline-its-ideology-prac...

redpajama_set_name: RedPajamaCommonCrawl


text:
 package com.cg.exception;

public class EmsException extends Exception {

	private static final long serialVersionUID = -8152785786197763358L;
	private String message;
	public EmsException() {
		super();
	}
	public EmsException(String message) {
		super(message);
		this.message=message;
	}
	@Override
	public String toString() {
		return "EmsException [message=" + message + "]";
	}
	public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}
}//end of class


more particles can better easing.
It should explode and ease into the point of the most smoke then hang around and start to particlize easing out.
Good for a first I recon, but particles are like, 90% needed for explosions.
It was alright for a first but there should be more particles and stuff but if you want to do a fade out thing you should extend the time of that the smoke fade's out and ease it way more, that way it'll look good and effective.
Well, It is not how they should look.
You need to add particles, as everyone has already said. Furthermore you should redraw every frame, and add better shading to the explosion. If you are doing a massive explosion, you need to make it take up the whole screen. It needs to blur more at the end.


text:
Q: Does filter2D in opencv really do its job? I am doing something about convolving images in Python and for sake of speed I chose opencv 2.4.9.
Opencv offers a way called filter2D to do this and here's its docs: http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=filter2d#filter2d
In docs, it says:

Convolves an image with the kernel.

But I have doubts(caused by something else) so I make some experiments on it:
First, I make a normal 3x3 matrix a using numpy as:

  [[ 1.,  5.,  0.],
   [ 7.,  2.,  9.],
   [ 2.,  3.,  4.]]

Then, I make a 2x2 matrix b as the kernel as:

>>> b
  [[ 1.,  2.],
   [ 3.,  4.]]

Finally, in order to make it clear to see difference between convolve and correlate, rotate b by 180 degree and b will look like:

  [[ 4.,  3.],
   [ 2.,  1.]]

Now, All pre-work is done. We could begin the experiment.
Step 1. Use scipy.ndimage.convolve: ndconv = ndimage.convolve(a, b, mode = 'constant') and ndconv is:

  [[ 35.,  33.,  18.],
   [ 41.,  45.,  44.],
   [ 17.,  24.,  16.]]

Convolution op will rotate b by 180 degree and do correlation using b on a. So ndconv[0][0] = 4*1+3*5+2*7+1*2 = 35, and ndconv[2][2] = 4*4+3*0+2*0+1*0 = 16
This result is correct.
Step 2. Use scipy.ndimage.correlate: ndcorr = ndimage.correlate(a, b, mode = 'constant') and ndcorr is:

  [[  4.,  23.,  15.],
   [ 30.,  40.,  47.],
   [ 22.,  29.,  45.]]

According to correlation's definition, ndcorr[0][0] = 1*0+2*0+3*0+4*1 = 4 because the border will expand by 0.
(Someone may be confused by the expandation's difference between conv and corr.
It seems convolve expand image in directions right and down while correlate in directions left and up.)
But this is not the point.
Step 3. Use cv2.filter2D: cvfilter = cv2.filter2D(a, -1, b) and cvfilter is:

  [[ 35.,  34.,  35.],
   [ 41.,  40.,  47.],
   [ 33.,  29.,  45.]]

If we ignore the border cases, we will find that what cv2.filter2D did is actually a correlation other than a convolution! How could I say that?

because cvfilter[1..2][1..2] == ndcorr[1..2][1..2].

WEIRD, isn't it?
Could anyone be able to tell the real thing that cv2.filter2D do? Thanks a lot.

A: If you read a bit further down in the description in the OpenCV documentation:

The function does actually compute correlation, not the convolution:

That is, the kernel is not mirrored around the anchor point. If you need a real convolution, flip the kernel using flip() and set the new anchor to (kernel.cols - anchor.x - 1, kernel.rows - anchor.y - 1).

A: Well I think that's true for OpenCV. If you want real convolution according to Digital Image Processing theory, you should manually reverse the kernel prior to applying cv2.filter2D.

redpajama_set_name: RedPajamaStackExchange


text:
HomeSportGAAReport: Donegal Under-21s defeat Fermanagh to reach Ulster semi-final
Report: Donegal Under-21s defeat Fermanagh to reach Ulster semi-final
Posted: 11:06 pm March 19, 2014
DONEGAL 3-10 FERMANAGH 0-06
BY CHRIS MCNULTY IN BALLYBOFEY
WILLIE Gillespie and Ciaran Brennan netted late first half goals to propel Donegal Under-21s into an Ulster semi-final.
At times this threatened to become more testing than it ought to have been but, amid breezy conditions, it was those pair of majors just before half-time that took the wind out of the Fermanagh sails.
The Erne men scored just once in the second half on a night when captain Patrick McBrearty was in inspired form, scoring 1-7, including a late penalty as Maxi Curran's side overcame a slow start to book their ticket to the semis.
McBrearty led the way with some sublime scores, including a peach of a point early in the second half, belying the conditions and the angles as he slotted nonchalantly over from wide on the left, just beneath the stand on the 13-metre line.
His late penalty gave Donegal a thirteen-point win after they managed to get over an initial bout of stage fright.
Thomas McCaffery shot Fermanagh ahead in the fifth minute, when he popped over the bar with only the goalkeeper – ex-Man Utd underage player Joe Coll – to beat after he got in behind to seize on a slip by Andrew McCloskey.
Coll was a late introduction to the line-up after Kevin McLoughlin of Urris, who had been named to start in goal, picked up a groin injury in the warm-up.
After a nervous start, Donegal were settled with three points from McBrearty – the third of them after good work by Ryan McHugh and Willie Gillespie – before they struck gold with two goals late in the first half.
From a dropping ball in by McBrearty, Naomh Colmcille man Gillespie rose ahead of 'keeper Paddy Sweneey to sweep home. Donegal were ahead for the first time – and Fermanagh were broken by the concession.
In added time at the end of the half Donegal took a real grip on things when full-back Brennan got up on the end of a McBrearty pass and his mishit effort looped over Sweeney to give his side a 2-4 to 0-5 advantage at the break.
In between the goals, Ciaran Thompson added a fine point and despite both goals having a touch of good fortune about them, they were just the tonic that Donegal needed.
Senior panelist Darach O'Connor was deemed unfit to start because of a hamstring injury sustained on Monday, while playing for Colaistí Inis Eoghain in the MacLarnon Cup final.
But with McBrearty on song, aided by an excellent display by fellow Kilcar and Donegal senior player Ryan McHugh and an industrious shift from Martin O'Reilly, Donegal took a firm command during the second half.
McHugh, operating at centre-back, gave an assured and influential performance in the number 6 shirt and it was these, senior players, who drove Donegal to the win, although there is the growing sense that O'Connor's presence will be called for in the next couple of weeks.
McHugh got forward for a score in the 43rd minute, with McBrearty steering over four times in the third quarter. His darts were spot on here and it is surely only a matter of time before he is restored to the senior side's starting XV, too.
A free from Eoin McManus eight minutes into the half was the sum total of Fermanagh's endeavours in the second half and it was certainly a disappointment from the visitors when you consider that the side contains several MacRory Cup medal winners.
The two goals from Gillespie and Brennan broke their resistance and with McBrearty hitting the high notes Donegal were long since home and hosed by the time they put a gloss on the scoreboard late in the day.
McFadden swept over after taking receipt of an O'Reilly off-load and as the game entered its dying moments McFadden was taken down by Niall Shannon for a penalty. McBrearty confidently stepped up and steered the sweetest of efforts past the motionless Sweeney into the bottom corner.
Donegal are into the April 2 semi final and await the winners of next Wednesday's replay between Armagh and Antrim, who finished all square after extra time in a gripping tie at the Athletic Grounds.
DONEGAL: Joe Coll; Conor Parke, Ciaran Brennan (1-0), Andrew McCloskey; Eoin McHugh, Ryan McHugh (0-1), Gavin Gallagher; Hugh McFadden (0-1), Brendan McNelis; Eunan Doherty, Ciaran Thompson (0-1), Martin O'Reilly; Dara Mulgrew, Patrick McBrearty (1-7, 1-0 pen, 3f), Willie Gillespie (1-0).
Subs: Lorcan Connor for Mulgrew (41), Gary Clancy for McNelis (50 mins), Barry Griffin for Doherty (54 mins), Ciaran Cannon for E McHugh (55 mins).
FERMANAGH: Paddy Sweeney; Kevin McDonnell, Che Cullen, Eoin Hamill; Niall Shannon, Leo Cullen, Sean McManus; Ryan Lyons, Ryan Hyde; Daniel Teague, Ruairi Corrigan, Louis Leonard (0-1); Thomas McCaffery (0-1), Eddie Courtney (0-3, 3f), Eoin McManus (0-1, 1f).
Subs: Leigh Jones for McCaffery (30 mins), James Allen for Lyons (39 mins), Brian McAleer for E McManus (47 mins), Niall Maguire for Teague (52), Niall Carson for S McManus (60 mins).
REFEREE: Donal Connolly (Monaghan)


Love. Not Waste. - Become a happy activist!
At Love Not Waste, we are happy activists, spreading the word on how plastic waste can turn into brand new products. We want to show you, surprise you, make you smile. That's why we showcase great sustainable brands, organize beach clean ups and fuel projects like Recky the Recycled Racket Machine and The Million Dollar Store. It's a bright plastics future!
Alkmaar City Cleanup is a wrap, what an awesome day it was. In total 783 people cleaned up 1.017 kilos of waste together. We set the record of biggest city cleanup of the country, read more.
Do you believe, you can build a whole store that doesn't cost anything? We developed a store concept based on 3 basic principles that are changing the world right now. It's happening! Check it out!
Love Not Waste loves to clean up the beach. Collecting new raw material for amazing new products. Follow our adventures online and check out the next clean up!
This Summer we brought beach cleaning to a whole new level with Beach Clean Bingo. It is the most fun way to do something awesome for the planet! Read all about it here. Did you know it's also great for business team events, birthday parties or just a fun date at the beach. Learn more. For more info and bookings, get in touch!
From September 2016 to April 2017 LNW hopped on a surf van and traveled the Atlantic coast from Holland to Morocco to clean the beach and create new stuff from ocean waste. To catch the vibe, watch below video made during the clean up tour in Morocco!
Our enthusiasm and knowledge about plastic recycling comes together in our projects. We work together with both companies and volunteers to make dreams come true. Check out these awesome adventures!
Change the world, start local. We collected the inspiring stories of local entrepreneurs who changed their business in sustainable ways. Read more!
We brought happy activists together to build a machine that creates beach tennis rackets out of old bottle caps. Wanna know how we did it.. check out this video.
Wanna know more about our current projects, check it out.


text:
View my office's listings
Fredericka Martin
President,Broker,Owner,FND REP,RLS,BA
415 Knollcrest Drive Suite 102
Map This
Email: FreddieMartin@Windermere.com
Website: http://freddiemartin.withwre.com
License Number: BRE License # 01229652
California Broker Owner
Tenacity and determination combine to create a tireless work ethic that produces results- that's the platform of Fredericka Martin and that's what makes her a top producing Realtor year after year.
Martin's impressive list of distinctions and accolades from various professional groups and peers may precede her but these achievements have also been gained by her vibrant personality and the need to serve others; her compassion runs deep and found its stride in the intricacies of selling bank owned properties. Helping local families realize their dream of home ownership at an affordable price, and negotiating this reality with banking institutions across the country has launched Martin as one of the premier REO specialists in Shasta & Tehama County averaging more than 100 sales each year in this category alone.
With a previous background in title and escrow, Martin took a 25 year skill set and applied it to real estate in 1998 when she and her husband Wayne opened their own brokerage, Real Estate 1, in Sacramento, CA. Within two years, Martin emerged as a leading sales agent for the Metroplex area and later championed this talent with the opening of a Windermere franchise in Redding, CA in 2011.
With community involvement as the cornerstone of the Seattle based real estate firm, the Windermere franchise is a perfect complement to Martin's philanthropic efforts and her commitment to the residents of the North State.
Contact Fredericka Martin


text:
David Kaiser is the author of the new book No End Save Victory: How FDR Led the Nation into War. His other books include History Unfolding, The Road to Dallas, and American Tragedy. He has taught at Harvard, Carnegie Mellon, and the Naval War College, and he lives in Watertown, Mass.
Q: Why did you decide to focus on this 1940-41 period in FDR's life?
A: The months from May 1940 until December 1941 were one of the great turning points in world history. Having led the United States through the Depression, Roosevelt had to face a potentially imminent threat to the western hemisphere, or a world war.
I have always been fascinated by the way he prepared the country for different contingencies ranging from an attack on the western hemisphere to a world war on three continents.
Meanwhile, he had to win an unprecedented re-election campaign for a third term, and draw upon the political capital his administration had amassed to organize the nation for war. The story, I was convinced, would captivate any reader.
Q: You write, "The presidential campaign of 1940 was one of the most dramatic in American history, rivaling those of 1860, 1896, and 1960 both in excitement and in significance." How do those elections compare to one another?
A: The issue in 1860 was clearly whether the Union would break apart, since much of the South proclaimed its intention to secede if Lincoln won. Nonetheless, he carried nearly every northern state. That is probably the closest comparison to 1940, since the American people clearly re-elected FDR to handle the coming war.
In 1896 the nation faced one of the clearest choices between political and economic philosophies in its history, and the conservative William McKinley prevailed over the populist William Jennings Bryan.
I included 1960 because I still regard it as the most exciting election that I and many readers are still able to remember, and because it, too, set the country on a new path.
Q: Why did you select "No End Save Victory" as the title for this book?
A: The title comes from the conclusion Roosevelt's State of the Union address in January 1941. The full quote reads as follows:
"This nation has placed its destiny in the hands and heads and hearts of its millions of free men and women; and its faith in freedom under the guidance of God. Freedom means the supremacy of human rights everywhere. Our support goes to those who struggle to gain those rights or keep them. Our strength is our unity of purpose. To that high concept there can be no end save victory."
This was one of many instances going back to 1936 in which Roosevelt foresaw a struggle of ideals between democratic nations, led by the United States, and dictatorships. This was a key declaration, because it was the first time that he referred not merely to defending the United States, but to victory over its potential enemies.
Six months later, in July, he directed the War Department to plan for the total defeat of all possible enemies in an imminent war, and by the time of Pearl Harbor, an outline of those plans was ready. This was perhaps the greatest achievement detailed in my book.
Q: In the book, you discuss the Missionary generation (born from around 1863-1884), of which FDR was a part. What characterized that generation, and how did those characteristics affect FDR in the years leading up to World War II?
A: The Missionary generation had a life experience in some ways parallel to the Boom generation. The Missionaries were born from 1863 through 1883, growing up in the wake of the Civil War, and the Boomers grew up in the wake of the Second World War.
Both generations rebelled against their parent's values in young adulthood. Many of the Missionaries rejected the pure materialism of the Gilded Age and sought to build a new order based largely on moral values, both at home and abroad.
This was how Franklin Roosevelt defined the problem posed by the Depression in March 1933, as I show, and it was also how he described the worldwide struggle for power that began in the late 1930s.
The Missionaries had enormous energy and self-confidence and were used to undertaking great tasks. This allowed men like Roosevelt, Secretary of War Stimson, General George C. Marshall, and many more to face the unprecedented challenges of the Second World War.
They had no doubt that they knew what needed to be done, and how to do it. They succeeded, bequeathing us the world in which we have lived our entire lives.
A: I am gathering data for a possible book on the greatest players in the history of baseball. Eventually I think I might write a book on Wilson's response to the First World War as a parallel to No End Save Victory.
A: No End Save Victory concludes with a comparison of Roosevelt and the Missionary generation's response to the crises they faced on the one hand, and the Boom generation's response to the crises of our time, on the other.
--Interview with Deborah Kalb


text:
College Basketball Odds, Picks and Predictions for Fresno State vs. Utah (Tuesday, Dec. 21)
Photo by Matt Cohen/Icon Sportswire via Getty Images. Pictured: Isaiah Hill
Kyle Remillard
Updated Fresno State vs. Utah odds list the Utes as a 3-point favorite, up half a point from earlier in the day on Tuesday. Some books have even gone to -3.5.
Kyle Remillard believes injuries will catch up with Utah, creating value on Fresno State for this non-conference clash.
Get his full Fresno State vs. Utah preview and pick below.
Fresno State vs. Utah Odds
Tuesday, Dec. 21
7 p.m. ET
Pac-12 Network
Fresno State Odds
Spread Total Moneyline
-110o / -110u
Utah Odds
Odds via DraftKings. Get up-to-the-minute college basketball odds here.
Fresno State travels to Salt Lake City in search of its 10th victory of the season, as it faces a banged-up Utah squad.
Fresno State is 9-2, with its sole losses coming by eight points to California and San Francisco. The Bulldogs have the fifth-ranked scoring defense, which has held opponents to 56 points per game. Only one opponent has scored more than 65 points all season against the stifling defense.
Utah will try to be the second team to complete that feat, but it is dealing with the injury bug. The Utes' two rim protecting forwards are out, and that proved costly in the 83-75 loss to Missouri last time out.
The Utes have lost four of their last six games and hope to get back in the win column against the Bulldogs.
Whether Utah can rally around a guard-oriented lineup and slow down Fresno's big men is a challenge that may be unfeasible.
PointsBet Win $205 if the CBB Team You Bet Scores a Point! New users in MI, NJ, CO, IN, IA, WV, IL, VA CLAIM YOUR $205
Fresno State has relied on its relentless defense that has held opponents to 56 points per game this season. The group owns the 68th defensive efficiency ranking in the nation, which is third in the Mountain West.
The Bulldogs have been dominant at defending the paint, holding opponents to 44% on 2-point attempts — 35th-best in the country.
Much of that success is thanks to the seven-foot junior forward Orlando Robinson. He's a force inside the paint, averaging 18.3 points and 8.1 rebounds per game.
Robinson is vital for the program on both ends of the floor. He's going to create a massive mismatch against a Utah program that is missing both of its big men in this matchup.
Fresno owns a well-balanced offense that has six players averaging seven or more points per game this season. The Bulldogs have been efficient on the offensive end, with the one struggle being the 3-point shots.
Utah may elect to go with a zone defense in this game. If the Utes decide to go that route, Arizona transfer Jemarl Baker Jr. will be able to light it up from outside.
Baker Jr. is a sharpshooter who has connected on 35% of his 3-point attempts in two seasons with the Wildcats. He returned three games ago from a knee injury and should be at full strength in this matchup.
The must-have app for college basketball bettors
The best NCAAB betting scoreboard
Free picks from proven pros
Live win probabilities for your bets
Craig Smith has already endured his fair share of challenges in his first season at the helm of the Utes. Utah only returned one major piece from last year's squad in Branden Carlson, and turned to the transfer portal to bring in six new guys.
Utah started out winning its first five games against sub-par competition, but it has since won just two of its last six games as the competition has stiffened.
The injury bug has hit the program, as Utah lost 6-foot-10 forward Dusan Mahorcic until January with a knee injury.
Life got tougher for the Utes after hearing that Carlson was placed in the health-and-safety protocols and is likely to miss this matchup with Fresno. Carlson is a seven-foot junior who is the leading scorer (13.9) and rebounder for the Utes.
Without both in the lineup, Utah struggled to slow down the Missouri big men last time out. Kobe Brown scored 27 points while going 8-for-11 from the field.
Mizzou scored 38 points in the paint, and that's a major concern as Utah now welcomes in a monster in Robinson.
Utah has been strong at defending the 3-point shots — ranking seventh in the nation — but has struggled in defending the paint, allowing opponents to hit 47%. That's a bad recipe against Fresno, which dominates the paint and doesn't rely on many outside shot attempts.
Fresno State vs. Utah Betting Pick
This Fresno State program has started to gel and is 9-2 on the season. More impressively, the group is 8-2 against the spread. The Bulldogs travel to Utah to face a program that has covered just twice in its last nine games.
Injuries have been a major factor in Utah's recent struggles, and it will play a huge role in this matchup.
With Carlson out due to COVID-19 protocols and Mahorcic nursing his knee injury, the Utes are left with 6-foot-9 forward Riley Battin to defend the paint. Battin isn't much of a rim protector, as he's accumulated just one block in his 257 minutes on the court this season.
Fresno State's offense is run through Robinson, who has scored on 58% of his 2-point attempts and is a force in the paint. We saw Utah have no answer for Missouri's big men, and it won't have an answer to Robinson in this game.
With all the injuries to Utah's frontcourt, there is value on Fresno State with the points. I will be taking the free points — in addition to the moneyline — as I see the Bulldogs leaving Salt Lake City with its 10th victory of the season.
Pick: Fresno State +2.5 (Play to PK)


HapKiDo teaches multiple movements in self defense, joint locks, pressure points, and forms. The classes emphasize strength in both the body and the mind.
Basic Kicking: Some kicking techniques include, but are not limited to, knee and heel strikes, shin kicks, spinning kicks, and hook kicks. Each belt level contains three to eight kicking techniques.
Release and Strike Techniques: These include both offensive and defensive methods of punching, uniform grabbing, and throwing.
Ground and Rolling Techniques: These techniques include basic and advanced falling, jumping, and rolling.
A Breaking Technique: Breaking a board with a kickThe Hapkido Program is for adults and older teenagers only. For more information on our Hapkido program, please feel free to talk to Master Yun personally.
The HapKiDo program is for teens and adults only. If you are interested in HapKiDo, please come by the studio and speak with Master Yun personally.
These students are black belts in BOTH Taekwondo and Hapkido. Jess (right) is a second degree black belt in Taekwondo and also one of the instructors.
A martial arts workout is the best workout ever! Every class is different, but every class starts with a warm-up, stretching, cardio, strength training, forms and kicking. And every TKD class includes cool K-pop music!
Start Your Two-Week Trial today!


March Events: Yoga Fasting Camp.
Yoga Journey studios are located in urban areas. Our classes are taught by over 30 certified yoga teachers. Ariel yoga、Yoga Jyoti、Hot Yoga..Over 100 group and personal classes every week for different level of yoga practitioners. Special promotion now!


text:
Hopalong Rides The Sunset Trail
B-Westerns, Hopalong Cassidy, Western Film Preservation Society
Hopalong Cassidy and George "Gabby" Hayes (Art © Jim Sanders)
Bill Boyd, as Hoppy is aiming to ride down the Sunset Trail. And, of course, Topper was one of the biggest stars of the Hoppy movies.
Sunset Trail (Paramount, 1939) Starring William Boyd as Hopalong Cassidy, George Hayes, Russell Hayden and Charlotte Wynters. Directed by Lesley Selander
The Cattle Thief (Columbia, 1936) Starring Ken Maynard, Geneva Mitchell, (a YOUNG) Ward Bond, Roger Williams and Jim Marcus. Directed by Spencer G. Bennet
Chapters 8 & 9 of the serial Dick Tracy vs Crime Inc. (Republic, 1941) Starring Ralph Byrd, The Ghost, Michael Owen and Jan Wiley. Directed by William Witney and John English.
1 thought on "Hopalong Rides The Sunset Trail"
jcalberta said:
Git up Topper !


text:
Feds review Motor City Match entrepreneurship-boosting program
Annalise Frank
At issue is record keeping and whether federal funds were used properly
City "confident we'll satisfy HUD's questions"
Change coming as program nears its five-year planned end
Annalise Frank/Crain's Detroit Business
Detroit Mayor Mike Duggan (center) poses with winners of a total of $500,000 in Motor City Match grants on April 25, 2017, at Lil Brilliant Mindz Child Care center in Detroit.
Federal officials are reviewing Detroit's Motor City Match program's record keeping and whether federal funds were used properly as change is on the horizon next year for the initiative aimed at building entrepreneurship.
The review comes out of the U.S. Housing and Urban Development Department's routine monitoring of Detroit's grantmaking program for new and existing small businesses. Motor City Match is funded with money from HUD's Community Development Block Grant program.
The city is working to address HUD concerns detailed in a September monitoring report, said Arthur Jemison, chief of services and infrastructure for Mayor Mike Duggan.
The Detroit News first reported the HUD review.
Records provided to HUD didn't "sufficiently evidence" that the city had met requirements for using the community-focused economic development dollars, according to a May HUD letter updating the status of the September report.
"We're confident we'll satisfy HUD's questions," Jemison said, adding that the city still sees Motor City Match as a "great program" it wants to continue — though likely in a somewhat different form.
The program halted using the HUD funds after the federal agency requested it do so in early May. But Jemison said that didn't stall Motor City Match.
The city, starting in March, began working with City Council to swap some Community Development Block Grant dollars for general fund dollars so Motor City Match could continue operating while it addresses the HUD review, according to Jemison.
He said an email was sent explaining that the grantmaking program was continuing as currently planned, with the next Motor City Match funding round to be announced soon and another planned for August. It was not immediately clear to whom that email was sent.
The city and HUD have been in discussion and met over the review; another meeting is scheduled for the beginning of July, according to Jemison. They're likely to glean more of a timeline then for when Motor City Match could start using CDBG funding again, he said.
HUD's findings, detailed in a May 1 letter to Donald Rencher, director of Detroit's Housing and Revitalization Department, say the program didn't provide evidence that it's adequately targeting low-to-moderate income areas as necessary to receive funding.
"The records provided to this office did not sufficiently evidence that the CDBG funds used for the Motor City Match program met a national objective and eligible activity," the letter said. It also said there were "insufficient records to evidence meeting the economic development underwriting and public benefit standard requirements for the Motor City Match program."
Jemison said HUD has acknowledged since then that the city made progress in providing answers.
HUD declined to make a representative available for an interview with Crain's. Instead the agency offered a statement from Jim Cunningham, its Midwest deputy regional administrator:
"Following a routine monitoring of Detroit's block grant program, we recommended the City improve its record-keeping and documentation procedures to ensure federal taxpayer dollars are tracked appropriately. HUD and the City of Detroit are working closely together to address these findings so, together, we can make certain lower income Detroit residents get the full benefit of these funds."
A request for comment from a Motor City Match representative was directed to the city of Detroit.
Part of the problem stems from the fact that a portion of Motor City Match's CDBG funds are coming through a program that's new, not widely used and aimed at specific "neighborhood revitalization strategy areas" that allow cities to invest in a wider variety of programs than are normally allowed with CDBG funds, Jemison said.
He said the city of Detroit has spent an "enormous amount of time" in recent years working on a good relationship with HUD and that for the last four years it has met HUD's yearly timeliness threshold for allocated funds.
"You're only allowed to have 1.5 times your annual allocation of funds on hand on a date every year ..." he said. "We were almost at two times the number of dollars for 2013."
'Motor City Match 2.0'
Duggan originally pitched Motor City Match in early 2015 as a five-year-long program that would grant $500,000 per quarter to boost entrepreneurship in the city. It garnered national attention as a first-of-its-kind revitalization effort in a city fresh out of bankruptcy and ripe for rebuilding. Former Vice President Joe Biden even came to town to tout the program.
Motor City Match is nearing that five-year mark. In August, Crain's reported that officials were moving to push the program further from a grant-making machine to a more refined tool for small-business incubation in neighborhoods outside of downtown.
The city's contract with the Economic Development Corp., which takes the CDBG dollars and manages Motor City Match, is up at the end of the year. It plans to rebid that contract to launch a "Motor City Match 2.0" next year.
How it would take shape isn't finalized, but Jemison said the EDC would be welcome to bid for the new contract, either on its own or with partners.
Running an open bid for Motor City Match management would "give us a little bit more regulatory freedom with CDBG" dollars than it got through choosing EDC without that procurement process, Jemison said.
"Doing the bid means that not only do we get the additional regulatory relaxation, we also get to explicitly outline in the bid the way we want the billing to go so it's easier for the next people to implement … to avoid this problem," he said, referring to the HUD report on lack of documentation on appropriate use of funds.
It's also retooling its mix of funding from 100 percent CDBG dollars in previous years to an estimated 65 percent general fund and 35 percent CDBG next year, which would give it more freedom to use its funding for technical assistance, as opposed to direct business grants.
Jemison said Wednesday that "Motor City Match 2.0" would likely include more technical assistance for businesses, but declined to say how exactly the mix of assistance and capital grants would shake out.
As of Nov. 9, the program had promised cash awards of $7 million in 14 rounds of grants, according to an "impact dashboard" for Motor City Match provided by the city.
It had served a total of 1,291 businesses, with grants and loans offered to 159; 53 had opened businesses, while 101 were in financing or under construction. It also provides in-kind site selection, design and planning services. Southeast Michigan community development financial institutions, foundations and corporations also support the program.
Winners of Motor City Match awards include The Lip Bar, Eastern Market Brewing Co., Rebel Cycle Studio, Grandmont Rosedale Development Corp. and Detroit City Fieldhouse.
Several award recipients with whom Crain's spoke Wednesday or prior have said they received their Motor City Match grants without issue, or were not yet at the stage to be eligible to receive them. The 1-1 matching grants are intended to fill gaps in financing for a project and are given as a reimbursement, not up front.
About $2.9 million had been distributed of a total $6 million promised to the small business owners, as of Crain's August report.
WSU Ilitch School of Business names 2020 hall of fame class
Entrepreneurs win $1 million in Detroit Demo Day competition
Sponsored Content: Detroit Lions in the community means more than ever before


text:
The Trump Administration Still Can't Stop Kids' Lawsuit Over Climate Change
Catie Keck
Filed to:Climate Change
People gather near the U.S. Capitol for the People's Climate Movement before marching to the White House to protest President Donald Trump's environmental policies April 29, 2017 in Washington, DC.
Photo: Astrid Riecken (Getty)
The United States Supreme Court on Friday rejected the Trump administration's attempt to block a trial over its environmental agenda. The constitutional climate lawsuit being brought by 21 young activists between the ages of 11 and 22 is a go for trial, provided there isn't any further interference.
On Friday, seven of the justices—save Justices Clarence Thomas and Neil Gorsuch—found there was no basis for granting the administration's bid for a stay. Reuters reported Friday that the trial was set to start on October 29 in Eugene, Oregon but was postponed by the judge.
"The youth of our nation won an important decision today from the Supreme Court that shows even the most powerful government in the world must follow the rules and process of litigation in our democracy," Julia Olson, co-counsel for the youth plaintiffs, said in a statement. Olson is also the executive director and chief legal counsel of Our Children's Trust, the nonprofit that's supporting the lawsuit.
The suit was originally filed in 2015 in a federal court in Eugene against the Obama administration but is now facing off with the current administration. It argues that the government, through its national energy system and its effects on the environment, is depriving the plaintiffs of their constitutional rights to life, liberty, and property.
Kelsey Juliana, a 22-year-old plaintiff from Eugene, thanked supporters in a statement on Friday while also calling out "exhausting" petitions for stay and dismissal.
"I want to trust that we are truly on track for trial without having further delays, but these defendants are treating this case, our democracy, and the security of mine and future generations like it's a game," she said. "To everyone who has invested in this case, to those who've followed along our journey for the past three years and counting: stay with us, in hope and in the pursuit of justice."
The plaintiffs have already filed a request in the District Court to move forward with a trial. The Trump administration may still be able to challenge the suit in the San Francisco-based 9th U.S. Circuit Court of Appeals, according to Reuters, but a trial will move forward if neither the high court nor 9th Circuit steps in.
[Reuters]
The Trump Administration Can't Seem to Stop the Climate Kids' Lawsuit [Updated]
The Trump Administration Just Lost Another Court Battle To Kids
Those Kids Suing for Climate Action Might Soon Get Their Day in Court
Climate Science Goes to Court Next Week


text:
Writing Down a Life: Crafting the Obituary
An obituary serves as notification that an individual has passed away and details of the services that are to take place. But it can be far more than that. A well-crafted obituary can detail the life of the deceased, with style.
An obituary's length may be somewhat dictated by the space available (and the related costs) in the newspaper it is to appear in. Therefore it's best to check how much room you have before you begin your composition. An obituary typically appears in print a few days prior to the memorial service. There are some cases where this may not be possible, therefore give some consideration to the guidelines below when composing the obituary.What Should You Include?
Naturally, it is reasonable to have the full name, along with the location and date of passing included so that there is no confusion over who has died.
You may wish to consider placing a photograph (which may appear in black & white or in color depending on the newspaper's format) with the text. There are usually extra charges applied if you are thinking of using a photograph.
If you wish, mention where the deceased resided. Do not include the street address, for security reasons; just mention the city and region/state/province/county.
In a concise manner, write about the significant events in the life of the deceased. This may include the schools he or she attended and any degrees attained; you may also include any vocations or interests that the deceased was involved with.
Additional information such as where the body will be laid to rest may be mentioned. At this point list the details of the time and location of any services for the deceased: these may include the visitation, rosary, funeral, memorial service, interment, or inurnment where appropriate.
Add the Names of Those Left Behind…as Well as Those Who Went Ahead
It is common to include a list of those who have survived the deceased, in addition to those who passed away prior to the death of your loved one. The list might include (where applicable):
spouse, partner, or companion
children, adopted children, and step-children
parents, step-parents
siblings, half- and step-siblings
grandchildren, great-grandchildren, and great-great-grandchildren
The relatives listed above may be listed by name. Some relatives might not be mentioned by name but could be included in terms of their relationship to the deceased. In other words, the obituary may mention that the deceased had 5 grandchildren, or 7 great-grandchildren.
Tips for Crafting a Complete Obituary
If you don't know where to start, do read other obituaries to gain an idea of how personal and touching an obituary may be. There is a blank sample obituary at the bottom of this page which you may also find useful.
Do use such terms as "visitation will be from" or "friends may call from". Do not say the deceased will "lie in state" as that only applies to a head of state such as the prime minister or president.
Use of the phrase "in lieu of flowers" when memorial donations are to be requested limits how readers can express their sympathy. Perhaps they want to send flowers to the family. Unless you are adamant that flowers are not wanted, you may want to start the final paragraph of the obituary with the words "Memorial donations may be made to" and then state the charity's name.
If you wish, send the obituary to newspapers in other cities or towns where the deceased may have resided previously.
Obtain copies of the obituary to send to distant relatives and friends.
Any and all information to be included in the obituary should be verified with another family member. A newspaper will have to verify with the funeral home being utilized that the deceased is in fact being taken care of by that funeral home.
Seeing as most newspapers charge by the word when placing an obituary, it may not always be feasible to mention everything that we have stated in our guidelines. Use your own discretion and do not put yourself under any financial hardship. Your loved one would understand.
We provide free on our website, where the obituary can be available for anyone with access to the internet to view. It is also a place where friends and family can leave messages of condolence.
Sample Obituary
(Name)
(Name), age (years), passed away on (date). He/She was a resident of (city) for (number) years and was formerly a resident of (former city). He/She was a (occupation title).
(Name) was born on (date) to (father's name) and (mother's first name) (_(maiden last name in parenthesis)_) (married last name) in (city, state). On (date) he/she married (spouse's name) in (city, state).
(Name or nickname) was fond of (hobby). He/She also enjoyed (other hobby), and had an appreciation for (another hobby). He/She was a member of (church or organization name) and attended (high school or college name) school, and graduated in (year). He/She served in the United States (branch of service), for (number) years.
He/She is survived by his/her loving wife/husband, (name); his/her children: (names); his/her parents: (names); his/her siblings: (names); his/her grandchildren: (names); and his/her great-grandchildren: (names). He/She was preceded in death by (names).
A visitation will be held from (start time) to (end time) on (day), (date) at (location). A (funeral, memorial, Mass, etc.) service will be held at (time) on (day), (date) at (name of location), (address of location). (entombment / interment / inurnment / scattering) will be at the (name of Mausoleum / Columbarium / Rose Gardens / Cemetery). A reception will be held following the (type of service) at (name of location), (address of location).
Memorials in (name or nickname)'s name may be made to the (name of charitable organization), (mailing address or website address of charitable organization).
Personal Caption?
Online Condolences:
ShrineOfRemembrance.com
America the Beautiful Chapel
Off-Street Parking for over 200 Vehicles
(walk-ins welcome)
1730 E. Fountain Blvd, Colorado Springs, CO 80910
Shrine of Remembrance North
Vista Grande Chapel
5440 North Union Blvd, Colorado Springs, CO 80918


text:
Dungeon Stars
Action , RPG
Furnace Games
Riposte Games & Co.
Dungeon Stars is an explosive evolution of a hack -n- slash dungeon crawler with addictive button-smashing action set in a world populated by lovable characters, a beautifully rich environment, and rapid progression.
Dungeon Stars is a side scrolling hack and slash dungeon crawling RPG from Furnace Games. When I hear hack and slash, I think about games like Diablo and Titan Quest. In other words, lots of enemies, lots of loot, and lots of frantic clicking. Dungeon Stars delivers on those, but this isn't a Diablo clone, as it's side scrolling nature combined with auto movement puts it more in line with mobile RPGs. Just like another other mobile RPG, you have a shop, different heroes and pets to collect. There's also gear you can buy from the store or get as loot to outfit your heroes to better tackle the dungeon.
Gain the right items and have enough cash on hand and you can promote your heroes up a star, making them even stronger. 2-star heroes can have a pet, as well as an additional special move. When your hero is fully outfitted, and you are ready to tackle the dungeon, you'll find the familiar mobile rpg formula of several levels to tackle, unlocking the next one after you complete each one. This is also where it tends to stick out the most from mobile RPGs however, as it takes much more concentration. Each level will have at least 3 floors, with the count increasing from there. You are able to heal or revive your heroes in between each floor, given that you have the potions available and you made it to the end.
You can take multiple heroes with you, but only one of them will be active at a time, allowing you to switch between them at will, with a slight cool down of course. Your hero does move forward on his own, but it's up to you to repeatedly tap the attack button, and hold it block in order to survive. Some enemies will have a shield image above their head, in which you'll need to use your slam attack in order to break their defense. You can also use special moves to quickly dispatch your enemies as you make your way through each floor. Mages can use a spell, like hurling an ice blast to freeze enemies prior to getting up and close and repeatedly beating them over the head with your staff.
All in all, Dungeon Stars is a fun game that most closely resembles mobile games today, but without all the daily events and loot boxes. That lack of loot boxes or daily events, or any form of micro-transactions is really refreshing. My friend Aaron commented on my stream (sorry it says Titan Quest, Twitch doesn't recognize Dungeon Stars yet) that it reminded him of Castle Crashers, and if I have a gripe, it's that it's not close enough to Castle Crashers. Adding in a multiplayer co-op mode for up to 4 of your friends, sitting there on the couch, drinking some beers as you cruise through a dungeon would be awesome. Even online with friends would be a great time. The way they set up the game though, I don't see that happening, but who knows, maybe they'll add in a Battle Royale mode. Joking about that one. Maybe. It is still early in development, as it enters Early Access on April 26th, so it does have a fantastic base going into Early Access in which to grow.
We thought 2021 was going away, we thought 2022 was gonna be better... Wow, don't we look dumb...
TheBulldogOmega joins the IBIF crew to send 2021 out with a drunken bang! Listen in for the breakdown of out…
Pardon our dust, Chris has almost every technical difficulty imaginable. Good thing Eric and Jason are on the Podcast too.
IBIF Podcast 114 – Farming Goat Simulator
Better late than than never, right?
IBIF Podcast 113 – isuckatgames.com
No Microtransactions
All the Hacking and Slashing You Could Want
Zero Story
Not Enough Sweet Loot


My husband is in a time crunch. He just found out that he got into the Fire Dept which starts on APRIL 26th! When he went for his fire dept. physical the Dr. told him that he will not be able to wear his contacts on the job and will have to wear glasses - which he does NOT want to do! So he went to a Lasik Center (I believe it's a well known chain lasik center) yesterday and the Dr. told him that he was a great candidate - had a good amount of tissue, and that his corneas were shaped fine. He gave him a pair of temporary glasses and scheduled his surgery for Saturday - day after tomorrow! After the research I have done, I am trying to change his mind so that his eyes can rest longer - at least a week. He called the evaluation dr. and mentioned to him his (MY) concern. That dr. called the surgeon and told him his evaluation results and the dr. agreed and said that his corneas don't seem to be misshaped and he should be fine. He really wants to do the surgery tomorrow so that he can have the week to heal and rest before the fire academy starts. I told him to maybe at least try to get in somewhere next Friday as his eyes will have rested a week - not just 48 hours. (I'm not sure if he will have any luck b/c all the other centers I called said they make them wait 2 weeks?!?!) The chain lasik center will not have any other appts. until after the academy starts which he will not be able to do? Or - wait - could he? Could he have it on a Saturday and be able to do serious (bootcamp-like) exercises that following Monday? Sorry so long! ANY ADVICE and information is welcome...Will it be ok if he does it tomorrow. I think he's going to! AGHHH! Should he even be risking this right before the academy? He's been wanting this for sooo long and it finally happened!
Please excuse the drama...we are little stressed about this! Please only refer to the medical part if you wish!
If I were him, id wait a month. He can wear glasses on the job so what's the hurry? What's the minimum vision requirement? 20/40? 20/30? 20/20? I hope he has done his research on lasik and has realistic expectations.
Did he do it? How did things go?
He didn't do it! He ordered himself a good pair of glasses and will wait for the right time. It took some convincing, but in the end, it's a big decision!
So, my first advice would be to NOT go back to the Lasik Center that said it would be ok to do the surgery practically the same week that he came out of contact lenses.
While complications from Lasik are a low percentage, when they do happen, they can immensely stressful and life altering. I was an EMT for many years and I can relate to your husbands situation - it's hard enough being an "industrial athlete" without glasses getting in the way.
1) While you can go to work, mostly, the Monday after surgery, you have to avoid trauma to the eye for a month after surgery at least. Water also - is that practical on scene at a fire?
2) The eyes will feel uncomfortable, and incredibly dry. I was hydrating with drops every half hour for the first week - hard to do in turnout gear.
3) You cannot get exposed to MRSA for a month - does the fire department do medical calls? It would be advisable not to use a common shower area at the fire station - is that practical?
4) Maybe it's best to wait until after probation, when he can schedule extended time off, and/or has disability in case he's a part of the .0001% of people who have severe troubles, post surgery.
As for the rest, there's just so much to research - the surgeon matters, the technology matters. What diagnostic work has the surgeon done? What is their historical success rate? What is his best corrected vision attainable?
Too many serious questions need to be answered first.
Thanks Davidmartinomalley for the good info! Those are the kind of specifics that we need to know! I appreciate the help!


text:
Smel *creative agency
A book like a piece of music
Designing a book like a piece of music - but one of 688 pages. In recent years, writer Irene van der Linde and documentary photographer Nicole Segers have traveled in the footsteps of British writer Rebecca West through the former Yugoslavia and Albania. With West's magnum opus Black Lamb and Gray Falcon (1942) under their arm, they explored the meaning of the new borders in the Balkans.
Looking for boundaries
In Blood and honey, language and image are intertwined into an inseparable whole - in the same way, history is intertwined with the environment. That is the basis of the book: a story with two speeds in which language takes over from image for once, and then image takes over from language. As a thread through the book, framed color images are centered on the pages. Only the black and white images push the boundaries on one side. The lyrics work like a kind of harmonica, as if the book "breathes text" and that every time you are surprised by what is to come. Texts never just stop somewhere halfway down the page, because the font sizes have to adapt to the type area everywhere. For example, text pages are treated in the same way as image pages.
The designers from Smel pushed the boundaries in the design of our book. Blood and Honey is an innovative and unique combination of documentary photography and literary non-fiction. Language and images tell a continuous story, as in a travel journal. With almost mathematical precision, Smel devised a model within which the concept could be worked out. This resulted in an enjoyable and close collaboration with us as makers. The infectious enthusiasm and perfectionism of Edgar and Carlo resulted in a visual and typographic masterpiece. They designed the book as a piece of music - but one of 688 pages.
— Nicole Segers (photographer) and Irene van der Linde (writer)
The book is no less than 5 cm thick, contains 90,000 words interspersed with 225 images in 688 pages with a prologue, travelogue, photography, epilogue, and speech of thanks—dutch-language, bound linen hardcover, published by Boom and Lecturis. A book design like this does not yet exist in the Dutch language area, as far as we know.
De Volkskrant chose Blood and honey as one of the ten most beautiful Dutch photo books of 2020
Is it a photo book with text? A travel report with photos? Never mind discovering the beautifully designed Blood and Honey; it doesn't conform to any form (okay, it's a book) and exceeds all expectations.
— Volkskrant
Irene van der Linde & Nicole Segers
www.bloedenhoning.nl
Story editor:
Marc Prüst
Lithography:
die Keure, Brugge
With the metro through a museum
NDSM-Plein 87
1033 WC Amsterdam
hello@smel.net
By continuing to browse this site, you agree to the use of cookies to generate visit statistics.


text:
Q: css - oversized div within small div I need to make a menu that looks like this:

The upper entries need to have a right margin of (lets say) 20px.
Problem arises, when I add the sub-menus, especially like the red one with the «large Menu-Entry». The top menu needs to stay in place and all the sub-menus need to be centered under that top menu. But either the top-entry is enlarged (which makes the green part shift to the right) or the sub-entries aren't positioned at the center of the top-entry...
As the menu-entries are dynamic, I can't predict how wide they are and thus I can't apply any math.
Also - the sub-entries are only visible, if the user is on the according page (means - the green part only shows «Menu1» if the user is on the red page)
I «could» use some javascript to do it after the page loaded, but I'm trying to avoid that.
I tried all sorts of stuff, including negative margins and whatnot - but nothing seems to work... Any ideas?
[edit]
some html here - tried to fumble around like crazy with no results (except the one from Brad, but that one doesn't work with IE)

Title 1

                    Testomat

                    Yo, this is a long text

Title 1

                    Testomat

                    Yo, this is a long text

CSS:
.menu-container{
    width: 100px;
    float: left;
}

.menu-items, .menu-title{
    text-align: center;
}

A: If you don't care about IE: Have you tried using display:table-cell?
You could try something like:

      Menu1

large menu item

sub

sub

With CSS:
.menu-container {
   display : table;
   width: 100px;
}

.menu-title, .menu-items {
  display : table-cell;
  width: 100%;
  text-align: center;
}

Naturally, the content within the table-cells will wrap to 100px.

A: My first approach uses different html mark-up to your own, but gives the visual effect you you're looking for with, perhaps, a slight increase in semantics:
html:

Title One

Testomat

Yo, this is a long text

Title Two

Testomat

Yo, this is a long text

css:
dl {
    width: 100px;
    float: left;
    position: relative;
    text-align: center;
    color: #0f0;
}
dl:nth-child(odd) {
    color: #f00;
}

Demo of the above at JS Fiddle.

Edited, to add the following:

On looking at your posted mark-up, and applying the css:
.menu-container {
    width: 100px;
    float: left;
    text-align: center;
    overflow: hidden;
    color: #0f0;
}

.menu-container:nth-child(odd) {
    color: #f00;
}

JS Fiddle demo
I'm not sure why you're experiencing difficulties. Admittedly, at the moment, I'm only able to test on Chrome and IE 8 (Win XP), but the above seems to work. Am I missing something important in your problem description?


text:
Articles under construction, Rewrite, Mature,
Heroic Monsters
Virtually Resourceful
Classic Predator
Click To Help ! Whatever life holds in store for me, I will never forget these words: "With great power comes great responsibility."
Spider-Man has declared that this article is still under construction.
Please don't delete or edit this article yet because it may contrast with the original author's edits.
After I finish this article, the world will be saved!
Click to help Kenshiro! This scum Classic Predator
is really bothering Kenshiro!
IT MUST BE REWRITTEN OR ADDED TO!!
So sayeth the great god of Earthrealm Raiden:
or he will send lightning bolts to terminate you.
This article's content is marked as Mature
The page Classic Predator contains mature content that may include coarse language, sexual references, and/or graphic violent images which may be disturbing to some. Mature pages are recommended for those who are 18 years of age and older.
If you are 18 years or older or are comfortable with graphic material, you are free to view this page. Otherwise, you should close this page and view another page.
Crucified Predator
Leader of the Jungle Hunter Clan
Master Combatant
Leading his clan
Aid Royce in escaping from the planet in exchange for freedom (succeeded)
Kill Berserker (failed)
Berserker (deceased), Falconer (deceased), Tracker (deceased)
Type of Anti-Hero
Honorable Alien
" My guess, it'd do just about anything to get free. Enemy of my enemy... "
~ Royce regarding the Classic Predator
The Crucified Predator, also known as the Classic Predator, is a major protagonist in the 2010 sci-fi movie Predators. He is the leader of the Jungle Hunter Clan who was captured and imprisoned by the Super Predators until he is later freed by the main human protagonist Royce and formed an alliance with him in escaping the planet and in exchange for freedom.
He was portrayed by Derek Mears.
The Classic Predator first appears being hunted at a waterfall by the Super Predators. He attempts to fight but is overpowered by the Super Predators and tied to a totem. Later, Royce and the group encounter him at a camp where he is tied up as if he is crucified. Nikolai approached the Predator and he awoke with a loud roar. The Super Predators attack and the humans then flee for safety, leaving the Classic Predator to his fate. Royce returns to the camp several hours later to make a deal with the Predator and that if he takes him back to Earth with him, he'll free him. The Predator agrees by using his wrist computer to control the Super Predator's ship and sets the course for Earth.
The Classic Predator gathers his weapons and equipment when the Berserker Predator appears. Royce flees to the spaceship while the Classic battles with Berserker. The Berserker Predator managed to fire some shots with his shoulder cannon and Classic took cover under a log. When Berserker neared the log to investigate, Classic tackled him and knocked him to the ground. The Berserker recovered and head-butted him three times, knocking the Classic's mask off and overpowering him. Berserker then took his mask off and swiftly decapitates the Classic. The Predator's head and lifeless body then falls to the ground as Berserker roars in victory before putting his mask back on.
The Classic Predator, like the rest of his clan, was an honorable hunter. He was a skilled warrior and combatant, but because of his capture and torture by the Super Predators, was weakened and not powerful enough of his strength and stamina. This, coupled with the Berserker Predator's dishonorable use of plasma weaponry to disorient him, resulted in his eventual death.
Wrist Blades
Plasmacaster
Wrist Gauntlet
Bio-Mask
The Classic Predator resembles the original Predator designed by Stan Winston from the 1987 movie Predator.
The Classic Predator is portrayed by Derek Mears, a famous movie monster actor.
The Classic Predator is the first Predator to fight another Predator in the film, following the Fugitive Predator.
Retrieved from "https://hero.fandom.com/wiki/Classic_Predator?oldid=1719782"