mar Marvelous Aerial Pictures of Salt Pans in Australia By www.fubiz.net Published On :: Fri, 08 May 2020 09:00:18 +0000 En Australie, les paysages photographiés sont toujours un régal pour les yeux. Le photographe allemand Tom Hegen nous offre des clichés aériens à couper le souffle. Il nous emmène en Australie occidentale à la découverte des lacs salés. Ses plans d’eaux suivent en réalité les traces des anciens systèmes fluviaux. La région a été façonnée par le climat […] Full Article Photography Travel Tom Hegen
mar The Lockdown Illustrated by Mariano Pascual By www.fubiz.net Published On :: Fri, 08 May 2020 15:25:46 +0000 Cette période inédite de confinement a inspiré de nombreux artistes, dont fait partie l’illustrateur Mariano Pascual. L’artiste argentin établi à Barcelone a traduit en images les sentiments flous, désordonnés et un brin anxiogènes induits par la pandémie. Stocks de papier toilette, télétravail et laisser-aller derrière les portes closes de son domicile… À travers une série de visuels […] Full Article Graphic Illustration
mar Celebrity content marketing lessons from a pandemic By feedproxy.google.com Published On :: Wed, 06 May 2020 18:48:21 PDT When it comes to content marketing, we live in extraordinary times. With cutting-edge tools such as live video, VR and AI at our fingertips, we can give our community behind-the-scenes access to our company, people and products. We can showcase our best customers and bring our brands to life.But what if your business had to close all of its physical locations? What if your people couldn’t go anywhere? And what if your community was distracted by ... something? Not a little something. A very big, pandemic-level something.These are the questions that content marketers find themselves grappling with in the midst of COVID-19. In the blink of an eye, we went from having the tools to do anything to a hobbling array of limitations. At least, that’s what it can feel like. But what if we flipped that thinking the other way? Twitter co-founder Biz Stone once said, “Constraints inspire creativity. When are backs are against the wall, we come up with some amazing things.” Where can we look for inspiration? If you flip the through the opening pages of that famed marketing handbook “Us Weekly” — hey, what else is there to look at in a waiting room? — you’ll find a section titled, “Stars — They’re Just Like Us!” These pages feature celebrities doing “regular people” things such as walking down the street and getting groceries. However, these days, despite their fame and means, celebrities have our same quarantined constraints. And some are using this as an opportunity to create some amazing content of their own.During this odd interlude, we can learn some valuable content marketing lessons from celebrities working within these same limitations. Create what your audience is looking forActor John Krasinski didn’t start a weekly web show in the middle of a pandemic to mug to the camera like his character Jim Halpert from “The Office.” Nor did he do it tout his Jack Ryan action-hero status. Instead, in the midst of all of the bad news, he saw that what many people were hungry for was some good news. And that’s literally what he’s delivered with his aptly titled video series, “Some Good News” or “SGN.”Featuring homemade title cards crafted by his children and set in his home office, Krasinski’s weekly show features a roundup of happy stories about creative kids, salutes to health care workers, unique ways to celebrate graduates and more. He also has concise weather reports from the likes Robert DeNiro and Brad Pitt. While special appearances from famous friends might be out of your reach, you, too, can find ways to serve up more of what your audience needs right now. Note: This might not necessarily be exactly what you sell. Ask yourself instead, what do they really need right now and how can we help? For example, Don’t Panic Management is a team of virtual assistants. However, they saw that the small businesses they serve need help applying for government relief programs, so they started creating content around this.Homemade content can be relevant, specialOn a recent episode of his WTF podcast, host Marc Maron talked about watching episodes of “Saturday Night Live At Home,” saying these shows were “touching.” With segments shot by various individual cast members at home on their laptops and phones and featuring costumes from closets and cameos from kids and pets, SNL “At Home” shows how you can push our quarantined limitations to produce creative content.In a recent episode, cast member Kate McKinnon shot an installment of her long-running “Whiskers R We” cat adoption sketch at home on her phone. Normally, this would feature several cute cats in studio introduced as McKinnon quips things like, “A cat is a smile with hair.” The “At Home” installment features McKinnon in a homemade version of her costume with hand-drawn signs and her one pet cat playing nearly a dozen cats thanks to camera filters, mustaches and face masks. SNL initially announced it would end their season early due to COVID-19. A few weeks later, the cast came back with their first “At Home” show. They recognized the power of the moment and the outsized impact homemade content can have. Another example of relevant, homemade branded content is a new ad from L’Oreal Paris, with spokeswoman Eva Longoria dying her gray roots at home in a video she shot on her iPhone. When you get hung up trying to make something polished and perfect, you often miss the opportunity to make something relevant and special. Get creative with collaboration Another SNL “At Home” sketch introduces characters struggling with the new normal of Zoom meetings shot with — wait for it — Zoom! The recent “Parks and Recreation” reunion special developed an entire half-hour script around a series of virtual meetings between Leslie Knope, Ron Swanson and others, all shot at home by the actors using iPhones. We can use the same tools we rely on for virtual meetings to collaborate with others on content. Many already use Zoom and Skype for podcasts and videos. You also can get creative in your content collaboration as actor and stunt professional Zoë Bell did. She challenged celebrity friends such as Scarlett Johansson, Margot Robbie, Drew Barrymore, Rosario Dawson and Zoe Saldana to help her stage an elaborate fight scene. The resulting video stitches together individually shot fight scenes from the phones of 38 different actors and stunt workers to create one big knockout fight. The viral video garnered over a million views in just a few short days.Just because we can’t get together doesn’t mean we can’t collaborate. Whether you’re simply using Zoom or storyboarding out something more elaborate, involving others always expands the reach of your content. Yes, the content creators profiled here are celebrities. But they’re also more than that. They’re creative artists and problem solvers. A frequent refrain in the early days of blogging and content marketing was, “think like a publisher.” This served as a reminder to write like a journalist, schedule content and publish regularly. However, with our current lockdown limitations, we should amend this as a reminder to think like creative artists — those who’ve used these limitations to spark bold, interesting new ideas for connecting with others. What can you create that people need? Can you do it right now — today? From home? Can you creatively involve others? Thinking like a creative artist means focusing less on what you can’t do in these unusual times and more on what you can.Nick Westergaard is a marketing strategist, keynote speaker and author of “Band Now” and “Get Scrappy”; nick@branddrivendigital.com; @NickWestergaard. Full Article Business
mar Coronavirus in Iowa, live updates for May 7: Gazette awards more than $60,000 in marketing grants, FEMA awards $78 million to Iowa By feedproxy.google.com Published On :: Thu, 07 May 2020 06:59:24 PDT Gazette awards more than $60,000 in marketing grantsThe Gazette has awarded more than $60,000 in grants to help local businesses market themselves during the coronavirus pandemic, and there’s more help available.“We awarded $50,000 in the first 10 days,” said Kelly Homewood, Director of Operations at The Gazette. “That tells us the need is real. The help necessary. We’re a locally owned business too, and in Iowa we lift each other up in challenging times.”The grant program, which launched April 17, awarded $50,393 to more than 60 businesses in the first 10 days. To date, almost $68,000 has been awarded to 75 businesses.“The Gazette’s Matching Program is a true testament to their commitment to our community and their small business advertisers,” said Annie Hills, marketing manager at Destinations Unlimited. “As a local small business, this program will be a huge benefit to our agency in such an unprecedented time so that we can continue to connect with our clients.”The program allocates up to $100,000 in matching advertising dollars to assist local businesses that apply. There’s still approximately $32,000 in matching grants still available to award by July 31. Businesses can apply online at www.thegazette.com/marketinggrant.FEMA awards $78 million to Iowa for COVID-19 responseThe Federal Emergency Management Agency (FEMA) has obligated $78 million to the state of Iowa to help reimburse eligible expenses for emergency protective measures that the state has incurred as a result of its response to COVID-19.The grant funds, awarded by FEMA’s Public Assistance (PA) Grant Program, were made available Thursday. FEMA has provided nearly $150 million to date in support of the state’s COVID-19 efforts.The money reimburses 75 percent of projected eligible costs associated with buying essential Personal Protective Equipment (PPE), and medical supplies and equipment during the months of May and June 2020.This obligation also includes: $19.5 million in contract services for TestIowa, $35,000 in contract services associated with overseas PPE purchases and $13.7 million for additional medical supplies and equipment for the month of April. All figures represent the 75 percent federal share. The 25 percent is paid by the grant recipient.Linn County Conservation campgrounds to open FridayIowa Gov. Kim Reynolds issued a new proclamation allowing campgrounds in the state of Iowa to open.The proclamation states:“Any public or private campground may reopen provided that the campground implements reasonable measures under the circumstances of each campground to ensure social distancing, increased hygiene practices, and other public health measures to reduce the risk of transmission of COVID-19 consistent with guidance issued by the Iowa Department of Public Health (5/6/20).”Linn County Conservation has continued to seek guidance from local and state health officials and are announcing that campgrounds will open Friday with certain restrictions and limitations. At 5 a.m. on May 8, Buffalo Creek Park, Morgan Creek Park, Pinicon Ridge Park and Squaw Creek Park campgrounds will open to campers in self-contained units. This also includes primitive (non-electric) camping areas at Matsell Bridge Natural Area (including Mount Hope) and Wakpicada Natural Area.Campers may camp only with a self-contained camping unit that has a functioning restroom, as showerhouses with flushable restrooms will remain closed. Self-contained is defined as a tent or pop-up camper with a portable toilet or an RV or camping trailer with a functioning, self-contained bathroom.Occupants are limited to six or less per camp site (unless household is more than six). No visitors are allowed. Campground showerhouses with restrooms will remain closed.Reserving campsites is not allowed as campgrounds continue to be first-come, first-served. The exception to this is Squaw Creek Park A-Loop which normally accepts online reservations at LinnCountyParks.com, starting Friday at 1 p.m.Linn County Conservation’s lodges, shelters, cabins and group camps remain closed.Hy-Vee offers two-hour express grocery pickupHy-Vee Inc., announced Friday that it is now offering a two-hour express pickup option as part of its Hy-Vee Aisles Online grocery ordering service, allowing customers to pay a fee to pick up their order faster.Customers will see a “Get It Faster” option on Aisles Online time slots where the two-hour pickup option is available. A limited number of two-hour pickup orders will be available for $9.95, from 8 a.m. until 8 p.m. daily, at all Hy-Vee store locations offering Aisles Online services.Cedar Rapids-area students honored with light display during Graduation WeekThe lights on Alliant Energy’s Cedar Rapids Tower will change colors to recognize area high schools and honor the Class of 2020.“In this time of uncertainty, it’s important to remember that brighter days are up ahead,”said Linda Mattes, Vice President of IT and Customer Operations. “Changing the lights on our tower is our way of celebrating this important milestone in the lives of these students and their families.”Each Cedar Rapids-area high school’s colors will be on display. The schedule:May 21 — Washington High School — Red and blueMay 22 — Jefferson High School — Blue and whiteMay 23 — Kennedy High School — Green and goldMay 24 — Linn-Mar High School — Red and blackMay 25 — Marion High School — Crimson and goldMay 26 — Prairie High School — Orange and blackMay 27 — Xavier High School — Navy and silverMay 28 — Metro High School — Purple and black MusicIC Festival cancels June in-person programmingWhat was planned to be the 10th annual MusicIC Festival has been canceled. Programming planned for June 18-20 will be pushed to summer 2021.The festival, presented by the Iowa City UNESCO City of Literature, will offer alternate programming. In place of the in-person performances this year, the festival will offer video performances from musicians to be highlighted in the 2021 season.Details about these video performances will be forthcoming.Grounds and grandstand entertainment canceled at 2020 Linn County FairDue to the ongoing social distancing guidelines and additional precautions taking place to help slow and reduce the spread of COVID-19, the Linn County Fair Association is canceling the grounds and grandstand entertainment for the 2020 Linn County Fair, scheduled for June 24-28.The Linn County Fair Association, in partnership with the Iowa State University Extension and Outreach of Linn County and Linn County 4-H, still plan on providing opportunities to 4-Her’s, FFA members, and youth of Linn County to showcase their talents and accomplishments at this year’s fair.Details regarding the 4-H/FFA exhibits and events are still being finalized and Linn County 4-H plans to email details to 4-H/FFA members in mid-May.Bike to Work Week Postponed Until SeptemberTo encourage safe and responsible social distancing practices during the COVID-19 pandemic, Cedar Rapids’ Bike to Work Week activities — traditionally held in May — will be postponed and are tentatively scheduled for September 21-27.This will include events such as the Mayor’s bike ride and proclamation, pit stops, group rides, and wrap-up party.Von Maur stores reopening FridayVon Maur announced it will reopen stores in Cedar Rapids, Coralville and Cedar Falls using reduced hours and safety measures starting Friday.The reduced hours will be from 11 a.m. to 7 p.m. Monday through Saturday and 12 p.m. to 6 p.m. on Sundays.Von Maur said it will be implementing daily employee health screenings, social distancing measures, contactless payments, curbside service options and sanitizing and cleaning procedures in common areas and after each customer transaction. Its aforementioned stores are at Lindale Plaza, Iowa River Landing and College Square Mall.Online Czech language lessons offeredThe National Czech & Slovak Museum & Library recently partnered with Anna Cooková, an instructor with CzechTalk, to offer online Czech language and culture lessons.Beginner’s Czech Language & Culture I begins on Thursday, June 4. Each class will be held from 8 to 9:30 p.m. every Thursday from June 4 through August 6. During the 15 hours of instruction over 10 weeks, participants will learned to read, write, and speak in Czech.The cost is $210 for NCSML members, $235 for non-members. This fee includes all course materials. The class size is limited to 20 students, so interested individuals are encouraged to register early to secure a spot.Contact Cooková for a registration form at annacookova@gmail.com or 715-651-7044. Full Article Health
mar Marion coronavirus recovery task force wants residents to come out of this healthy and to ‘a vibrant economy’ By feedproxy.google.com Published On :: Wed, 06 May 2020 19:57:10 PDT MARION — Marion’s 14-member COVID-19 Economic Recovery Task Force is beginning to work on recommendations of how to get people back to work, while keeping everyone safe.“It’s hard to know right now at the beginning the various outcomes that are going to come out of this,” Marion Mayor Nick AbouAssaly told task force members in a meeting held this week via Zoom. “Community sectors will work independently and report to the steering committee with ideas, strategies or policy recommendations,” he said.In turn, the task force will consider recommendations to the Marion City Council, and AbouAssaly said he will update the council on the task force meetings. “Unfortunately, we have to accept that the virus is here to stay,” AbouAssaly said. “It’s part of our life for the time being. We have to be able to plan for getting back to doing things and leading our lives in a way that allows us to exist with the virus in our community.” Elizabeth Cwik, a Marion resident who works for the Greater Cedar Rapids Community Foundation, said there’s a “strong interest” among task force members to provide accurate information to the public about the virus. “I see clear, consistent messaging from a variety of sectors from the schools, government, businesses and nonprofits. Then that message gets through,” Cwik said. “If that message is, ‘We care, and we want you to come out whole, and we want there to be a vibrant economy to be continued with every citizen’s effort,’ I think that’s a valuable contribution to the recovery.” In joining the task force, Dr. Jaclyn Price said she hopes to dispel inaccurate information about the coronavirus and help businesses find ways to safely bring their employees back to work. “I anticipate businesses will be operating at reduced capacities,” she said. “Maybe doing appointments rather than walk-in business, and cleaning more routinely.”If businesses require employees and customers to wear masks, it will protect others from asymptomatic spread of the virus, she said. “We will still see virus activity until we get a vaccine or herd immunity,” Price said. “This is going to be a problem for months to come. We’re trying to find ways to open slowly, but also understanding if we reopen everything and have to close it again, that could be more detrimental to people’s psychology or finances of businesses.”The Rev. Mike Morgan of Marion United Methodist Church said “greater conversation” with government, business, education and health care leaders will help. “Marion has become a town that is proactive,” Morgan said. “We really seek to have good things happen to our citizenry rather than let things happen and we react to them. ... As a person in the faith community, it’s important for us to be tending to people’s emotional, psychological, spiritual and, to some degree, physical needs.” Comments: (319) 368-8664; grace.king@thegazette.comMARION TASK FORCEThose serving on the Marion COVID-19 Economic Recovery Task Force, all Marion residents and volunteers, are:• Nick AbouAssaly, Marion mayor• Jill Ackerman, president, Marion Chamber of Commerce• Shannon Bisgard, Linn-Mar schools superintendent • Amber Bisinger, communications officer for the city• Elizabeth Cwik, Greater Cedar Rapids Community Foundation• Lee Eilers, executive committee member, Marion Economic Development Corp.• Nick Glew, president, Marion Economic Development Corp.• Amber Hoff, marriage and family therapist• Steve Jensen, Marion City Council member• Mike Morgan, pastor, Marion United Methodist Church• Brent Oleson, Linn County supervisorLon Pluckhahn, Marion city manager• Jaclyn Price, M.D., Mercy Clinic-Marion• Brooke Prouty, program director, Marion Chamber of Commerce Full Article Government
mar Uptown Marion Market opening with caveats By feedproxy.google.com Published On :: Thu, 07 May 2020 10:03:44 PDT MARION — While the Uptown Marion Market will continue to sell fresh produce, it will look a little different this year.The market will continue operating on the second Saturday of June, July and August with some adjustments. But the city of Marion has canceled community events until at least early July because of the coronavirus pandemic.The Uptown market will run along Sixth Avenue instead of being held in City Square Park. It will be fenced and no more than 50 people will be let in at an time.Jill Ackerman, president of the Marion Chamber of Commerce, said there are usually between 50 and 60 vendors at each market, but she expects only 15 to 25 at this summer’s markets.“The main thing here is safety,” Ackerman said. “We want to make sure people have opportunities to buy fresh produce from our local growers, but we’re going to ask patrons to only spend 30 minutes inside the market.” Vendors will sell produce and some plants, but artisan items will not be available.While there will be summer events through the Chamber of Commerce, Ackerman said, they will be fewer and look a little different than they usually do. Free community concerts and movie nights are canceled until July by the city, according to a news release.The Marion Farmers Market, held at Taube Park, is expected to resume May 16. Officials hope to have smaller-scale events throughout the summer like performances in the Uptown Artway, Messy Art Days and the Tiny Fair series as restrictions ease.Sunrise Yoga at the Klopfenstein Amphitheater at Lowe Park is expected to take place every Saturday from June to August. “Unfortunately, given our current reality, we know that 2020 will be far from normal,” said Marion Mayor Nicolas AbouAssaly. “After careful consideration and consultation with event organizers and sponsors, we have made the collective decision to cancel the free community concerts, events and movie nights originally planned for our outdoor public venues through early-July.”Comments: (319) 368-8664; grace.king@thegazette.com Full Article News
mar Ides of March By feedproxy.google.com Published On :: Tue, 15 Mar 2011 06:30:26 PDT My friend and colleague, Chris, has shared a spiffing idea, the Ideas of March. He suggests: ‘If we all blog a little more than we normally would this month, maybe we can be reminded of all of the reasons blogs are great.’ But wait, this post is called the Ides of March? Right. As soon as I read what Chris had posted, a twist on the phrase echoed in my memory. The Ides of March is a Roman festival dedicated to the god of war, Mars. Some say it’s on the 15th of March (today). I can’t find a reference that this is accurate relative to the Julian or current Gregorian calendars, so I will use the first full moon instead. This year it will be on Saturday, 19th of March, in four days time. Wikipedia has more: The Ides of March was a festive day dedicated to the god Mars and a military parade was usually held. In modern times, the term Ides of March is best known as the date that Julius Caesar was killed in 44 B.C. Dramatic stuff. Appropriate in these times, too. Mars may have been the god of war, based on the anarchistic Greek god, Ares, but he represented the pursuit of peace through military strength. A thoroghly debunked method if you ask me, but a pretty neat rationalisation still used today. The military pursues Gaddafi’s version of peace in Libya. Mubarak tried it, and failed, in Egypt. The Ben Ali regime collapsed under protests in Tunisia. Saleh is on his way in Yemen. Right now, Saudi soldiers are deployed in Bahrain to quell protestors fighting for democratic freedom. The death of Cesar by Michele Cammarano (1771–1844). Whatever you think about the current strife, one thing is true: Tyrants never last. I’ve been an advocate of Twitter, and its ambient intimacy for almost four years. In that time I’ve seen it buoyed by the innovations of its users. Smart folks using @replies, and retweets that became a part of the fabric, coded into links and threads (sort-of). Other smart people building clients with new ways of looking at the graph. I’ve seen Twitter take the good ideas and do good things with them. Yet now, Twitter isn’t just the platform any longer, it wants to be the clients too. From URL shortening and tracking, to changes in who can make clients, and how they work. People don’t like it. The same kind of smart people who helped it be successful. The same kind of people who permit benevolent dictators to exist until they become tyrants. I’m still a fan of the idea of short messages. They are neat, by their nature, but lest Twitter forgets, they also exist elsewhere, too. They’re a snack between meals. Signposts to feasts. The real banquets are blog posts, though. I’ve learnt more from them in the last ten years than I ever will from 140 characters. That’s why blogs are something to be treasured. Blogs and RSS may be dead according to some, but I like that I disagree. After all, even with this rambling post, you’ve probably learnt something, just like I have writing it. Thanks for the prompt, Chris. Don’t procrastinate, fire up your editor and share your own ideas of March. Drew, Lorna, and Sean already have. Go on, you know it’s been far too long! Full Article
mar 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
mar 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
mar Best Email Marketing Tips to Increase Engagement & Subscribers By webdesignerwall.com Published On :: Thu, 09 Feb 2017 17:06:31 +0000 Email is your post powerful marketing channel when used well. Your visitor’s inbox is a perfect opportunity for you to capture attention, communicate important updates and invite readers back to your site for increased visibility. The stats on email marketing effectiveness say it all – top marketing specialists and service providers tell us that email […] The post Best Email Marketing Tips to Increase Engagement & Subscribers appeared first on Web Designer Wall. Full Article General Stuff markeing
mar A Look at Marine Litter By feedproxy.google.com Published On :: Fri, 08 Jan 2016 12:02:24 +0000 By The European Environment Agency What we throw into the trash bin might end up into the sea. Our understanding is growing on the global issue of marine litter, which has impacts on marine wildlife but also human health and … Continue reading → Full Article Water Pollution marine debris marine life marine litter marine species water pollution
mar Fluid Dog Illustrations by Marina Okhromenko By icanbecreative.com Published On :: Sun, 15 Mar 2020 21:27:25 PDT Fluid design of swirling dogs are captured by Moscow-based illustrator Marina Okhromenko in her colorful digital illustrations, she depicts expressions of joy that makes us adore more our canine... Full Article Design Inspiration
mar Why Use A Digital Marketing Agency? By icanbecreative.com Published On :: Wed, 25 Mar 2020 18:38:23 PDT Outsourcing your marketing when you're running a small or medium sized business is often seen as an expensive option, one that can be done yourself. It might even be seen as something that's... Full Article Marketing
mar How Can SEO Help Market Your Designing Agency? By icanbecreative.com Published On :: Sun, 12 Apr 2020 17:28:24 PDT It's unusual, as indeed Google says that in case you've got to enlist an SEO strategy, you ought to do so early instead of late, like when you're appropriate arranging to launch a new site. Because... Full Article SEO
mar Creative Marketing Strategies For Law Firms To Engage With Potential Clients By icanbecreative.com Published On :: Sun, 26 Apr 2020 15:20:57 PDT The success of any organization strongly depends on the marketing strategies they use to reach their potential customers. Law firms are no exception since they also operate in a competitive field... Full Article Marketing
mar To Love What Is: A Marriage Transformed By feedproxy.google.com Published On :: Monday, August 20, 2018 - 2:46pm I wish I had found Alix Kates Shulman’s memoir "To Love What Is: A Marriage Transformed" in the first month of my husband’s severe TBI, and yet I may not have absorbed it the way I did reading it fifteen years post-injury. Full Article
mar 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
mar "I always hated that word—marketing—and I hate it now. Because for me, and this may sound simplistic,..." By feedproxy.google.com Published On :: Sat, 08 Oct 2011 20:20:00 -0700 ““I always hated that word—marketing—and I hate it now. Because for me, and this may sound simplistic, the key to marketing is to make something people want. When they want it, they buy it. When they buy it, you have sales. So the product has to speak. The product is what markets things.”” - Interview with Tom Ford. Full Article tom ford
mar 14 Visual Content Marketing Statistics to Know for 2019 By feedproxy.google.com Published On :: Thu, 03 Oct 2019 21:54:22 +0000 Online marketing with visual content continues to grow and drive tons of traffic. The team at Venngage gathered together the latest data in the 14 Visual Content Marketing Statistics to Know for 2019 infographic and built it using their own tool.From Nadya Khoja at Venngage:Two years ago I asked 300 different online marketers to help me figure out how they were using visual content as part of their marketing strategies in 2016 and their predictions for 2017.This year I wanted to see if there were any changes in how marketers were creating visuals, and what kind of content engagement they were seeing.I also asked a couple of additional questions to see how the use of various visual formats impacted their blogging strategies.Conclusion:The data says it all–visual content isn’t going anywhere any time soon. Not only are more brands leveraging the use for of visuals for various social media platforms, but there is a lot of added benefit when it comes to SEO and organic rankings as well, particularly in Google’s image search results.And of course, creating engaging visual content is a surefire way to resonate with your audience and communicate your ideas more effectively.There are a few things to unravel here:It’s good survey data, but take it with a grain of salt. Venngage is a visual design tool, sharing data about visual content marketing.The infographic is a fantastic format to summarize the survey results and use in social media to draw in readers to the full article.The infographic is built using Venngage, so it’s also a great way to showcase what their design tool is capable of. In fact, clicking on the infographic gives you the opportunity to use this design as a template for designing your own infographic.Sections 5 & 10 are disappointing visually. There are no data visualizations, just a bunch of percentage values shown in text.I’m not a fan of the bright color scheme, and it’s visually distracting from highlighting insights in the data.The article still references 2018 data, even though the infographic has been updated with newer data from 2019. Full Article
mar Smartwatch Showdown: Apple Watch vs. Fitbit Versa By feedproxy.google.com Published On :: Thu, 07 Nov 2019 20:12:25 +0000 In the world of smartwatches, the two big contenders are the Apple Watch and the Fitbit Versa. The Smartwatch Showdown infographic from The Watchstrap is very timely with recent news that Google has just acquired Fitbit.In the world of wearable gadgets, smartwatches are all the rage at the moment. The smartwatch market is growing by the day, and new and improved devices are constantly being released. This means that picking the right smartwatch can be a real head-scratcher. To help you choose the right device for your needs, we’ve compared two of the hottest smartwatches on the market: the Apple Watch Series 4 and Fitbit Versa!If you want to find out which of these devices came on top in the end, don’t miss the comprehensive infographic below!First, this is a great use of infographics in content marketing! The Watchstrap is an online retailer of watch bands, and the infographic is a comparison design without being a sales pitch. It draws in traffic by providing valuable information, which build credibility for their brand.There are a handful of things I didn’t like about the design itself that could be easily improved to make this a better infographic design:Too much text. I realize there isn’t much data to work with, but they need to cut down the text in the infographic. Paragraphs of explanation don’t belong in the infographic, they belong on the landing page. The infographic should be short and draw in readers to the website if they want to learn more.The scale is wrong in the Size & Design section of the infographic. The dimensions of the Apple Watch are larger, but the graphic illustration on the page is smaller. The illustrations should be visually correct to scale.Eliminate any word wrap when possible. There are a number of list points that have one hanging word wrapping to a second line. This could be avoided by shortening the text or just widening the text box. There’s room in the design without wrapping some of these words.The URL in the footer should link to the infographic landing page, not the home page of the company site.Copyright or Creative Commons license is completely missing.Don’t obscure the source by only listing the home page URL. What’s the link to the research data? Full Article
mar Call to Action Marketing Strategy By feedproxy.google.com Published On :: Thu, 26 Mar 2020 16:50:18 +0000 In the past I’ve written about the importance of having a separate call to action for each stage of the buyers journey. In this article I’m going to expand on that concept and outline how to identify a strategy for each of these calls to action. First I’ll summarize why you need to have a […] The post Call to Action Marketing Strategy appeared first on Psychology of Web Design | 3.7 Blog. Full Article Psychology of Design Strategy and Planning Web Design
mar Marumi Photo Contest “Pictures taken at home” By www.photocompete.com Published On :: Wed, 29 Apr 2020 11:24:00 +0000 Theme: “pictures taken at home” Prizes: Gold Prize: Marumi soft filter + Marumi Cross Filter Set (DHG Portrait Soft, Retro Soft, SF, SFII, Foggy Soft, [...] The post Marumi Photo Contest “Pictures taken at home” appeared first on Photocompete. Full Article Contests Current Free International
mar Electric Cars and Surging Solar Spell Market Doom for Fossil Fuels By feedproxy.google.com Published On :: Thu, 26 Oct 2017 21:08:30 +0000 By Jessica Corbett Common Dreams Analyses show how demand for electric vehicles and rapidly falling renewable energy prices could take down oil and gas industry As an increasing number of nations make plans for banning gas and diesel vehicles within … Continue reading → Full Article Business & Economy
mar McDonald's Workers in Denmark Pity Us By feeds.drudge.com Published On :: Fri, 08 May 2020 17:29:20 -0400 Nicholas Kristof: Before the coronavirus pandemic, I crept behind [expletive] Danish lines to explore: How scary is Denmark? How horrifying would it be if the United States took a step or two in the direction of Denmark? Would America lose its edge, productivity and innovation, or would it gain well-being, fairness and happiness? Full Article news
mar Everything is Figureoutable with Marie Forleo By feedproxy.google.com Published On :: Fri, 27 Sep 2019 05:21:56 +0000 You know her, the award-winning host, author and speaker, Marie Forleo returns to the podcast to talk about her new book , Everything Is Figureoutable. In the New York Times Best-Selling book, Marie gives readers tactics to look at setbacks positively and overcome obstacles creatively, so you can start reaching your dreams. In this episode, we sit down to talk about how her life experiences influenced the book. She shares stories of fear, failure and always having fun have impacted her life. And we discuss a quote of hers (that I repeat all the time) that can help you get into the creative zone. Enjoy! FOLLOW MARIE: instagram | twitter | website Listen to the Podcast Subscribe Watch the Episode This podcast is brought to you by CreativeLive. CreativeLive is the world’s largest hub for online creative education in photo/video, art/design, music/audio, craft/maker, money/life and the ability to make a living in any of those disciplines. They are high quality, highly curated classes taught by the world’s top experts — Pulitzer, Oscar, Grammy Award winners, New York Times best selling authors and the best entrepreneurs of our times. The post Everything is Figureoutable with Marie Forleo appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast creativity entrepreneurship everything is figureoutable marie forleo problem solving
mar Hope in a Sea of Endless Calamity with Mark Manson By feedproxy.google.com Published On :: Wed, 06 May 2020 13:05:54 +0000 Today on the show, I’m chatting with New York Times bestselling author Mark Manson. He is the #1 New York Times Bestselling author of Everything is F*cked and The Subtle Art of Not Giving a F*ck, the mega-bestseller that reached #1 in fourteen different countries. Mark also runs one of the largest personal growth websites in the world, MarkManson.net, a blog with more than two million monthly readers and half a million subscribers, making him one of the largest and most successful independent publishers in the world. In this episode, we take a deep dive into the creative process. How to spend your time when you’re trying get comfortable with being uncomfortable. Mark helps bring into focus the up-side that this moment has created for us while also sharing some of the tactics he while quarantined. Enjoy! FOLLOW MARK: instagram | twitter | website Listen to the Podcast Subscribe This podcast is brought to you by CreativeLive. CreativeLive is the world’s largest hub for online creative education in photo/video, art/design, music/audio, craft/maker, money/life and the ability to make a living in any of those disciplines. They are high quality, highly curated classes taught by the world’s top experts — Pulitzer, Oscar, […] The post Hope in a Sea of Endless Calamity with Mark Manson appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast anxiety fear happiness personal development self confidence self help
mar 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
mar Wix Video — a great marketing tool for any website. By feedproxy.google.com Published On :: Wed, 17 Jan 2018 19:40:09 +0000 Increases time on page and boosts engagement with your site Thanks to the ever-increasing internet speeds, videos are in high demand. Right now, video is everywhere on social media, websites, and apps. We are watching them on all our screens, desktops, tablets, phones and smart TVs. It is expected a growth in video content up … Wix Video — a great marketing tool for any website. Read More » Full Article Reference
mar Godox’s new SL150/SL200 Mark II LED lights offer fanless “silent mode” operation By feedproxy.google.com Published On :: Sat, 09 May 2020 11:14:24 +0000 The Godox SL series LED lights have proven to be extremely popular due to their low cost. Two of the models in that range, the SL150 and SL200 have seen a Mark II update today, according to an email that Godox has been sending out today. One of the features of the new SL150II and […] The post Godox’s new SL150/SL200 Mark II LED lights offer fanless “silent mode” operation appeared first on DIY Photography. Full Article news Gear Announcement godox LED lights SL150II SL200II
mar Paper: Evidence for Area as the Primary Visual Cue in Pie Charts By eagereyes.org Published On :: Thu, 17 Oct 2019 15:52:12 +0000 How we read pie charts is still an open question: is it angle? Is it area? Is it arc length? In a study I'm presenting as a short paper at the IEEE VIS conference in Vancouver next week, I tried to tease the visual cues apart – using modeling and 3D pie charts. The big […] Full Article Blog 2019 paper pie charts
mar A Marstrand type slicing theorem for subsets of $mathbb{Z}^2 subset mathbb{R}^2$ with the mass dimension. (arXiv:2005.02813v2 [math.CO] UPDATED) By arxiv.org Published On :: We prove a Marstrand type slicing theorem for the subsets of the integer square lattice. This problem is the dual of the corresponding projection theorem, which was considered by Glasscock, and Lima and Moreira, with the mass and counting dimensions applied to subsets of $mathbb{Z}^{d}$. In this paper, more generally we deal with a subset of the plane that is $1$ separated, and the result for subsets of the integer lattice follow as a special case. We show that the natural slicing question in this setting is true with the mass dimension. Full Article
mar An embedding of the Morse boundary in the Martin boundary. (arXiv:2004.14624v2 [math.GR] UPDATED) By arxiv.org Published On :: We construct a one-to-one continuous map from the Morse boundary of a hierarchically hyperbolic group to its Martin boundary. This construction is based on deviation inequalities generalizing Ancona's work on hyperbolic groups. This provides a possibly new metrizable topology on the Morse boundary of such groups. We also prove that the Morse boundary has measure 0 with respect to the harmonic measure unless the group is hyperbolic. Full Article
mar On the Asymptotic $u_0$-Expected Flooding Time of Stationary Edge-Markovian Graphs. (arXiv:2004.03660v4 [math.PR] UPDATED) By arxiv.org Published On :: Consider that $u_0$ nodes are aware of some piece of data $d_0$. This note derives the expected time required for the data $d_0$ to be disseminated through-out a network of $n$ nodes, when communication between nodes evolves according to a graphical Markov model $overline{ mathcal{G}}_{n,hat{p}}$ with probability parameter $hat{p}$. In this model, an edge between two nodes exists at discrete time $k in mathbb{N}^+$ with probability $hat{p}$ if this edge existed at $k-1$, and with probability $(1-hat{p})$ if this edge did not exist at $k-1$. Each edge is interpreted as a bidirectional communication link over which data between neighbors is shared. The initial communication graph is assumed to be an Erdos-Renyi random graph with parameters $(n,hat{p})$, hence we consider a emph{stationary} Markov model $overline{mathcal{G}}_{n,hat{p}}$. The asymptotic "$u_0$-expected flooding time" of $overline{mathcal{G}}_{n,hat{p}}$ is defined as the expected number of iterations required to transmit the data $d_0$ from $u_0$ nodes to $n$ nodes, in the limit as $n$ approaches infinity. Although most previous results on the asymptotic flooding time in graphical Markov models are either emph{almost sure} or emph{with high probability}, the bounds obtained here are emph{in expectation}. However, our bounds are tighter and can be more complete than previous results. Full Article
mar EMSx: A Numerical Benchmark for Energy Management Systems. (arXiv:2001.00450v2 [math.OC] UPDATED) By arxiv.org Published On :: Inserting renewable energy in the electric grid in a decentralized manneris a key challenge of the energy transition. However, at local scale, both production and demand display erratic behavior, which makes it delicate to match them. It is the goal of Energy Management Systems (EMS) to achieve such balance at least cost. We present EMSx, a numerical benchmark for testing control algorithms for the management of electric microgrids equipped with a photovoltaic unit and an energy storage system. EMSx is made of three key components: the EMSx dataset, provided by Schneider Electric, contains a diverse pool of realistic microgrids with a rich collection of historical observations and forecasts; the EMSx mathematical framework is an explicit description of the assessment of electric microgrid control techniques and algorithms; the EMSx software EMSx.jl is a package, implemented in the Julia language, which enables to easily implement a microgrid controller and to test it. All components of the benchmark are publicly available, so that other researchers willing to test controllers on EMSx may reproduce experiments easily. Eventually, we showcase the results of standard microgrid control methods, including Model Predictive Control, Open Loop Feedback Control and Stochastic Dynamic Programming. Full Article
mar A remark on the Laplacian flow and the modified Laplacian co-flow in G2-Geometry. (arXiv:2005.03332v1 [math.DG]) By arxiv.org Published On :: We observe that the DeTurck Laplacian flow of G2-structures introduced by Bryant and Xu as a gauge fixing of the Laplacian flow can be regarded as a flow of G2-structures (not necessarily closed) which fits in the general framework introduced by Hamilton in [4]. Full Article
mar On analog quantum algorithms for the mixing of Markov chains. (arXiv:1904.11895v2 [quant-ph] UPDATED) By arxiv.org Published On :: The problem of sampling from the stationary distribution of a Markov chain finds widespread applications in a variety of fields. The time required for a Markov chain to converge to its stationary distribution is known as the classical mixing time. In this article, we deal with analog quantum algorithms for mixing. First, we provide an analog quantum algorithm that given a Markov chain, allows us to sample from its stationary distribution in a time that scales as the sum of the square root of the classical mixing time and the square root of the classical hitting time. Our algorithm makes use of the framework of interpolated quantum walks and relies on Hamiltonian evolution in conjunction with von Neumann measurements. There also exists a different notion for quantum mixing: the problem of sampling from the limiting distribution of quantum walks, defined in a time-averaged sense. In this scenario, the quantum mixing time is defined as the time required to sample from a distribution that is close to this limiting distribution. Recently we provided an upper bound on the quantum mixing time for Erd"os-Renyi random graphs [Phys. Rev. Lett. 124, 050501 (2020)]. Here, we also extend and expand upon our findings therein. Namely, we provide an intuitive understanding of the state-of-the-art random matrix theory tools used to derive our results. In particular, for our analysis we require information about macroscopic, mesoscopic and microscopic statistics of eigenvalues of random matrices which we highlight here. Furthermore, we provide numerical simulations that corroborate our analytical findings and extend this notion of mixing from simple graphs to any ergodic, reversible, Markov chain. Full Article
mar The Zhou Ordinal of Labelled Markov Processes over Separable Spaces. (arXiv:2005.03630v1 [cs.LO]) By arxiv.org Published On :: There exist two notions of equivalence of behavior between states of a Labelled Markov Process (LMP): state bisimilarity and event bisimilarity. The first one can be considered as an appropriate generalization to continuous spaces of Larsen and Skou's probabilistic bisimilarity, while the second one is characterized by a natural logic. C. Zhou expressed state bisimilarity as the greatest fixed point of an operator $mathcal{O}$, and thus introduced an ordinal measure of the discrepancy between it and event bisimilarity. We call this ordinal the "Zhou ordinal" of $mathbb{S}$, $mathfrak{Z}(mathbb{S})$. When $mathfrak{Z}(mathbb{S})=0$, $mathbb{S}$ satisfies the Hennessy-Milner property. The second author proved the existence of an LMP $mathbb{S}$ with $mathfrak{Z}(mathbb{S}) geq 1$ and Zhou showed that there are LMPs having an infinite Zhou ordinal. In this paper we show that there are LMPs $mathbb{S}$ over separable metrizable spaces having arbitrary large countable $mathfrak{Z}(mathbb{S})$ and that it is consistent with the axioms of $mathit{ZFC}$ that there is such a process with an uncountable Zhou ordinal. Full Article
mar Universal Coding and Prediction on Martin-L"of Random Points. (arXiv:2005.03627v1 [math.PR]) By arxiv.org Published On :: We perform an effectivization of classical results concerning universal coding and prediction for stationary ergodic processes over an arbitrary finite alphabet. That is, we lift the well-known almost sure statements to statements about Martin-L"of random sequences. Most of this work is quite mechanical but, by the way, we complete a result of Ryabko from 2008 by showing that each universal probability measure in the sense of universal coding induces a universal predictor in the prequential sense. Surprisingly, the effectivization of this implication holds true provided the universal measure does not ascribe too low conditional probabilities to individual symbols. As an example, we show that the Prediction by Partial Matching (PPM) measure satisfies this requirement. In the almost sure setting, the requirement is superfluous. Full Article
mar NH-HAZE: An Image Dehazing Benchmark with Non-Homogeneous Hazy and Haze-Free Images. (arXiv:2005.03560v1 [cs.CV]) By arxiv.org Published On :: Image dehazing is an ill-posed problem that has been extensively studied in the recent years. The objective performance evaluation of the dehazing methods is one of the major obstacles due to the lacking of a reference dataset. While the synthetic datasets have shown important limitations, the few realistic datasets introduced recently assume homogeneous haze over the entire scene. Since in many real cases haze is not uniformly distributed we introduce NH-HAZE, a non-homogeneous realistic dataset with pairs of real hazy and corresponding haze-free images. This is the first non-homogeneous image dehazing dataset and contains 55 outdoor scenes. The non-homogeneous haze has been introduced in the scene using a professional haze generator that imitates the real conditions of hazy scenes. Additionally, this work presents an objective assessment of several state-of-the-art single image dehazing methods that were evaluated using NH-HAZE dataset. Full Article
mar AIBench: Scenario-distilling AI Benchmarking. (arXiv:2005.03459v1 [cs.PF]) By arxiv.org Published On :: Real-world application scenarios like modern Internet services consist of diversity of AI and non-AI modules with very long and complex execution paths. Using component or micro AI benchmarks alone can lead to error-prone conclusions. This paper proposes a scenario-distilling AI benchmarking methodology. Instead of using real-world applications, we propose the permutations of essential AI and non-AI tasks as a scenario-distilling benchmark. We consider scenario-distilling benchmarks, component and micro benchmarks as three indispensable parts of a benchmark suite. Together with seventeen industry partners, we identify nine important real-world application scenarios. We design and implement a highly extensible, configurable, and flexible benchmark framework. On the basis of the framework, we propose the guideline for building scenario-distilling benchmarks, and present two Internet service AI ones. The preliminary evaluation shows the advantage of scenario-distilling AI benchmarking against using component or micro AI benchmarks alone. The specifications, source code, testbed, and results are publicly available from the web site url{this http URL}. Full Article
mar The Perceptimatic English Benchmark for Speech Perception Models. (arXiv:2005.03418v1 [cs.CL]) By arxiv.org Published On :: We present the Perceptimatic English Benchmark, an open experimental benchmark for evaluating quantitative models of speech perception in English. The benchmark consists of ABX stimuli along with the responses of 91 American English-speaking listeners. The stimuli test discrimination of a large number of English and French phonemic contrasts. They are extracted directly from corpora of read speech, making them appropriate for evaluating statistical acoustic models (such as those used in automatic speech recognition) trained on typical speech data sets. We show that phone discrimination is correlated with several types of models, and give recommendations for researchers seeking easily calculated norms of acoustic distance on experimental stimuli. We show that DeepSpeech, a standard English speech recognizer, is more specialized on English phoneme discrimination than English listeners, and is poorly correlated with their behaviour, even though it yields a low error on the decision task given to humans. Full Article
mar AutoSOS: Towards Multi-UAV Systems Supporting Maritime Search and Rescue with Lightweight AI and Edge Computing. (arXiv:2005.03409v1 [cs.RO]) By arxiv.org Published On :: Rescue vessels are the main actors in maritime safety and rescue operations. At the same time, aerial drones bring a significant advantage into this scenario. This paper presents the research directions of the AutoSOS project, where we work in the development of an autonomous multi-robot search and rescue assistance platform capable of sensor fusion and object detection in embedded devices using novel lightweight AI models. The platform is meant to perform reconnaissance missions for initial assessment of the environment using novel adaptive deep learning algorithms that efficiently use the available sensors and computational resources on drones and rescue vessel. When drones find potential objects, they will send their sensor data to the vessel to verity the findings with increased accuracy. The actual rescue and treatment operation are left as the responsibility of the rescue personnel. The drones will autonomously reconfigure their spatial distribution to enable multi-hop communication, when a direct connection between a drone transmitting information and the vessel is unavailable. Full Article
mar WSMN: An optimized multipurpose blind watermarking in Shearlet domain using MLP and NSGA-II. (arXiv:2005.03382v1 [cs.CR]) By arxiv.org Published On :: Digital watermarking is a remarkable issue in the field of information security to avoid the misuse of images in multimedia networks. Although access to unauthorized persons can be prevented through cryptography, it cannot be simultaneously used for copyright protection or content authentication with the preservation of image integrity. Hence, this paper presents an optimized multipurpose blind watermarking in Shearlet domain with the help of smart algorithms including MLP and NSGA-II. In this method, four copies of the robust copyright logo are embedded in the approximate coefficients of Shearlet by using an effective quantization technique. Furthermore, an embedded random sequence as a semi-fragile authentication mark is effectively extracted from details by the neural network. Due to performing an effective optimization algorithm for selecting optimum embedding thresholds, and also distinguishing the texture of blocks, the imperceptibility and robustness have been preserved. The experimental results reveal the superiority of the scheme with regard to the quality of watermarked images and robustness against hybrid attacks over other state-of-the-art schemes. The average PSNR and SSIM of the dual watermarked images are 38 dB and 0.95, respectively; Besides, it can effectively extract the copyright logo and locates forgery regions under severe attacks with satisfactory accuracy. Full Article
mar Probabilistic Hyperproperties of Markov Decision Processes. (arXiv:2005.03362v1 [cs.LO]) By arxiv.org Published On :: We study the specification and verification of hyperproperties for probabilistic systems represented as Markov decision processes (MDPs). Hyperproperties are system properties that describe the correctness of a system as a relation between multiple executions. Hyperproperties generalize trace properties and include information-flow security requirements, like noninterference, as well as requirements like symmetry, partial observation, robustness, and fault tolerance. We introduce the temporal logic PHL, which extends classic probabilistic logics with quantification over schedulers and traces. PHL can express a wide range of hyperproperties for probabilistic systems, including both classical applications, such as differential privacy, and novel applications in areas such as robotics and planning. While the model checking problem for PHL is in general undecidable, we provide methods both for proving and for refuting a class of probabilistic hyperproperties for MDPs. Full Article
mar DMCP: Differentiable Markov Channel Pruning for Neural Networks. (arXiv:2005.03354v1 [cs.CV]) By arxiv.org Published On :: Recent works imply that the channel pruning can be regarded as searching optimal sub-structure from unpruned networks. However, existing works based on this observation require training and evaluating a large number of structures, which limits their application. In this paper, we propose a novel differentiable method for channel pruning, named Differentiable Markov Channel Pruning (DMCP), to efficiently search the optimal sub-structure. Our method is differentiable and can be directly optimized by gradient descent with respect to standard task loss and budget regularization (e.g. FLOPs constraint). In DMCP, we model the channel pruning as a Markov process, in which each state represents for retaining the corresponding channel during pruning, and transitions between states denote the pruning process. In the end, our method is able to implicitly select the proper number of channels in each layer by the Markov process with optimized transitions. To validate the effectiveness of our method, we perform extensive experiments on Imagenet with ResNet and MobilenetV2. Results show our method can achieve consistent improvement than state-of-the-art pruning methods in various FLOPs settings. The code is available at https://github.com/zx55/dmcp Full Article
mar Phase retrieval of complex-valued objects via a randomized Kaczmarz method. (arXiv:2005.03238v1 [cs.IT]) By arxiv.org Published On :: This paper investigates the convergence of the randomized Kaczmarz algorithm for the problem of phase retrieval of complex-valued objects. While this algorithm has been studied for the real-valued case}, its generalization to the complex-valued case is nontrivial and has been left as a conjecture. This paper establishes the connection between the convergence of the algorithm and the convexity of an objective function. Based on the connection, it demonstrates that when the sensing vectors are sampled uniformly from a unit sphere and the number of sensing vectors $m$ satisfies $m>O(nlog n)$ as $n, m ightarrowinfty$, then this algorithm with a good initialization achieves linear convergence to the solution with high probability. Full Article
mar What comprises a good talking-head video generation?: A Survey and Benchmark. (arXiv:2005.03201v1 [cs.CV]) By arxiv.org Published On :: Over the years, performance evaluation has become essential in computer vision, enabling tangible progress in many sub-fields. While talking-head video generation has become an emerging research topic, existing evaluations on this topic present many limitations. For example, most approaches use human subjects (e.g., via Amazon MTurk) to evaluate their research claims directly. This subjective evaluation is cumbersome, unreproducible, and may impend the evolution of new research. In this work, we present a carefully-designed benchmark for evaluating talking-head video generation with standardized dataset pre-processing strategies. As for evaluation, we either propose new metrics or select the most appropriate ones to evaluate results in what we consider as desired properties for a good talking-head video, namely, identity preserving, lip synchronization, high video quality, and natural-spontaneous motion. By conducting a thoughtful analysis across several state-of-the-art talking-head generation approaches, we aim to uncover the merits and drawbacks of current methods and point out promising directions for future work. All the evaluation code is available at: https://github.com/lelechen63/talking-head-generation-survey. Full Article
mar On Optimal Control of Discounted Cost Infinite-Horizon Markov Decision Processes Under Local State Information Structures. (arXiv:2005.03169v1 [eess.SY]) By arxiv.org Published On :: This paper investigates a class of optimal control problems associated with Markov processes with local state information. The decision-maker has only local access to a subset of a state vector information as often encountered in decentralized control problems in multi-agent systems. Under this information structure, part of the state vector cannot be observed. We leverage ab initio principles and find a new form of Bellman equations to characterize the optimal policies of the control problem under local information structures. The dynamic programming solutions feature a mixture of dynamics associated unobservable state components and the local state-feedback policy based on the observable local information. We further characterize the optimal local-state feedback policy using linear programming methods. To reduce the computational complexity of the optimal policy, we propose an approximate algorithm based on virtual beliefs to find a sub-optimal policy. We show the performance bounds on the sub-optimal solution and corroborate the results with numerical case studies. Full Article
mar Xamarin Native vs. Xamarin.Forms: How to Choose By dzone.com Published On :: Wed, 29 Apr 2020 18:23:13 GMT As Android and iOS continue to dominate the mobile market, businesses need to develop applications that meet the diverse requirements of each operating system. Launching native mobile applications for Apple App Store and Google Play Store is going to be a long and expensive process. Not every business has adequate time and funds for developing native mobile applications. That is why cross-platform app frameworks have been rising to popularity. Choosing cross-platform mobile app development services enables organizations to add their presence to both Android and iOS markets. Xamarin, recently acquired by Microsoft, is one of the best frameworks for cross-platform mobile app development. Rich features, agility, and cost-effectiveness make it an ideal choice for building cross-platform apps. Full Article .net web dev mobile app development c# xamarin xaml cross platform app development xamarin forms
mar .NET Development Tools for Smart Development in 2020 By dzone.com Published On :: Tue, 05 May 2020 15:30:25 GMT .NET is indeed an important application development platform, as it's secure, robust, and quite easy to learn and implement. Developers are widely using the .NET framework to build web applications and even modernize legacy programming based applications into .NET-based ones. .NET developers also use many third-party tools to carry out development. These tools have proven to provide the best support for development. Here are some of the top useful tools being used by many.NET development teams, .NET developers, individual .NET programmers, etc. Full Article .net web dev visual studio asp.net nuget resharper bytescout