Boost Visual Analytics Dashboard User Experience with Parameters

Advanced analytics, business intelligence (BI), and the data that drives them are largely unused by the organizations that invest heavily in their promise. Industry insiders and analysts took notice of these trends and have reported on them regularly in recent years. According to Gartner, 97 percent of organizational data goes unused, and 87 percent of organizations have low levels of BI and advanced analytical maturity.

Many factors contribute to these challenges, and we're not going to pretend that we know them all or that there's an easy fix. Yet, our users have shown us that enhanced usability and a focused approach to analytics dashboard software can improve application stickiness.

How AI Is Changing the IT and AV Industries

AI in the IT and AV Industries

As the IT (information technology) and AV (audiovisual) industries further develop their usage of artificial intelligence (AI), there is going to be an incredible amount of change that goes with it. AI has already transformed how we use computers and has lasting impacts on the future of several industries. This is especially true for sectors that rely heavily on technology.

Something to consider is how AI is affecting these two industries. Information Technology, for example, seems to be more focused on commercial clients, but AV tends to trend more towards residential clients (although there are plenty of business needs as well). This leads to a different approach to implementing AI in the technology and applications used within IT and AV.

Breaking Down Bulky Builds With Netlify And Next.js

One of the biggest pains of working with statically generated websites is the incrementally slower builds as your app grows. This is an inevitable problem any stack faces at some point and it can strike from different points depending on what kind of product you are working with.

For example, if your app has multiple pages (views, routes) when generating the deployment artifact, each of those routes becomes a file. Then, once you’ve reached thousands, you start wondering when you can deploy without needing to plan ahead. This scenario is common on e-commerce platforms or blogs, which are already a big portion of the web but not all of it. Routes are not the only possible bottleneck, though.

A resource-heavy app will also eventually reach this turning point. Many static generators carry out asset optimization to ensure the best user experience. Without build optimizations (incremental builds, caching, we will get to those soon) this will eventually become unmanageable as well — think about going through all images in a website: resizing, deleting, and/or creating new files over and over again. And once all that is done: remember Jamstack serves our apps from the edges of the Content Delivery Network. So we still need to move things from the server they were compiled at to the edges of the network.

On top of all that, there is also another fact: data is often dynamic, meaning that when we build our app and deploy it, it may take a few seconds, a few minutes, or even an hour. Meanwhile, the world keeps spinning, and if we are fetching data from elsewhere, our app is bound to get outdated. Unacceptable! Build again to update!

Build Once, Update When Needed

Solving Bulky Builds has been top of mind for basically every Jamstack platform, framework, or service for a while. Many solutions revolve around incremental builds. In practice, this means that builds will be as bulky as the differences they carry against the current deployment.

Defining a diff algorithm is no easy task though. For the end-user to actually benefit from this improvement there are cache invalidation strategies that must be considered. Long story short: we do not want to invalidate cache for a page or an asset that has not changed.

Next.js came up with Incremental Static Regeneration (ISR). In essence, it is a way to declare for each route how often we want it to rebuild. Under the hood, it simplifies a lot of the work to the server-side. Because every route (dynamic or not) will rebuild itself given a specific time-frame, and it just fits perfectly in the Jamstack axiom of invalidating cache on every build. Think of it as the max-age header but for routes in your Next.js app.

To get your application started, ISR just a configuration property away. On your route component (inside the /pages directory) go to your getStaticProps method and add the revalidate key to the return object:

export async function getStaticProps() {
  const { limit, count, pokemons } = await fetchPokemonList()

  return {
    props: {
      limit,
      count,
      pokemons,
    },
    revalidate: 3600 // seconds
  }
}

The above snippet will make sure my page rebuilds every hour and fetch for more Pokémon to display.

We still get the bulk-builds every now and then (when issuing a new deployment). But this allows us to decouple content from code, by moving content to a Content Management System (CMS) we can update information in a few seconds, regardless of how big our application is. Goodbye to webhooks for updating typos!

On-Demand Builders

Netlify recently launched On-Demand Builders which is their approach to supporting ISR for Next.js, but also works across frameworks including Eleventy and Nuxt. In the previous session, we established that ISR was a great step toward shorter build-times and addressed a significant portion of the use-cases. Nevertheless, the caveats were there:

  1. Full builds upon continuous deployment.
    The incremental stage happens only after the deployment and for the data. It is not possible to ship code incrementally
  2. Incremental builds are a product of time.
    The cache is invalidated on a time basis. So unnecessary builds may occur, or needed updates may take longer depending on the revalidation period set in the code.

Netlify’s new deployment infrastructure allows developers to create logic to determine what pieces of their app will build on deployment and what pieces will be deferred (and how they will be deferred).

  • Critical
    No action is needed. Everything you deploy will be built upon push.
  • Deferred
    A specific piece of the app will not be built upon deploy, it will be deferred to be built on-demand whenever the first request occurs, then it will be cached as any other resource of its type.

Creating an On-Demand builder

First of all, add a netlify/functions package as a devDependency to your project:

yarn add -D @netlify/functions

Once that is done, it is just the same as creating a new Netlify Function. If you have not set a specific directory for them, head on to netlify/functions/ and create a file of any name to your builder.

import type { Handler } from '@netlify/functions'
import { builder } from '@netlify/functions'

const myHandler: Handler = async (event, context) => {
  return {
    statusCode: 200,
    body: JSON.stringify({ message: 'Built on-demand! 🎉' }),
  }
}
export const handler = builder(myHandler)

As you can see from the snippet above, the on-demand builder splits apart from a regular Netlify Function because it wraps its handler inside a builder() method. This method connects our function to the build tasks. And that is all you need to have a piece of your application deferred for building only when necessary. Small incremental builds from the get-go!

Next.js On Netlify

To build a Next.js app on Netlify there are 2 important plugins that one should add to have a better experience in general: Netlify Plugin Cache Next.js and Essential Next-on-Netlify. The former caches your NextJS more efficiently and you need to add it yourself, while the latter makes a few slight adjustments to how Next.js architecture is built so it better fits Netlify’s and is available by default to every new project that Netlify can identify is using Next.js.

On-Demand Builders With Next.js

Building performance, deploy performance, caching, developer experience. These are all very important topics, but it is a lot — and takes time to set up properly. Then we get to that old discussion about focusing on Developer Experience instead of User Experience. Which is the time things go to a hidden spot in a backlog to be forgotten. Not really.

Netlify has got your back. In just a few steps, we can leverage the full power of the Jamstack in our Next.js app. It's time to roll up our sleeves and put it all together now.

Defining Pre-Rendered Paths

If you have worked with static generation inside Next.js before, you have probably heard of getStaticPaths method. This method is intended for dynamic routes (page templates that will render a wide range of pages). Without dwelling too much on the intricacies of this method, it is important to note the return type is an object with 2 keys, like in our Proof-of-Concept this will be [Pokémon]dynamic route file:

export async function getStaticPaths() {
  return {
    paths: [],
    fallback: 'blocking',
  }
}
  • paths is an array carrying out all paths matching this route which will be pre-rendered
  • fallback has 3 possible values: blocking, true, or false

In our case, our getStaticPaths is determining:

  1. No paths will be pre-rendered;
  2. Whenever this route is called, we will not serve a fallback template, we will render the page on-demand and keep the user waiting, blocking the app from doing anything else.

When using On-Demand Builders, make sure your fallback strategy meets your app’s goals, the official Next.js docs: fallback docs are very useful.

Before On-Demand Builders, our getStaticPaths was slightly different:

export async function getStaticPaths() {
  const { pokemons } = await fetchPkmList()
  return {
    paths: pokemons.map(({ name }) => ({ params: { pokemon: name } })),
    fallback: false,
  }
}

We were gathering a list of all pokémon pages we intended to have, map all the pokemon objects to just a string with the pokémon name, and forwarding returning the { params } object carrying it to getStaticProps. Our fallback was set to false because if a route was not a match, we wanted Next.js to throw a 404: Not Found page.

You can check both versions deployed to Netlify:

The code is also open-sourced on Github and you can easily deploy it yourself to check the build times. And with this queue, we slide onto our next topic.

Build Times

As mentioned above, the previous demo is actually a Proof-of-Concept, nothing is really good or bad if we cannot measure. For our little study, I went over to the PokéAPI and decided to catch all pokémons.

For reproducibility purposes, I capped our request (to 1000). These are not really all within the API, but it enforces the number of pages will be the same for all builds regardless if things get updated at any point in time.

export const fetchPkmList = async () => {
  const resp = await fetch(`${API}pokemon?limit=${LIMIT}`)
  const {
    count,
    results,
  }: {
    count: number
    results: {
      name: string
      url: string
    }[]
  } = await resp.json()
  return {
    count,
    pokemons: results,
    limit: LIMIT,
  }
}

And then fired both versions in separated branches to Netlify, thanks to preview deploys they can coexist in basically the same environment. To really evaluate the difference between both methods the ODB approach was extreme, no pages were pre-rendered for that dynamic route. Though not recommended for real-world scenarios (you will want to pre-render your traffic-heavy routes), it marks clearly the range of build-time performance improvement we can achieve with this approach.

Strategy Number of Pages Number of Assets Build time Total deploy time
Fully Static Generated 1002 1005 2 minutes 32 seconds 4 minutes 15 seconds
On-Demand Builders 2 0 52 seconds 52 seconds

The pages in our little PokéDex app are pretty small, the image assets are very lean, but the gains on deploy time are very significant. If an app has a medium to a large amount of routes, it is definitely worth considering the ODB strategy.

It makes your deploys faster and thus more reliable. The performance hit only happens on the very first request, from the subsequent request and onward the rendered page will be cached right on the Edge making the performance exactly the same as the Fully Static Generated.

The Future: Distributed Persistent Rendering

On the very same day, On-Demand Builders were announced and put on early access, Netlify also published their Request for Comments on Distributed Persistent Rendering (DPR).

DPR is the next step for On-Demand Builders. It capitalizes on faster builds by making use of such asynchronous building steps and then caching the assets until they’re actually updated. No more full-builds for a 10k page's website. DPR empowers the developers to a full control around the build and deploy systems through solid caching and using On-Demand Builders.

Picture this scenario: an e-commerce website has 10k product pages, this means it would take something around 2 hours to build the entire application for deployment. We do not need to argue how painful this is.

With DPR, we can set the top 500 pages to build on every deploy. Our heaviest traffic pages are always ready for our users. But, we are a shop, i.e. every second counts. So for the other 9500 pages, we can set a post-build hook to trigger their builders — deploying the remaining of our pages asynchronously and immediately caching. No users were hurt, our website was updated with the fastest build possible, and everything else that did not exist in cache was then stored.

Conclusion

Although many of the discussion points in this article were conceptual and the implementation is to be defined, I am excited about the future of the Jamstack. The advances we are doing as a community revolve around the end-user experience.

What is your take on Distributed Persistent Rendering? Have you tried out On-Demand Builders in your application? Let me know more in the comments or call me out on Twitter. I am really curious!

References

What is UX Design?

Picture this: you’re about to enter a building in your neighborhood. This could be an office building, a market, a library. Your cell phone buzzes in your pocket, and you’re a bit distracted as you approach the front door. You...

The post What is UX Design? appeared first on Treehouse Blog.

How We Used Arctype to Improve User Onboarding

Guiding Users to an 'A-ha' Moment

In 2020, ex-FB exec Chamath Palihapitiya shared his secret for growing Facebook to its first billion users. He had a laser focus on only 3 goals: getting users in the door, getting users to experience core value as fast as possible, and delivering core value as often as possible.

We wanted to see if we could apply these principles at Arctype and recreate the magic that Chamath engineered at Facebook. So last month we focused on the second goal, getting users to experience core value, and we saw some impressive results.

Vectornator 4.0 Review: The Popular Graphic Design App Gets a Makeover

Editor’s note: We partnered up with the team of Vectornator and to showcase their new app version in this sponsored review.

Touted as the design tool of the future, Vectornator 4.0 is the latest installment of the popular free graphic design application for macOS and iPad. This new version underscores the commitment of the team behind Vectornator to perfect their product and offer graphic designers the best app a designer can have. 

Recently, we had the opportunity of using Vectornator 4.0 to get a feel of the application and share our experience. 

If you’re in the market for a free illustrator alternative or reliable graphic design app, you should read this review. 

This article will highlight and review the major changes in the Vectornator 4.0 while sharing some impressions of the new features.

About Vectornator

For those who don’t know, Vectornator is a powerful vector design platform that allows you to create beautiful illustrations, amazing layouts, and sophisticated user interface designs. It was launched in 2017 as a pioneering professional graphic design software on iPad, but one designed with simplicity and usability in mind.

It’s a platform made by creatives (the team at Linearity), for creatives, and its intuitive interface and sleek design make design and illustration work seamless. 

Features of Vectornator 4.0

Let’s have a look at all the fresh new features of the latest update!

Home Screen transformed: In Vectornator 4.0, the improvements start from the home screen. When you open the application, you will be greeted by a redesigned home screen.

The new home screen has a “News and recent documents” tab on the top-left. The rest of the screen is populated with recently edited documents in a smaller size. 

Reimagined Design Interface: If you’ve used Vectorator on Mac before, you’ll notice the changes to the design interface immediately you open the app. The entire interface has been reimagined and designed to follow the native macOS design pattern. 

Now, Vectornator feels more like a native Mac application than ever before. The icons and buttons have the characteristic MacOS feel. So you will recognize the buttons and know their functions without a second thought.

Your layers are now on the right side of the screen, making it easy to lock and unlock the layer you are working on. 

Improved brush editor: In the latest version of Vectornator, the brush tools’ performance and responsiveness were enhanced significantly. The brush tool is pressure sensitive. 

When you press your pen gently, the brush will create thin lines. When you press hard, the brush will produce think lines. This function makes drawing lifelike and the finished work interesting. 

Note: This function is only available on Apple touch screen devices, iPad. Also, you can use the pressure-sensitive brush if you have a Wacom pad – Bamboo slate or Bamboo folio.

More Icons (SF symbols): The Vectornator 4.0 comes with a boatload of icons, essentially the entire SF symbols for Apple.

SF symbols are designed to integrate seamlessly with Apple’s system font, San Francisco. You can access over 2,000 free-to-use SF symbols inside Vectornator.

The SF library is on the top-right, next to the iconator. Simply click on the icon to reveal the preinstalled SF symbols and make a selection.

UI designers will find the SF symbols in Vectornator useful. With icons, you can create mockups to depict the information structure and demonstrate the basic functionalities of a product. 

Emoji: It seems the people at Vectornator realized that humans have become fluent in Emoji communication. That explains why the Vectornator 4.0 is equipped with Emojis to expand designers’ communication tools.

Emojis are natively supported in the app. You can access the emoji by clicking on the type tool and searching for emojis that express the emotion you want to show. 

Intuitive Quick Action menu: This is one of the best additions to Vectornator 4.0. The app provides an intuitive, quick action menu that appears right under your selected objects.

Depending on the selected object, the quick actions menu can include; boolean operations, stack order, changing opacity, and more. 

The quick action menu options are dynamic and context-sensitive; they change to suit the object selected. So you the most vital tools will always be within reach. 

In addition to the floating quick actions menu, there’s a quick actions bar on the left-hand side of your design screen. The quick action bar host various functions; including, the Text field, Autotrace, selection tool, eraser, paintbrush, and more.

You can make changes to your image or object with quick actions on the go without search layers and layers of setting for a specific function. 

However, if you find the quick action menu unnecessary, you can turn it off and on via quick settings.

Settings and Quick Settings: Compared to the previous version, the settings tab was reorganized in Vectornator 4.0. Now, the setting is divided into document-specific settings and global settings. This way, you can easily access the setting you need during the edit or general app modification.

The toolbar is the new home of the settings button, a traditional Mac arrangement. Also, you can access the preference windows by pressing “command and +.” 

There are several functions on the preference window, and you can activate or deactivate them by moving the toggle.

User Experience

For me, Vectornator is a complete tool for the modern designer. You can create vector images, design a banner, develop UI mockups or edit an image with Vectornator. 

The frosted glass design gives the app a very sleek modern look. With the whole interface blending into the background, there’s a wonderful sense of depth and immersion. Everything floats on your canvas creating the feeling of freedom and focus on your creations unmatched by any other design tool on the market today.

Why Vectornator should be your preferred graphic design app

Free-to-use: I cannot get over the fact that Vectornator is free to use. The application packs all the features you need to create vectors, User Interfaces, graphics, logos, and more for free. 

Compared to other free vector and graphic design applications, Vectornator is a steal. Vectornator beats other apps in the free-to-use vector design software and rivals premium products like Affinity designer. 

Easy to use: Without question, Vectornator is one of the easiest apps to use as a newbie. Now, you don’t have to search layers and layers of features to find the function you need to manipulate an image. The smart contextual quick action menus and quick action tab make it easy to perform actions on images. 

Neatly stacked features: Vectornator 4.0’s layout is an upgrade to the previous version. The makers of the application seem to have utilized user feedback in designing and stacking the features. Frequently used functions are right in front, while the other functions can be found easily without moving the cursor everywhere. 

Figma integration: Vectornator allows product designers to import Figma designs into the app. Already, product designers can create user-flow wireframes with Vectornator. 

Vectornator integrations:

  • Compatible with Adobe Illustrator and Creative Cloud
  • Supports a wide range of import and export options AI*, PDF*, SVG, PNG, JPG, and individual layer export.
  • Supports iCloud Sync, drag and drop file workflow, keyboard shortcuts, split view, and custom fonts.
  • Optimized for iPad Pro and Apple pencil.
  • Supports digital input devices like Apple Pencil, Adonit Pixel Stylus, Bamboo
  • Stylus, Bamboo Slate, and Bamboo Folio.
  • Gives users seamless access to royalty-free images with in-app Unsplash integration.
  • Contains a library of over 80k royalty-free icons users can use in their designs.

Lightweight: Graphic and vector design apps are notorious for hogging system resources. In the case of Vectornator, I did not notice a significant change (if any) in the performance of my Mac while running the app. 

However, the impact of an app on your system’s performance depends on the host laptop’s capacity.

Cons

No tooltips for quick action buttons: Yes, Vectornator is easy to use, but there’s room for improvement. Although I am not a stranger to photo editing and vector design apps, I still noticed that the quick action buttons and other functions in Vectonator did not offer tooltips. 

This can be a problem for users who are starting their design journey with Vectornator. These individuals may be unable to perform simple edits without watching a tutorial on how to use Vectornator. Quick tips help users to learn and utilize a function on the go. 

If you already work in a photo-editing environment or know how to create vectors, edit images on Vectornator, this isn’t a problem for you. 

Download and installation

Using Vectornator starts with installing the application. Before anything, check the version of your macOS to ensure that you meet the requirement to install Vectornator 4.0.

Visit the Apple store to download the application or click this link.

Conclusion 

Whether you’re looking for a free Adobe Illustrator alternative or need a powerful, easy-to-use vector design software, Vectornator 4.0 will meet your needs. 

Vectornator is a great software for designers of all skill levels. If you’ve been overwhelmed by vector software in the past, Vectornator is an excellent place to start.

There is no upfront cost to using the app. And it is expected to remain free for the foreseeable future. 

For me, Vectornator is a gift begging to be used. You can edit images, create vectors, design user interfaces and perform other creative design functions with the application.

As it turns, Vectornator is a gift that keeps on giving. The parent company, Linearity, is running a giveaway to celebrate and promote the launch of Vectornator 4.0. If you’re reading this article before May 4, you can still enter the competition.

The post Vectornator 4.0 Review: The Popular Graphic Design App Gets a Makeover appeared first on Codrops.

Are We Wasting Our Time Writing UIs?

A huge focus and time suck in the last 3 years has been how do I write a better UI, what is the user experience, how do I relate to the user via a screen with text, colorful shapes, and maintain the brand? Many companies have launched initiatives to make the software user interface more usable, aligning the user to the business process. All of these efforts are backed up with some ROI. The density of data presented on a page is changing, UI designers and User Experience teams are monitoring and trying to figure out how to get just the right data on a screen and make sure that there are not too many steps to complete a task. This is a long and never-ending road.

Looking back is it really working? Are users happier with the new UI? From what I am seeing no, users cling to old UI’s for ERP packages like Oracle and SAP, they are afraid to upgrade because they have to retrain the user on the new UI.  Teaching people how to use an application and system is a daunting task. Even if the new SAP Fiori experience is better and role-based vs task-oriented, people still need to be trained on the UI, trained on the role, trained on the workflow, and people have to change what they are doing and learn something new and different.

Building Front-End App Experiences With Clicks, Not Code

This is the fourth article documenting what I’ve learned from a series of 10 Trailhead Live video sessions on Modern App Development on Salesforce and Heroku. In these articles, we’re focusing on how to combine Salesforce with Heroku to build an “eCars” app — a sales and service application for a fictitious electric car company (“Pulsar”) that allows users to customize and buy cars, service techs to view live diagnostic info from the car, and more. In case you missed my previous article on Data Modeling, you can read it here.

Just as a quick reminder: I’ve been following this Trailhead Live video series to brush up and stay current on the latest app development trends on these platforms that are key to my career and business. I’ll be sharing each step for building the app, what I’ve learned, and my thoughts from each session. These series reviews are both for my own edification as well as for others who might benefit from the content.

5 Reasons Why Security and User Experience Go Hand in Hand

With the mad rush for digital transformation and the need to keep customers content with very easy to use, responsive, and effective applications, it should come as no surprise that the world we live in has made us all dependent on the applications we use to conduct our daily lives, from banking to grocery shopping to how we keep in contact with our loved ones. However, this need for applications and digital services to continually keep pace with evolving user demands is coupled with the challenge of mitigating an unprecedented rise in malicious security threats.

The risk of security threats and cyber incidents are on the rise, with the 2020 State of SecOps and Automation Report finding that the majority of organizations report that increasing alert volumes are creating problems for  IT security teams, and 93 percent are unable to address all alerts the same day. 

Permissions on the Web Suck

I am a fan of progressive web apps and the powers that they bestow on web developers to build the next generation of applications. We can write web applications that work offline, download large files in the background, send push notifications, and much more. I was so excited about push notifications on the web that I wrote a whole talk about it in 2015 and was fortunate enough to give it in a bunch of places around the world.

But perhaps I was a little too prescient with that talk title, "The web is getting pushy." Web applications themselves are getting pushy and now I see tweets like this:

Creating A CAD Application In Java

I'm a Java (JavaFX) freelance consultant, Software Engineer and Software Designer and a few months ago I finished a CAD application for a client.

This is a CAD application whose purpose is to calculate the energy efficiency of dwellings (or multiple dwellings). It can be seen as an application similar to Autocad (which is used in civil engineering, architecture, etc.) but with the specific purpose to perform energy efficiency assessments. 

Logging As a Last Resort

Motivation

In software development one often finds themselves investigating issues. Depending on the type of the application, various sources of informations can be available: 

  • screenshots
  • verbal description of the problem
  • metrics
  • logs (application, framework, container, application server, OS, ...)
  • thread and heap dumps

In an ideal world, the exact inputs that caused an issue and the code that failed would be immediately available. In a typical case though, it can take hours of digging through logs and code to understand what happened. Would it not be nice to avoid that?

Why App Developers Need to Adapt CIAM Today More Than Ever

As B2C companies look to offer an elevated user experience across all touchpoints, app developers are increasingly turning to customer identity and access management (CIAM) solutions that can help protect customer data and enhance the customer experience.

Customers have become increasingly receptive to new technologies and are using a wide array of digital solutions such as smartphones, wearable devices, virtual reality (VR), and Internet of Things-enabled systems in their daily lives. These digital solutions have made the execution of tasks easier and faster, bringing about a major change in customers’ behavior – i.e. the need for instant gratification of their demands. 

How Server Location Affects your Users’ Experience

So you finally launched your service worldwide, great! The next thing you’ll see is thousands and thousands of people flooding into your amazing website from all corners of the world expecting to have the same experience regardless of their location.

Here is where things get tricky.