art

Más pasos por día se relaciona con reducciones significativas de la diabetes y la hipertensión arterial

Puntos destacados de la investigación: Los adultos de mediana edad que caminaron una mayor cantidad de pasos al día mostraron un 43% menos de riesgo de padecer diabetes y un 31% menos de riesgo de hipertensión arterial, en comparación con personas de...




art

Brain emotional activity linked to blood vessel inflammation in recent heart attack patients

Research Highlights: People with recent heart attacks have significantly higher activity in a brain area (the amygdala) involved in stress perception and emotional response. They also have more inflammation in key arteries and increased bone marrow ...




art

The new Boston Tea Party Museum

Tour of the new boston Tea Party museum




art

Application deadline extended for college scholarships and school grants from American Heart Association’s school-based programs

DALLAS, April 14, 2020 – The American Heart Association has extended the deadline for individual scholarships and school grants offered through Kids Heart Challenge and American Heart Challenge to June 30. As schools nationwide moved to remote learning,...




art

Caregiving from a distance: how to help loved ones with heart failure amid COVID-19

DALLAS, April 23, 2020 — As social distancing keeps families apart, many who care for a parent or loved one with heart failure may be left wondering how to best keep them safe. In the United States, more than 6 million people are living with heart...




art

Patient perspective: Living with type 2 diabetes and heart disease amid COVID-19

DALLAS and ARLINGTON, April 23, 2020 — As emerging science around COVID-19 highlights elevated danger for people with diabetes, heart disease and stroke[1], the American Heart Association and the American Diabetes Association urge people living with type...




art

12 scientific teams redefining fast-tracked heart and brain health research related to COVID-19




art

The American Heart Association asks your help to support the 120M people in the U.S. living with cardiovascular disease who may be at higher risk of complications from COVID-19

DALLAS, May 4, 2020 — Tomorrow, on #GivingTuesdayNow, a global day of philanthropic action to address the COVID-19 pandemic, the American Heart Association – the leading global public health organization devoted to a world of longer healthier lives – is...




art

Scheduling surgery, COVID-19 risks and more: What heart valve patients need to know

DALLAS, May 5, 2020 — An estimated five million patients in the United States live with heart valve disease, and many have had upcoming valve repair surgery rescheduled due to the COVID-19 pandemic. The American Heart Association, along with 14 North...




art

Antonio Petrucelli’s Maps (Edes Harrison & Artzybasheff)

Antonio Petrucelli’s name is probably unfamiliar to map people, although it shouldn’t be. Petrucelli was one of the artists whose work was commonly found on the cover (and inside) Fortune magazine from the 1930s through the 1950s. Petrucelli collaborated with Richard Edes Harrison and was a contemporary of Boris Artzybasheff. Like Edes Harrison and Artzybasheff, […]




art

7 Online Business Ideas That You Can Start With Just WordPress Plugins

As the time passes by, the online businesses are growing rapidly with the support of already available online business platforms, plugins etc. And to Achieve the same, WordPress is much louder than anything else around to fulfill the required online business existence without any boundaries and limitations....

The post 7 Online Business Ideas That You Can Start With Just WordPress Plugins appeared first on SmashingApps.com.




art

5 Things You Should Keep in Mind Before Starting a Website

Starting a website can be a fun journey for some of the tech wizards out there, and a relative nightmare for the rest of us. So before you take a leap of faith and jump-start this project, there are a few things you need to keep in mind. 1.   The aim matters This is where it all begins, your vision. What is your website about? What is it that you would like for your website to showcase? What is the call-to-action you hope your website’s visitors to make? As you answer the above questions, you will be able to utilize

The post 5 Things You Should Keep in Mind Before Starting a Website appeared first on Photoshop Lady.




art

Get Started With CSS3 Transitions Today

Transitions (basic animations) are one of the most popular additions in CSS3, and one of the easiest to implement for big gains on your site. A transition is simply an animation from one set of CSS properties to another. So for example; whilst before you may have had links with blue text, which suddenly turned orange when you hovered on them, you would now replace that sudden jump with a more graceful animation. In this post, we'll look at the basic syntax, step through some examples, and finally take a brief look at current browser support.




art

Weird Kafka-Style Anatomies, Fantastic Creatures And Fancies Chart By Camille Renversades

Fantastic creatures and fancies chart by Camille Renversade, French chimérologist. Inspired by the old school boards, like the old Deyrolle...




art

This Art Collective Creates Concepts That Have Emerged From The Coronavirus Pandemic

The Coronavirus is changing our relation to each other and affecting our perception of reality. This virus is very democratic:...




art

Artist Dan Lam Crafts Colorful Art Of Neon Drips, Blobs, And Squishes

Born in the Philippines in 1988, artist Dan Lam cultivates upon our incessant yet human interest in the oddities of...




art

Artist Makes Cardboard Cutouts With Pandemic Jokes To Lighten This Difficult Time

Gotcha! According to John Marshall: “I draw on sheets of cardboard and pose with them at sunset. I call them...




art

14 New Stunning Coronavirus-Themed Street Art Works From Around The World

A mother and her child are reflected as they pass a mural by artist FAKE, titled “Super Nurse”, paying tribute...




art

This Family Uses Chalk Art To Go On Adventures During The Lockdown

Quarantine might have trapped us inside the shells of our houses; however, some people are finding ways to escape the...




art

In 1898, Revolutionary French Artist Toulouse-Letrec Went To The Toilet On A Beach, His Friend Took These Photographs

In 1898, Maurice Joyant took four photographs of his childhood friend Henri Marie Raymond de Toulouse-Lautrec Montfa, better known Toulouse-Letrec...




art

Family Of Romanian Photographer Moved To A Small Town In The UK And He Started Discovering The Beauty Of This Country

According to Aurel Paduraru: “I am a Romanian photographer and traveler. Last year, my wife, our five-year-old son, and I...




art

Exquisite Realistic Paintings By Russian Artist Serge Marshennikov

Serge Marshennikov is a Russian artist born was born in 1971 in Ufa (Bashkiria, USSR). His grandfather was a general...




art

UNI football position preview: Will McElvain entrenched as No. 1 quarterback

CEDAR FALLS — A four-way quarterback competition dominated the preseason headlines for Northern Iowa last August. Walk-on redshirt freshman Will McElvain emerged as the competition’s...




art

Best sports movies: ‘Caddyshack’ is a part of our vocabulary

Editor’s note: The Gazette sports staff has compiled lists of its top 15 favorite sports movies. Each day, a different staffer will share some insight into one of their favorites. Some of them...




art

Iowa’s Gary Barta says college football could be on a ‘dimmer switch’ when it returns

Iowa athletics director Gary Barta began Thursday’s meeting of the UI’s presidential committee on athletics with two numbers: It’s been 56 days since the coronavirus pandemic shut...




art

Bowen Born itching to start basketball career at UNI

CEDAR FALLS — Like many high school seniors across the country, Norwalk’s Bowen Born is unsure when he’ll be able to get on campus at the University of Northern Iowa and begin...




art

How to Start Selling Subscriptions Online

WooCommerce provides everything you need to start selling subscriptions online, make sales, and grow successfully. Learn how to get started in just 6 steps!

The post How to Start Selling Subscriptions Online appeared first on WooCommerce.







art

Many anticipated arts, cultural events delayed or canceled

Summer is going to look a bit different in the Corridor this year as many, long-cherished events are being canceled or postponed. And the organizations that run those events want you to know they...




art

Kenneth Robert Martin

KENNETH ROBERT MARTIN
Iowa City

Kenneth Robert Martin, our loving father and mentor, paddled off from the dock for the last time on May 8, 2020, joining Raymond and Inez, his parents, brother, Arnold, and dear wife, Alice on the big lake.
He leaves behind many stories of a life well-lived that will be retold in our family for generations. Among them: Just after World War II, he was stationed in Guam as an Army Air Corps staff sergeant, where he adopted a stray dog. Unwilling to abandon the pup after the tour was over, he smuggled him aboard ship in a duffle bag, which was discovered by brass before reaching Hawaii. Though denial of on-shore leave in Honolulu was the consequence, dad didn't forsake the dog, and after the pair crossed the ocean together they lived happily in Gary, Ind., for many years. Such is the compassion, devotion and fortitude (and mischievousness!) Ken would demonstrate over and over in his life. While we will miss his warmth and humor terribly, his legacy is plain to see in his children, grandchildren and great-grandchildren. We are nature lovers as Ken was. We turn over rocks just to see what lies beneath as he taught. We gaze at the stars with the same awe and wonder he showed us. We bless him for these gifts, which will never be forgotten.
To share a thought, memory or condolence with his family, please visit the funeral home website at www.gayandciha.com.






art

Phinney: County needs common sense, smarter government

I have been a Johnson County resident since 1977. I grew up in Clear Lake, a small farming community in North Central Iowa. I came to Iowa City after being recruited by Dan Gable to wrestle for the University of Iowa Hawkeye wrestling team and placed 3rd place in the 1980 NCAA Division I.

I met my wife Teresa and we settled in Iowa City. I have two children, Melissa, 36, and Anthony, 25; and grandchildren Emma, 9, Ellie and Emilia, 4-month-old twin girls, and Jack, who passed two just before his 2nd birthday. I am a cancer survivor and support cancer research and patient support.

I was a maintenance supervisor at the old Cantebury Inn, I owned and operated Advance Property Management for 23 years and drove a school bus for First Student, Inc. While working at First Student I was one of the driving forces in the campaign for the workers to unionize with the Teamsters. I was asked to join the Teamsters as a full-time organizer after the campaign, which I did for 13 years. I found my calling as an organizer because I was able to help others stand up for themselves and really change their lives.

I made the decision to run for Johnson County supervisor because we need to bring some common sense back to Johnson County government, and run a smarter government that works for all. The supervisors need to oversee the county departments better to stop wasting county funds paying settlements to individuals because of illegal action by department employees. Rules are for everyone and if you work outside the rules there will be costs and consequences.

I want to bring new blood to the board as well as new ideas. County supervisor is a public service position of honor and trust. Being a supervisor is about following through on jobs you were elected to do for the people. The supervisors need to finish jobs that they started but never completed. You should never leave a job half done!

I hope the voters agree the Johnson County Board of Supervisors need to answer to the public for their actions and their employees. We can no long just “sweep issues under the rug.”

Dean Phinney is a candidate in the Democratic primary for Johnson County Board of Supervisors.





art

WordPress Multisite Masterclass: Getting Started

Multisite is a powerful tool that will help you create a network of sites to fulfill a variety of purposes, and which you can customize to make life easier for your users and help your network run more efficiently and make you money.




art

Arthemia Premuim

Arthemia Premium is a magazine style theme that unleashes the power of WordPress, transforming it into a simple-yet-powerful CMS with the automatic thumbnail generation feature. A nice and elegant blend of a blog and a magazine. With numerous built-in features, Arthemia Premium will convert your old-fashioned WordPress blog into an amazing and powerful front-end. If […]

The post Arthemia Premuim appeared first on WPCult.





art

Many anticipated arts, cultural events delayed or canceled

Summer is going to look a bit different in the Corridor this year as many, long-cherished events are being canceled or postponed. And the organizations that run those events want you to know they aren’t any more happy about it than you are.

The organizers of these events are having to make unprecedented, tough decisions.

“Cancellation is not a good word in our business,” said Chuck Swanson, Building a Legacy executive director of Hancher. “It is something that we really don’t want to do and it takes a lot for us to come to that.

“We live for the live performance and bringing the artists and audiences together. That’s the happiest time for me, so none of these decisions have been easy.”

Hancher has had to cancel numerous upcoming events in the past few months that would have brought to Iowa City in artists from all over the country and the world. It also is holding off announcing its upcoming season — which it typically would be doing at this time of year.

this isn’t something the staff has faced since the floods of 2008 and because they book events so far in advance they are confronting additional challenges.

“You know there’s so much that goes into a show before it happens,” Swanson said. “I just think of all the anticipation, booking the artists, advancing the show, setting ticket prices, advertising and then ticket sales.

“It’s like a farmer who does all this work to get his crops ready and then at the end of the season ends up with nothing to harvest.”

He noted Hancher has been reaching out to its booked performers and, in some cases, have had performers reach out to them to cancel upcoming shows.

The significant time and resources that go into planning large-scale events is the main factor in necessitating cancellation discussions and decisions at many organizations.

“Many logistical items have to be coordinated, from renting shuttles to scheduling volunteers and staff. Initial planning for some events begins as early as 12 to 18 months in advance and proceeds all the way up to the day of the event,” said John Myers, Indian Creek Nature Center executive director.

Citing the center’s annual Maple Syrup Festival, he noted food represents a significant cost and often cannot be saved or reused.

“We have had to be mindful of the financial resources available to us and ensure that we wisely manage those to ensure (the center) can emerge from this pandemic as a functioning and healthy organization,” he said.

“None of the decisions to cancel events or how to handle subsequent financial losses are easy and they challenge everyone,” Myers added. “As our whole lives have been upended, it makes even the simplest of decisions harder and that takes an impact on morale.”

He acknowledged staff members aren’t the only ones feeling the strain.

“We have a significant core of volunteers who are no longer able to give their time, which also creates a strain on morale and increases the amount of work that needs to be done when we return,” he pointed out.

Another primary factor is what is allowed and considered safe by the city, state and Iowa Department of Public Health.

“At this point, only allowing groups of 10 or less is a far cry from the thousands or people we usually see at the Iowa Arts Festival,” said Lisa Barnes, executive director of Summer of the Arts in Iowa City, which produces the Iowa Arts Festival.

“The governor has announced that reopening the state will be done in stages, and based on what we’ve found from other events around the country, concerts and large festivals will be the last to open,” he noted.

Summer of the Arts announced just last week that the Iowa Arts Festival would not take place this year, a month in advance of the event.

“We needed to make a decision so that we can move forward with alternative plans,” Barnes said, noting the organization has had questions about the Iowa City Jazz Festival, scheduled for July 3 through 5 and added a decision regarding that festival and July programming will be made by mid-late May.

“We also needed to make the decision far enough out to be able to work with our performers and cancel the agreements,” she said.

On Wednesday, Gov. Kim Reynolds loosened some but not all of the social-distancing restrictions for the remaining 22 counties she had put in place.

Heartbroken

Discussions about the future of these events have been happening for weeks for many organizations, highlighting they are not taken lightly.

Carissa Johnson, executive director of the Cedar Rapids Freedom Festival, said conversations about the future of this year’s event started in mid-March, right around the time the Cedar Rapids SaPaDaPaSo Parade announced its cancellation for 2020.

“We plan year ’round for the two- to three-week festival,” Johnson explained.

“Our planning really ramps up in April and May, and we have many more costs associated with producing the festival the closer we get to the start. In order to protect our time and resources, we elected to cancel before we had more costs and variables to consider.”

As for who is making the final decision, organizations said many stakeholders are involved. Barnes said the decision on the Iowa City Arts Festival, for example, included staff, the board of directors, festival planning committees, the city of Iowa City and Johnson County Public Health, along with input from some of the vendors, artists and performers.

Tapping into experts in those public health field has been key as well.

“We have these assets, people, at the University (of Iowa), that have been really helpful as we make these decisions about canceling and as we prepare to think about reopening,” Hancher’s Swanson said.

The Freedom Festival include staff and board members in discussions, with recommendations from Linn County Public Health and the city of Cedar Rapids, factoring in the health, safety and well-being of the community.

“We are just as heartbroken as the rest of the community, but this decision was to protect our community as much as possible,” Swanson said.

“This community is a family and we will all get through this together and come back stronger next year.”

Myers noted organizations such as the Indian Creek Nature Center are also rely on advice from national associations, such as the American Alliance of Museums, and discussions among the leadership of many local cultural groups.

“For many events, we have also reached out to participants to gather their input and comfort level of attending once we are able to reopen,” Myers said.

The financial effects of having to cancel is stressful for organizations, too.

“Financially, this has been a hard time for the Nature Center to endure,” Myers pointed out. “We’ve had over 100 different programs, events and facility rentals canceled between March 15 and April 30, and our losses are currently over $250,000. As we approach the summer, there are a number of other events we continue to review, including our popular summer camps.”

The Nature Center has postponed a national conference to be held there in September — due to indications of low participation — for peers from around the nation who run not-for-profit and government nature centers.

“We are losing thousands of dollars in vendor fees and sales receipts because we had to cancel,” said Barnes, of Summer of the Arts.

“We have sponsors tied to certain events, like the Iowa Arts Festival, that in some cases want to carry over their support to next year, which impacts our fundraising for this year and next.”

She noted her group already has been made aware of funding that won’t be coming in from some sponsors next year due to the financial impact those organizations are facing as well.

And that can be tough.

“When we cancel, our whole staff is involved — from the box audience and public engagement folks to the technical production team and our front-of-house staff,” Swanson said.

“Our communication is key in talking through it all and then sharing clear messages with our audiences, especially in terms of refunds. But we’ve been encouraged by so many generous friends of Hancher donating their ticket purchase price back to us.”

While disappointment still is thick in the air, organizations don’t plan to abandon their missions and is keeping an eye on serving the public.

“This is a challenging time for everyone, and our board and staff is committed to finding creative and non-traditional solutions to ensure the Freedom Festival’s return,” Johnson said. “The community and our stakeholders have been tremendous supports of the Freedom Festival and we believe they will continue to do so in the future.

“We ask for understanding and patience as we try to navigate this crisis and what we can still provide for our community.”

Freedom Festival buttons will be sold this year as they’ve already been made, and “It’s a way the community can show their support,” Johnson said.

Barnes agreed and noted the Iowa Arts Festival committee is working on ways to support the performers, artists and vendors they had scheduled by trying to develop some virtual opportunities for engagement.

While the show, or events, might not go on, organizers said they very much want to remain connected to their audiences and attendees.

“I want to make sure everybody knows we care about them and that we’re trying to find ways to stay connected because I think we’re all in this together and the arts are one of the best ways for people to get through difficult times,” Swanson said.

Myers agreed.

“Indian Creek Nature Center will be ready to welcome guests and visitors back to our events as soon as we are able to do so safely,” he said.

“In the meantime, we hope everyone finds peace in nature by taking a hike or bike ride, having a picnic or just enjoying time outside.”




art

Markdown Comes Alive! Part 1, Basic Editor

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:

  1. Take markdown input from the textarea
  2. Send that input to the LiveServer
  3. Turn that raw markdown into HTML
  4. 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.



  • Code
  • Back-end Engineering

art

A Viget Glossary: What We Mean and Why it Matters - Part 1

Viget has helped organizations design and develop award-winning websites and digital products for 20 years. In that time, we’ve been lucky to create long-term relationships with clients like Puma, the World Wildlife Fund, and Privia Health, and, throughout our time working together, we’ve come to understand each others’ unique terminology. But that isn’t always the case when we begin work with new clients, and in a constantly-evolving industry, we know that new terminology appears almost daily and organizations have unique definitions for deliverables and processes.

Kicking off a project always initiates a flurry of activity. There are contracts to sign, team members to introduce, and new platforms to learn. It’s an exciting time, and we know clients are anxious to get underway. Amidst all the activity, though, there is a need to define and create a shared lexicon to ensure both teams understand the project deliverables and process that will take us from kickoff to launch.

Below, we’ve rounded up a few terms for each of our disciplines that often require additional explanation. Note: our definitions of these terms may differ slightly from the industry standard, but highlight our interpretation and use of them on a daily basis.

User Experience

Research

In UX, there is a proliferation of terms that are often used interchangeably and mean almost-but-subtly-not the same thing. Viget uses the term research to specifically mean user research — learning more about the users of our products, particularly how they think and behave — in order to make stronger recommendations and better designs. This can be accomplished through different methodologies, depending on the needs of the project, and can include moderated usability testing, stakeholder interviews, audience research, surveys, and more. Learn more about the subtleties of UX research vocabulary in our post on “Speaking the Same Language About Research”.

Wireframes

We use wireframes to show the priority and organization of content on the screen, to give a sense of what elements will get a stronger visual treatment, and to detail how users will get to other parts of the site. Wireframes are a key component of website design — think of them as the skeleton or blueprint of a page — but we know that clients often feel uninspired after reviewing pages built with gray boxes. In fact, we’ve even written about how to improve wireframe presentations. We remind clients that visual designers will step in later to add polish through color, graphics, and typography, but agreeing on the foundation of the page is an important and necessary first step.

Prototypes

During the design process, it’s helpful for us to show clients how certain pieces of functionality or animations will work once the site is developed. We can mimic interactivity or test a technical proof of concept by using a clickable prototype, relying on tools like Figma, Invision, or Principle. Our prototypes can be used to illustrate a concept to internal stakeholders, but shouldn’t be seen as a final approach. Often, these concepts will require additional work to prepare them for developer handoff, which means that prototypes quickly become outdated. Read more about how and when we use prototypes.

Navigation Testing (Treejack Testing)

Following an information architecture presentation, we will sometimes recommend that clients conduct navigation testing. When testing, we present a participant with the proposed navigation and ask them to perform specific tasks in order to see if they will be able to locate the information specified within the site’s new organization. These tests generally focus on two aspects of the navigation: the structure of the navigation system itself, and the language used within the system. Treejack is an online navigation testing tool that we like to employ when conducting navigation tests, so we’ll often interchange the terms “navigation testing” with “treejack testing”.

Learn more about Viget’s approach to user experience and research




art

A Viget Glossary: What We Mean and Why It Matters - Part 2

In my last post, I defined terms used by our UX team that are often confused or have multiple meanings across the industry. Today, I’ll share our definitions for processes and deliverables used by our design and strategy teams.

Creative

Brand Strategy

In our experience, we’ve found that the term brand strategy is used to cover a myriad of processes, documents, and deliverables. To us, a brand strategy defines how an organization communicates who they are, what they do and why in a clear and compelling way. Over the years, we’ve developed an approach to brand strategy work that emphasizes rigorous research, hands-on collaboration, and the definition of problems and goals. We work with clients to align on a brand strategy concept and, depending on the client and their goals, our final deliverables can range to include strategy definition, audience-specific messaging, identity details, brand elements, applications, and more. Take a look at the brand strategy work we’ve done for Fiscalnote, Swiftdine, and Armstrong Tire.

Content Strategy

A content strategy goes far beyond the words on a website or in an app. A strong content strategy dictates the substance, structure, and governance of the information an organization uses to communicate to its audience. It guides creating, organizing, and maintaining content so that companies can communicate who they are, what they do, and why efficiently and effectively. We’ve worked with organizations like the Washington Speakers Bureau, The Nature Conservancy, the NFL Players Association, and the Wildlife Conservation Society to refine and enhance their content strategies.

Still confused about the difference between brand and content strategy? Check out our flowchart.

Style Guide vs. Brand Guidelines

We often find the depth or fidelity of brand guidelines and style guides can vary greatly, and the terms can often be confused. When we create brand guidelines, they tend to be large documents that include in-depth recommendations about how a company should communicate their brand. Sections like “promise”, “vision”, “mission”, “values”, “tone”, etc. accompany details about how the brand’s logo, colors and fonts should be used in a variety of scenarios. Style guides, on the other hand, are typically pared down documents that contain specific guidance for organizations’ logos, colors and fonts, and don’t always include usage examples.

Design System

One question we get from clients often during a redesign or rebrand is, “How can I make sure people across my organization are adhering to our new designs?” This is where a design system comes into play. Design systems can range from the basic — e.g., a systematic approach to creating shared components for a single website — all the way to the complex —e.g., architecting a cross-product design system that can scale to accommodate hundreds of different products within a company. By assembling elements like color, typography, imagery, messaging, voice and tone, and interaction patterns in a central repository, organizations are able to scale products and marketing confidently and efficiently. When a design system is translated into code, we refer to that as a parts kit, which helps enforce consistency and improve workflow.

Comps or Mocks

When reviewing RFPs or going through the nitty-gritty of contracts with clients, we often see the terms mocks or comps used interchangeably to refer to the static design of pages or screens. Internally, we think of a mock-up as a static image file that illustrates proof-of-concept, just a step beyond a wireframe. A comp represents a design that is “high fidelity” and closer to what the final website will look like, though importantly, is not an exact replica. This is likely what clients will share with internal stakeholders to get approval on the website direction and what our front-end developers will use to begin building-out the site (in other words, converting the static design files into dynamic HTML, CSS, and JavaScript code).

If you're interested in joining our team of creative thinkers and visual storytellers who bring these concepts to life for our clients, we’re hiring in Washington, D.C. Durham, Boulder and Chattanooga. Tune in next week as we decipher the terms we use most often when talking about development.




art

Visa cancelled due to incorrect information given or provided to the Department of Home Affairs

It is a requirement that a visa applicant must fill in or complete his or her application form in a manner that all questions are answered, and no incorrect answers are given or provided. There is also a requirement that visa applicants must not provide incorrect information during interviews with the Minister for Immigration (‘Minister’), […]

The post Visa cancelled due to incorrect information given or provided to the Department of Home Affairs appeared first on Visa Australia - Immigration Lawyers & Registered Migration Agents.



  • Visa Cancellation
  • 1703474 (Refugee) [2017] AATA 2985
  • cancel a visa
  • cancelledvi sa
  • Citizenship and Multicultural Affairs
  • Department of Home Affairs
  • migration act 1958
  • minister for immigration
  • NOICC
  • notice of intention to consider cancellation
  • Sanaee (Migration) [2019] AATA 4506
  • section 109
  • time limits

art

Markdown Comes Alive! Part 1, Basic Editor

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:

  1. Take markdown input from the textarea
  2. Send that input to the LiveServer
  3. Turn that raw markdown into HTML
  4. 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.



  • Code
  • Back-end Engineering

art

A Viget Glossary: What We Mean and Why it Matters - Part 1

Viget has helped organizations design and develop award-winning websites and digital products for 20 years. In that time, we’ve been lucky to create long-term relationships with clients like Puma, the World Wildlife Fund, and Privia Health, and, throughout our time working together, we’ve come to understand each others’ unique terminology. But that isn’t always the case when we begin work with new clients, and in a constantly-evolving industry, we know that new terminology appears almost daily and organizations have unique definitions for deliverables and processes.

Kicking off a project always initiates a flurry of activity. There are contracts to sign, team members to introduce, and new platforms to learn. It’s an exciting time, and we know clients are anxious to get underway. Amidst all the activity, though, there is a need to define and create a shared lexicon to ensure both teams understand the project deliverables and process that will take us from kickoff to launch.

Below, we’ve rounded up a few terms for each of our disciplines that often require additional explanation. Note: our definitions of these terms may differ slightly from the industry standard, but highlight our interpretation and use of them on a daily basis.

User Experience

Research

In UX, there is a proliferation of terms that are often used interchangeably and mean almost-but-subtly-not the same thing. Viget uses the term research to specifically mean user research — learning more about the users of our products, particularly how they think and behave — in order to make stronger recommendations and better designs. This can be accomplished through different methodologies, depending on the needs of the project, and can include moderated usability testing, stakeholder interviews, audience research, surveys, and more. Learn more about the subtleties of UX research vocabulary in our post on “Speaking the Same Language About Research”.

Wireframes

We use wireframes to show the priority and organization of content on the screen, to give a sense of what elements will get a stronger visual treatment, and to detail how users will get to other parts of the site. Wireframes are a key component of website design — think of them as the skeleton or blueprint of a page — but we know that clients often feel uninspired after reviewing pages built with gray boxes. In fact, we’ve even written about how to improve wireframe presentations. We remind clients that visual designers will step in later to add polish through color, graphics, and typography, but agreeing on the foundation of the page is an important and necessary first step.

Prototypes

During the design process, it’s helpful for us to show clients how certain pieces of functionality or animations will work once the site is developed. We can mimic interactivity or test a technical proof of concept by using a clickable prototype, relying on tools like Figma, Invision, or Principle. Our prototypes can be used to illustrate a concept to internal stakeholders, but shouldn’t be seen as a final approach. Often, these concepts will require additional work to prepare them for developer handoff, which means that prototypes quickly become outdated. Read more about how and when we use prototypes.

Navigation Testing (Treejack Testing)

Following an information architecture presentation, we will sometimes recommend that clients conduct navigation testing. When testing, we present a participant with the proposed navigation and ask them to perform specific tasks in order to see if they will be able to locate the information specified within the site’s new organization. These tests generally focus on two aspects of the navigation: the structure of the navigation system itself, and the language used within the system. Treejack is an online navigation testing tool that we like to employ when conducting navigation tests, so we’ll often interchange the terms “navigation testing” with “treejack testing”.

Learn more about Viget’s approach to user experience and research




art

A Viget Glossary: What We Mean and Why It Matters - Part 2

In my last post, I defined terms used by our UX team that are often confused or have multiple meanings across the industry. Today, I’ll share our definitions for processes and deliverables used by our design and strategy teams.

Creative

Brand Strategy

In our experience, we’ve found that the term brand strategy is used to cover a myriad of processes, documents, and deliverables. To us, a brand strategy defines how an organization communicates who they are, what they do and why in a clear and compelling way. Over the years, we’ve developed an approach to brand strategy work that emphasizes rigorous research, hands-on collaboration, and the definition of problems and goals. We work with clients to align on a brand strategy concept and, depending on the client and their goals, our final deliverables can range to include strategy definition, audience-specific messaging, identity details, brand elements, applications, and more. Take a look at the brand strategy work we’ve done for Fiscalnote, Swiftdine, and Armstrong Tire.

Content Strategy

A content strategy goes far beyond the words on a website or in an app. A strong content strategy dictates the substance, structure, and governance of the information an organization uses to communicate to its audience. It guides creating, organizing, and maintaining content so that companies can communicate who they are, what they do, and why efficiently and effectively. We’ve worked with organizations like the Washington Speakers Bureau, The Nature Conservancy, the NFL Players Association, and the Wildlife Conservation Society to refine and enhance their content strategies.

Still confused about the difference between brand and content strategy? Check out our flowchart.

Style Guide vs. Brand Guidelines

We often find the depth or fidelity of brand guidelines and style guides can vary greatly, and the terms can often be confused. When we create brand guidelines, they tend to be large documents that include in-depth recommendations about how a company should communicate their brand. Sections like “promise”, “vision”, “mission”, “values”, “tone”, etc. accompany details about how the brand’s logo, colors and fonts should be used in a variety of scenarios. Style guides, on the other hand, are typically pared down documents that contain specific guidance for organizations’ logos, colors and fonts, and don’t always include usage examples.

Design System

One question we get from clients often during a redesign or rebrand is, “How can I make sure people across my organization are adhering to our new designs?” This is where a design system comes into play. Design systems can range from the basic — e.g., a systematic approach to creating shared components for a single website — all the way to the complex —e.g., architecting a cross-product design system that can scale to accommodate hundreds of different products within a company. By assembling elements like color, typography, imagery, messaging, voice and tone, and interaction patterns in a central repository, organizations are able to scale products and marketing confidently and efficiently. When a design system is translated into code, we refer to that as a parts kit, which helps enforce consistency and improve workflow.

Comps or Mocks

When reviewing RFPs or going through the nitty-gritty of contracts with clients, we often see the terms mocks or comps used interchangeably to refer to the static design of pages or screens. Internally, we think of a mock-up as a static image file that illustrates proof-of-concept, just a step beyond a wireframe. A comp represents a design that is “high fidelity” and closer to what the final website will look like, though importantly, is not an exact replica. This is likely what clients will share with internal stakeholders to get approval on the website direction and what our front-end developers will use to begin building-out the site (in other words, converting the static design files into dynamic HTML, CSS, and JavaScript code).

If you're interested in joining our team of creative thinkers and visual storytellers who bring these concepts to life for our clients, we’re hiring in Washington, D.C. Durham, Boulder and Chattanooga. Tune in next week as we decipher the terms we use most often when talking about development.




art

Coming Soon: Premium Blogstarter

We’ve upgraded one of our most popular themes.  The Blogstarter Theme has been one of our most popular themes from the beginning.  Premium Blogstarter contains a modernized design with all the current features you’d expect like social media integration, widgetized footer, and much more.  Here’s a preview of what is to come.

The post Coming Soon: Premium Blogstarter appeared first on WP Theme Designer.





art

Released: Premium BlogStarter Theme

The Premium BlogStarter Theme gives a new spin to one of our more popular magazine style themes The Original BlogStarter Theme. The Premium BlogStarter Theme is SEO optimized, bursting with theme options and widgets, includes a easy customizable logo, multi level drop down menus and more.

The post Released: Premium BlogStarter Theme appeared first on WP Theme Designer.