part Justice Department Issues Business Review Letter to the Association of Independent Commercial Producers By www.justice.gov Published On :: Thu, 16 Apr 2020 00:00:00 -0400 The Department of Justice announced today that it will not challenge a proposal by the Association of Independent Commercial Producers (AICP) to operate an online platform for advertisers to solicit bids from companies that provide production services for commercial advertisements. The Department’s position was stated in a business review letter from Assistant Attorney General Makan Delrahim for the Antitrust Division to counsel for the AICP. Full Article
part Justice Department Issues Business Review Letter to AmerisourceBergen Supporting Distribution of Critical Medicines Under Expedited Procedure for COVID-19 Pandemic Response By www.justice.gov Published On :: Mon, 20 Apr 2020 00:00:00 -0400 The Department of Justice announced today that it will not challenge collaborative efforts of AmerisourceBergen Corporation (AmerisourceBergen) to identify global supply opportunities, ensure product quality, and facilitate product distribution of medications and other healthcare supplies to treat COVID-19 patients. Full Article
part Justice Department Requires Divestitures as Dean Foods Sells Fluid Milk Processing Plants to DFA out of Bankruptcy By www.justice.gov Published On :: Fri, 01 May 2020 00:00:00 -0400 The Department of Justice announced today the conclusion of its investigation into proposed acquisitions by Dairy Farmers of America Inc. (DFA) and Prairie Farms Dairy Inc. (Prairie Farms) of fluid milk processing plants from Dean Foods Company (Dean) out of bankruptcy. The department’s investigation was conducted against the backdrop of unprecedented challenges in the dairy industry, with the two largest fluid milk processors in the U.S., Dean and Borden Dairy Company, in bankruptcy, and Dean faced with imminent liquidation. Full Article
part Pugh: State Help, Other Non-Law Enforcement Initiatives Part Of Crime Fight By www.wbal.com Published On :: 2017-07-27T05:14:00 Mayor Catherine Pugh says the state has agreed to restore 16 parole and probation officers to the city that were cut by the O’Malley administration. She also says there are other, non-law enforcement initiatives, in her plan to fight crime. Full Article
part MD Department Of Health: Five New Deaths Related To Coronavirus Confirmed On Sunday By www.wbal.com Published On :: 2020-03-30T08:10:00 The Maryland Department of Health on Sunday announced five new deaths as a result of COVID-19. Full Article
part Kentucky Department Of Agriculture Issues COVID-19 Guidelines For Yearling Inspections By www.paulickreport.com Published On :: Thu, 07 May 2020 13:39:46 +0000 Following is a statement from Rusty Ford, equine operations consultant for the Kentucky Department of Agriculture's Office of State Veterinarian, laying out guidelines for summer yearling inspections in regards to COVID-19. The public health threat presented by COVID-19, otherwise known as coronavirus, is impacting all, and the equine industry has not been immune to it. […] The post Kentucky Department Of Agriculture Issues COVID-19 Guidelines For Yearling Inspections appeared first on Horse Racing News | Paulick Report. Full Article Bloodstock NL List coronavirus covid-19 Horse Racing kentucky department of agriculture safety protocols Yearling Inspections
part Metro briefs: Robbinsdale to clean up apartment site polluted by former dry cleaning business By www.startribune.com Published On :: 2020-05-09T19:03:00+00:00 Full Article
part Kentucky Derby Consignor Standings Presented By Keeneland: Charlatan Keeps Rewarding Denali Stud, Stonestreet Partnership By www.paulickreport.com Published On :: Thu, 07 May 2020 19:40:45 +0000 The partnership between breeder Stonestreet Farm and consignor Denali Stud has produced a bevy of top-dollar horses at auction, and Charlatan's eye-popping triumph in the Grade 1 Arkansas Derby showed just what a high-priced offering from that union can do on the racetrack. Charlatan was offered by Denali Stud as agent for Stonestreet's “Bred and […] The post Kentucky Derby Consignor Standings Presented By Keeneland: Charlatan Keeps Rewarding Denali Stud, Stonestreet Partnership appeared first on Horse Racing News | Paulick Report. Full Article Derby Consignors Standings NL List Triple Crown arkansas derby charlatan Conrad Bandoroff denali stud horse auctions Horse Racing Keeneland keeneland september yearling sale kentucky derby Kentucky Derby Consignor Standings Stonestreet Farm
part MD Department Of Health: Five New Deaths Related To Coronavirus Confirmed On Sunday By www.wbal.com Published On :: 2020-03-30T08:10:00 The Maryland Department of Health on Sunday announced five new deaths as a result of COVID-19. Full Article
part Grand Canyon to Celebrate National Junior Ranger Day as Part of National Park Week By www.nps.gov Published On :: Wed, 25 Mar 2009 20:00:00 EST On Saturday, April 25, 2009, Grand Canyon National Park will celebrate National Junior Ranger Day with kid-friendly activities and programs for the entire family. https://www.nps.gov/grca/learn/news/news-njrd-03-09.htm Full Article
part Grand Canyon National Park launches new youth program with new partners By www.nps.gov Published On :: Sun, 29 Mar 2009 20:00:00 EST https://www.nps.gov/grca/learn/news/grand-canyon-national-park-launches-new-youth-program-with-new-partners.htm Full Article
part Twentieth Annual Grand Canyon Star Party to be Held June 5 - 12, 2010 By www.nps.gov Published On :: Wed, 12 May 2010 20:00:00 EST The twentieth annual Grand Canyon Star Party will be held from Saturday, June 5 through Saturday, June 12, 2010 on the South and North Rims of Grand Canyon National Park. https://www.nps.gov/grca/learn/news/2010-05-13_stars.htm Full Article
part Department of the Interior to Present Summary of By www.nps.gov Published On :: Wed, 21 Mar 2012 05:11:00 EST The public is invited to participate in web-based presentations, to be held on March 27 that will summarize public comments on the scope of the Long-Term Experimental and Management Plan Environmental Impact Statement for Glen Canyon Dam operations. https://www.nps.gov/grca/learn/news/department-of-the-interior-to-present-summary-of-public-input-received-on-a-long-term-plan-for-glen-canyon-dam-operations.htm Full Article
part Grand Canyon National Park Hosting 24th Annual Star Party Astronomers to Provide Free Telescope Viewing at Grand Canyon National Park, June 21-28, 2014 By www.nps.gov Published On :: Wed, 28 May 2014 09:30:00 EST The twenty-fourth annual Grand Canyon Star Party will be held from Saturday, June 21 through Saturday, June 28, 2014 on the South and North Rims of Grand Canyon National Park. https://www.nps.gov/grca/learn/news/grand-canyon-national-park-hosting-24th-annual-star-party.htm Full Article
part Grand Canyon National Park Equestrian Unit to Participate in 127th Rose Parade By www.nps.gov Published On :: Fri, 18 Dec 2015 07:41:00 EST To kick off the new year and to celebrate the National Park Serviceâs Centennial, Grand Canyon National Park is participating in the 127th Rose Parade Friday, January 1, 2016. https://www.nps.gov/grca/learn/news/20151218-rose-bowl.htm Full Article
part Excessive Heat Warning Issued for Parts of Grand Canyon National Park By www.nps.gov Published On :: Fri, 03 Jun 2016 06:00:00 EST The National Weather Service has issued an excessive heat warning for parts of Grand Canyon National Park. The warning is in effect beginning today Friday, June 3 at 10am through Sunday, June 5 at 8 pm for areas below 4,000 feet in the canyon including Phantom Ranch. Temperatures at Phantom Ranch could reach 113 F/45 C. Areas above 4,000 feet including the South Rim will experience high temperatures in the 90s. https://www.nps.gov/grca/learn/news/excessive-heat-warning.htm Full Article
part Another Excessive Heat Warning Issued for Parts of Grand Canyon National Park By www.nps.gov Published On :: Thu, 16 Jun 2016 08:13:00 EST The National Weather Service has issued an excessive heat warning for parts of Grand Canyon National Park from Sunday, June 16 to Wednesday, June 22. https://www.nps.gov/grca/learn/news/excessive-heat.htm Full Article
part Interior Department Releases Final Environmental Impact Statement for Glen Canyon Dam Adaptive Management By www.nps.gov Published On :: Fri, 07 Oct 2016 04:14:00 EST The U.S. Department of the Interior today released the Final Environmental Impact Statement (FEIS) for a Long-Term Experimental and Management Plan (LTEMP) for Glen Canyon Dam operations. https://www.nps.gov/grca/learn/news/final-eis-glen-canyon-adaptive-management.htm Full Article
part Grand Canyon National Park Accessible to Public during Partial Government Shutdown By www.nps.gov Published On :: Sat, 22 Dec 2018 05:11:00 EST During the partial shutdown of the federal government due to the lapse of appropriations, national parks will remain as accessible as possible while still following all applicable laws and procedures. Park roads, lookouts, and trails at Grand Canyon National Park will remain accessible to visitors. Visitor services provided by park concessioners and other entities will also remain open and operational, including lodging, restaurants and food service, grocery stores, retail locations, bicycle rental, concessioner provided tours, and park shuttle operations. https://www.nps.gov/grca/learn/news/grand-canyon-np-accessible-to-public-during-partial-government-shutdown-2018-12-22.htm Full Article
part Celebrate Grand Canyon National Park's 100th Anniversary during Star Party Week, June 22-29 By www.nps.gov Published On :: Thu, 09 May 2019 14:12:00 EST The twenty-ninth annual Grand Canyon Star Party will be held Saturday, June 22 through Saturday, June 29, 2019 on both South and North Rims of the park. Amateur astronomers from across the country will volunteer their telescopes and expertise for the enjoyment of park visitors. https://www.nps.gov/grca/learn/news/celebrate-grand-canyon-national-park-100th-anniversary-during-star-party-week-june-22-29.htm Full Article
part Record Low Temperatures Brings Snow to Parts of Pennsylvania By www.geelongadvertiser.com.au Published On :: Record low temperatures were set at several locations around the Pittsburgh metro area on May 9 as snow fell in Pennsylvania and other northeastern states, according to the National Weather Service. Most of the cold temperatures can be attributed to a polar vortex moving through the region, including parts of New York, Pennsylvania, Maryland and Delaware. The National Weather Service’s Mount Holly office recorded temperatures in the low 30s, some going below freezing into the mid-to-high 20s, across the northeast. The polar vortex also brought cold and snow squalls to parts of Canada, according to reports. Local resident Robert Fink captured this video of snow falling in Greensburg, Pennsylvania. “Are we absolutely sure it is May,” wrote Fink on Twitter. Credit: Robert Fink via Storyful Full Article
part Magnetic Brain Treatment Found to Relieve Depression in 90% of Participants With No Negative Side Effects By www.goodnewsnetwork.org Published On :: Tue, 07 Apr 2020 15:38:02 +0000 Not only did the patients experience high rates of remission, their cognitive function also showed marked improvement as well. The post Magnetic Brain Treatment Found to Relieve Depression in 90% of Participants With No Negative Side Effects appeared first on Good News Network. Full Article Health Medicine Psychology Depression Treatment Therapy Neurology Mental Health Medical
part Next Time You’re Feeling Particularly Stressed or Anxious, This Study Says You Should Play Tetris By www.goodnewsnetwork.org Published On :: Fri, 17 Apr 2020 18:20:44 +0000 If you're enduring a period of anxiety or uneasiness, this study from the University of California says that Tetris is the perfect solution. The post Next Time You’re Feeling Particularly Stressed or Anxious, This Study Says You Should Play Tetris appeared first on Good News Network. Full Article Health Wellness Anxiety Stress Mental Health Gaming NewsCred
part A Mother’s Mighty Love After 45 Years Apart: ‘She knew you would be back.’ By www.goodnewsnetwork.org Published On :: Sat, 09 May 2020 18:00:58 +0000 Bruce Hollywood never wanted to meet his biological mother – but when he suffered a heart attack at the age of 45, he found her at the restaurant she had named after him. The post A Mother’s Mighty Love After 45 Years Apart: ‘She knew you would be back.’ appeared first on Good News Network. Full Article Inspiring Adoption Japan History Family Mothers Fate NewsCred Good News Guru
part Reference Library (Part-time) 2 openings By www.georgialibraries.org Published On :: 2018-Aug-14 Maintain library reference information desk during evenings and peak times of need to serve primarily, students, faculty, and staff with information retrieval. Assists with Information Desk/Reference and research questions, check in/out of study rooms, t...... Full Article
part When a Red Arrows flypast to commemorate VE Day will fly over part of Surrey By www.getsurrey.co.uk Published On :: Fri, 08 May 2020 08:54:07 GMT SurreyLive has detailed the times and locations the aerobatics team is expected in the county Full Article Home
part The parts of Surrey, Hampshire and Sussex that could see Spitfire flypast commemorating VE Day By www.getsurrey.co.uk Published On :: Fri, 08 May 2020 09:48:04 GMT The spitfires will be flying over 11 locations across the three counties Full Article Home
part . 2012. Natural and cultural history of beargrass (Xerophyllum tenax). Gen. Tech. Rep. PNW-GTR-864. Portland, OR: U.S Department of Agriculture, Forest Service,Pacific Northwest Research Station. 80 p. By www.fs.fed.us Published On :: Thu., 25 Oct 2012 13:30:00 PST Forest managers are seeking practical guidance on how to adapt their current practices and, if necessary, their management goals, in response to climate change. Science-management collaboration was initiated on national forests in eastern Washington where resource managers showed a keen interest in science-based options for adapting to climate change at a 2-day workshop. Scientists and managers reviewed current climate change science and identified resources vulnerable to expected climate change. Vulnerabilities related to vegetation and habitat management included potential reductions in forest biodiversity and low forest resilience to changing disturbance regimes. The vulnerabilities related to aquatic and infrastructure resources included changing water quality and quantity, the risk to roads and other facilities from changes to hydrologic regimes, and the potential loss of at-risk aquatic species and habitats. Managers then worked in facilitated groups to identify adaptations that could be implemented through management and planning to reduce the vulnerability of key resources to climate change. The identified adaptations were grouped under two major headings: Increasing Ecological Resiliency to Climate Change, and Increasing Social and Economic Resiliency to Climate Change. The information generated from the science-management collaborative represents an initial and important step in identifying and prioritizing tangible steps to address climate change in forest management. Next would be the development of detailed implementation strategies that address the identified management adaptations.. Full Article
part Broadening Participation In Biological Monitoring: Handbook For Scientists and Managers By www.fs.fed.us Published On :: Fri, 08 Sep 2006 12:00:00 PST Participatory (collaborative, multiparty, citizen, volunteer) monitoring is a process that has been increasing in popularity and use in both developing and industrialized societies over the last several decades. It reflects the understanding that natural resource decisions are more effective and less controversial when stakeholders who have an interest in the results are involved in the process. An adequate number of such projects have now been organized, tried, and evaluated such that sufficient information exists to recommend a comprehensive approach to implementing such processes. This handbook was written for managers and scientists in the United States who are contemplating a participatory approach to monitoring biological resources, especially biodiversity. It is designed as a how-to manual with discussions of relevant topics, checklists of important considerations to address, and resources for further information. Worksheets for developing, implementing, and evaluating a monitoring plan are posted on a companion Web site. The subject matter is divided into 3 stages of a monitoring project encompassing a total of 22 topical modules. These modules can be used in any sequence on an ongoing basis. Stages and modules include (1) planning-documentation, goals, indicators, collaboration, decisions, context, organization, participants, communication, incentives, design, and resources; (2) implementation-training, safety, fieldwork, sampling, data, and quality; and (3) followthrough-analysis, reporting, evaluation, and celebrations. Collaboration always involves colearning, so documenting choices, plans, and activities with the Web site worksheets is integral to the manual's effectiveness. Full Article
part Outdoor recreation in the Pacific Northwest and Alaska: trends in activity participation By www.fs.fed.us Published On :: Tue, 12 May 2009 16:40:00 PDT Population growth in Oregon, Washington, and Alaska is expected to increase demand for outdoor recreation on public land. This trend will be tempered by changes in the sociodemographic composition of the population. Among sociodemographic characteristics, different ages and incomes correspond to different participation rates. Although older Americans are participating more, participation is still lower among this group for active pursuits. Hence, as the population ages, demand for passive activities may increase. Low-income people participate at a much lower rate than higher income people in outdoor recreation, and the growing disparity between the wealthy and poor may create inequities in opportunities for participation. State recreation planning documents for Oregon, Washington, and Alaska have identified this issue as a significant concern for recreation providers. Another important factor in recreation trends in the region is ethnicity: different ethnic groups participate in outdoor recreation at different rates, exhibit some different preferences for specific activities, and use recreation sites in different ways. In Alaska, the number of Asian/Pacific Islanders is expected to quadruple by 2025; in Oregon, the Hispanic population may triple by 2025; and in Washington, both these segments of the population may double. Full Article
part The density and distribution of Sitka spruce and western hemlock seedling banks in partially harvested stands in southeast Alaska By www.fs.fed.us Published On :: Tue, 24 Aug 2010 13:15:00 PST This study's objective was to document and describe the current seedling bank of Sitka spruce (Picea sitchensis (Bong.) Carr.) and western hemlock (Tsuga heterophylla (Raf.) Sarg.) stands in southeast Alaska that were partially cut between 1900 and 1984. Full Article
part Building a citizen-agency partnership among diverse interests: the Colville National Forest and Northeast Washington Forestry Coalition Experience By www.fs.fed.us Published On :: Thu, 31 May 2012 14:55:00 PST Concerns about forest health and the threat of wildfire across the Western United States increasingly provide the impetus for communities to find land management solutions that serve multiple interests. Funding and procedural changes over the past decade have positioned federal agencies to put greater emphasis on multistakeholder partnerships and public outreach efforts. Partnerships build slowly over time, but can result in a healthier resource, reduced fire risk, greater stability for agency planning processes, and more resilient communities. Drawing on interviews with stakeholders representing broad interests in a partnership between the Northeast Washington Forestry Coalition and the Colville National Forest, we examine some of the critical factors leading to the partnership's success and identify challenges along the way. We illustrate how the citizens of Colville, Washington, overcame conflicts by learning to communicate their interests and use existing resources to advance a variety of goals, ranging from fuels reduction and active forest management to roadless area and wilderness management. We highlight a set of important organizational themes that have emerged from Colville to provide managers and other stakeholders with ideas for similar efforts. Full Article
part Sunderland have a key role to fill this summer, as club secretary departs By www.chroniclelive.co.uk Published On :: Fri, 8 May 2020 15:54:23 +0000 Sunderland are looking for a new club secretary with Brett Baker moving on this summer Full Article Sport
part Natalia Damini Did An IG Live For WAKS (96.5 Kiss FM)/Cleveland, As Part Of The Social Kisstance Series By www.allaccess.com Published On :: Thu, 07 May 2020 09:48:21 -0700 CONCORE ENTERTAINMENT star NATALIA DAMINI performed her new hit PACEMAKER (f/ PETEY PABLO) on an IG LIVE this past TUESDAY (NET NEWS 5/4) with iHEARTMEDIA Top 40 WAKS (96.5 KISS … more Full Article
part WIL/St. Louis Parts Ways With ‘Bud And Broadway’ Morning Show By www.allaccess.com Published On :: Fri, 01 May 2020 12:33:11 -0700 HUBBARD RADIO Country WIL (NEW COUNTRY 92.3) ST. LOUIS has parted ways with its “BUD AND BROADWAY” morning show, hosted by BUD FORD and JERRY BROADWAY, after more than four years. … more Full Article
part Westwood One Parts Ways With Remaining Members Of 'The Ty Bentli Show' By www.allaccess.com Published On :: Mon, 04 May 2020 01:20:01 -0700 CUMULUS MEDIA/WESTWOOD ONE ended its nationally-syndicated “THE TY BENTLI SHOW” effective FRIDAY, MAY 1. While the show’s namesake, TY BENTLI, departed the radio business … more Full Article
part WBWL/Boston Hosts Virtual Meet And Greets With 'Horns Up House Party' By www.allaccess.com Published On :: Wed, 06 May 2020 10:19:35 -0700 iHEARTMEDIA Country WBWL (101.7 THE BULL)/BOSTON is providing listeners with a chance to virtually meet their favorite artists via the "Horns Up House Party." For the next five … more Full Article
part Deftones Hosting Global Listening Party For 10 Year Anniversary Of 'Diamond Eyes' By www.allaccess.com Published On :: Tue, 05 May 2020 10:22:49 -0700 WARNER RECORDS rockers DEFTONES are hosting a listening party in honor of the 10th anniversary of their sixth studio album "Diamond Eyes" on the DEFTONES' YOUTUBE channel … more Full Article
part COVID-19: Wear A Mask? Don't Wear A Mask? What Is Your Station Doing To Be Part Of The Conversation As America Begins To Reopen? By www.allaccess.com Published On :: Fri, 08 May 2020 01:20:01 -0700 As AMERICA opens up again, tensions are flaring about things as simple as wearing a mask to protect others and themselves. Is your radio station doing all it can to keep your audience up to … more Full Article
part Ireland’s Department of Arts, Heritage and the Gaeltacht By wordpress.org Published On :: Mon, 02 Nov 2015 21:36:44 +0000 The Department of Arts, Heritage and the Gaeltacht oversees the conservation, preservation, protection and presentation of Ireland’s heritage and cultural assets. Our goals are to promote and protect Ireland’s heritage and culture, to advance the use of the Irish language,... Full Article WordPress.org CMS Culture Europe Government Ireland
part La revisión de cigarrillos electrónicos por parte de la FDA es más importante que nunca: cualquier retraso relacionado con COVID-19 debe ser breve By newsroom.heart.org Published On :: Wed, 01 Apr 2020 14:45:00 GMT WASHINGTON, D.C., 1 de abril del 2020 – Después de años de demoras perjudiciales por parte de la FDA, en julio del año pasado un juez federal estableció como fecha límite el 12 de mayo del 2020 para que los fabricantes de cigarrillos electrónicos... Full Article
part AHA Statement: Pregnant women with CVD need specialized care before, during and postpartum By newsroom.heart.org Published On :: Mon, 04 May 2020 09:00:00 GMT Statement Highlights: Women with cardiovascular disease should receive pre-pregnancy counseling and be monitored during and after pregnancy by either a cardio-obstetrics team or a multidisciplinary team of health care providers with experience in... Full Article
part The new Boston Tea Party Museum By Published On :: Tour of the new boston Tea Party museum Full Article
part Best sports movies: ‘Caddyshack’ is a part of our vocabulary By feedproxy.google.com Published On :: Wed, 06 May 2020 09:58:21 PDT Editor’s note: The Gazette sports staff has compiled lists of its top 15 favorite sports movies. Each day, a different staffer will share some insight into one of their favorites. Some of them... Full Article Sports
part Markdown Comes Alive! Part 1, Basic Editor By feedproxy.google.com Published On :: Wed, 26 Feb 2020 08:00:00 -0500 In my last post, I covered what LiveView is at a high level. In this series, we’re going to dive deeper and implement a LiveView powered Markdown editor called Frampton. This series assumes you have some familiarity with Phoenix and Elixir, including having them set up locally. Check out Elizabeth’s three-part series on getting started with Phoenix for a refresher. This series has a companion repository published on GitHub. Get started by cloning it down and switching to the starter branch. You can see the completed application on master. Our goal today is to make a Markdown editor, which allows a user to enter Markdown text on a page and see it rendered as HTML next to it in real-time. We’ll make use of LiveView for the interaction and the Earmark package for rendering Markdown. The starter branch provides some styles and installs LiveView. Rendering Markdown Let’s set aside the LiveView portion and start with our data structures and the functions that operate on them. To begin, a Post will have a body, which holds the rendered HTML string, and title. A string of markdown can be turned into HTML by calling Post.render(post, markdown). I think that just about covers it! First, let’s define our struct in lib/frampton/post.ex: defmodule Frampton.Post do defstruct body: "", title: "" def render(%__MODULE{} = post, markdown) do # Fill me in! end end Now the failing test (in test/frampton/post_test.exs): describe "render/2" do test "returns our post with the body set" do markdown = "# Hello world!" assert Post.render(%Post{}, markdown) == {:ok, %Post{body: "<h1>Hello World</h1> "}} end end Our render method will just be a wrapper around Earmark.as_html!/2 that puts the result into the body of the post. Add {:earmark, "~> 1.4.3"} to your deps in mix.exs, run mix deps.get and fill out render function: def render(%__MODULE{} = post, markdown) do html = Earmark.as_html!(markdown) {:ok, Map.put(post, :body, html)} end Our test should now pass, and we can render posts! [Note: we’re using the as_html! method, which prints error messages instead of passing them back to the user. A smarter version of this would handle any errors and show them to the user. I leave that as an exercise for the reader…] Time to play around with this in an IEx prompt (run iex -S mix in your terminal): iex(1)> alias Frampton.Post Frampton.Post iex(2)> post = %Post{} %Frampton.Post{body: "", title: ""} iex(3)> {:ok, updated_post} = Post.render(post, "# Hello world!") {:ok, %Frampton.Post{body: "<h1>Hello world!</h1> ", title: ""}} iex(4)> updated_post %Frampton.Post{body: "<h1>Hello world!</h1> ", title: ""} Great! That’s exactly what we’d expect. You can find the final code for this in the render_post branch. LiveView Editor Now for the fun part: Editing this live! First, we’ll need a route for the editor to live at: /editor sounds good to me. LiveViews can be rendered from a controller, or directly in the router. We don’t have any initial state, so let's go straight from a router. First, let's put up a minimal test. In test/frampton_web/live/editor_live_test.exs: defmodule FramptonWeb.EditorLiveTest do use FramptonWeb.ConnCase import Phoenix.LiveViewTest test "the editor renders" do conn = get(build_conn(), "/editor") assert html_response(conn, 200) =~ "data-test="editor"" end end This test doesn’t do much yet, but notice that it isn’t live view specific. Our first render is just the same as any other controller test we’d write. The page’s content is there right from the beginning, without the need to parse JavaScript or make API calls back to the server. Nice. To make that test pass, add a route to lib/frampton_web/router.ex. First, we import the LiveView code, then we render our Editor: import Phoenix.LiveView.Router # … Code skipped ... # Inside of `scope "/"`: live "/editor", EditorLive Now place a minimal EditorLive module, in lib/frampton_web/live/editor_live.ex: defmodule FramptonWeb.EditorLive do use Phoenix.LiveView def render(assigns) do ~L""" <div data-test=”editor”> <h1>Hello world!</h1> </div> """ end def mount(_params, _session, socket) do {:ok, socket} end end And we have a passing test suite! The ~L sigil designates that LiveView should track changes to the content inside. We could keep all of our markup in this render/1 method, but let’s break it out into its own template for demonstration purposes. Move the contents of render into lib/frampton_web/templates/editor/show.html.leex, and replace EditorLive.render/1 with this one liner: def render(assigns), do: FramptonWeb.EditorView.render("show.html", assigns). And finally, make an EditorView module in lib/frampton_web/views/editor_view.ex: defmodule FramptonWeb.EditorView do use FramptonWeb, :view import Phoenix.LiveView end Our test should now be passing, and we’ve got a nicely separated out template, view and “live” server. We can keep markup in the template, helper functions in the view, and reactive code on the server. Now let’s move forward to actually render some posts! Handling User Input We’ve got four tasks to accomplish before we are done: Take markdown input from the textarea Send that input to the LiveServer Turn that raw markdown into HTML Return the rendered HTML to the page. Event binding To start with, we need to annotate our textarea with an event binding. This tells the liveview.js framework to forward DOM events to the server, using our liveview channel. Open up lib/frampton_web/templates/editor/show.html.leex and annotate our textarea: <textarea phx-keyup="render_post"></textarea> This names the event (render_post) and sends it on each keyup. Let’s crack open our web inspector and look at the web socket traffic. Using Chrome, open the developer tools, navigate to the network tab and click WS. In development you’ll see two socket connections: one is Phoenix LiveReload, which polls your filesystem and reloads pages appropriately. The second one is our LiveView connection. If you let it sit for a while, you’ll see that it's emitting a “heartbeat” call. If your server is running, you’ll see that it responds with an “ok” message. This lets LiveView clients know when they've lost connection to the server and respond appropriately. Now, type some text and watch as it sends down each keystroke. However, you’ll also notice that the server responds with a “phx_error” message and wipes out our entered text. That's because our server doesn’t know how to handle the event yet and is throwing an error. Let's fix that next. Event handling We’ll catch the event in our EditorLive module. The LiveView behavior defines a handle_event/3 callback that we need to implement. Open up lib/frampton_web/live/editor_live.ex and key in a basic implementation that lets us catch events: def handle_event("render_post", params, socket) do IO.inspect(params) {:noreply, socket} end The first argument is the name we gave to our event in the template, the second is the data from that event, and finally the socket we’re currently talking through. Give it a try, typing in a few characters. Look at your running server and you should see a stream of events that look something like this: There’s our keystrokes! Next, let’s pull out that value and use it to render HTML. Rendering Markdown Lets adjust our handle_event to pattern match out the value of the textarea: def handle_event("render_post", %{"value" => raw}, socket) do Now that we’ve got the raw markdown string, turning it into HTML is easy thanks to the work we did earlier in our Post module. Fill out the body of the function like this: {:ok, post} = Post.render(%Post{}, raw) IO.inspect(post) If you type into the textarea you should see output that looks something like this: Perfect! Lastly, it’s time to send that rendered html back to the page. Returning HTML to the page In a LiveView template, we can identify bits of dynamic data that will change over time. When they change, LiveView will compare what has changed and send over a diff. In our case, the dynamic content is the post body. Open up show.html.leex again and modify it like so: <div class="rendered-output"> <%= @post.body %> </div> Refresh the page and see: Whoops! The @post variable will only be available after we put it into the socket’s assigns. Let’s initialize it with a blank post. Open editor_live.ex and modify our mount/3 function: def mount(_params, _session, socket) do post = %Post{} {:ok, assign(socket, post: post)} end In the future, we could retrieve this from some kind of storage, but for now, let's just create a new one each time the page refreshes. Finally, we need to update the Post struct with user input. Update our event handler like this: def handle_event("render_post", %{"value" => raw}, %{assigns: %{post: post}} = socket) do {:ok, post} = Post.render(post, raw) {:noreply, assign(socket, post: post) end Let's load up http://localhost:4000/editor and see it in action. Nope, that's not quite right! Phoenix won’t render this as HTML because it’s unsafe user input. We can get around this (very good and useful) security feature by wrapping our content in a raw/1 call. We don’t have a database and user processes are isolated from each other by Elixir. The worst thing a malicious user could do would be crash their own session, which doesn’t bother me one bit. Check the edit_posts branch for the final version. Conclusion That’s a good place to stop for today. We’ve accomplished a lot! We’ve got a dynamically rendering editor that takes user input, processes it and updates the page. And we haven’t written any JavaScript, which means we don’t have to maintain or update any JavaScript. Our server code is built on the rock-solid foundation of the BEAM virtual machine, giving us a great deal of confidence in its reliability and resilience. In the next post, we’ll tackle making a shared editor, allowing multiple users to edit the same post. This project will highlight Elixir’s concurrency capabilities and demonstrate how LiveView builds on them to enable some incredible user experiences. Full Article Code Back-end Engineering
part A Viget Glossary: What We Mean and Why it Matters - Part 1 By feedproxy.google.com Published On :: Tue, 21 Apr 2020 08:00:00 -0400 Viget has helped organizations design and develop award-winning websites and digital products for 20 years. In that time, we’ve been lucky to create long-term relationships with clients like Puma, the World Wildlife Fund, and Privia Health, and, throughout our time working together, we’ve come to understand each others’ unique terminology. But that isn’t always the case when we begin work with new clients, and in a constantly-evolving industry, we know that new terminology appears almost daily and organizations have unique definitions for deliverables and processes. Kicking off a project always initiates a flurry of activity. There are contracts to sign, team members to introduce, and new platforms to learn. It’s an exciting time, and we know clients are anxious to get underway. Amidst all the activity, though, there is a need to define and create a shared lexicon to ensure both teams understand the project deliverables and process that will take us from kickoff to launch. Below, we’ve rounded up a few terms for each of our disciplines that often require additional explanation. Note: our definitions of these terms may differ slightly from the industry standard, but highlight our interpretation and use of them on a daily basis. User ExperienceResearchIn UX, there is a proliferation of terms that are often used interchangeably and mean almost-but-subtly-not the same thing. Viget uses the term research to specifically mean user research — learning more about the users of our products, particularly how they think and behave — in order to make stronger recommendations and better designs. This can be accomplished through different methodologies, depending on the needs of the project, and can include moderated usability testing, stakeholder interviews, audience research, surveys, and more. Learn more about the subtleties of UX research vocabulary in our post on “Speaking the Same Language About Research”.WireframesWe use wireframes to show the priority and organization of content on the screen, to give a sense of what elements will get a stronger visual treatment, and to detail how users will get to other parts of the site. Wireframes are a key component of website design — think of them as the skeleton or blueprint of a page — but we know that clients often feel uninspired after reviewing pages built with gray boxes. In fact, we’ve even written about how to improve wireframe presentations. We remind clients that visual designers will step in later to add polish through color, graphics, and typography, but agreeing on the foundation of the page is an important and necessary first step. PrototypesDuring the design process, it’s helpful for us to show clients how certain pieces of functionality or animations will work once the site is developed. We can mimic interactivity or test a technical proof of concept by using a clickable prototype, relying on tools like Figma, Invision, or Principle. Our prototypes can be used to illustrate a concept to internal stakeholders, but shouldn’t be seen as a final approach. Often, these concepts will require additional work to prepare them for developer handoff, which means that prototypes quickly become outdated. Read more about how and when we use prototypes. Navigation Testing (Treejack Testing)Following an information architecture presentation, we will sometimes recommend that clients conduct navigation testing. When testing, we present a participant with the proposed navigation and ask them to perform specific tasks in order to see if they will be able to locate the information specified within the site’s new organization. These tests generally focus on two aspects of the navigation: the structure of the navigation system itself, and the language used within the system. Treejack is an online navigation testing tool that we like to employ when conducting navigation tests, so we’ll often interchange the terms “navigation testing” with “treejack testing”.Learn more about Viget’s approach to user experience and research. Full Article Strategy Process
part A Viget Glossary: What We Mean and Why It Matters - Part 2 By feedproxy.google.com Published On :: Tue, 28 Apr 2020 10:09:00 -0400 In my last post, I defined terms used by our UX team that are often confused or have multiple meanings across the industry. Today, I’ll share our definitions for processes and deliverables used by our design and strategy teams. Creative Brand Strategy In our experience, we’ve found that the term brand strategy is used to cover a myriad of processes, documents, and deliverables. To us, a brand strategy defines how an organization communicates who they are, what they do and why in a clear and compelling way. Over the years, we’ve developed an approach to brand strategy work that emphasizes rigorous research, hands-on collaboration, and the definition of problems and goals. We work with clients to align on a brand strategy concept and, depending on the client and their goals, our final deliverables can range to include strategy definition, audience-specific messaging, identity details, brand elements, applications, and more. Take a look at the brand strategy work we’ve done for Fiscalnote, Swiftdine, and Armstrong Tire. Content Strategy A content strategy goes far beyond the words on a website or in an app. A strong content strategy dictates the substance, structure, and governance of the information an organization uses to communicate to its audience. It guides creating, organizing, and maintaining content so that companies can communicate who they are, what they do, and why efficiently and effectively. We’ve worked with organizations like the Washington Speakers Bureau, The Nature Conservancy, the NFL Players Association, and the Wildlife Conservation Society to refine and enhance their content strategies. Still confused about the difference between brand and content strategy? Check out our flowchart. Style Guide vs. Brand Guidelines We often find the depth or fidelity of brand guidelines and style guides can vary greatly, and the terms can often be confused. When we create brand guidelines, they tend to be large documents that include in-depth recommendations about how a company should communicate their brand. Sections like “promise”, “vision”, “mission”, “values”, “tone”, etc. accompany details about how the brand’s logo, colors and fonts should be used in a variety of scenarios. Style guides, on the other hand, are typically pared down documents that contain specific guidance for organizations’ logos, colors and fonts, and don’t always include usage examples. Design System One question we get from clients often during a redesign or rebrand is, “How can I make sure people across my organization are adhering to our new designs?” This is where a design system comes into play. Design systems can range from the basic — e.g., a systematic approach to creating shared components for a single website — all the way to the complex —e.g., architecting a cross-product design system that can scale to accommodate hundreds of different products within a company. By assembling elements like color, typography, imagery, messaging, voice and tone, and interaction patterns in a central repository, organizations are able to scale products and marketing confidently and efficiently. When a design system is translated into code, we refer to that as a parts kit, which helps enforce consistency and improve workflow. Comps or Mocks When reviewing RFPs or going through the nitty-gritty of contracts with clients, we often see the terms mocks or comps used interchangeably to refer to the static design of pages or screens. Internally, we think of a mock-up as a static image file that illustrates proof-of-concept, just a step beyond a wireframe. A comp represents a design that is “high fidelity” and closer to what the final website will look like, though importantly, is not an exact replica. This is likely what clients will share with internal stakeholders to get approval on the website direction and what our front-end developers will use to begin building-out the site (in other words, converting the static design files into dynamic HTML, CSS, and JavaScript code). If you're interested in joining our team of creative thinkers and visual storytellers who bring these concepts to life for our clients, we’re hiring in Washington, D.C. Durham, Boulder and Chattanooga. Tune in next week as we decipher the terms we use most often when talking about development. Full Article Strategy Process
part Visa cancelled due to incorrect information given or provided to the Department of Home Affairs By feedproxy.google.com Published On :: Wed, 19 Feb 2020 05:56:21 +0000 It is a requirement that a visa applicant must fill in or complete his or her application form in a manner that all questions are answered, and no incorrect answers are given or provided. There is also a requirement that visa applicants must not provide incorrect information during interviews with the Minister for Immigration (‘Minister’), […] The post Visa cancelled due to incorrect information given or provided to the Department of Home Affairs appeared first on Visa Australia - Immigration Lawyers & Registered Migration Agents. Full Article Visa Cancellation 1703474 (Refugee) [2017] AATA 2985 cancel a visa cancelledvi sa Citizenship and Multicultural Affairs Department of Home Affairs migration act 1958 minister for immigration NOICC notice of intention to consider cancellation Sanaee (Migration) [2019] AATA 4506 section 109 time limits
part Markdown Comes Alive! Part 1, Basic Editor By feedproxy.google.com Published On :: Wed, 26 Feb 2020 08:00:00 -0500 In my last post, I covered what LiveView is at a high level. In this series, we’re going to dive deeper and implement a LiveView powered Markdown editor called Frampton. This series assumes you have some familiarity with Phoenix and Elixir, including having them set up locally. Check out Elizabeth’s three-part series on getting started with Phoenix for a refresher. This series has a companion repository published on GitHub. Get started by cloning it down and switching to the starter branch. You can see the completed application on master. Our goal today is to make a Markdown editor, which allows a user to enter Markdown text on a page and see it rendered as HTML next to it in real-time. We’ll make use of LiveView for the interaction and the Earmark package for rendering Markdown. The starter branch provides some styles and installs LiveView. Rendering Markdown Let’s set aside the LiveView portion and start with our data structures and the functions that operate on them. To begin, a Post will have a body, which holds the rendered HTML string, and title. A string of markdown can be turned into HTML by calling Post.render(post, markdown). I think that just about covers it! First, let’s define our struct in lib/frampton/post.ex: defmodule Frampton.Post do defstruct body: "", title: "" def render(%__MODULE{} = post, markdown) do # Fill me in! end end Now the failing test (in test/frampton/post_test.exs): describe "render/2" do test "returns our post with the body set" do markdown = "# Hello world!" assert Post.render(%Post{}, markdown) == {:ok, %Post{body: "<h1>Hello World</h1> "}} end end Our render method will just be a wrapper around Earmark.as_html!/2 that puts the result into the body of the post. Add {:earmark, "~> 1.4.3"} to your deps in mix.exs, run mix deps.get and fill out render function: def render(%__MODULE{} = post, markdown) do html = Earmark.as_html!(markdown) {:ok, Map.put(post, :body, html)} end Our test should now pass, and we can render posts! [Note: we’re using the as_html! method, which prints error messages instead of passing them back to the user. A smarter version of this would handle any errors and show them to the user. I leave that as an exercise for the reader…] Time to play around with this in an IEx prompt (run iex -S mix in your terminal): iex(1)> alias Frampton.Post Frampton.Post iex(2)> post = %Post{} %Frampton.Post{body: "", title: ""} iex(3)> {:ok, updated_post} = Post.render(post, "# Hello world!") {:ok, %Frampton.Post{body: "<h1>Hello world!</h1> ", title: ""}} iex(4)> updated_post %Frampton.Post{body: "<h1>Hello world!</h1> ", title: ""} Great! That’s exactly what we’d expect. You can find the final code for this in the render_post branch. LiveView Editor Now for the fun part: Editing this live! First, we’ll need a route for the editor to live at: /editor sounds good to me. LiveViews can be rendered from a controller, or directly in the router. We don’t have any initial state, so let's go straight from a router. First, let's put up a minimal test. In test/frampton_web/live/editor_live_test.exs: defmodule FramptonWeb.EditorLiveTest do use FramptonWeb.ConnCase import Phoenix.LiveViewTest test "the editor renders" do conn = get(build_conn(), "/editor") assert html_response(conn, 200) =~ "data-test="editor"" end end This test doesn’t do much yet, but notice that it isn’t live view specific. Our first render is just the same as any other controller test we’d write. The page’s content is there right from the beginning, without the need to parse JavaScript or make API calls back to the server. Nice. To make that test pass, add a route to lib/frampton_web/router.ex. First, we import the LiveView code, then we render our Editor: import Phoenix.LiveView.Router # … Code skipped ... # Inside of `scope "/"`: live "/editor", EditorLive Now place a minimal EditorLive module, in lib/frampton_web/live/editor_live.ex: defmodule FramptonWeb.EditorLive do use Phoenix.LiveView def render(assigns) do ~L""" <div data-test=”editor”> <h1>Hello world!</h1> </div> """ end def mount(_params, _session, socket) do {:ok, socket} end end And we have a passing test suite! The ~L sigil designates that LiveView should track changes to the content inside. We could keep all of our markup in this render/1 method, but let’s break it out into its own template for demonstration purposes. Move the contents of render into lib/frampton_web/templates/editor/show.html.leex, and replace EditorLive.render/1 with this one liner: def render(assigns), do: FramptonWeb.EditorView.render("show.html", assigns). And finally, make an EditorView module in lib/frampton_web/views/editor_view.ex: defmodule FramptonWeb.EditorView do use FramptonWeb, :view import Phoenix.LiveView end Our test should now be passing, and we’ve got a nicely separated out template, view and “live” server. We can keep markup in the template, helper functions in the view, and reactive code on the server. Now let’s move forward to actually render some posts! Handling User Input We’ve got four tasks to accomplish before we are done: Take markdown input from the textarea Send that input to the LiveServer Turn that raw markdown into HTML Return the rendered HTML to the page. Event binding To start with, we need to annotate our textarea with an event binding. This tells the liveview.js framework to forward DOM events to the server, using our liveview channel. Open up lib/frampton_web/templates/editor/show.html.leex and annotate our textarea: <textarea phx-keyup="render_post"></textarea> This names the event (render_post) and sends it on each keyup. Let’s crack open our web inspector and look at the web socket traffic. Using Chrome, open the developer tools, navigate to the network tab and click WS. In development you’ll see two socket connections: one is Phoenix LiveReload, which polls your filesystem and reloads pages appropriately. The second one is our LiveView connection. If you let it sit for a while, you’ll see that it's emitting a “heartbeat” call. If your server is running, you’ll see that it responds with an “ok” message. This lets LiveView clients know when they've lost connection to the server and respond appropriately. Now, type some text and watch as it sends down each keystroke. However, you’ll also notice that the server responds with a “phx_error” message and wipes out our entered text. That's because our server doesn’t know how to handle the event yet and is throwing an error. Let's fix that next. Event handling We’ll catch the event in our EditorLive module. The LiveView behavior defines a handle_event/3 callback that we need to implement. Open up lib/frampton_web/live/editor_live.ex and key in a basic implementation that lets us catch events: def handle_event("render_post", params, socket) do IO.inspect(params) {:noreply, socket} end The first argument is the name we gave to our event in the template, the second is the data from that event, and finally the socket we’re currently talking through. Give it a try, typing in a few characters. Look at your running server and you should see a stream of events that look something like this: There’s our keystrokes! Next, let’s pull out that value and use it to render HTML. Rendering Markdown Lets adjust our handle_event to pattern match out the value of the textarea: def handle_event("render_post", %{"value" => raw}, socket) do Now that we’ve got the raw markdown string, turning it into HTML is easy thanks to the work we did earlier in our Post module. Fill out the body of the function like this: {:ok, post} = Post.render(%Post{}, raw) IO.inspect(post) If you type into the textarea you should see output that looks something like this: Perfect! Lastly, it’s time to send that rendered html back to the page. Returning HTML to the page In a LiveView template, we can identify bits of dynamic data that will change over time. When they change, LiveView will compare what has changed and send over a diff. In our case, the dynamic content is the post body. Open up show.html.leex again and modify it like so: <div class="rendered-output"> <%= @post.body %> </div> Refresh the page and see: Whoops! The @post variable will only be available after we put it into the socket’s assigns. Let’s initialize it with a blank post. Open editor_live.ex and modify our mount/3 function: def mount(_params, _session, socket) do post = %Post{} {:ok, assign(socket, post: post)} end In the future, we could retrieve this from some kind of storage, but for now, let's just create a new one each time the page refreshes. Finally, we need to update the Post struct with user input. Update our event handler like this: def handle_event("render_post", %{"value" => raw}, %{assigns: %{post: post}} = socket) do {:ok, post} = Post.render(post, raw) {:noreply, assign(socket, post: post) end Let's load up http://localhost:4000/editor and see it in action. Nope, that's not quite right! Phoenix won’t render this as HTML because it’s unsafe user input. We can get around this (very good and useful) security feature by wrapping our content in a raw/1 call. We don’t have a database and user processes are isolated from each other by Elixir. The worst thing a malicious user could do would be crash their own session, which doesn’t bother me one bit. Check the edit_posts branch for the final version. Conclusion That’s a good place to stop for today. We’ve accomplished a lot! We’ve got a dynamically rendering editor that takes user input, processes it and updates the page. And we haven’t written any JavaScript, which means we don’t have to maintain or update any JavaScript. Our server code is built on the rock-solid foundation of the BEAM virtual machine, giving us a great deal of confidence in its reliability and resilience. In the next post, we’ll tackle making a shared editor, allowing multiple users to edit the same post. This project will highlight Elixir’s concurrency capabilities and demonstrate how LiveView builds on them to enable some incredible user experiences. Full Article Code Back-end Engineering