ow A lot to look forward to in 2017. How did 2016 treat you: ???? or... By feedproxy.google.com Published On :: Sat, 31 Dec 2016 12:24:31 -0500 A lot to look forward to in 2017. How did 2016 treat you: ???? or ????? (at San Francisco, California) Full Article
ow Four days from now I’ll be boarding a one way flight to... By feedproxy.google.com Published On :: Mon, 02 Jan 2017 09:32:40 -0500 Four days from now I’ll be boarding a one way flight to San Francisco to take on the next evolution of my role at @shopify. Leaving the city that I’ve called home my entire life and the people who have defined everything I am was one of the most uncomfortable decisions I’ve ever had to make. But this wouldn’t be the first time I’ve chased discomfort in my career. . I wrote about my ongoing pursuit for discomfort this morning in hopes of inspiring others to do the things that scare and challenge them this year. You can find the link in my profile. . Happy 2017! ???? . ????: @jonasll (at San Francisco, California) Full Article
ow Cockscomb Flower (Celosia cristata) at Trauger's By feedproxy.google.com Published On :: Wed, 26 Aug 2015 15:37:45 -0500 Posted on August 26, 2015 Cockscomb Flower (Celosia cristata) at Trauger's Photo Info & Viewer Comments Tweet Full Article Farm Life
ow How to Foster Real-Time Client Engagement During Moderated Research By feedproxy.google.com Published On :: Mon, 17 Feb 2020 08:00:00 -0500 When we conduct moderated research, like user interviews or usability tests, for our clients, we encourage them to observe as many sessions as possible. We find when clients see us interview their users, and get real-time responses, they’re able to learn about the needs of their users in real-time and be more active participants in the process. One way we help clients feel engaged with the process during remote sessions is to establish a real-time communication backchannel that empowers clients to flag responses they’d like to dig into further and to share their ideas for follow-up questions. There are several benefits to establishing a communication backchannel for moderated sessions:Everyone on the team, including both internal and client team members, can be actively involved throughout the data collection process rather than waiting to passively consume findings.Team members can identify follow-up questions in real-time which allows the moderator to incorporate those questions during the current session, rather than just considering them for future sessions.Subject matter experts can identify more detailed and specific follow-up questions that the moderator may not think to ask.Even though the whole team is engaged, a single moderator still maintains control over the conversation which creates a consistent experience for the participant.If you’re interested in creating your own backchannel, here are some tips to make the process work smoothly:Use the chat tool that is already being used on the project. In most cases, we use a joint Slack workspace for the session backchannel but we’ve also used Microsoft Teams.Create a dedicated channel like #moderated-sessions. Conversation in this channel should be limited to backchannel discussions during sessions. This keeps the communication consolidated and makes it easier for the moderator to stay focused during the session.Keep communication limited. Channel participants should ask basic questions that are easy to consume quickly. Supplemental commentary and analysis should not take place in the dedicated channel.Use emoji responses. The moderator can add a quick thumbs up to indicate that they’ve seen a question.Introducing backchannels for communication during remote moderated sessions has been a beneficial change to our research process. It not only provides an easy way for clients to stay engaged during the data collection process but also increases the moderator’s ability to focus on the most important topics and to ask the most useful follow-up questions. Full Article Process Research
ow 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
ow A Viget Exploration: How Tech Can Help in a Pandemic By feedproxy.google.com Published On :: Wed, 25 Mar 2020 16:49:00 -0400 Viget Explorations have always been the result of our shared curiosities. They’re usually a spontaneous outcome of team downtime and a shared problem we’ve experienced. We use our Explorations to pursue our diverse interests and contribute to the conversations about building a better digital world. As the COVID-19 crisis emerged, we were certainly experiencing a shared problem. As a way to keep busy and manage our anxieties, a small team came together to dive into how technology has helped, and, unfortunately, hindered the community response to the current pandemic. Privia Medical Group Telehealth Native Apps We started by researching the challenges we saw: information overload, a lack of clarity, individual responsibility, and change. Then we brainstormed possible technical solutions that could further improve how communities respond to a pandemic. Click here to see our Exploration on some possible ways to take the panic out of pandemics. While we aren’t currently pursuing the solutions outlined in the Exploration, we’d love to hear what you think about these approaches, as well as any ideas you have for how technology can help address the outlined challenges. Please note, this Exploration doesn’t provide medical information. Visit the Center for Disease Control’s website for current information and COVID-19, its symptoms, and treatments. At Viget, we’re adjusting to this crisis for the safety of our clients, our staff, and our communities. If you’d like to hear from Viget's co-founder, Brian Williams, you can read his article on our response to the situation. Full Article News & Culture
ow Social Icons Widget 4.0 — Now With a Social Icons Block for Gutenberg Included By feedproxy.google.com Published On :: Tue, 03 Mar 2020 21:07:29 +0000 In 2015 we launched Social Icons Widget by WPZOOM with the intent to provide WordPress users with a simple and easy-to-use widget for adding social links to their websites. With over 100k installs at the moment and continuous positive feedback from the users, it kept us motivated to constantly improve and keep updating this free plugin. Now, to keep the […] Full Article Plugins
ow How to Create an Online Ordering Page for Restaurants with WooCommerce By feedproxy.google.com Published On :: Fri, 24 Apr 2020 07:42:25 +0000 Until recently it was something normal for any restaurant to have a well-maintained website. Even so, it seems that for many restaurants this was something difficult to achieve. In these difficult times, for many restaurant owners and other businesses in this field, owning just a simple website is no longer enough. If you still want to remain in business you […] Full Article Tutorials
ow How to Foster Real-Time Client Engagement During Moderated Research By feedproxy.google.com Published On :: Mon, 17 Feb 2020 08:00:00 -0500 When we conduct moderated research, like user interviews or usability tests, for our clients, we encourage them to observe as many sessions as possible. We find when clients see us interview their users, and get real-time responses, they’re able to learn about the needs of their users in real-time and be more active participants in the process. One way we help clients feel engaged with the process during remote sessions is to establish a real-time communication backchannel that empowers clients to flag responses they’d like to dig into further and to share their ideas for follow-up questions. There are several benefits to establishing a communication backchannel for moderated sessions:Everyone on the team, including both internal and client team members, can be actively involved throughout the data collection process rather than waiting to passively consume findings.Team members can identify follow-up questions in real-time which allows the moderator to incorporate those questions during the current session, rather than just considering them for future sessions.Subject matter experts can identify more detailed and specific follow-up questions that the moderator may not think to ask.Even though the whole team is engaged, a single moderator still maintains control over the conversation which creates a consistent experience for the participant.If you’re interested in creating your own backchannel, here are some tips to make the process work smoothly:Use the chat tool that is already being used on the project. In most cases, we use a joint Slack workspace for the session backchannel but we’ve also used Microsoft Teams.Create a dedicated channel like #moderated-sessions. Conversation in this channel should be limited to backchannel discussions during sessions. This keeps the communication consolidated and makes it easier for the moderator to stay focused during the session.Keep communication limited. Channel participants should ask basic questions that are easy to consume quickly. Supplemental commentary and analysis should not take place in the dedicated channel.Use emoji responses. The moderator can add a quick thumbs up to indicate that they’ve seen a question.Introducing backchannels for communication during remote moderated sessions has been a beneficial change to our research process. It not only provides an easy way for clients to stay engaged during the data collection process but also increases the moderator’s ability to focus on the most important topics and to ask the most useful follow-up questions. Full Article Process Research
ow 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
ow A Viget Exploration: How Tech Can Help in a Pandemic By feedproxy.google.com Published On :: Wed, 25 Mar 2020 16:49:00 -0400 Viget Explorations have always been the result of our shared curiosities. They’re usually a spontaneous outcome of team downtime and a shared problem we’ve experienced. We use our Explorations to pursue our diverse interests and contribute to the conversations about building a better digital world. As the COVID-19 crisis emerged, we were certainly experiencing a shared problem. As a way to keep busy and manage our anxieties, a small team came together to dive into how technology has helped, and, unfortunately, hindered the community response to the current pandemic. Privia Medical Group Telehealth Native Apps We started by researching the challenges we saw: information overload, a lack of clarity, individual responsibility, and change. Then we brainstormed possible technical solutions that could further improve how communities respond to a pandemic. Click here to see our Exploration on some possible ways to take the panic out of pandemics. While we aren’t currently pursuing the solutions outlined in the Exploration, we’d love to hear what you think about these approaches, as well as any ideas you have for how technology can help address the outlined challenges. Please note, this Exploration doesn’t provide medical information. Visit the Center for Disease Control’s website for current information and COVID-19, its symptoms, and treatments. At Viget, we’re adjusting to this crisis for the safety of our clients, our staff, and our communities. If you’d like to hear from Viget's co-founder, Brian Williams, you can read his article on our response to the situation. Full Article News & Culture
ow The Book Wayshowing > Wayfinding By designworkplan.com Published On :: Tue, 15 Oct 2013 08:14:49 +0000 A review of the renewed book Wayshowing > Wayfinding from Per Mollerup. Full Article review blogen en
ow How to restart a blog after five years By traceygrady.com Published On :: Thu, 16 Apr 2015 11:28:28 +0000 This is not the post I had planned for resuming my blog. I had in mind a lengthy article about design and its role in communication at this point in digital evolution. Deep. Thought-provoking. But I know that it’s better to start with ideas that are a little less ambitious in scope. Plus, to tell you […] Full Article Blogging blogging content strategy social media trends
ow How not to overwhelm people By traceygrady.com Published On :: Wed, 15 Jul 2015 06:04:36 +0000 When you’re putting together information (for customers, or your target audience) how much is too much? Details, details. Is it better to go light or heavy on the details? You want to be open and forthcoming with information, but on the other hand you don’t want to overwhelm people, do you? Here’s a good way to […] Full Article Communicate copywriting marketing
ow What does Stack Overflow want to be when it grows up? By blog.codinghorror.com Published On :: Mon, 22 Oct 2018 10:52:32 GMT I sometimes get asked by regular people in the actual real world what it is that I do for a living, and here's my 15 second answer: We built a sort of Wikipedia website for computer programmers to post questions and answers. It's called Stack Overflow. As of last month, Full Article
ow Building a PC, Part IX: Downsizing By blog.codinghorror.com Published On :: Sun, 19 Apr 2020 23:56:03 GMT Hard to believe that I've had the same PC case since 2011, and my last serious upgrade was in 2015. I guess that's yet another sign that the PC is over, because PC upgrades have gotten really boring. It took 5 years for me to muster up the initiative to Full Article
ow Good Cop & Bad Cop: Laying Down the Law and Keeping People Happy As an Independent Business Owner By feedproxy.google.com Published On :: Sat, 28 Apr 2012 00:51:13 +0000 Earlier this week I met up for coffee with a client of mine. The two of us originally met when his employeer was my client and after leaving that job he hired me to customize his personal blog and we formed our own client/designer relationship. I was excited when he emailed me last week with the […] Full Article Business Clients
ow Let’s talk about how much I suck at business lately…. By feedproxy.google.com Published On :: Thu, 29 Jan 2015 21:27:08 +0000 A couple weeks ago, I saw a tweet come through my Twitter timeline from my buddy Tim Smith, a designer and podcaster saying, “2014 was my worst year in freelance. My business revenue declined by ~10k.” I immediately related, but hesitated to reply. Who wants to talk about their failures? Business being slow is actually pretty […] Full Article Business Interviews Liz Podcast
ow How To Design An Iconic Logo By www.noupe.com Published On :: Fri, 08 May 2020 05:46:01 PDT https://www.noupe.com/design/how-to-design-an-iconic-logo.html Full Article
ow Should Designers Learn How to Code? By thenextweb.com Published On :: Fri, 08 May 2020 05:46:20 PDT https://thenextweb.com/growth-quarters/2020/05/08/should-designers-learn-how-to-code-syndication/ Full Article
ow How To Build A Vue Survey App Using Firebase Authentication And Database By www.smashingmagazine.com Published On :: Fri, 08 May 2020 13:10:00 PDT https://www.smashingmagazine.com/2020/05/vue-survey-app-firebase-authentication-database/ Full Article
ow OpenCV Directly in the Browser (WebAssembly and webworker) By aralroca.com Published On :: Sat, 09 May 2020 11:11:00 PDT https://aralroca.com/blog/opencv-in-the-web Full Article
ow The invisible injury: How concussions have changed our lives By feedproxy.google.com Published On :: Mon, 09 Mar 2020 14:01:37 EDT 'It can happen to you anywhere, at any moment, and just change your world' Full Article
ow Invisible Disabilities: Break Down The Barriers By feedproxy.google.com Published On :: Mon, 23 Mar 2020 10:29:53 EDT Many people think the word “disability” means people who require a wheelchair or walker. In reality, however, there is much more to disability than meets the eye. Full Article
ow What life is like now for 3 people with brain injuries — and their loved ones By feedproxy.google.com Published On :: Mon, 20 Apr 2020 10:01:48 EDT Ken Rekowski, Shawn Hill and Jodi Graham are dealing with COVID-19 in different ways Full Article
ow How to Help Someone With Post-Traumatic Stress Disorder By feedproxy.google.com Published On :: Tue, 28 Apr 2020 14:29:13 EDT Listening without judgement is one of the best things you can do for someone with PTSD. Full Article
ow My PTSD can be a weight. But in this pandemic, it feels like a superpower. By feedproxy.google.com Published On :: Fri, 01 May 2020 10:44:28 EDT For the first time, it seems, the entire world knows what it’s like to live inside my head. Full Article
ow Video Tutorial: How to Turn Anything into Gold in Photoshop By blog.spoongraphics.co.uk Published On :: Wed, 08 Apr 2020 07:00:16 +0000 In today’s Adobe Photoshop tutorial I’m going to show you how to turn anything into gold using this simple combination of Photoshop filters and tools. The effect smooths out the details of a regular image and adds an array of shiny reflections to mimic the appearance of a polished metal statue. A gradient overlay gives […] The post Video Tutorial: How to Turn Anything into Gold in Photoshop appeared first on Spoon Graphics. Full Article Videos gold effect photoshop photoshop gold effect photoshop gold effect tutorial photoshop tutorial video video tutorial
ow Spoon Graphics Turns 13 Years Old — Traffic Down, Subscribers Up! By blog.spoongraphics.co.uk Published On :: Mon, 13 Apr 2020 07:00:34 +0000 It’s that time of year when Spoon Graphics gets a little older, with 2020 marking 13 years of tutorial creating, freebie sharing and article writing on what started as a blog that was attached to my portfolio website in 2007. Every April I take some time to reflect on the past 12 months and talk […] The post Spoon Graphics Turns 13 Years Old — Traffic Down, Subscribers Up! appeared first on Spoon Graphics. Full Article News anniversary birthday milestone spoon graphics
ow Own This Extensive Font Library Worth $4265 for Just $29 By blog.spoongraphics.co.uk Published On :: Wed, 15 Apr 2020 07:00:40 +0000 High-quality fonts can be really expensive and are often the most costly tool a designer needs, so when a massive saving like this comes along it’s hard to let it pass by! This brand new bundle contains 16 hand-picked typefaces, containing hundreds of individual fonts, chosen specifically for their quality and versatility. These fonts are […] The post Own This Extensive Font Library Worth $4265 for Just $29 appeared first on Spoon Graphics. Full Article News bundle deal design cuts fonts
ow Video Tutorial: How to Create an Embroidered Patch Design in Illustrator By blog.spoongraphics.co.uk Published On :: Wed, 22 Apr 2020 07:00:22 +0000 In today’s Adobe Illustrator tutorial I’m going to take you through the process of creating a colourful embroidered patch, based on the kinds of designs associated with National Parks. The artwork will incorporate a landscape scene at sunset, which helps to keep the design simple with a silhouette graphic and a warm colour palette. Stick […] The post Video Tutorial: How to Create an Embroidered Patch Design in Illustrator appeared first on Spoon Graphics. Full Article Videos embroidered patch embroidered patch tutorial illustrator illustrator patch design illustrator tutorial patch design video video tutorial
ow How to Help Someone With Post-Traumatic Stress Disorder By feedproxy.google.com Published On :: Tuesday, April 28, 2020 - 2:29pm Listening without judgement is one of the best things you can do for someone with PTSD. Full Article
ow Get to Know the Person with TBI By feedproxy.google.com Published On :: Wednesday, April 29, 2020 - 1:42pm Full Article
ow My PTSD can be a weight. But in this pandemic, it feels like a superpower. By feedproxy.google.com Published On :: Friday, May 1, 2020 - 10:44am For the first time, it seems, the entire world knows what it’s like to live inside my head. Full Article
ow How to use social proof for gaining credibility and boosting conversions By feedproxy.google.com Published On :: Fri, 21 Feb 2020 05:59:00 +0000 The internet has given many web companies the chance to rise and meet new audiences. The challenge for these companies is the competition to grow the customer base and build the companies’ credibility. One of the ways to do that is to use social proof as a marketing tool. Many people make decisions regarding a […] Full Article Blog How-to & tutorials UX Web design
ow How to make sure your call to action buttons convert the way you want By feedproxy.google.com Published On :: Wed, 11 Mar 2020 07:37:59 +0000 You are probably already familiar with the concept of call to action, but if somehow you are new to web design, call to action refers to elements in a page that request an action from its visitors. If you are indeed new to web design, there are high chances that you will neglect this important […] Full Article Blog How-to & tutorials UX Web design
ow How to secure a website and be foolproof against surprises By feedproxy.google.com Published On :: Tue, 31 Mar 2020 11:14:32 +0000 The internet is an excellent resource for all kinds of information. However, with all of its advantages, there are also some things that you need to pay attention too. Knowing how to secure a website is a must, and anyone with an online identity needs to pay attention to this. As the internet can also […] Full Article Blog How-to & tutorials Web design
ow How to Design Sales Funnels That Convert By feedproxy.google.com Published On :: Thu, 09 Apr 2020 09:19:40 +0000 According to Pardot, 79% of marketing campaigns never lead to purchases. Only 4% of website visitors make up their mind to make a purchase. So you ask yourself, where does the other 96% go? Well, they never buy, but there is something you can do. What they need is encouragement and nurturing. Whilst this is […] Full Article Blog How-to & tutorials Marketing Web design
ow How to Improve User Experience Design: Tips to Increase Conversion Rates By feedproxy.google.com Published On :: Fri, 24 Apr 2020 13:53:03 +0000 No one can deny that UX (user experience) is the foundation of any website. This is the main reason why many website owners always look for ways to improve it. Some even spend a lot of money on design because of it. So, what is UX design exactly? And what is the difference between user […] Full Article Blog How-to & tutorials UX Web design
ow How to personalize the mobile experience for app users By feedproxy.google.com Published On :: Sun, 03 May 2020 08:42:02 +0000 Mobile user experience somehow ‘imposed itself’ with all the development and improvement of mobile communication devices. In fact, it is the quality of user experience that divides outstanding apps from their less outstanding counterparts. The same factor enables startups to learn from big brands and to improve their products. User experience for mobile applications – […] Full Article Blog How-to & tutorials UX Web design
ow solar power advantages and disadvantages By solaronas.site123.me Published On :: 2019-10-05 13:56:00 Solar power is a free natural source of energy from up above, it's a gift of God, we call it the sun and it is for everyone to use. Solar cost may be much lower than you might expect. Full Article
ow Override window.alert By feedproxy.google.com Published On :: Tue, 11 Feb 2020 03:39:58 +0000 For years the only bit of feedback web developers could get was via alert("{str}") calls. These days we have the web console but, in rare cases, we don’t have a console and alert calls are our only window into a value at a given time. One problem: if an alert sneaks into production code, your […] The post Override window.alert appeared first on David Walsh Blog. Full Article JavaScript Quick Tips
ow How to Specify User Agent with cURL By feedproxy.google.com Published On :: Tue, 25 Feb 2020 11:06:35 +0000 Over the years I’ve shared how to perform a number of actions with cURL: how to send POST data, how to retrieve headers, follow redirects, check GZIP encoding, and more. Another useful cURL directive is sending the user agent, as some servers respond with different content or headers depending on the user agent. Let’s have […] The post How to Specify User Agent with cURL appeared first on David Walsh Blog. Full Article Quick Tips Shell
ow How to Set a Default Commit Message By feedproxy.google.com Published On :: Mon, 02 Mar 2020 15:23:46 +0000 Having a default commit message is really useful for a number of reasons: It can formalize your commit messages It serves as a good reminder for the information you should add to your commit message, like issue number If you set it to “Drunk AF, don’t accept this” To set a default commit message on […] The post How to Set a Default Commit Message appeared first on David Walsh Blog. Full Article git Quick Tips Shell
ow How to Simulate Long HTTP Requests By feedproxy.google.com Published On :: Tue, 17 Mar 2020 14:40:48 +0000 It happens less frequently these days but there are times when we need to accommodate for a HTTP request timing out. The service could be down, under heavy traffic, or just poorly coded, or any host of other issues. Whenever I need to simulate a long HTTP request, I use a bit of PHP to […] The post How to Simulate Long HTTP Requests appeared first on David Walsh Blog. Full Article PHP Quick Tips
ow How to Cancel a Fetch Request By feedproxy.google.com Published On :: Tue, 17 Mar 2020 18:25:29 +0000 JavaScript promises have always been a major win for the language — they’ve led to a revolution of asynchronous coding that has vastly improved performance on the web. One shortcoming of native promises is that there’s no true way to cancel a fetch…until now. A new AbortController has been added to the JavaScript specification that […] The post How to Cancel a Fetch Request appeared first on David Walsh Blog. Full Article AJAX JavaScript Promises
ow How to Create a CSS-Tricks Custom Scrollbar By feedproxy.google.com Published On :: Mon, 13 Apr 2020 12:41:20 +0000 Chris Coyier of CSS-Tricks is an amazing engineer and blogger. He’s not only creative but has always had the drive to put his thoughts to work, no matter how large. He also has a good eye for the little things that can make CSS-Tricks or your site special. One of those little things is his […] The post How to Create a CSS-Tricks Custom Scrollbar appeared first on David Walsh Blog. Full Article CSS
ow How to Add Native Keyword Aliases to Babel By feedproxy.google.com Published On :: Thu, 16 Apr 2020 12:09:13 +0000 Those of you who follow this blog know that not every blog post is an endorsement of a technique but simply a tutorial how to accomplish something. Sometimes the technique described is probably not something you should do. This is one of those blog posts. The Babel parser is an essential tool in the web […] The post How to Add Native Keyword Aliases to Babel appeared first on David Walsh Blog. Full Article JavaScript Theory / Ideas
ow How to Play Retro Game ROMs on Windows By feedproxy.google.com Published On :: Mon, 20 Apr 2020 13:27:53 +0000 Video games are always a fun time, something we desperately need during our COVID lockdown. A few years back I shared how to play retro games on Mac, as well as how to patch games to play popular ROM hacks like Grand Poo World and Invictus. One disadvantage that Macs have, however, is performance — […] The post How to Play Retro Game ROMs on Windows appeared first on David Walsh Blog. Full Article Games
ow How to Display Mode-Specific Images By feedproxy.google.com Published On :: Mon, 04 May 2020 13:05:43 +0000 Now that we have most of the basics of HTML and CSS in the browser, we’ve begun implementing new features that I would consider “quality of life” improvements, many of which have been inspired by mobile. One great example is the CSS prefers-color-scheme media query, which allows developers to cater their design to system theme […] The post How to Display Mode-Specific Images appeared first on David Walsh Blog. Full Article CSS Quick Tips