text:
Q: Safety of Villard cascade My teenage son has been building Cockcroft-Walton multipliers in his spare time lately, and I'm potentially a little concerned in case he electrocutes himself. His circuit is powered by 4 AA cells in series (6V), and judging by the spark gap he's managed to get to around 6kV using an oscillator and transformer followed by the Cockcroft-Walton cascade. Since he's building this on a simple breadboard there is no insulation between him and parts of the circuit, and he's already told me that he's had a few shocks.
I'm a physicist working in a university, so I looked up the regulations regarding home appliances in Europe and I think it should be ok (we use the same regulations to assess Van der Graaf generator demos). The total capacitance of the cascade circuit ends up at around 1nF, so at 6000V the total charge should be 6uC which I believe should be safe (EN-60335-1) but as I'm not an engineer I can't say for sure.
My question is: should I stop my son from building these? I have always encouraged creativity, and his love for electronics but I don't want him getting injured or worse.

A: Safe is a relative term, what is safe for one person may not be for another, and as a professional I can't really tell you he is 100% safe. It does sound like the energies involved are fairly trivial, but that does not mean he won't hook that up to a power transformer an hour from now to get a bigger spark. Also, even with these values he could over-volt a capacitor and cause it to fail rather violently. Safety glasses would be a good idea for this, and other projects.
Working with electricity always has risks associated with it. They can be from electrocution, explosion, burns, starting a fire, chemical exposure and a few others. That just comes with the nature of the job.
Should you stop him? Well you could try, but you may be better to have him properly educated on the risks and safety measures he should be taking to limit his vulnerability to something going wrong. Those measures should include a strict restriction that "We don't play with electricity when nobody else is around!".
There are a number of simple, and complex guidelines on-line.
Perhaps spend some time with him while he is experimenting. You may enjoy it, and I am sure your son would appreciate it.
ADDITION: As a parent though, I would be taking measures to ensure that where the lad is working is properly equipped. The right tools, equipment, ground fault interrupted power outlets, lighting, ventilation are all important.

A: DANGER!   The heartstopping-ness of cap-discharge is determined by energy, not by coulombs.
See the pdf: IEEE 2009: electrical hazard classification system
In general, it's bad to let your capacitors get into the 10-joule range and above.  That's for discharges across your chest, of course.  Significant heart danger starts at 20joule discharges.  Below 10joules, the main problem is muscle contractions, getting sliced by slamming sharp objects etc.
0.001uF and 6KV gives 36 millijoules.  Pretty safe, if a bit painful.
Still, the cardiac effects depend on energy density, not just joules.  If you stabbed a sharp-terminal capacitor into your ribcage, the energy delivered to the pacemaking system would be orders of magnitude higher than if the same capacitor terminals were touched with two hands.
When working with cap-discharge systems, only use one hand.  That way the accidental discharges won't go across your chest.   Or better yet, always remain very fearful, and paranoid that you'll make a mistake and receive a bad zap.  Some serious respect (if not sheer terror) goes far in encouraging proper research beforehand, and to avoid developing any ignorant risky behaviors when dealing with kilovolt capacitors.

A: There were a few hints about "power it from a battery, period". There is a good reason not to do that with experiments where a few kilovolts are generated even if a normally safe mains-connected power supply is used, and it has not really been mentioned here.
High voltages in an amount (maximum sustained current, stored energy) that normally couldn't do much permanent damage to you still brings at least these hazards:

*

*it can break down the primary-to-secondary insulation in even a sturdy power supply - in the worst case permanently, so things that aren't supposed to be directly mains connected now are. Even a power supply built perfectly to safety standards is likely to have an insulation failure if you manage to put more than approximately 3-4kV against earth into any of its terminals by mistake

*High voltage strikes arcs really easily. If you manage to strike an arc against anything that has live mains on it (could be an imperfectly insulated connector near your setup, like a cord cap not being inserted into a socket all the way, or something exposed through a ventilation hole in a power supply case...), this arc is now a conductor perfectly capable of conducting anything connected to it (if you are lucky, the arc only lasts until there is a zero crossing by the mains AC.).

A: Getting shocked is good. Dropping solder on clothing and skin is good. Nicking the fingers on sharp metal edges is good. Humans survive by exploring. Humans learn from pain. Otherwise we'll be cowering in the swamps.
As a kid, I felt 117 VAC tingles through the toes, from old power transformers. I learned to sit on wooden chairs and not touch the toes to the concrete floor.
Later while "calibrating" an oscilloscope, I pushed the bared-back of the scope against the metal lab bench, touching the EICO scope tube socket to the bench, and then leaned forward with tummy against the front part of bench through my shirt, and touched my chest again through the shirt to the scope chassis as I reached far around to adjust a "focus" potentiometer. 3,000 volts across the chest. I sat, stunned, for a couple minutes.
But I had a few more lesson about high voltage still to learn.
Let your son see some high-voltage-death videos.
Teach him the "keep one hand in pocket" trick around high voltage.
EDIT: Then there is high current; college prof told of buddy who lost the left ring finger, because the wedding ring ended up in a high current path, making the ring glow red, killing the skin, the muscle, tendons, and the bone.
I've also had MOSFET gate driver ICs blow off the top of the package, during the "bipolar snapback" event when the 1,000 μF storage capacitors inside a huge HP lab supply had the need to unload their energy into the 2 mm × 4 mm silicon of the gate driver. None of us three, hovering quite close, were hit. But after that, I always placed a sheet of paper atop the circuit, to intercept any more IC energy dumps. Energy? 1/2 * C * V^2 = 0.5 * 1,000uf assumed (did not open the HP supply) * 20v * 20v = 200 milliJoules which explains why the DIP plastic top was blown off. And missed our 6 eyes (tho I wore glasses).
EDIT: The gate driver blow-top-off was serendipity, because I took the lesson to heart and realized the danger of stored-energy in 1,000 μF caps. I learned how to tease-the-dragon in evaluating bipolar-snapback, allowing only 1,000 pF right across the Gate Driver, with 220 Ω resistor to the (experimentally variable) Vdd. Using a long-leaded 1,000 pF (3″ leads, 6″ total, or 100 nanohenry) along with the external 1,000 pF and the on-chip well-substrate of ~1,000 pF, during switching events the silicon VDD_GND would collapse and then rebound 5 or 10 or 15 volts above the rated 18 volts. At some level, the slewrate of the ringing (100 nH and 500 pF rings at 22 MHz) induced enough transient charge into the silicon that bipolar-snapback occurred, and the VDD (supplied by 1,000 pF) would be sucked down to 16 or 17 volts whereupon the snapback would self-extinguish.
I ran these devices, in/out of snapback at 100 kHz, with no damage, as I diagnosed the transient charge path and realized the layout rules needed change.
Serendipity. Energy? 0.5 * C * V^2 = 0.5 * {total protoboard + silicon Cap = 2,000pF} * 31.6volts^2 = 1,000pF * 1,000 (volts^2) = 1microJoule.
Decades back, returning from lunch, was told to go to lab and examine "the debris" on XXXX's bench. There was 6panel wirewrap board (30*6=180 ICs), many ICs with their tops blown off. Turns out a hanging one-end-loose wire had curled over and around and under the front bench edge and **INTO* the hot contact of 117VAC power. Thus management wanted all engineers and techs and rework folk to understand the danger of springy-curly wirewrap wires left hanging.
Ahhhh Assigned to 400-watt Tritek switching supply for couple weeks, for some reason. Just to give me experience in switchers; I was not the designer. Repeatedly, the sacrificial 5-watt 5 ohm wirewound protection resistors --- were exploded, their ceramic cores blasted out of the heatsinkable case and across the walkway between benches, the resistive wire trailing behind like guidance wire for a TOW missile. We learned to not stand in the way.
For safety, and no hum in highgain amplifiers (100dB and 120dB), I learned to use the 9volt "B" 3" by 3" by 4" batteries. The high Rout caused oscillations, almost all the time, until I learned to implement "local batteries" with RC LPF in the VDD to LNA stages. Quite a collection of 5,000uF caps I had.

A: Looks safe from what you describe, as long as he only uses batteries and keeps the capacitors small. CW multipliers increase the voltage but reduce the current so there will only be a few hundred microamps at the output end.
EN60335-1 suggests that under 15kV so long as the total charge of a shock is less than 45 microcolumbs there shouldn't be danger. Your son's circuit looks like it is way below that as Q=CV. Obviously if he starts going to higher and higher voltages he'll need to reduce the size of the caps to stay safe. With 6000V and 1nF any "shock" will feel a lot like a static shock from a door-handle. It's also a similar sort of output that commercial cattle prods have.
Another property of CW cascades is that the output voltage and current depends on the load: the lower the resistance of the load the lower the current goes, which makes them really inefficient but can save your bacon too if you were to become attached to it.
I also agree that he should be supervised, I think that almost goes without saying.
I think the only way for 4 AA (or D etc) batteries to be dangerous in a circuit would be if a circuit like the above was used to charge a huge capacitor. I could be wrong on that though.


text:
/**
 * Created by liuhuisheng on 2015/2/28.
 */
define(['app', 'config'], function (app, config) {
    app.controller('myController', ['$scope', '$compile', 'myApi', '$timeout', function ($scope, $compile, myApi, $timeout) {
        //get data from the api service
        $scope.menus = myApi.getMenus();
        $scope.tasks = myApi.getTasks();
        $scope.notifys = myApi.getNotifys();
        $scope.username = myApi.getUserName();
        //$scope.homePageGridData = myApi.getHomePageGridData();
        $scope.chat = myApi.getChat();

        //create the main layout creator instance
        $scope.creator = new app.layoutCreator();
        $scope.creator.$compile = $compile;
        $scope.creator.$scope = $scope;

        //open the chat box
        $scope.openChat = function (e, f) {
            $scope.chat.current = { chats: [] };
            $("#chat-box li").remove();//for remove the li not binding with ng

            angular.forEach(f.chats, function (item) {
                if (item.from == 'You')
                    item.avatar = $scope.chat.mine.avatar;
                else
                    item.avatar = f.avatar;
            });
            $scope.chat.current = f;
            app.handleFormChatOpen(e, f);
        };

        //watch for menus change
        $scope.$watch('menus', function (newValue, oldValue) {
            $scope.creator.loadNavigationData(newValue);
        });

        ////watch for grid data in home page change
        //$scope.$watch('homePageGridData', function (newValue, oldValue) {
        //    $scope.creator.loadHomePageGridData(newValue);
        //});

        //count unread messages
        $scope.unreadCount = function (list) {
            var unread = 0;
            angular.forEach(list, function (item) {
                item.status == 'unread' && unread++;
            });
            return unread;
        };

        $scope.chatNewCount = function () {
            var count = 0;
            angular.forEach($scope.chat.groups, function (g) {
                angular.forEach(g.friends, function (f) {
                    count += $scope.unreadCount(f.chats);
                });
            });
            return count;
        };

        $scope.appRoot = app.getAppRoot();
    }]);

    app.layoutCreator = function () {
        var self = this;

        self.createLayout = function () {
            var layout = self.layout = new dhtmlXLayoutObject({
                parent: 'my_layout',
                pattern: '2U',
                cells: [
                    { id: "a", text: "菜单导航", width: 160, header: true },
                    { id: "b", text: "left", header: false }
                ]
            });
            layout.attachHeader("my_header", 40);
            layout.attachFooter("my_footer", 20);

            //create navigation
            self.accordion = layout.cells("a").attachAccordion();

            //create tabs
            var tabs = self.tabs = layout.cells("b").attachTabbar({
                close_button: true,
                content_zone: true,
                arrows_mode: "auto" // mode of showing tabs arrows (auto, always)
            });

            //create context menu for tabs
            self.createTabsContextMenu(tabs);

            //add tabs right top toolbar
            self.addTabsTitleTools(tabs);

            //add home page tab
            self.tabHandles.openTab(config.home);

            //auto size layout
            self.autoSizeLayout();
        };

        self.onTreeClick = function (id) {
            var tabId = "tab_" + id;
            var current = self.tabs.cells(tabId);
            if (current != null) {
                self.tabHandles.refresh(tabId);
            }
            else {
                var node = this.getUserData(id);
                node.text = this.getItemText(id);
                node.id = tabId;
                self.tabHandles.openTab(node);
            }
            return true;
        };

        self.loadNavigationData = function (data) {
            var acc = self.accordion;
            acc.forEachItem(function (cell) {
                acc.removeItem(cell.getId());
            });

            var treeImgPath = app.getSkinImgPath("dhxtree");
            angular.forEach(data, function (item) {
                acc.addItem(item.id, item.text);
                var tree = acc.cells(item.id).attachTree();
                tree.setImagePath(treeImgPath);
                tree.loadJSONObject({ id: 0, item: item.item });
                tree.attachEvent("onClick", self.onTreeClick);
            });
        };

        self.createTabsContextMenu = function (tabs) {
            self.tabHandles = {};
            self.tabHandles.openTab = function (node) {
                //open a new tab for tabbar
                node = $.extend({
                    id: 'a',
                    text: '我的桌面',
                    icon: '',
                    title: '',
                    href: '',
                    ctrl: '',
                    width: null,
                    position: null,
                    active: true,
                    close: true
                }, node);
                node.title = node.title || ((node.icon ? " " : "") + node.text);
                self.tabs.addTab(node.id, node.title, node.width, node.position, node.active, node.close);

                //set tabid data to element
                var tab = self.tabs.cells(node.id);
                var $cell = $(tab.cell).attr('data-tabid', node.id);

                if (!node.href && !node.ctrl)
                    node.href = 'views/demo/page1.html';

                //load tab content
                if (node.href) {
                    node.href = app.getAppRoot() + node.href;
                    self.tabs.cells(node.id).attachURL(node.href);
                }
                else if (node.ctrl) {
                    var ctrl = {
                        name: node.ctrl + 'Ctrl',
                        path: 'controller/' + node.ctrl,
                        view: 'text!views/' + node.ctrl + '.html'
                    };
                    $cell.data('ctrl', ctrl).attr('ng-controller', ctrl.name);
                    self.initPartial(tab, ctrl);
                }
            };
            self.initPartial = function (tab, ctrl) {
                var init = function (render, html) {
                    html && tab.attachHTMLString(html);
                    render && $.isFunction(render) && render.call(this, args());
                    self.$compile(tab.cell)(self.$scope);
                    self.$scope.$apply(); //trigger $watch in controller new scope on init
                };
                var args = function () {
                    return {
                        tab: tab,
                        approot: app.getAppRoot(),
                        assets: app.getAssetsRoot(),
                        $element: $(tab.call)
                    };
                };
                var withnoview = function () {
                    require([ctrl.path], init);
                };
                require([ctrl.path, ctrl.view], init, withnoview);
            };
            self.destoryPartial = function (tab, ctrl) {
                tab.detachObject(true);
                tab.detachMenu();
                tab.detachRibbon();
                tab.detachStatusBar();
                tab.detachToolbar();
                $(tab.cell.childNodes[0]).empty();
                require.undef(ctrl.path);
            };
            self.tabHandles.refresh = function (tabId) {
                var tab = tabs.cells(tabId);
                var $cell = $(tab.cell);
                var ctrl = $cell.data("ctrl");

                tab.setActive();

                if (ctrl) {
                    self.destoryPartial(tab, ctrl);
                    self.initPartial(tab, ctrl);
                }
                else {
                    var win = ((tab.cell.childNodes[0] || {}).childNodes[0] || {}).contentWindow;
                    win && tab.reloadURL();
                }
            };
            self.tabHandles.close = function (tabId) {
                if (tabs.t[tabId].conf.close)
                    tabs.close_tab(this.cells(tabId));
            };
            self.tabHandles.close_all = function (tabId) {
                this.forEachCell(function (tab) {
                    if (tabs.t[tab._idd].conf.close)
                        tabs.close_tab(tab);
                });
                if (tabs.getActiveTab() == null) {
                    var defaultId = tabs._getFirstVisible()
                    defaultId && tabs.cells(defaultId).setActive(true);
                }
            };
            self.tabHandles.close_all_except_this = function (tabId) {
                this.forEachCell(function (tab) {
                    if (tabs.t[tab._idd].conf.close && tab._idd != tabId)
                        tabs.close_tab(tab);
                });
            };
            self.tabHandles.close_right = function (tabId) {
                var isRightSide = false;
                this.forEachCell(function (tab) {
                    if (isRightSide && tabs.t[tab._idd].conf.close)
                        tabs.close_tab(tab);

                    if (tab._idd == tabId)
                        isRightSide = true;
                });
            };
            self.tabHandles.close_left = function (tabId) {
                var isRightSide = false;
                this.forEachCell(function (tab) {
                    if (tab._idd == tabId)
                        isRightSide = true;

                    if (!isRightSide && tabs.t[tab._idd].conf.close)
                        tabs.close_tab(tab);
                });
            };

            var menu = new dhtmlXMenuObject({
                context: true,
                items: [
                    { id: "refresh", text: "刷新" },
                    { id: "s1", type: 'separator' },
                    { id: "close", text: "关闭" },
                    { id: "close_all", text: "全部关闭" },
                    { id: "close_all_except_this", text: "除此之外全部关闭" },
                    { id: "s2", type: 'separator' },
                    { id: "close_right", text: "关闭右侧标签" },
                    { id: "close_left", text: "关闭左侧标签" }
                ]
            });
            //右键菜单按钮处理
            menu.renderAsContextMenu();
            menu.attachEvent("onClick", function (id, zoneId, cas) {
                var tabId = zoneId.replace("tabhd_", "");
                self.tabHandles[id].call(tabs, tabId, cas);
            });

            //移除右键菜单
            tabs.attachEvent("onTabClose", function (id) {
                var hid = "tabhd_" + id;
                tabs.t[id].tab.id = hid;
                menu.removeContextZone(hid);
                return true;
            });

            tabs.close_tab = function (tab) {
                var hid = "tabhd_" + tab._idd;
                tabs.t[tab._idd].tab.id = hid;
                menu.removeContextZone(hid);
                tab.close();
            };

            //给每个面签添加右键菜单事件
            var baseAddTab = tabs.addTab;
            tabs.addTab = function (id, text, width, position, active, close) {
                baseAddTab.apply(tabs, arguments);
                var hid = "tabhd_" + id;
                tabs.t[id].tab.id = hid;
                menu.removeContextZone(hid);
                menu.addContextZone(hid);
            };
        }

        self.addTabsTitleTools = function (tabs) {
            var rightBtnHandles = self.rightBtnHandles = {};
            rightBtnHandles.refresh = function () {
                var actvId = tabs.getActiveTab();
                self.tabHandles.refresh.call(tabs, actvId);
            };
            rightBtnHandles.fullscreen = function () {
                if (self._isFullScreen) {
                    if (document.exitFullscreen) {
                        document.exitFullscreen();
                    }
                    else if (document.mozCancelFullScreen) {
                        document.mozCancelFullScreen();
                    }
                    else if (document.webkitCancelFullScreen) {
                        document.webkitCancelFullScreen();
                    }
                    else if (document.msExitFullscreen) {
                        document.msExitFullscreen();
                    }
                    self.layout.setSizes();
                    self._isFullScreen = false;
                }
                else {
                    var docElm = document.documentElement;
                    if (docElm.requestFullscreen) {             //W3C
                        docElm.requestFullscreen();
                    }
                    else if (docElm.mozRequestFullScreen) {     //FireFox
                        docElm.mozRequestFullScreen();
                    }
                    else if (docElm.webkitRequestFullScreen) {  //Chrome等
                        docElm.webkitRequestFullScreen();
                    }
                    else if (docElm.msRequestFullscreen) {        //IE11
                        docElm.msRequestFullscreen();
                    }
                    var bw = self.layout.base.offsetWidth;
                    var bh = self.layout.base.offsetHeight;
                    self.layout.cdata.b._setSize(0, 0, bw, bh, null, null, null);
                    self.layout.sep._setSize(-100, -100, 0, 0);
                    self._isFullScreen = true;
                }
                $(window).trigger('resize');
            }
            rightBtnHandles.closeall = function () {
                var actvId = tabs.getActiveTab();
                if (confirm("确定要关闭所有窗口吗"))
                    self.tabHandles.close_all.call(tabs, actvId);
            }

            var tab_btn = document.createElement("div");
            tab_btn.className = "dhxtabbar_tabs_button_area dhxtabbar_tabs";
            tab_btn.innerHTML = ""
                              + ""
                              + "";
            tabs.tabsArea.appendChild(tab_btn);

            setTimeout(function () { //for ie8
                var currentStyle = tab_btn.currentStyle || getComputedStyle(tab_btn, false);
                tab_btn.style.borderBottomStyle = currentStyle.borderLeftStyle;
                tab_btn.style.borderBottomWidth = currentStyle.borderLeftWidth;
                tab_btn.style.borderBottomColor = currentStyle.borderLeftColor;
                tab_btn.style.height = (tabs.tabsArea.offsetHeight - 2) + "px";
                var margintop = (tabs.tabsArea.offsetHeight - 2 - 16) / 2;
                var tabbtns = tab_btn.children;
                tabbtns[0].style.marginTop = margintop + "px";
                tabbtns[1].style.marginTop = margintop + "px";
                tabbtns[2].style.marginTop = margintop + "px";
                tabbtns[0].onclick = rightBtnHandles.refresh;
                tabbtns[1].onclick = rightBtnHandles.fullscreen;
                tabbtns[2].onclick = rightBtnHandles.closeall;
            }, 100);

            tabs._adjustTabs = function (fixTabsArea) {

                if (this._checkArrows() == true || fixTabsArea == true) {
                    this.tabsArea.childNodes[1].style.left = this.tabsArea.childNodes[0].offsetWidth - 1 + "px";
                    this.tabsArea.childNodes[1].style.width = Math.max(0, this.tabsArea.offsetWidth - this.tabsArea.childNodes[0].offsetWidth - this.tabsArea.childNodes[2].offsetWidth - this.tabsArea.childNodes[3].offsetWidth) + 1 + "px"; // minus 2 arrows
                }

                var p = this.tabsArea.childNodes[1];
                if (p.offsetWidth < 5) {
                    p = null;
                    return;
                }

                var x = parseInt(p.childNodes[0].style[this.conf.align]);

                var k = null;
                for (var q = 0; q < p.childNodes[0].childNodes.length; q++) {
                    var id = p.childNodes[0].childNodes[q]._tabId;
                    if (id != null && this.t[id].conf.visible) {
                        var w = this.t[id].tab.offsetWidth - this.conf.tabsOfs;
                        if (this.t[id].conf.active) {
                            if (x < 0 || p.offsetWidth < w) {
                                k = { d: 1, id: id }; // tab hidden on left side, move to right OR tab width less than space available
                            } else if (x + w > p.offsetWidth) {
                                k = { d: -1, id: id }; // overflow on right
                            }
                        }
                        x += w;
                    }
                }

                if (k != null) {
                    // move selected tab to visible space
                    this._moveTabs(k.d, k.id);
                } else if (p.offsetWidth > x + 1) {
                    // check space on right side
                    p.childNodes[0].style[this.conf.align] = Math.min(0, parseInt(p.childNodes[0].style[this.conf.align]) + (p.offsetWidth - x)) + "px";
                }

                p = k = null;

            }

            tabs._moveTabs = function (d, tabId) {
                // get all visible tabs
                var p = this.tabsArea.childNodes[1].childNodes[0];
                var i = 0;
                var tabs = [];
                var tabInd = null; // index of tabId
                for (var q = 0; q < p.childNodes.length; q++) {
                    var id = p.childNodes[q]._tabId;
                    if (id != null && this.t[id].conf.visible) {
                        tabs.push({ id: id, w: this.t[id].tab.offsetWidth - this.conf.tabsOfs, ind: i });
                        if (id == tabId) tabInd = i;
                        i++;
                    }
                }

                // find 1st/last full visible tabs or null
                var x = parseInt(this.tabsArea.childNodes[1].childNodes[0].style[this.conf.align]);
                var totalSpace = this.tabsArea.offsetWidth - this.tabsArea.childNodes[0].offsetWidth - this.tabsArea.childNodes[2].offsetWidth - 78;

                var f = null;
                var l = null;

                for (var q = 0; q < tabs.length; q++) {
                    tabs[q].x = x;
                    if (f == null && x >= 0 && x + tabs[q].w > 0) f = tabs[q];
                    if (x < totalSpace && x + tabs[q].w <= totalSpace) l = tabs[q];
                    x += tabs[q].w;
                }

                x += this.tabsArea.childNodes[3].offsetWidth;

                if (tabInd != null) {

                    var t = tabs[tabInd];

                } else {

                    var t = null;
                    if (d > 0) {
                        // left arrow clicked
                        // find prev tab (for 1st visible) or last (if 1st is null)
                        if (f == null) {
                            if (tabs.length > 0) t = tabs[tabs.length - 1];
                        } else {
                            if (f.ind > 0 && tabs.length >= f.ind) t = tabs[f.ind - 1];
                        }

                    } else {
                        // right arrow clicked
                        // find next tab (for last visible) or first (if last-visible is null)
                        if (l == null) {
                            if (tabs.length > 0) t = tabs[0];
                        } else {
                            if (tabs.length > l.ind) t = tabs[l.ind + 1];
                        }

                    }
                }

                // move prev/last tab to 1st position
                if (t != null) {
                    if (d > 0) {
                        if (x < totalSpace) {
                            // some tabs are on left and some space left on right
                            p.style[this.conf.align] = Math.min(0, parseInt(p.style[this.conf.align]) + (totalSpace - x)) + "px";
                        } else {
                            // show tab on left
                            p.style[this.conf.align] = parseInt(p.style[this.conf.align]) - t.x + "px";
                        }
                    } else {
                        p.style[this.conf.align] = parseInt(p.style[this.conf.align]) - t.x + totalSpace - t.w + "px";
                    }
                }

                p = t = tabs = null;

            }

            tabs._checkArrows = function () {
                var adj = false;

                if (this.conf.arwMode == "auto") {

                    var w = this.tabsArea.childNodes[3].offsetWidth;
                    for (var a in this.t) w += this.t[a].tab.offsetWidth;

                    var arLeft = this.tabsArea.childNodes[0];
                    var arRight = this.tabsArea.childNodes[2];

                    if (w > this.base.offsetWidth) {
                        // show arows
                        if (arLeft.className.search(/dhxtabbar_tabs_ar_hidden/) >= 0) {
                            arLeft.className = arLeft.className.replace(/\s{0,}dhxtabbar_tabs_ar_hidden/, "");
                            arRight.className = arRight.className.replace(/\s{0,}dhxtabbar_tabs_ar_hidden/, "");
                            adj = true;

                            this.tabsArea.childNodes[3].style.right = arRight.offsetWidth + "px";
                        }
                    } else {
                        // hide arrows
                        if (arLeft.className.search(/dhxtabbar_tabs_ar_hidden/) < 1) {
                            arLeft.className += " dhxtabbar_tabs_ar_hidden";
                            arRight.className += " dhxtabbar_tabs_ar_hidden";
                            adj = true;

                            this.tabsArea.childNodes[3].style.right = "0px";
                        }
                    }
                    arLeft = arRight = null;

                }

                return adj;
            };
        };

        self.autoSizeLayout = function () {
            window.onresize = function () {
                if (self._isFullScreen) {
                    var bw = self.layout.base.offsetWidth;
                    var bh = self.layout.base.offsetHeight;
                    self.layout.cdata.b._setSize(0, 0, bw, bh, null, null, null);
                    self.layout.sep._setSize(-100, -100, 0, 0);
                }
                else {
                    self.layout.setSizes();
                }
            }
        };

        app.getSkinImgPath = function (type) {
            var skinstr = (self.layout.conf.skin || 'dhx_skyblue').split('_')[1] || 'skyblue';
            var path = app.getAssetsRoot() + 'lib/dhtmlx/v403_pro/skins/' + skinstr + '/imgs/';
            if (type)
                path += type + '_' + skinstr + '/';
            return path;
        };

        app.getTab = function (obj) {
            if (typeof obj === 'string') {
                return self.tabs.cells(obj);
            } else {
                if (obj && obj.data('tabid'))
                    return self.tabs.cells(obj.data('tabid'));
                else
                    return null;
            }
        }
    }

    app.handleToggle = function () {
        $("[data-toggle]").click(function (e) {
            var that = this;
            $("[data-toggle]").each(function () {
                var toggleId = $(this).data('toggle');
                var $toggle = $('#' + toggleId);
                this == that ? $toggle.toggle() : $toggle.hide();
            });
            e.stopPropagation();
            e.preventDefault();
        });

        $(window).on('click', function () {
            $("[data-toggle]").each(function () {
                var toggleId = $(this).data('toggle');
                $('#' + toggleId).hide();
            });
        });
    };

    app.handleBootstrapSwitch = function (el) {
        //$('.make-switch', el).bootstrapSwitch()
    };

    app.handleSlimScroll = function () {
        $('.dropdown-slimscroll').slimScroll({
            "width": '100%',
            "height": '250px',
            "wheelStep": 25
        });
    };

    app.handlePulsate = function () {
        $("[data-pulsate]").each(function () {
            var me = $(this);
            var data = eval("(" + $(this).attr('data-pulsate') + ")");
            if (data.onClick == "one" || data.onClick == "crazy") {
                me.click(function () {
                    me.pulsate(data);
                });
            }
            if (data.onClick == "toggle") {
                me.toggle(function () {
                    me.pulsate(data.repeat = false);
                }, function () {
                    me.pulsate(data);
                });
            }
            if (data.onClick == "stop") {
                me.pulsate(data);
                if (data.parent == true) {
                    me.parent().one('click', function () {
                        me.pulsate({ repeat: false });
                    });
                }
                else {
                    me.one('click', function () {
                        me.pulsate({ repeat: false });
                    });
                }
            }
            if (data.onClick == undefined)
                me.pulsate(data);
        });
    };

    app.handleFormChatOpen = function (e, f) {
        var target = e.currentTarget;
        $('#chat-box').hide();
        $('#chat-form .chat-group a').removeClass('active');
        $(target).addClass('active');
        //get user information to set for chat box
        ///var strUserName = $('> small', target).text();
        $('.display-name', '#chat-box').html(f.name);
        //var userStatus = $(target).find('span.user-status').attr('class');
        $('#chat-box > .chat-box-header > span.user-status').removeClass().addClass(f.status);
        //var userAvatar = $(target).find('img').attr('src');
        $('.chat-box-minimize').find('img').attr('src', f.avatar);

        var chatBoxStatus = $('span.user-status', '#chat-box');
        var chatBoxStatusShow = $('#chat-box > .chat-box-header > small');
        chatBoxStatusShow.html(f.status);
        //if (chatBoxStatus.hasClass('is-online')) {
        //    chatBoxStatusShow.html('Online');
        //} else if (chatBoxStatus.hasClass('is-offline')) {
        //    chatBoxStatusShow.html('Offline');
        //} else if (chatBoxStatus.hasClass('is-busy')) {
        //    chatBoxStatusShow.html('Busy');
        //} else if (chatBoxStatus.hasClass('is-idle')) {
        //    chatBoxStatusShow.html('Idle');
        //}

        $('#chat-box').css({ 'top': 'auto' });

        if (!$('#chat-box').is(':visible')) {
            $('#chat-box').toggle();
            $('.chat-box-minimize').toggle();
        }
        // focus to input tag when click an user
        $("#chat-box .chat-textarea input").focus();
        $('.chat-content > .chat-box-body').slimScroll({
            "height": "250px",
            'width': '340px',
            "wheelStep": 30,
            "scrollTo": $(target).height()
        });
    };

    app.handleFormChat = function ($scope) {
        //Open chat form
        $('.btn-chat').click(function () {
            if ($('#chat-box').is(':visible')) {
                $('#chat-form').toggle('slide', {
                    direction: 'right'
                }, 200);
                $('#chat-form').slimScroll();
                $('#chat-box').hide();
            } else {
                $('#chat-form').toggle('slide', {
                    direction: 'right'
                }, 200);
                $('#chat-form > .chat-inner').slimScroll({
                    "height": $(window).height(),
                    'width': '280px',
                    "wheelStep": 30
                });
            }
            $('.chat-box-wrapper').css({ 'right': '280px' });
        });

        //Close event
        $('.chat-box-close').click(function () {
            $('#chat-box').hide();
            $('.chat-box-minimize').hide();
            $('#chat-form .chat-group a').removeClass('active');
        });
        $('.chat-form-close').click(function () {
            $('#chat-form').toggle('slide', {
                direction: 'right'
            }, 200);
            $('#chat-box').hide();
            $('.chat-box-wrapper').css({ 'right': '0px' });
        });

        $('.chat-box-minimize-btn').click(function () {
            $('#chat-box').hide();
            $('.chat-box-minimize').show();
        });

        $('.chat-box-minimize img').click(function () {
            $('#chat-box').show();
        });

        //Open chat box
        $('#chat-form .chat-group a').unbind('*').click(function () {
            $('#chat-box').hide();
            $('#chat-form .chat-group a').removeClass('active');
            $(this).addClass('active');
            //get user information to set for chat box
            var strUserName = $('> small', this).text();
            $('.display-name', '#chat-box').html(strUserName);
            var userStatus = $(this).find('span.user-status').attr('class');
            $('#chat-box > .chat-box-header > span.user-status').removeClass().addClass(userStatus);
            var userAvatar = $(this).find('img').attr('src');
            $('.chat-box-minimize').find('img').attr('src', userAvatar);
            var chatBoxStatus = $('span.user-status', '#chat-box');
            var chatBoxStatusShow = $('#chat-box > .chat-box-header > small');
            if (chatBoxStatus.hasClass('is-online')) {
                chatBoxStatusShow.html('Online');
            } else if (chatBoxStatus.hasClass('is-offline')) {
                chatBoxStatusShow.html('Offline');
            } else if (chatBoxStatus.hasClass('is-busy')) {
                chatBoxStatusShow.html('Busy');
            } else if (chatBoxStatus.hasClass('is-idle')) {
                chatBoxStatusShow.html('Idle');
            }

            $('#chat-box').css({ 'top': 'auto' });

            if (!$('#chat-box').is(':visible')) {
                $('#chat-box').toggle();
                $('.chat-box-minimize').toggle();
            }
            // focus to input tag when click an user
            $("#chat-box .chat-textarea input").focus();
            $('.chat-content > .chat-box-body').slimScroll({
                "height": "250px",
                'width': '340px',
                "wheelStep": 30,
                "scrollTo": $(this).height()
            });
        });
        // Add content to form
        $('.chat-textarea input').on("keypress", function (e) {
            var $obj = $(this);
            var $me = $obj.parent().parent().find('ul.chat-box-body');
            var $my_avt = app.getAppRoot() + 'img/avatar/men-27.jpg';
            var $your_avt = app.getAppRoot() + 'img/avatar/claudioguglieri-48.jpg';
            if (e.which == 13) {
                var $content = $obj.val();

                if ($content !== "") {
                    var d = new Date();
                    var h = d.getHours();
                    var m = d.getMinutes();
                    if (m < 10) m = "0" + m;
                    $obj.val(""); // CLEAR TEXT IN INPUT

                    //var msg = {};
                    //msg.message = $content;
                    //msg.status = '';
                    //msg.from = 'You';
                    //msg.time = h + ":" + m;
                    //msg.avatar = $scope.chat.mine.avatar;
                    //$scope.chat.current.chats.push(msg);
                    //return;

                    var $element = "";
                    $element += "
";
                    $element += "
";
                    $element += "";
                    $element += "You";
                    $element += "" + h + ":" + m + "";
                    $element += "
";
                    $element = $element + "
" + $content + "
";
                    $element += "
";

                    $me.append($element);
                    var height = 0;
                    $me.find('li').each(function (i, value) {
                        height += parseInt($(this).height());
                    });

                    height += '';
                    $me.scrollTop(height);

                    // RANDOM RESPOND CHAT
                    var $res = "";
                    $res += "
";
                    $res += "
";
                    $res += "";
                    $res += "Jake Rochleau";
                    $res += "" + h + ":" + m + "";
                    $res += "
";
                    $res = $res + "
" + "This is a demo respond anwser" + "
";
                    $res += "
";
                    setTimeout(function () {
                        $me.append($res);
                        $me.scrollTop(height + 100);
                    }, 1000);
                }
            }
        });

        $('#setting-theme-chat').on('switch-change', function () {
            $('.chat-form-wrapper').toggleClass('light');
        });
    }

    app.handleTemplateSetting = function () {
        $('a.btn-template-setting').click(function () {
            if ($('#template-setting').css('right') < '0') {
                $('#template-setting').css('right', '0');
            } else {
                $('#template-setting').css('right', '-255px');
            }
        });

        $('ul.sidebar-color > li').click(function () {
            var color = $(this).attr('data-style');
            $('ul.sidebar-color > li').removeClass('active');
            $(this).addClass('active');
            switch (color) {
                case 'default':
                    $('body').removeClass(function (index, css) {
                        return (css.match(/(^|\s)sidebar-color-\S+/g) || []).join(' ');
                    });
                    break;
                case 'orange':
                    $('body').removeClass(function (index, css) {
                        return (css.match(/(^|\s)sidebar-color-\S+/g) || []).join(' ');
                    }).addClass('sidebar-color-orange');
                    break;
                case 'green':
                    $('body').removeClass(function (index, css) {
                        return (css.match(/(^|\s)sidebar-color-\S+/g) || []).join(' ');
                    }).addClass('sidebar-color-green');
                    break;
                case 'white':
                    $('body').removeClass(function (index, css) {
                        return (css.match(/(^|\s)sidebar-color-\S+/g) || []).join(' ');
                    }).addClass('sidebar-color-white');
                    break;
                case 'blue':
                    $('body').removeClass(function (index, css) {
                        return (css.match(/(^|\s)sidebar-color-\S+/g) || []).join(' ');
                    }).addClass('sidebar-color-blue');
                    break;
                case 'grey':
                    $('body').removeClass(function (index, css) {
                        return (css.match(/(^|\s)sidebar-color-\S+/g) || []).join(' ');
                    }).addClass('sidebar-color-grey');
                    break;
            }
        });

        $('#setting-sidebar-collapsed').on('switch-change', function () {
            $('body').toggleClass('layout-sidebar-collapsed');
            if ($('body').hasClass('layout-sidebar-fixed')) {
                alert('Please go on "Layout sidebar fixed & collapsed" menu');
            }
        });

        $('#setting-sidebar-fixed').on('switch-change', function () {
            if ($('body').hasClass('layout-sidebar-collapsed')) {
                alert('Please go on "Layout sidebar fixed & collapsed" menu to use this option');
                //return false;
            } else if ($('.fluid').hasClass('container')) {
                alert('Unfortunately, you have to edit litte to use this option');
            } else {
                $('body').toggleClass('layout-sidebar-fixed');
                if ($("#sidebar-main").parent().hasClass('slimScrollDiv') || $('body').hasClass('layout-sidebar-collapsed')) {
                    destroySlimscroll('sidebar-main');
                } else {
                    handleSidebarFixed();
                }
            }
        });

        $('#setting-sidebar-hide').on('switch-change', function () {
            $('body').toggleClass('layout-sidebar-hide');
        });

        $('#setting-header-fixed').on('switch-change', function () {
            $('body').toggleClass('layout-header-fixed');
        });

        $('#setting-header-dark').on('switch-change', function () {
            $('body').toggleClass('layout-header-dark');
        });

        $('#setting-horizontal-menu').on('switch-change', function () {
            $('body').toggleClass('layout-full-width');
            $('.logo-wrapper').removeClass('in-sidebar');
        });

        $('#setting-layout-boxed').on('switch-change', function () {
            if ($('body').hasClass('layout-sidebar-fixed')) {
                alert('Unfortunately, you have to edit litte to use this option');
            } else {
                $('.fluid').toggleClass('container');
            }
        });

        $('#setting-logo-status').on('switch-change', function () {
            $('#topbar .logo-wrapper').toggleClass('in-sidebar');
        });

        $('#setting-toggle-status').on('switch-change', function () {
            $('#menu-toggle').toggleClass('show-collapsed');
            $('#menu-toggle').toggleClass('show-hide');
        });

        $("select#font-select")
            .change(function () {
                var value;
                var $font_link = $('#font-layout');
                $("select#font-select option:selected").each(function () {
                    value = $(this).val();
                });

                switch (value) {
                    case 'open-sans':
                        handleRemoveClassFont();
                        break;
                    case 'roboto':
                        handleRemoveClassFont();
                        $font_link.attr('href', 'http://fonts.googleapis.com/css?family=Roboto');
                        $('body').addClass('font-roboto');
                        break;
                    case 'lato':
                        handleRemoveClassFont();
                        $font_link.attr('href', 'http://fonts.googleapis.com/css?family=Lato');
                        $('body').addClass('font-lato');
                        break;
                    case 'source-sans-pro':
                        handleRemoveClassFont();
                        $font_link.attr('href', 'http://fonts.googleapis.com/css?family=Source+Sans+Pro');
                        $('body').addClass('font-source-sans-pro');
                        break;
                    case 'helvetica':
                        handleRemoveClassFont();
                        $('body').addClass('font-helvetica');
                        break;
                    case 'lora':
                        handleRemoveClassFont();
                        $font_link.attr('href', 'http://fonts.googleapis.com/css?family=Lora');
                        $('body').addClass('font-lora');
                        break;

                }
            });

        //set cookie when click save
        $('#save-setting').on('click', function () {
            var cookie_sidebar_color = $('.sidebar-color li.active').attr('data-style');
            var cookie_font = $('select#font-select').val();
            var cookie_array = [];
            if ($('#setting-header-fixed > div').hasClass('switch-on')) {
                cookie_array.push('layout-header-fixed');
            }
            if ($('#setting-sidebar-collapsed > div').hasClass('switch-on')) {
                cookie_array.push('layout-sidebar-collapsed');
            }
            if ($('#setting-sidebar-hide > div').hasClass('switch-on')) {
                cookie_array.push('layout-sidebar-hide');
            }
            if ($('#setting-sidebar-fixed > div').hasClass('switch-on')) {
                cookie_array.push('layout-sidebar-fixed');
            }
            if ($('#setting-toggle-status > div').hasClass('switch-on')) {
                cookie_array.push('layout-toggle-status');
            }
            if ($('#setting-header-dark > div').hasClass('switch-on')) {
                cookie_array.push('layout-header-dark');
            }
            if ($('#setting-logo-status > div').hasClass('switch-on')) {
                cookie_array.push('layout-logo-status');
            }
            if ($('#setting-horizontal-menu > div').hasClass('switch-on')) {
                cookie_array.push('layout-full-width');
            }
            if ($('#setting-footer-light > div').hasClass('switch-on')) {
                cookie_array.push('layout-footer-light');
            }

            $.cookie('sidebar-color', cookie_sidebar_color);
            $.cookie('font-layout', cookie_font);
            $.cookie('setting', cookie_array.join(' '));
        });
        //load cookie on document ready
        if ($.cookie('setting')) {
            var cookie_load_array = $.cookie('setting').split(' ');
            if ($.inArray('layout-header-fixed', cookie_load_array) !== -1) {
                $('#setting-header-fixed').bootstrapSwitch('toggleState');
            }
            if ($.inArray('layout-sidebar-collapsed', cookie_load_array) !== -1) {
                $('#setting-sidebar-collapsed').bootstrapSwitch('toggleState');
            }
            if ($.inArray('layout-sidebar-fixed', cookie_load_array) !== -1) {
                $('#setting-sidebar-fixed').bootstrapSwitch('toggleState');
            }
            if ($.inArray('layout-sidebar-hide', cookie_load_array) !== -1) {
                $('#setting-sidebar-hide').bootstrapSwitch('toggleState');
            }
            if ($.inArray('layout-header-dark', cookie_load_array) !== -1) {
                $('#setting-header-dark').bootstrapSwitch('toggleState');
            }
            if ($.inArray('layout-toggle-status', cookie_load_array) !== -1) {
                $('#setting-toggle-status').bootstrapSwitch('toggleState');
            }
            if ($.inArray('layout-logo-status', cookie_load_array) !== -1) {
                $('#setting-logo-status').bootstrapSwitch('toggleState');
            }
            if ($.inArray('layout-full-width', cookie_load_array) !== -1) {
                $('#setting-horizontal-menu').bootstrapSwitch('toggleState');
            }
            if ($.inArray('layout-footer-light', cookie_load_array) !== -1) {
                $('#setting-footer-light').bootstrapSwitch('toggleState');
            }
        }

        if ($.cookie('sidebar-color')) {
            $('body').addClass('sidebar-color-' + $.cookie('sidebar-color'));
            $('.sidebar-color li').removeClass('active');
            $('.sidebar-color li.' + $.cookie('sidebar-color')).addClass('active');
        }

        if ($.cookie('font-layout')) {
            $('select#font-select').val($.cookie('font-layout'));
            setFont($.cookie('font-layout'));
        }

        function setFont(value) {
            var $font_layout = $('#font-layout');
            switch (value) {
                case 'open-sans':
                    handleRemoveClassFont();
                    break;
                case 'roboto':
                    handleRemoveClassFont();
                    $font_layout.attr('href', 'http://fonts.googleapis.com/css?family=Roboto');
                    $('body').addClass('font-roboto');
                    break;
                case 'lato':
                    handleRemoveClassFont();
                    $font_layout.attr('href', 'http://fonts.googleapis.com/css?family=Lato');
                    $('body').addClass('font-lato');
                    break;
                case 'source-sans-pro':
                    handleRemoveClassFont();
                    $font_layout.attr('href', 'http://fonts.googleapis.com/css?family=Source+Sans+Pro');
                    $('body').addClass('font-source-sans-pro');
                    break;
                case 'helvetica':
                    handleRemoveClassFont();
                    $('body').addClass('font-helvetica');
                    break;
                case 'lora':
                    handleRemoveClassFont();
                    $font_layout.attr('href', 'http://fonts.googleapis.com/css?family=Lora');
                    $('body').addClass('font-lora');
                    break;
            }
        }
    }

    app.getApiUrl = function (url) {
        return config.webapi.replace(/(\s*$)/g, "") + "/" + (url || '').replace(/(^\s*)/g, "");
    };

    app.getProjectRoot = function (prj) {
        return prj;
    };

    app.getAppRoot = function () {
        return app.getProjectRoot('app/');
    };

    app.getAssetsRoot = function (res) {
        var assets = app.getProjectRoot('assets/');
        return assets + (res || '').replace(/(^\/*)/g, "");
    };

    app.getSkinImgPath = function (type) {
        var skinstr = (app.layoutCreator.layout.conf.skin || 'dhx_skyblue').split('_')[1] || 'skyblue';
        var path = app.getAssetsRoot() + 'lib/dhtmlx/v403_pro/skins/' + skinstr + '/imgs/';
        if (type)
            path += type + '_' + skinstr + '/';

        return path;
    };

    app.genStr = function (w) {
        var s = ""; var z = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        for (var q = 0; q < w; q++) s += z.charAt(Math.round(Math.random() * (z.length - 1)));
        return s;
    };
});

redpajama_set_name: RedPajamaGithub


This cucumber-yogurt salad is a dish we started making years ago. We had dinner with friends this weekend. They made kabobs and asked me to bring tzatziki. When I looked in my Greek recipe book, I found my daughter's note: "Yummmm!". It's so simple to make, and VERY tasty - and improves each day! This adaptation is a low fat version that tastes plenty rich.
1) Combine olive oil, vinegar, garlic, salt and pepper and mix well.
2) In a separate bowl, blend together the yogurt and sour cream. Combine this mixture with the oil mixture.
3) Add cucumbers and mix thoroughly. Chill for an hour or overnight before serving.
4) Just before serving, sprinkle with dill.
If serving with pita, put the pita in the oven at 350 for 5 minutes or so.


text:
Hohey-plants
Terms of flowering honey plants in the USA and Canada
According to observations of naturalists and beekeepers.
Country USA Canada
State Please select Alabama Alaska Arizona Arkansas California Colorado Connecticut Delaware District of Columbia Florida Georgia Hawaii Idaho Illinois Indiana Iowa Kansas Kentucky Louisiana Maine Maryland Massachusetts Michigan Minnesota Mississippi Missouri Montana Nebraska Nevada New Hampshire New Jersey New Mexico New York North Carolina North Dakota Ohio Oklahoma Oregon Pennsylvania Rhode Island South Carolina South Dakota Tennessee Texas Utah Vermont Virginia Washington West Virginia Wisconsin Wyoming
Allium schoenoprasum.
Other common name(s):
Chives.
Life form:
Forb.
Please select your location to display the flowering period of the plant in your area.
NECTAR PRODUCTION:
SOURCE FOR HONEY BEES:
General distribution:
Chives, scientific name Allium schoenoprasum, are cultivated both for their culinary uses and their ornamental value. These small bulbous perennials feature attractive, pale lavender, globular flowers and thin, grass-like, dark green leaves which typically grow in clumps up to 30-45 cm (12-18 inches). With a strong onion or garlic scent, they are generally pest and disease-free!
A perennial plant, it is widespread in nature across much of Europe, Asia, and North America.
Chives are a commonly used herb and can be found in grocery stores or grown in home gardens. In culinary use, the green stalks (scapes) and the unopened, immature flower buds are diced and used as an ingredient for omelets, fish, potatoes, soups, and many other dishes. The edible flowers can be used in salads. Chives have insect-repelling properties that can be used in gardens to control pests.
Botanical description:
Chives are a bulb-forming herbaceous perennial plant, growing to 30–50 cm tall. The bulbs are slender, conical, 2–3 cm long and 1 cm broad, and grow in dense clusters from the roots. The scapes (or stems) are hollow and tubular, up to 50 cm long and 2–3 mm across, with a soft texture, although, prior to the emergence of a flower, they may appear stiffer than usual. The grass-like leaves, which are shorter than the scapes, are also hollow and tubular, or terete, (round in cross-section) which distinguishes it at a glance from garlic chives (Allium tuberosum). The flowers are pale purple, and star-shaped with six petals, 1–2 cm wide, and produced in a dense inflorescence of 10-30 together; before opening, the inflorescence is surrounded by a papery bract. The seeds are produced in a small, three-valved capsule, maturing in summer.
Seasonal development:
Blooming in late spring - late summer, both flowers, and leaves are edible. The flowers are perfect in salads while leaves are widely used as a culinary herb.
The flowers are attractive to pollinators and are frequently visited by bumblebees and other types of bees.
Average rating 4.6/5 209 based on 45 reviews.
Honey Plants
Honey plants of North America
The pollen and honey plants of Wisconsin
Honey Plants Manual A Practical Field Handbook for Identifying Honey Flora

redpajama_set_name: RedPajamaCommonCrawl


FIFA on Thursday released Nigeria's latest ranking in global football.
The Super Eagles have now moved one place from 49th position to 48th in the new FIFA/Coca-Cola World Ranking as Belgium and France share the top spot for the first time in the table's 25-year history.
According to the rankings posted by FIFA on its official website, the Super Eagles has 1415 points to finish 48th in the month of September.
Belgium had a couple of wins, including victory over Iceland in the inaugural Nations League competition which leveled them with the World Cup champions, Frence, the team that defeated them in the World Cup semi-finals.
Brazil remain in third position ahead of World Cup finalists Croatia, while the only other nation in the top 10 whose position has changed was Denmark, who dropped one place from ninth.


text:
Jelena Škorić Nadja Kosić Jovana Trivunović
Digital Nomads: It Is Time to Hit the Road!
Traveling the world, being part of the global digital community, earning a living in far-flung destinations… Almost everybody has at least once fantasized about living the life of a digital nomad. However, is it as simple as it seems at first glance?
Catching Up with a Term…
Digital nomads are location-independent workers that avail of amazing technological innovations and modern culture to work remotely. As technology has dramatically reshaped the work environment, swapping the office for some distant destination is becoming a reality for many. Key to this digital nomad lifestyle is the ability and the flexibility to work remotely. To do so they use wireless internet, smartphones, Voice over IP, or other cloud-based applications to work remotely from afar. Digital nomads may use co-working or co-living spaces, cafes, house sitting agreements, and shared offices.
By strategically choosing a location, digital nomads may leverage the differences in currency and cost of living to minimize their tax bill and maximize profit—whether to save for retirement or generate cash. Even in expensive, developed countries, digital nomads can usually benefit from favorable tax treatment, which may allow them to retain a greater portion of their earnings.
The thing is, packing up and moving from one country to another and popping open the laptop to work is not simple as that. There are many factors to be considered when tackling the digital nomad equation. Passports, taxes, and internet speed top the list. However, a "visa" should also make the list. (Not the credit card, though that is also something to think about it.) Namely, a visa allows a person to enter, leave, or stay for a specified period of time, or even permanently, in a country. There is no universal rule for visas; visa conditions vary from country to country. In most countries, digital nomads are not permitted to work while on a visa-free stay or on a tourist visa. In fact, foreigners require a work visa to work legally. Ensuring you stay legal as a digital nomad may not be the most exciting part of the dream.
Serbia is a visa-free country for almost every passport holder. In other words, a visa is not required to enter and stay in the country. For a limited stay of 90 days within a 180-day period, there is no requirement to pay visa fees and go through the administrative obstacle course. Besides, foreigners must report their stay within 24 hours of arrival. To stay in Serbia longer than 90 days, a foreigner needs to apply for a residence permit through the Ministry of Interior.
Tax Aspects
There are two possible scenarios for digital nomads. The first one involves becoming a non-resident of the home country for tax purposes (this does not apply to US citizens) while not becoming a tax resident in any other country. It is worth noting that, in almost all jurisdictions, 183 days' stay makes you a tax resident. The second one is getting a residence permit in one country and staying there.
Back to Serbia. Given that it is still a net capital importer, Serbia places a limited tax liability, meaning that it only taxes the assets situated within its territory and the income emanating from it. Needless to say, tax residents are subject to unlimited tax liability while non-residents are taxed only based on the source of their income and property.
In order to avoid double taxation of employment income, Serbia exempts foreign-sourced income. Namely, Serbia, as the state of residence, limits its taxation right to tax foreign-source income. Consequently, said income is taxable exclusively by the source state. This method cuts the administrative and compliance costs both for tax authorities and taxpayers.
However, this should not blind us to its inconsistency with non-discrimination as one of the fundamental principles of international tax law. Discrimination based on the nationality of the taxpayer is a "catch-22" because of the different treatment of tax residents and non-residents.
Could Serbia Become a Digital Nomad Haven?
As a part of a wider plan to encourage tech-related startups, Serbia has recently introduced a tax incentive[1] for digital nomads which frees them from paying tax on income earned while working in Serbia for the first 90 days.
This incentive introduces an exemption from personal income tax for income earned by a non-resident who spends a maximum of 90 days in the Republic of Serbia, within a period of 12 months starting or ending in the respective tax year. The work must be performed for a non-resident client. In other words, the income generated during this period will not be considered as income originating within Serbia and will thus not be taxable in Serbia.
The reasoning behind this measure was to provide an incentive for foreign nationals to come and work in Serbia temporarily. Essentially, even though they would not pay income tax, the benefit for the Republic of Serbia would be increased VAT receipts from their consumption in Serbia. However, this incentive may not seem so promising in terms of attracting more digital nomads to Serbia, as they anyway do not pay taxes in the host countries but rather do so in their home countries or countries where their business is registered.
So, let's not forget that Serbia needs to develop a unique tax system in order to attract the growing population of digital nomads. Implementing attractive tax incentives to support the growing trend of location-independent lifestyles could make our country a desirable place to stay. The rolling out of a new tax incentive should be based on well-structured measures ensuring a blanket tax exemption for non-residents. This method is the sure-fire way to grant satisfying benefits to digital nomads. Most importantly, by doing so, Serbia would deliver a powerful message that it is a progressive and forward-thinking country in tune with a rapidly changing society.
Aspects of COVID-19
The COVID-19 pandemic induced a shift to remote work and took millions away from their offices. Could this unprecedented situation influence workers to leave their armchairs and become digital nomads? That would change digital nomadism in different ways:
Namely, a growing number of companies are announcing that they plan to allow a much greater degree of remote work in the long term. This is giving millions of people the ability to become more nomadic – and many are doing so.
However, instead of flying from country to country, digital nomads are staying closer to home due to travel restrictions. Amid the Covid 19 pandemic digital nomads may choose to settle more and travel less, which may open their eyes to the advantages of exploring places and cultures in-depth.
One thing is certain, traditional work patterns are experiencing changes; many are now able to make a living while traveling the world. Yet, a wise choice of destination makes a difference. In that sense, Serbia has taken the first steps to make its taxation system more friendly for digital nomads by exempting non-residents who spend up to 90 days in Serbia from personal income tax.
[1] Personal Income Tax Act, "Official Gazette of the RoS" No. 5/2020, Article 9b.
Authors: Jelena Škorić, Nadja Kosić and Jovana Trivunović
If you would like to receive publications on any areas please subscribe.
To learn more about the Firm or a particular issue, please contact the media relations managers for assistance:
Jelena Nađ
T: +381 11 404 35 70
M: +381 61 135 93 01
jelena.nadj@geciclaw.com
Gecić Law Firm Serbia (75) Competition Law (45) Antitrust (27) European Commission (25) Competition Law Serbia (24) Serbia (20) Commission for Protection of Competition (16) Competition (13) European law (13) Corporate Law Serbia (11) GDPR (7) Dawn Raid (6) Doing Business (6) State Aid Serbia (6) State Aid (6) Client Alert (5) TFEU (5) Serbia Invest (4) Mergers (4) TerraLex (4) Data Protection (4) EU Law (4) Taborosi Scholarship (3) University of Belgrade (3) Privatization (3) Facebook (3) Investors (3) Aviation Sector (3) Intellectual Property (3) Copyrights (3) TerraLex global meeting 2018 (2) Tax (2) Gun Jumping (2) Apple (2) Faculty of Law (2) EPS (2) European Court of Justice (2) Enforcement Administrators (2) Chillin'Competition (2) Banking & Finance (2) EU (2) EPS Distribucija (2) SAA (2) Treaty on Functioning of the EU (2) Real Estate (2) #privacy (2) #righttoaccess (2) #noyb (2) International Aviation (2) CJEU (2)


text:
» More than 60% of divorced women regret making this mistake
More than 60% of divorced women regret making this mistake
On behalf of Johnson & Johnson, Attorneys At Law | Apr 29, 2020 | divorce | 0 comments
Your life may look different after divorce, and your finances may as well. You may have had certain financial goals in place throughout much of your life, but the path to achieving these goals may now look markedly different. You may find, however, that you have a better chance at reaching those financial goals if you take a step many divorced women regret not taking and hire a financial advisor to help.
Per Forbes, only about 5% of women who have clear financial goals they wish to achieve hire financial advisors to help them do so amid divorce. More than 60% of now-divorced women, however, say they wish they had added a financial advisor to their divorce team, believing that doing so would have greatly benefitted their cases. How?
By helping them achieve set goals
Many women in your circumstances share similar financial objectives. The majority, or about 66%, acknowledge that eliminating debts is of the utmost importance.
More than 40% of divorced women with financial goals wish to set aside enough money to retire comfortably, while about 27% prioritize putting money aside for a new home. Almost 20% of divorcing women, meanwhile, wish to generate more wealth through investments. A financial advisor may be able to help you take steps in your divorce to help you achieve these and other goals.
By helping them identify assets
When you and your ex begin dividing the value of your shared assets, you may find yourself focusing on big-ticket items, such as vehicles or your shared home. A financial advisor may help you expand your focus to other valuables you may not have considered, such as family heirlooms, college savings accounts and the like.
Statistically, women now live longer than men, so it is more critical than ever that you position yourself for financial success after divorce. A financial advisor may be just the person to help you do so.
Common inquiries about New Jersey child custody and their answers
Your legacy and the future of your company
What is marital property and how do courts divide it?
What are the penalties for driving without a license?
Intestate succession in New Jersey


Four days after Scotland suffering the indignity of a crushing defeat in Kazakhstan, punters have every right to smirk at the 1-25 being dangled about them bouncing back with a win in San Marino.
Even allowing for Scotland's knack of embarrassing themselves on the international football stage, they should surely chin one of the world's very worst sides at the San Marino Stadium.
The fact that there is actually a debate in some places as to whether or not Big Eck's flops can pull off a Group I triumph in Serravalle shows how unbelievably awful they were last time out.
But Tartan Army bashers need not get carried away. San Marino are beyond dreadful and Scotland – even this Scotland – must surely be too good for them.
As ever with mismatches like these it's hard to summon up much enthusiasm for a bet. Confronted by four Scots at odds-on in the anytime scorer betting merely illustrates what little value is on offer for punters who can't see past an away win.
Scotland will be a better-balanced side with skipper Andy Robertson and Bournemouth flyer Ryan Fraser returned to the fold and while there are questions galore over McLeish's management, this is still a good enough starting side to beat poor opposition.
And San Marino are seriously poor. Comparing them with Kazakhstan would be comparing Liverpool with Crewe.
The underdogs have just three professionals in their ranks and one of them is keeper Elia Benedettini, who is yet to keep a clean sheet in 14 appearances for his national side.
They are on a run of seven straight defeats to nil under coach Franco Varrella, the most recent of which was Thursday night's 5-0 drubbing in Cyprus.
They haven't scored a goal since September 2017 and of their 154 international fixtures, 131 have resulted in defeats to nil.
Even their record against Scotland reads played six, lost six, goals scored none, goals conceded 19.
That's what the Scots are up against and it really isn't much.
It's not easy to articulate that disparity in a bet given the prices on offer but given the pressure which has piled up on Scottish shoulders, it could pay to expect a fast start.
Cyprus were four up inside 31 minutes in Nicosia and while it might be a big ask from Big Eck to see that repeated, backing the first half to produces most goals is a fair enough proposition.
The onus is on Scotland to get the game won early and it's doubtful that San Marino are going to be good enough to stop them.


The U.S. Department of State J-1 visa program is very successful and CIEE is proud to be one of its leading sponsors. At the root of this success are regulations designed to protect students and ensure that they have a worthwhile cultural exchange experience in the United States.
As with many regulations, the rules set a minimum baseline for compliance. CIEE believes that going above and beyond the minimum adds value for students, employers and communities, and enhances U.S. public diplomacy. For this reason, we maintain higher standards for the health, safety and welfare of our students.
One of the biggest benefits of working with CIEE is that we make regulatory compliance easy, for you and your students. We've built compliance into our policies and services so you need not worry about unintentionally breaking a rule. You don't need to become an expert. You have CIEE for that. Any questions? Don't hesitate to ask.
Employers must follow certain guidelines. There are rules regarding hours, pay, housing, transportation and communication with CIEE, the program sponsor. Your CIEE account manager will guide you through these when you sign on with CIEE, and make it easy to comply.
Jobs must be compatible with the rules, regulations, and intent of the J-1 Exchange Visitor Program, which focuses on cultural exchange.
CIEE will not approve a job if there are questions about students' safety and well-being, or if the job prevents them from having a meaningful cultural exchange experience.
Students must be able to balance work responsibilities with time spent exploring the local community, learning about the United States and getting to know Americans.
Students may only work for employers whose staffing needs are seasonal or temporary in nature.
The job must pay a salary of at least minimum wage.
Both CIEE and the U.S. government have high standards for student jobs. We will assess any job you submit, and must approve it before you make an offer.
Students visiting the United States as part of the J-1 visa program must register with the Student and Exchange Visitor Information System (SEVIS). They need to follow up with monthly check-ins..
While SEVIS compliance is a student's responsibility, it is in your best interest to make sure it happens. Otherwise, your student could be sent home, and you could lose a valuable member of your team!
The Department of Homeland Security created the Student Exchange Visitor Information System, or SEVIS, to provide oversight of certain categories of foreign visitors to the United States. Every person entering under a J-1 visa must register on arrival, check in monthly, and register any change of address or employer. If a student fails to do any of these things, he/she can be sent home.
While SEVIS compliance is up to your student, you should encourage and remind them to comply. CIEE also sends out regular reminders via email.
Provide a U.S. address. If a student has not yet secured permanent housing, the temporary housing address (not a work address) should be used, and updated as soon as he/she moves.
Inform CIEE of any change of address.
Inform CIEE of any change of employer, with the new employer's contact information.
Fill out and return the mandatory survey that CIEE sends each month.
Make it easier for your students to comply. Lend a hand.
Download and display the SEVIS poster.
Allow students to use a company telephone to register.
Ask if they've registered when they arrive, and remind them of the importance of keeping their information updated.
Notify CIEE of students who do not arrive as scheduled.
Contact CIEE if a student leaves before his/her scheduled end date.


HITACHI'S first Intercity Express Train (IET) made its maiden voyage to Cornwall on June 22 as part of a through journey from London Paddington to Penzance.
The Great Western Railway bi-mode Class 800 set Nos. 800003 and 800004 worked to the Cornish terminus as part of an expo event with Cornwall Council to showcase improved rail services for the South West.
From 2017 this new fleet of trains will link London Paddington to Bristol and South Wales, and by 2018 another similar fleet will be working on services to Exeter, Plymouth and Penzance.
Station and signalling upgrades are part of the package. Additional signals have been installed to reduce block section lengths to permit increased train capacity, seven level crossings have been upgraded, and the line south from Plymouth will be controlled from 'boxes at Plymouth, Lostwithiel and Roskear.
Network Rail is spending £12million on clearing lineside vegetation plus a further £10m for gauge clearance work and on platform extensions at Totnes and Devonport. GWR says that the trains are designed to withstand the region's variable weather conditions, including that along the Dawlish coast.
Passengers on the 'Night Riviera' sleeper service will also benefit from investment, with new seated carriages, a cocktail bar and refreshed berths that have hotel-style keyless door entry, USB charging ports and many other improvements.
Technology will provide real-time journey updates and seat reservation screens.


Please recommend a laptop for movie making, uploading from a camcorder, editing, storing too. 1,500 price range or less from bestbuy?
What is the best Camcorder to buy?
Is there a DLSR camcorder with a long range and good quality of audio with a budget under $700?
What is the difference between 60Mbps and 100Mbps in 4K video?
Is there any difference in 4k video from a videocamera/camcorder and a photo camera from let say Canon?
What's the best vlogging camera for under $200 (preferably with a flip screen, but if not its all good)?
Sony dcr-40e mini cassette need docking station number?
How to download and edit videos on Chromebook from Sony a5100 camera?
On camcorders I have mini disc from a Sony CD Mavica I need an apt to copy them to My Mac book either free or buy one?
Does an iphone 8 have 24fps video?
What is your best tool determing guest visie level intoxcation?
Help with Data Error on Sony Handycam FDR-AX53?
I m looking for a camera?
Help with iMovie on my phone?
Video editing. I downloaded Filmora, but I cannot see how to select, cut, and paste?
How to edit dash cam video together smoothly?
My xbox one s says I can't play any games in 4K But I have a 4K uhd or does the have to 4K UHD WITH HDR. mine is just 4K uhd?
Does the sony 4k hdr x800e tv have cameras if it does how do you take them off?
What camcorder does ariana grandes photographer use for her vhs looking type vids for her ig ?
I Was Recording Some Gamplay From To My Elgato HD60. When It Ended, The Record Button Was Off By Itself And Only Got 40 Seconds. Any Advice?
Snapchat video/audio out of sync?


We are signing this petition in response to the poor (and in many cases absent) promotion of alternative rock band Bush's latest release, Golden State. We are fans of the band, and have loved the music, the songwriting and live performances that seem better than any other popular band on the market.
We were shocked (to say the least) at the lack of worldwide promotion for the highly anticipated return of one of the biggest bands of the decade. We felt that with Bush leaving Trauma Records to join a label that had signed them to a rather lucrative contract, not to mention the sixth largest record label on the face of this earth, that you (Atlantic Records) would make every effort to promote Golden State in TV and radio. Sadly, this has not been the case.
The Undersigned feel that this record was not given a chance. Support for first single The People that We Love was lackluster at best, resulting in a Billboard debut at #22, and if not for members of the band being kind enough to communicate with us on their official website (bush-music.com), we would not have even known that Headful of Ghosts (errantly given as Head Full of Ghosts on some Atlantic press releases) and Inflatable were chosen as singles. Many major radio stations tell us that they haven't even been given copies of the Inflatable single to play even if they wanted to!! We as fans have done everything in our power to help the band, from setting up websites for the sole purpose of fan promotion, to simply pestering our local DJ. Almost universally, the response has been the same: We have gotten no promotion efforts from the record label, so we can't play (insert single here). So we the fans turn to you, in an attempt to breathe new life into this album.
The Undersigned wonder why Atlantic has chosen to abandon Golden State. This is the first Bush album that has been universally praised by critics, and certainly the fans that caused a frenzy over the band at Woodstock have not gone away. And you certainly have it within your power to promote albums: Atlantic has a stable that reads like an all-star list of popular bands from across the board, from Brandy to POD to Kid Rock to Sheryl Crow, Rush, Silverchair, Poe and so many more, albums that have debuted very high on Billboard charts, due in no small part to label support. Bush has sold over 13 million records. Why would Atlantic sign a band if they are not willing to promote them to the fullest?
What do The Undersigned suggest? That Atlantic release a fourth single (a song that fits on modern radio playlists, unlike the sober Inflatable, a track like Reasons or Hurricane) and promote the new album! Reinstate the street team that had been doing so well! Lobby MTV to air the video for this single, and put pressure on radio stations nationwide to play this single. This album has turned a profit with almost no promotion; all that we ask is that you put some marketing behind Bush's latest effort. Millions of devoted Bush fans are behind you.
Please consider making a small donation today. This will allow us to keep Atlantic Records: Support Bush! alive and available to a wide audience.


The process of Pre-production is really just putting an idea onto paper so to speak and is one of if not the first step in making an idea become a reality, a 3D rendering of reality anyways. Pre-production can be a broad term, meaning anything from Concept designing where ideas and a visions are put onto paper, Story boarding where all of the concepts are developed and turned into a series of story boards (Almost little comics), or even Pipeline testing in which a scene of the animation is chosen and put through all the phases of production and tested to see how the end product might turn out.
Blog – Storyofanimation.blogspot.com. (2012). Pre-Production. [online] Available at: http://storyofanimation.blogspot.com/p/concept-art.html [Accessed 22 Jun. 2018].
With all of the ideas mapped out and all of the concept designs refined, the 3D modelling can begin. Whether using sculpting software like Zbrush or Polygonal Modelling with primitive objects in 3Ds max, an idea can be made into something incredible and is only limited by your imagination, and to a certain extent your skill. According to Justin Slick of Lifewire "Box modelling is probably the most common form of polygonal modelling and is often used in conjunction with edge modelling techniques…Edge modelling is another polygonal technique, though fundamentally different from its box modelling counterpart." Some programs on the other hand do the modelling for you, known as procedural modelling, usually used to create things like environments or organic structures which can be extremely useful if you want to create a large environment in a matter of minutes.
First image – Professor 3D. (n.d.). 3D Models – Professor 3D. [online] Available at: http://www.professor3d.com/3d-models/ [Accessed 22 Jun. 2018].
Second image – Gambody. (2018). Link Game Figurine for 3D Printing | Static Model. [online] Available at: https://www.gambody.com/3d-models/legend-of-zelda-link-3d-model-for-print [Accessed 22 Jun. 2018].
Quote 1 – Slick, J. (2017). 7 Common Modeling Techniques for Film and Games. [online] Lifewire. Available at: https://www.lifewire.com/common-modeling-techniques-for-film-1953 [Accessed 22 Jun. 2018].
Quote 1 – Bech-Yagher, C. (2017). UV mapping for beginners. [online] Creative Bloq. Available at: https://www.creativebloq.com/features/uv-mapping-for-beginners [Accessed 22 Jun. 2018].
Image 1 – Andrew Moore. (n.d.). Week 2 – UV mapping, Texturing & Shaders, Rigging and Animation. [online] Available at: https://andmoor1.wordpress.com/2015/03/03/week-2-uv-mapping-texturing-shaders-rigging-and-animation/ [Accessed 22 Jun. 2018].
Image 2 – Pluralsight.com. (n.d.). UV Mapping Techniques for Games in 3ds Max. [online] Available at: https://www.pluralsight.com/courses/uv-mapping-techniques-games-3ds-max-1431 [Accessed 22 Jun. 2018].
To put it simply "Textures are flat images that get applied to 3D objects" and "If the texture of a model determines what is drawn on its surface, the shader is what determines how it is drawn." Geig, 2013. This is honestly the simplest way of putting it, to elaborate on this a bit more, Texturing is in essence a 3D models skin. The skin gives the object colour, roughness or smoothness and then there are shaders. Shaders are essentially the dictators of what the shading and lighting inputs on the material through complicated mathematical algorithms which figure out what colour certain pixels should be.
Quote 1- Geig, M. (2013). Textures, Shaders, and Materials | Working with Models, Materials, and Textures in Unity Game Development | InformIT. [online] Informit.com. Available at: http://www.informit.com/articles/article.aspx?p=2162089&seqNum=2 [Accessed 22 Jun. 2018].
Technologies, U. (2017). Unity – Manual: Materials, Shaders & Textures. [online] Docs.unity3d.com. Available at: https://docs.unity3d.com/Manual/Shaders.html [Accessed 22 Jun. 2018].
Essentially, rigging is putting muscles onto a skeleton, without the work of a rigger, the model would be stuck in a position that it was created in as the model would not be able to be deformed. Rigging can be a tedious task, however it is worth the time it takes to do it properly. Whether its creating the joints or bones, programming the constraints or creating the driven keys. All of these tasks can either make or break a model…literally.
Pluralsight.com. (2014). Key 3D Rigging Terms to Get You Moving. [online] Available at: https://www.pluralsight.com/blog/film-games/key-rigging-terms-get-moving [Accessed 22 Jun. 2018].
3D Animation is taking all the previous point, countless amounts of time and effort and making the 3D assets and models come to life. This is where the animator gets to become the puppet master. The animator has to move their puppet through a 3 Dimensional space and try to create movements that are a realistic or as animated as the project requires. This means everything from the way the hair blows in the breeze, down to the way that the character walks and talks. Animation is where the final product starts coming into shape.
iNurture. (n.d.). What is 3D Animation? How is it Different from 2D Animation? – iNurture. [online] Available at: http://www.inurture.co.in/what-is-3d-animation-how-is-it-different-from-2d-animation/ [Accessed 22 Jun. 2018].
"…having a well-implemented lighting solution can very well make or break a render. Without great lighting, even a fantastic 3D model can end up looking flat and unconvincing…" Slick, 2018. In this regard Slick is right, no matter how good your animation is and no matter how much time and effort goes into the project, if your animation doesn't have decent lighting, all of your efforts might be in vain. Well, that is a bit drastic but in essence having the wrong lighting in the scene can make the animation so much less engaging. There are so many different ways that lighting can be implemented, through Spot lighting where the light is just concentrated on a single spot or ambient light, where the rays of sunshine are subtle and yet add atmosphere to the surrounding area. Slick, J. (2018). A Guide to 3D Lighting Techniques for Digital Animation. [online] Lifewire. Available at: https://www.lifewire.com/3d-lighting-techniques-2090 [Accessed 22 Jun. 2018].


To be remarkable, your website needs a remarkable WordPress slider. There are tonnes of sliders on the internet. But it's obvious when you study them which one stands out through design, through the multitude of options they offer for customization, and through the easy way to use. Because we are subjective, we are not talking about just one WordPress slider in this article. We've created a list of 10 remarkable WordPress slider plugins. You decide who deserve to be the first on your list after analyzing each one.
Carousel Layout – It's possible to show multiple slides at the same time, like in a carousel layout.
Lightbox – The slider comes bundled with the FancyBox lightbox and allows you to easily activate it for the main slide images.
Media Grid is a unique plugin to create unlimited responsive, filterable and paginated portfolios with ease, taking advantage of masonry engine.Using advanced techniques allows you to create your own layouts mixing up any media type dynamically or manually: adapting to any container!


text:
The World Is a Vampire: The Pleasures of 'A Girl Walks Home Alone at Night'
Spectre Vision
by Kevin Lincoln
In the era of manifold information, of content nausea, and direct-to-YouTube film releases, creators and publishers go to grosser lengths than ever to distinguish their work. As a result, I'd understand if you viewed with suspicion the label that's been attached to A Girl Walks Home Alone at Night, the supercool writer-director (and winner of the Bingham Ray Breakthrough Director Award at Monday's Gotham Awards) Ana Lily Amirpour's first full-length effort: "Iranian vampire-Western."
Others have added the word "feminist" to the beginning of that long string of adjectives, because the plot — a wraith-like vampire known only as the Girl, played astoundingly by Sheila Vand, preys on misbehaving men in a fictional oil town called Bad City — can easily be read as sharp-toothed gender theory. Amirpour has resisted that last description, though, claiming, in interviews, that calling the film feminist says more about the person doing the labeling than about the director or film being labeled. As for the film being particularly Iranian, or part of a Western tradition, it goes as far as her adoration for the filmmakers she loves, including David Lynch, Sergio Leone, and Lars von Trier.
Even though I see the movie as part of a long line of female-revenge films like Ms. 45, Sympathy for Lady Vengeance, and Kill Bill, I think Amirpour's refocusing of the conversation is fantastic. This movie is cool as shit. And to bog it down in theory and metanarrative, even ones that might feel welcome or admiring, is to miss the point.
A Girl Walks Home Alone at Night has six main characters. There's the Girl, played by Vand, a sort of French-Persian hybrid who sashays around her room to '80s synth-pop and is characterized by, one, her chador — the covering that gave Amirpour the idea of an Iranian vampire in the first place — and two, her fishing shirt and bob haircut. Everything about the Girl is seductive and iconic; she appears to be free of men, to transcend men entirely, but even more than that, she is a perfect aesthetic creation — she fills the frame like an idol or a dream. Partly, this comes from Vand's portrayal, which is equal parts cool and unhinged. When the Girl does contend with emotions, she doesn't change; instead, she flirts with the idea of being human like a normal heroine might with a man.
Unlikely as it might seem, this is a love story. Her counterpart in romance is Arash, played by Arash Marandi, a comically pretty spiritual descendant of James Dean. Arash is a goofy greaser, glistening and stupid, and his innocence, or innocence relative to everyone else, becomes his defining quality. Rounding out the cast is a prostitute, a gangster, an opiate-addicted father, and a little boy; there's no narrative fat here.
There can be cinematic fat: Amirpour's style is one of excess and exploration. She'll often stay in scenes for as much as a minute longer than seems necessary, until the image she's trying to convey has been screenprinted onto your brain. Sometimes, this can drag, and the movie is overlong, but I'm sympathetic to the intention, because when Amirpour hits, it's ecstatic. One outstanding scene, in which Arash and the Girl orbit each other sluggishly while a disco ball spins above them, might be the most beautiful shot of the year.
And here we circle back to that point: Amirpour is an aesthetic director, attracted to sight, sound, touch, and feel. Watching A Girl Walks Home Alone at Night is a sensual experience. I think Amirpour is getting at something important by resisting the tendency to consider every book and movie and TV show in terms of how many points it scores politically, socially, and morally. There are reasons we do that, and often they're good reasons, especially when the art in question courts this kind of thinking. But if I'd made a film as gorgeous and alluring as this one, I'd resist it being reduced to a talking point, too. A Girl Walks Home Alone at Night is the coolest movie of the year. All other adjectives might have to get in line.
Kevin Lincoln (@KTLincoln) is a freelance writer living in Los Angeles.
Filed Under: Movies, Kevin Lincoln, A Girl Who Walks Home Alone At NIght, Ana Lily Amirpour
An Obsessive 'Ridiculous 6' Trailer Deconstruction October 28, 2015
Ash vs. Bruce Campbell: The B Movie Legend Returns to 'The Evil Dead' October 28, 2015
Weekend Box Office Winners & Losers: Bill Murray, Vin Diesel, Steve Jobs, and Jem All Go Down in Spectacular Flames October 26, 2015
Of Balls and Short Australian Men: A Nuanced Guide to AC/DC
Talent Scouts: Remembering 'Troop Beverly Hills' at 25


Texans are seeing careers in a plant once forbidden.
The high demand for medical marijuana across our country is leading to a so-called "green rush." Some high school grads even want to major in weed.
That quest for knowledge is leading them to the unlikeliest of places and far from our state's blue bonnets – in Marquette, Michigan.
"I'm going because I feel like it's a movement and it's a huge deal," Texas high school senior Seth Fichter said.
Marijuana, known on the streets as weed, is his future.
"Well, we don't know how far we can take it. I mean with M.S. and epilepsy, it's all still fairly new" Fichter said.
The Texas teen's parents didn't need to be sold. They're okay with Seth's decision to study pot.
"When the tech industry started, there were people in the right place. They were like, 'This is going to be big,' and I think he saw something," Seth's father Todd told us.
On the campus of Northern Michigan University, medicinal plant chemistry is offered as a major.
Josie Mollohan is currently enrolled in the program at NMU.
Students here learn the science of all types of living vegetation, with an end goal of harnessing any of their healing powers.
"There are a lot of pharmaceuticals and medicines that people use every day, and they don't realize they're from plants," Mollohan pointed out.
Professors stress that it's a highly technical program, even if one of the classes is called "CH-420," a nod to cannabis' unofficial day of celebration.
"We say they're not studying marijuana at all. What they're studying is the scientific underpinnings of how medicinal plants work, and how you would prepare a medicinal plant delivered to a patient," insists Mark Paulsen, a professor in the NMU program.
Budding in popularity, the student body here is growing like a weed. The curriculum's first semester kicked off last fall with 25 students.
Currently this winter, there's 47 students. For the upcoming fall of 2018, the university has received over 700 applications so far.
The four-year degree comprises of 120 course credits. Students are required to take organic chemistry, plant physiology, chemical equilibrium, as well as a multitude of entrepreneurial courses, catering to those who'd want to start their own medicinal business.
The idea of majoring in weed down in Texas might seem weird or even far-fetched, but in Michigan, it's a money-maker.
Living with PTSD, as well as a traumatic brain injury from his deployment in Iraq, Army veteran Casey Desotell was on 13 different medications before transitioning to cannabis. Like anything, he says it's all about moderation.
"You don't go and you just do a ton of it. it's like drinking. You be responsible. And responsible people do responsible things. It's an aid. It's a medicine and something to help you," Desotell said.
Back here in Texas, the state's first dispensary just opened up in Austin, something Seth Fichter is happy to see as he prepares to break into the industry.
"Even if you don't like the recreational side of the drug, it's doing a lot of good things," Fichter said.
You can view the full course work for a four-year degree in the medicinal plant major through the NMU website here.