How Blockchain Can Help Re-invent Healthcare

This article was originally published on Blockchain Review. Thank you for supporting the partners who make SitePoint possible.

Ever wondered about blockchain applications in healthcare? This post will give you a well-rounded introduction to the transformative potential of blockchain and set out the complex interrelated issues that stand in the way of change.

As an important step in becoming a doctor, graduating medical school students swear to some form of the Hippocratic Oath.

One of the vows within that oath is “first, do no harm” or “primum nonnocere.”

While most medical professionals live up to this promise on a daily basis, the same cannot be said for the healthcare systems within which they operate.

Despite significant leaps in the medical field, from devices and wearables to genome sequencing and regenerative medicine, individual improvements have not created the fundamental transformation that national healthcare systems require. [1]

Health management and administrative systems remain relatively untouched by technology and regulatory reform and stand ill-equipped to serve the current and future needs of their target populations.

Demographic Stresses

The world is getting older, especially in developed countries, which is placing a significant strain on healthcare systems. According to a 2015 report by the United Nations Department of Economic & Social Affairs [2]:

  • Between 2015 and 2030, the group of over-60s will grow by 56%
  • In 2015, one in eight people worldwide were aged 60 or over. By 2030, seniors are projected to account for one in six people globally.
  • The aging process is most advanced in Europe and Northern America, where more than one in five people are aged 60 or over as of 2015.
  • By 2030, the elderly are expected to account for more than 25% of the populations in Europe and Northern America, 20% in Oceania, 17% in Asia and Latin America and the Caribbean, and 6% in Africa.

In the developing world, particularly Sub-Saharan Africa and Asia, future challenges in healthcare will stem from population increases and economic factors rather than aging.

High population growth coupled with a trickle down of innovations is driving a growing middle-class.

With growth coming almost exclusively from emerging nations, the world’s middle class is expected to expand by another three billion over the next two decades. [3]

Delivering efficient, sustainable and affordable healthcare to the world’s aging population and emerging middle class will become more difficult without profound and substantive changes to national healthcare systems.

While problems are complex, systemic and by no means easily fixed, the vast majority of constraints experienced by healthcare systems can be traced to a single, yet highly corrosive root cause.

Myopic, Outdated & Restrictive Compliance Regulations

The costs, risks and societal sensitivities surrounding healthcare are profound. Due to the sensitive and central role healthcare plays in society, fearful government officials have been scared to make the deep regulatory changes required to reform healthcare.

Officials know they will be punished by the public and politicians more for underregulating — approving a harmful drug, say — than for tightening the approval process, even if doing so delays a useful innovation. – Regina E. Herzlinger

Remember the Obamacare Saga?

Sure you do. It’s still going on today, many years later.

The divisive public and congressional debates. The multitude of vested interests and the tangle of regulations. It’s not hard to understand why the implementation of far-reaching regulatory reforms have been unattainable and generally avoided by politicians.

Data sharing and privacy laws have resulted in gross inefficiencies, industry-wide fragmentation, and the prevention of real innovation in healthcare. HIPAA, for example, the US Health Insurance Portability and Accountability Act, designed to protect health information, imposes strict rules on healthcare providers.

Despite the Act’s noble intention to keep patient data secure and private, it remains a large impediment to efficient patient care mainly because of the difficulties in accessing patient information and restrictions on electronic communications.

Many physicians may be reluctant to embrace EHRs because of malpractice concerns. They may believe that they are better protected against malpractice lawsuits by the handwritten chart system. Furthermore, HIPAA has raised many new issues about data handling. There are also international legal issues about sharing health information. Many unresolved legal concerns surround legal liability in the event of medical errors that are byproducts of health analysis software or EHR data encoding. – A Robust Health Data Infrastructure

Government regulations like HIPAA have caused a host of flow-on problems.

Healthcare management systems designed to adhere to such restrictive regulations are antiquated and fragmented. Bloated systems that run on paper and siloed record-keeping practices have created healthcare management systems that are inefficient, fragmented, isolated and opaque.

The shift towards electronic health records (EHR) has done little to improve the splintered nature of healthcare. A severe lack of interoperability within organizations and at the inter-organizational level means that coordination remains minimal. EHR’s are fragmented across hospitals, private practices, labs, pharmacies and many other industry players. [6]

On average, Americans visit 16 different doctors in their lifetime. While both the HITECH and the Affordable Care Act’s now enable and in some cases mandate that data from your doctor’s visits be stored digitally, medical records and results from different facilities and physicians are often stored in incompatible databases. – Brian Forde

Real-world Implications for Patient Health

The inability to exchange and make use of electronic health records serves as a major impediment to the development of a robust data infrastructure. [8] As you can imagine, when hospitals, clinics, insurers, governments and doctor’s offices are unable to share information, this has negative outcomes for patient health.

Einer Elhauge, Founding Director of the Petrie-Flom Center for Health Law Policy, Biotechnology & Bioethics at Harvard writes:

Just as too many cooks can spoil the broth, too many decision makers can spoil health care. Individual decision makers responsible for only one fragment of a relevant set of health care decisions may fail to understand the full picture, may lack the power to take all the appropriate actions given what they know, or may even have affirmative incentives to shift costs onto others. All these forms of fragmentation can lead to bad health care decisions. [9]

Take a look at this example scenario.

A patient seeks medical advice to find a remedy for his constant fatigue and muscle aches.

He/she visits a number of doctors, each a specialist in their respective areas and even visits the hospital on one occasion.

He/she receives a battery of tests from each doctor as well as the hospital and is prescribed a range of drugs.

The patient’s condition proceeds to deteriorate, so he/she decides to visit a new doctor who continues a new testing and treatment regime. Throughout the process, the medical professionals treating the patient have little communication and share minimal information on the patient’s medical history.

Even though the doctors who treated the patient in this fictitious, albeit credible real-world example may have followed the right medical procedures to treat the problems they were trained to handle, the fragmented nature of the healthcare system resulted in no co-ordination and ultimately substandard patient care.

The incapacity to share vital information led doctors to be unable to see the patient’s bigger picture which could have shed further light on the health condition. Information sharing between doctors would likely have resulted in better treatment and a reduction in patient, doctor and insurer costs that accompanied needless treatments.

Information sharing between doctors would likely have resulted in better treatment and a reduction in patient, doctor and insurer costs that accompanied needless treatments.

The corrosive impact of government regulations doesn’t end here.

Fragmented, siloed record-keeping practices and systems that lack basic levels of interoperability are responsible for other major problems in healthcare.

There is now a severe lack of advanced data available for clinical and scientific research and economic, behavioral and infrastructure purposes. With little meaningful data, it’s difficult for governments and the healthcare industry to see the bigger picture and make informed decisions to improve the quality of patient care.

There is also insufficient insurable data for the most at-risk and underserved citizens and the tracking of population health trends. [10]

Perhaps the most destructive impact of fragmentation and the inability to share information is that it has caused deep inefficiencies. Healthcare costs, in the United States, for example, have spiraled out of control.

According to the CDC, health expenditures as a percentage of GDP have risen some 4.5% since the year 2000. [11]

Health expenditures % of GDP:

  • 2000: 13.3%
  • 2009: 17.3%
  • 2014: 17.4%
  • 2015: 17.8%

High costs have contributed to insurance companies’ reluctance to insure the population and provide an adequate range of services.

Many national healthcare systems are so inefficient they have become unable to deliver any form of care to the most vulnerable and at-risk members of society. Many are even failing to deliver adequate care to those that can afford it.

As demographic shifts take place, these inefficiencies will worsen. The reinvention of the national healthcare systems is now required.

Blockchain technology is a key tool to achieve healthcare objectives for developing and “re-developing” nations.

One of the fundamental goals that governments and industry seek to achieve is to provide improved quality of healthcare at lower healthcare costs. [12] Making this goal a reality will require governments and industry to play different, but equally important roles.

Governments: must lead change through regulatory reforms that incorporate technological advances and foster an environment designed around competitive collaboration and innovation amongst insurers, healthcare providers, and regulators. It’s equally imperative for governments to participate in technological innovation programs and R&D to support the development of a robust health data infrastructure.

It’s equally imperative for governments to participate in technological innovation programs and R&D to support the development of a robust health data infrastructure.

Industry: Transforming the

Continue reading %How Blockchain Can Help Re-invent Healthcare%


Source: Sitepoint

Animating Bootstrap Carousels with GSAP’s Animation Library

In a previous post, I covered the process of converting a Bootstrap carousel into a full-screen carousel with a random initial image. In this article, I’ll build on that and cover the art of animating Bootstrap carousels, drawing on the assistance of GSAP (GreenSock Animation Platform), a popular JavaScript library.

Animating Bootstrap carousels: a carousel horse wearing the GSAP cape

Before going any further, let’s look at what we’ll be building.

Building the Carousel

Be sure to include Bootstrap and jQuery (Bootstrap’s JavaScript components require it) in your page — for example, from a CDN:

<!DOCTYPE HTML>
<html>
  <head>
    <meta charset="utf-8">
    <title>Using GSAP to Animate Bootstrap Carousels</title>
    <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
  </head>
  <body>
    ...
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
  </body>
</html>

The basic structure of our carousel looks like this:

<div id="mycarousel" class="carousel slide" data-ride="carousel">
  <ol class="carousel-indicators">
    <li data-target="#mycarousel" data-slide-to="0" class="active"></li>
    <li data-target="#mycarousel" data-slide-to="1"></li>
  </ol>

  <div class="carousel-inner">

    <!-- first slide -->
    <div class="carousel-item first active" id="1">
      <!-- content here -->
    </div>

    <!-- second slide -->
    <div class="carousel-item second" id="2">
      <!-- content here -->
    </div>

  </div><!-- /carousel-inner -->

</div>

As you can see, it contains two slides. The first slide has a class of first and an ID of 1, while the second one has a class of second and an ID of 2.

Regarding their styles:

  • we set their height equal to the viewport height
  • we give them different background colors.

The associated CSS rules:

.item {
  height: 100vh;
}

.first {
  background: #D98F4F; /*orange*/
}

.second {
  background: #2c9cae; /*lightblue*/
}

This should be enough to give us a working carousel.

Building the First Slide

Next, we take advantage of Bootstrap’s helper classes (e.g. grid classes) to set up the contents for our slides.

The markup for the first slide is the following:

<div class="carousel-item first active" id="1">
  <div class="carousel-caption">
    <div class="container">
      <div class="row justify-content-md-center">

        <div class="col">
          <h2 class="title">
            <!-- content here -->
          </h2>
          <p class="desc">
            <!-- content here -->
          </p>
          <ul class="list">
            <!-- list items here -->
          </ul>
        </div>

        <div class="col">
          <div class="pc-wrapper">
            <img class="pc" src="IMG_PATH" alt="" width="" height="">
            <div class="price">
              <!-- content here -->
            </div><!-- /price -->
          </div><!-- /pc-wrapper -->
          <img class="keyboard" src="IMG_PATH" alt="" width="" height="">
          <button type="button" class="btn btn-danger btn-lg">
            <!-- content here -->
          </button>
        </div>

      </div><!-- /row -->
    </div><!-- /container -->
  </div><!-- /carousel-caption -->
</div><!-- /carousel-item -->

If you’re following along, be sure to replace IMG_PATH with something sensible.

Here’s what the result looks like:

Animating Bootstrap Carousels: the first slide of the carousel

Building the Second Slide

In the same way, here’s the markup for the second slide:

<div class="carousel-item second" id="2">
  <div class="carousel-caption">
    <div class="container">

      <h2 class="title">
        <span>
          <!-- content here -->
        </span>
      </h2>

      <div class="row justify-content-md-center">

        <div class="col cms-wrapper">
          <div class="cms">
            <div class="front">
              <!-- content here -->
            </div>
            <div class="back">
              <img class="img-fluid" src="IMG_PATH" alt="">
            </div><!-- /back -->
          </div><!-- /cms -->
          <p class="info">
            <!-- content here -->
          </p>
        </div><!-- /cms-wrapper -->

        <!-- two more columns here -->

      </div><!-- /row -->

      <div class="source">
        <!-- content here -->
      </div><!-- /source -->

    </div><!-- /container -->
  </div><!-- /carousel-caption -->
</div><!-- /carousel-item -->

And its visualization:

Animating Bootstrap Carousels: the second slide of the carousel

Note: For simplicity, we won’t extensively cover the styles for the inner parts of our slides. We’ll only refer to the styles that are important for the animations.

Initializing the Carousel

Next we initialize the carousel and disable default autoplay by passing interval:false to the configuration object:

var $carousel = $("#mycarousel");

$carousel.carousel({
  interval: false
});

Adding Keyboard Navigation

By default, Bootstrap carousel isn’t compliant with accessibility standards. In our case, though, let’s make the carousel a bit more accessible by adding keyboard navigation.

Here’s the required code:

$(document).keyup(function(e) {
  // right arrow
  if(e.which === 39) {
    $carousel.carousel("next");
  // left arrow
  } else if(e.which === 37) {
    $carousel.carousel("prev");
  }
});

So far, we’ve built a basic carousel which supports keyboard navigation.

Animating Bootstrap Carousels: First Animations

At this point, let’s try to make the carousel more appealing by adding some animations. To achieve this, we’ll take advantage of GSAP, one of the most powerful JavaScript animation libraries out there. If you’re looking for a thorough introduction to GreenSock, check out GreenSock for Beginners: a Web Animation Tutorial (Part 1).

Getting Started With GSAP

To incorporate GSAP into our projects, we have to visit its site and from there click the download button, which appears in the top-right corner of the page. This will open a modal dialog with a link to the project on a CDN.

How to download GSAP

If we then select the Customize radio button, we can select the parts of the library we want to use. For our project, however, we’ll keep things simple and include just the full robust version of it.

How to include GSAP into our Codepen demo

Remember that we had to add jQuery to our project because Bootstrap’s carousel depends on it. But, keep in mind that GSAP is a pure JavaScript library, and thus it doesn’t require it.

Continue reading %Animating Bootstrap Carousels with GSAP’s Animation Library%


Source: Sitepoint

A Full-screen Bootstrap Carousel with Random Initial Image

In this article, I’m going to build two simple extensions for the Bootstrap carousel. First, I’ll create a full-screen Bootstrap Carousel slideshow, and then I’ll show you how to randomize the first slide on page load.

But before digging into those extensions, let’s start by creating a carousel based on the default styles.

To create the carousel, we’ll take advantage of the basic code for the carousel component that Bootstrap provides:

[code language=”html”]
<div id=”carouselExampleIndicators” class=”carousel slide” data-ride=”carousel”>

<!– Indicators –>
<ol class=”carousel-indicators”>
<li data-target=”#carouselExampleIndicators” data-slide-to=”0″ class=”active”></li>
<li data-target=”#carouselExampleIndicators” data-slide-to=”1″></li>
<li data-target=”#carouselExampleIndicators” data-slide-to=”2″></li>
</ol>

<!– Wrapper for slides –>
<div class=”carousel-inner”>
<div class=”carousel-item active”>
<img class=”d-block w-100″ src=”1.jpg” data-color=”lightblue” alt=”First Image”>
<div class=”carousel-caption d-none d-md-block”>
<h5>First Image</h5>
</div>
</div>
<div class=”carousel-item”>
<!– slide content –>
</div>
<div class=”carousel-item”>
<!– slide content –>
</div>

<!– more slides –>
</div>

<!– Controls –>
<a class=”carousel-control-prev” href=”#carouselExampleIndicators” role=”button” data-slide=”prev”>
<span class=”carousel-control-prev-icon” aria-hidden=”true”></span>
<span class=”sr-only”>Previous</span>
</a>
<a class=”carousel-control-next” href=”#carouselExampleIndicators” role=”button” data-slide=”next”>
<span class=”carousel-control-next-icon” aria-hidden=”true”></span>
<span class=”sr-only”>Next</span>
</a>

</div>
[/code]

Notice that each of our images contains the custom data-color attribute. Later we’ll use its value as a fallback in case the corresponding image fails to load.

The next step is to initialize the carousel via JavaScript and modify the predefined values of the interval and pause configuration properties. Take note that we choose to set the value of the pause property to false because we always want the cycling to be active:

[code language=”javascript”]
$(‘.carousel’).carousel({
interval: 6000,
pause: “false”
});
[/code]

Having followed those simple steps (and of course imported the required files), we should now be able to build the first version of the carousel. Here’s how it looks so far:

See the Pen Basic Bootstrap Carousel by SitePoint (@SitePoint) on CodePen.

Continue reading %A Full-screen Bootstrap Carousel with Random Initial Image%


Source: Sitepoint

How Web Designers Can Keep Up with Job Market Transformations

This article was sponsored by BAWMedia. Thank you for supporting the partners who make SitePoint possible.

A recent study from Edelman Intelligence has found an interesting fact. It claims freelancers are already feeling the impact of the “Fourth Industrial Revolution”. Artificial Intelligence (AI) is already impacting jobs in most industry sectors. Other innovative technologies are affecting web design work. Thereby, they are influencing freelancers as well.

Freelancers have become quite adept at proactively upgrading their skills. They do this far more than members of the traditional workforce. But not all freelancers are doing so. If you fall into this category, here is how you can not only keep up, but remain at the top of your profession.

Kick Off Your Projects with Pre-built Websites

Keeping up with the latest industry trends doesn’t have to be all that difficult. This is when you can rely, to some degree, on the efforts of others.

Using pre-built websites is one way to keep pace with the latest design trends. Each of Be Theme’s selection of 300+ customizable pre-built websites can be adapted to meet your needs. They can do so within hours and without any requirement for coding on your part.

These themes feature clean layouts and graphics and offer unsurpassed speed and performance. You can install any or all of them with a 1-click installer, as demonstrated in this cool, 40-second video.

Popular Be Theme Pre-Built Websites

Here’s a sampling of Be Theme pre-built websites. By clicking on the hyperlinks, you’ll get an awareness of how much easier they can make your workflow.

At the same time, they are giving you the opportunity to put into practice the latest web design trends.

Be Salmon

Any website intended for a food-oriented business should feature large images, just like those in this example. This should be done in order to entice visitors to investigate further or make a purchase.

The interactive menu guides visitors toward a call to action. A section on customer testimonials helps to seal the deal.

BeDetailings2

The best thing that can be said about many small business websites is that they’re dull and uninspiring. That certainly won’t be the case when bold, professional images like this (including before and after images) are the new normal. The price listing for services feature of this pre-built website is another must-have.

BeMeeting

This pre-built website lays the foundation for an award-winning events and meetings website. The content addresses the what, where, when, and why of events and meetings using a standard menu, and eye-catching countdown clock and a clean design.

BeManicure

One thing professional designers need to know is who the audience is. Here, the soft design and luxurious imagery emphasizing services and products leads visitors to the integrated eShop.

BeDenim

This pre-built website provides another example of basing a design on who the audience is. In this case, the bold imagery, color combinations, and intuitive icons help guide the visitor to the integrated eShop.

Continue reading %How Web Designers Can Keep Up with Job Market Transformations%


Source: Sitepoint

Spicing Up the Bootstrap Carousel with CSS3 Animations

Adding a slider or carousel to showcase content on a website is a common client request for developers. The amount of free and premium carousel plugins available is overwhelming, and a good many of them offer plenty of useful configuration options and dynamic effects.

There are times, however, when a lightweight carousel with minimal options is all you need. In this case, if your project uses Bootstrap, the popular open-source, front-end framework, you won’t need to look any further than the Bootstrap Carousel component.

In this article, I’m going to show how to add some fun animation effects to the Bootstrap Carousel, while still making sure this handy JavaScript component remains bloat-free and quick to implement.

Introducing Animate.css

As rewarding as crafting my own animation effects can be, I’m going to use a well-known, open-source CSS3 animation library most aptly called Animate.css, by Dan Eden.

This is so that I can focus on the task at hand, rather than on explaining the code for CSS3 animations. However, if you want to delve into that topic, you’ll enjoy the CSS3 Animations series here on SitePoint, by Craig Buckler.

Using Animate.css requires two steps:

  1. include animate.min.css in the <head> section of your HTML document
  2. add the classes of animated yourchosenanimation to the elements you intend to animate on your web page.

In the latter step, you would replace yourchosenanimation with the class name corresponding to any of the numerous animations you see on the Animate.css website.

The Bootstrap Carousel component has three main sections:

  • The Carousel indicators track the overall number of slides, give users a visual clue of the position the slide currently being viewed occupies, and offer an alternative navigation for the slider.
  • The Carousel item, located inside a wrapper container with a class of .carousel-inner, represents each individual slide. It’s inside each item that you place your images. You can also add captions to your slides. The nice thing is that you can put pretty much any HTML element inside a container with the class of carousel-caption and Bootstrap will take care of the styling and formatting. It’s these captions that you’re going to animate.
  • Finally, the Carousel controls are the navigation arrows that enable users to access the next and previous slides.

Bootstrap Carousel structure

To keep this demo simple, I’m not going to add images to the carousel. The focus is all on how to animate the carousel captions.

Building the HTML Structure

If you’re following along, here’s what you need to include in your project:

Here’s the code for the Bootstrap Carousel:

[code language=”html”]
<!– indicators –>
<div id=”carouselExampleIndicators” class=”carousel slide”>
<ol class=”carousel-indicators”>
<li data-target=”#carouselExampleIndicators” data-slide-to=”0″ class=”active”></li>
<li data-target=”#carouselExampleIndicators” data-slide-to=”1″></li>
<li data-target=”#carouselExampleIndicators” data-slide-to=”2″></li>
</ol>

<!– carousel content –>
<div class=”carousel-inner”>

<!– first slide –>
<div class=”carousel-item active”>
<div class=”carousel-caption d-md-block”>
<h3 data-animation=”animated bounceInLeft”>
This is the caption for slide 1
</h3>
<h3 data-animation=”animated bounceInRight”>
This is the caption for slide 1
</h3>
<button class=”btn btn-primary btn-lg” data-animation=”animated zoomInUp”>Button</button>
</div>
</div>

<!– second slide –>
<div class=”carousel-item”>
<!– second slide content –>
</div>

<!– third slide –>
<div class=”carousel-item”>
<!– third slide content –>
</div>
</div>

<!– controls –>
<a class=”carousel-control-prev” href=”#carouselExampleIndicators” role=”button” data-slide=”prev”>
<span class=”carousel-control-prev-icon” aria-hidden=”true”></span>
<span class=”sr-only”>Previous</span>
</a>
<a class=”carousel-control-next” href=”#carouselExampleIndicators” role=”button” data-slide=”next”>
<span class=”carousel-control-next-icon” aria-hidden=”true”></span>
<span class=”sr-only”>Next</span>
</a>

</div>
[/code]

The elements inside the carousel caption that you’ll be animating have a data-animation attribute added to them with the specific animation class name as their respective value.

If you’d like to experiment with other animations from the Animate.css library, feel free to replace the values in the data-animation attribute with your chosen animation class names.

Now, give free rein to your creativity and style the carousel captions according to your taste. The style rules that I’m going to focus on here are those relevant to the smooth working of this demo.

More specifically, you’re taking control of the CSS animation-delay property, which defines when each animation starts.

[code language=”css”]
.carousel-caption h3:first-child {
animation-delay: 1s;
}

.carousel-caption h3:nth-child(2) {
animation-delay: 2s;
}

.carousel-caption button {
animation-delay: 3s;
}
[/code]

The snippet above ensures that the elements start their animation sequentially. There’s room for play here. For instance, you can choose to start animating the first two headings at the same time, followed by the button animation. It’s up to you, so have fun with it!

Continue reading %Spicing Up the Bootstrap Carousel with CSS3 Animations%


Source: Sitepoint

How to Take Your Idea from Concept to Creation with Moqups

This article was created in partnership with Moqups. Thank you for supporting the partners who make SitePoint possible.

So, you have a great idea.

You’ve already told your family, friends, and colleagues, and the feedback has been great. Everyone loves the concept, and can see its potential. They think you should just go for it!

But, you know it’s not quite that simple.

Before committing time and money – both yours and other people’s – you need to get real, and work out the details.

As you move your concept from ideation to realization, you’ll need to assemble your team and put together your financing. That means pitching to a wide range of industry professionals: product managers, developers, designers, business analysts, marketers, and investors.

To show them that your vision is both viable and executable, your pitch needs to be abstract enough to capture their imagination, but specific enough to be clear and credible.

You need to build out your concept, assess its technical complexity, and map out its full scale. In other words, you need to get real.

And that’s where Moqups can help.

We designed Moqups as an online, all-in-one creative platform, so that it could take you from your first brainstorming session – capturing and connecting ideas – all the way to fully-realized, interactive, hi-fi prototypes.

Our goal was to create the perfect “low effort – high impact” app.

We think Moqups’ real strength is that it’s UI is both intuitive and easy to master. So, without switching apps, you can produce a wide range of materials that outline the requirements of your project, including workflow diagrams, sitemaps, wireframes, mockups, and interactive prototypes.

Sure, there are a number of more complicated and detailed tools out there for each of these specific artifacts (i.e diagramming apps that just do diagrams, or apps that focus exclusively on wireframing or prototyping).

But when you’re frantically building out your concept, every hour spent struggling with a new and unfamiliar interface is an hour NOT spent on your own product’s future.

So, let’s take a look at three artifacts that you’ll probably want to have as part of your eventual pitch package:

  • Wireframes and prototypes
  • Flow diagrams
  • Sitemaps

Begin Anywhere

During the incubation process, you may be the only one who can make sense of your vision. But even with all that information in your head – or maybe because of it – your ability to explain its intricacies may still be fuzzy, and chaotic.

The best thing you can do is give shape to those scattered ideas by getting them out of your brain and onto the page. That way, you can turn them into something tangible and organized.

But where to begin?

Bruce Mau, in his Incomplete Manifesto for Growth, has a great prompt:

Begin anywhere. John Cage tells us that not knowing where to begin is a common form of paralysis. His advice: begin anywhere.

So don’t worry about prescriptive methodology. Just rely on your intuition. No matter where you start, each artifact will inform the others – and develop in parallel – as your vision comes into focus and becomes more concrete.

A real advantage of an all-in-one tool like Moqups is that it frees you to jump back and forth seamlessly between assets as they develop.

So, let’s get going!

If you want to play along, just head to moqups.com and click on “Try it now for free”.

Wireframes & Prototypes

Software helps users accomplish certain goals by leading them through a series of steps towards those objectives – and your concept is no different. Building a wireframe will help you empathize with your users by putting you in their shoes, and helping you visualize each step they take.

Creating a wireframe is also the most immediate way of getting your vision out of your head, and onto the page, because it lets you experiment with different options and layouts – without worrying about details like colours, fonts, logos, exact sizing, etc.

Chances are, you’ve probably already identified some primary use cases, and imagined the sequence of steps the users should follow. Wireframes give you the chance to figure out what essential elements are required by those screens – content, input fields, buttons, menus – and which ones you may have overlooked.

So, choose a single objective. In this case, I’ve chosen ‘Create an Account’ as my objective. I’ve decided to embed the sign-up fields directly into the home page – in the hope of capturing more leads.

Now, identify the steps required to achieve that goal:

  1. Visit the landing page and enter personal credentials in the sign-up fields
  2. Get confirmation

In this Moqups project, I want every objective – in this case, ‘Create an Account’ – to have its own page. Further, that page will contain a series of nested pages that detail the steps/screens required to achieve that objective.

In the Moqups app, your assets (stencils, pages, icons, images, etc.) are accessed from the left sidebar. Formatting and interactivity is controlled via the right sidebar.

From the left sidebar, click on the Pages tab. From the Pages panel you can create, name, and nest both folders and pages.

If you want to change your page dimensions to suit the device you’re designing for, the Workspace dropdown in the top toolbar (the little gear icon) will give you access to page settings, as well as snapping, guides and grids.

(Moqups UI is intuitive, so I won’t go into too much detail here… but if you need more granular instructions, just visit the Help Center which is pretty comprehensive and user-friendly.)

Now, it’s time to start mocking up your screens.

Click on the Stencil tab in the left sidebar. From the open panel, you can search for relevant stencils to add to your screen; for example, an account registration form is composed of text inputs, checkboxes, radios, and buttons.

Simply drag and drop these stencils onto the page. Then move them around, resize them, or style them by using the Format tab in the right sidebar.

Add as many details as you want, but don’t sweat them too much. At this point, aesthetics aren’t really important. You can always come back and polish your work. It’s more important that you discover whatever input is required from your users – and how the basic navigation will work for them.

Watching your amorphous vision take concrete shape can be wonderfully energizing… so you may want to add a bit of color and tweak the fonts, just to get your blood pumping, and to give you an inspiring sense of your future brand. The important thing is to keep moving, building, and making progress. You can always change, edit, and iterate later.

You may want to go even further, turning your wireframe into a preliminary prototype by adding interactivity. This can provide your stakeholders with a visceral sense of the user experience (UX) and navigation.

A well constructed wireframe/prototype not only helps you communicate your vision in a comprehensive and comprehensible way, but it’s also the kind of document that your designers and developers will need in order to get right down to work.

Flow Diagram

Now that you’ve used the wireframe/prototype to explore the user interface, and you’ve got a feeling for the navigation, it’s time to go explore the business aspects of your project by creating a flow diagram.

Continue reading %How to Take Your Idea from Concept to Creation with Moqups%


Source: Sitepoint

Getting Bootstrap Tabs to Play Nice with Masonry

On the Masonry website, we read that Masonry is …

a JavaScript grid layout library. It works by placing elements in optimal position based on available vertical space, sort of like a mason fitting stones in a wall.

Bootstrap is one of the most widely adopted, open-source, front-end frameworks. Include Bootstrap in your project, and you’ll be able to whip up responsive web pages in no time.

If you tried using Masonry together with the Tabs widget, one of the many JavaScript components Bootstrap has to offer, chances are you’ve stumbled on some kind of annoying behavior.

I did, and this article highlights what the issue is and what you can do to solve it.

Bootstrap Tabs Explained

Bootstrap’s Tabs component includes two key, related pieces: a tabbed navigation element and a number of content panels. On page load, the first panel has the class .active applied to it. This enables the panel to be visible by default. This class is used via JavaScript to toggle the panel’s visibility via the events triggered by the tabbed navigation links: if .active is present the panel is visible, otherwise the panel is hidden.

If you have some web content that’s best presented in individual chunks, rather than crammed all in one spot, this kind of tabs component might come in handy.

Why Masonry?

In some cases, the content inside each panel is suited to being displayed in a responsive grid layout. For instance, a range of products, services, and portfolio items are types of content that can be displayed in grid format.

However, if grid cells are not of the same height, something like what you see below can happen.

Grid layout without Masonry

A wide gap separates the two rows of content and the layout appears broken.

Nowadays, Bootstrap solves the equal-width issue with the brand new card component, which is based on Flexbox. Just adding the card-deck class to a group of card components is sufficient to achieve equal-width columns.

If you like your cards to be of uneven length, you could use CSS3 Multi Column Layout. (After all, even though there are some browser support bugs, overall it’s quite good.) This underlies the new card columns option that comes packaged with the card component. However, if you still love the nice animation that the Masonry JavaScript library provides out of the box, and its wide browser compatibility, JavaScript is still a viable option in this case.

Setting Up a Demo Page

Getting a demo page up and running helps to show how integrating Bootstrap’s Tabs with Masonry is not as straightforward as one might expect.

This article’s demo page is based on the starter template, available on the Bootstrap website.

Below is the skeleton of the markup for the tabs component:

<ul class="nav nav-tabs" id="myTab" role="tablist">

  <!-- nav item 1 -->
  <li class="nav-item">
    <a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-selected="true">Home</a>
  </li>

  <!-- nav item 2 -->
  <li class="nav-item">
    <a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="profile" aria-selected="false">Profile</a>
  </li>

  <!-- nav item 3 -->
  <li class="nav-item">
    <a class="nav-link" id="contact-tab" data-toggle="tab" href="#contact" role="tab" aria-controls="contact" aria-selected="false">Contact</a>
  </li>
</ul>

The nav nav-tabs classes are responsible for giving the tabs their characteristic appearance. The value of the href attribute forms the relationship between a single tab and its corresponding tabbed content. For instance, an href value of #home creates a relationship with the tabbed content with id="home": clicking that particular tab reveals the contents inside the div with the id value of home.

Also, notice how Bootstrap pays attention to accessibility attributes like role, aria-controls, etc.

Here’s a code snippet to illustrate the tabbed content’s structure:

<!-- content 1 -->
<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
  <h3>Tab 1 Content</h3>
<div class="card-group">

  <!-- first card -->
  <div class="card">
    <img class="card-img-top" src="path/to/img" alt="Card image cap">
    <div class="card-body">
      <h5 class="card-title">Card title</h5>
      <p class="card-text">Card text here.</p>
      <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
    </div>
  </div>

  <!-- second card -->
  <div class="card">
    <!-- card markup here -->
  </div&lgt;

  <!-- third card -->
  <div class="card">
    <!-- card markup here -->
  </div>

  </div>
</div>

Just add a similar structure for each tabbed content section corresponding to the tabs elements you coded above.

For the full code, check out the CodePen demo.

Continue reading %Getting Bootstrap Tabs to Play Nice with Masonry%


Source: Sitepoint

8 Tips for Improving Bootstrap Accessibility

A few years ago, I wrote about my experiences on developing a Bootstrap version 3 project to be fully accessible for people with disabilities. This focussed mostly on how accessible it is in terms of front-end design. (It didn’t cover accessibility in terms of screen readers, as that’s a whole other story.)

While I could see that the developers behind Bootstrap were making an effort, there were a few areas where this popular UI library fell short. I could also see that there were issues raised on the project that showed they were actively improving — which is fantastic, considering how approximately 3.6% of websites use Bootstrap.

Recently, Bootstrap version 4 was released, so let’s take a look and see if any of the issues I had in the past have improved.

What We’re Looking For with Design Accessibility

There are a few things to consider when designing a website with accessibility in mind. I believe these improve the user experience for everyone and will likely cover a lot of points you would consider anyway.

Layout

One way to achieve accessibility is by having a clean, easy-to-use layout that looks good on all devices, as well as looking good at a high zoom level. Up to 200% is a good guide.

Bonus points: having front-end code that matches the layout is also good for users who access the Web with a screen reader or by using a keyboard instead of a mouse.

This allows people to use your website easily irrespective of how they’re viewing it.

Continue reading %8 Tips for Improving Bootstrap Accessibility%


Source: Sitepoint

How Does the Blockchain Work? Pt. 4

This article was originally published on Blockchain Review. Thank you for supporting the partners who make SitePoint possible.

What’s the difference between a private, public, and consortium blockchain? Understanding this is important.

As financial institutions begin to explore the possibilities of blockchain technology, they are coming up with systems that complement their existing business models. A private or a consortium blockchain platform, as opposed to the public platform that Bitcoin uses, will allow them to retain control and privacy while still cutting down their costs and transaction speeds.

In fact, this private system will have lower costs and faster speeds than a public blockchain platform can offer.

Blockchain purists aren’t impressed. A private platform effectively kills their favorite part of this nascent technology: decentralization.

They see the advent of private blockchain systems as little more than a sneaky attempt by big banks to retain their control of financial markets.

In a way, they’re correct.

Though the evil plot narrative is a bit much. If big banks can utilize a form of blockchain technology that revolutionizes finance, and if they are willing and able to pass these benefits onto their customers, then it is hardly an evil plot.

It is just good business.

Vitalik Buterin said it best:

The idea that there is “one true way” to be blockchaining is completely wrong headed, and both categories have their own advantages and disadvantages. [1]

Let’s take a deeper look at what these might be.

Public Blockchain

A blockchain was designed to securely cut out the middleman in any exchange of asset scenario. It does this by setting up a block of peer-to-peer transactions. Each transaction is verified and synced with every node affiliated with the blockchain before it is written to the system.

Until this has occurred, the next transaction cannot move forward. Anyone with a computer and internet connection can set up as a node that is then synced with the entire blockchain history.

While this redundancy makes public blockchain extremely secure, it also makes it slow and wasteful.

The electricity needed to run each transaction is astronomical and increases with every additional node. The benefit is every transaction is public and users can maintain anonymity.

A public blockchain is most appropriate when a network needs to be decentralized.

It is also great if full transparency of the ledger or individual anonymity are desired benefits. Costs are higher and speeds are slower than on a private chain, but still faster and less expensive than the accounting systems and methods used today.

This is a good trade-off for a cryptocurrency like Bitcoin.

Security is key to their users, a decentralized network is at the heart of the project and their competitors in the finance industry are still significantly more expensive and slower than a public blockchain network despite its slowness when compared to a private blockchain.

Private Blockchain

Private blockchain lets the middleman back in, to a certain extent. I believe the saying goes: better the devil you know, than the devil you don’t know.

The company writes and verifies each transaction. This allows for much greater efficiency and transactions on a private blockchain will be completed significantly faster. Though it does not offer the same decentralized security as its public counterpart, trusting a business to run a blockchain is no more dangerous than trusting it to run a company without blockchain.

The company can also choose who has read access to their blockchain’s transactions, allowing for greater privacy than a public blockchain.

A private blockchain is appropriate to more traditional business and governance models, but that isn’t a bad thing. Just because it is unlikely to revolutionize our world, doesn’t mean it can’t play a role in making the world better.

Competition is key to developing the most useful products. Traditional financial institutions have long held a monopoly — technically, an oligopoly — over the industry.

Their outdated products and services are a direct result of this power.

Using a privately run version of blockchain technology can bring these organization into the 21st century.

A number of our governance institutions are old and outdated as well.

Like finance, our government is not subject to competition. Adoption and integration will likely be slower in this sector, but if and when blockchain technologies are adopted they will cut billions of dollars of behind the scenes spending.

Imagine a truly secure online voting system. No more poll workers, voting booths, paper ballots, paid counters or organizers with cushy salaries. What’s more, the barriers to voting will be greatly reduced and we will likely see an increase in turnout.

This could be accomplished with a public design, but most governments are unlikely to decentralize control and security, so a vetted private system greatly increases the chance of adoption.

Consortium Blockchain

Consortium blockchain is partly private. There has been some confusion about how this differs from a fully private system. Vitalik Buterin provides a pretty straightforward definition:

Continue reading %How Does the Blockchain Work? Pt. 4%


Source: Sitepoint

How Does the Blockchain Work? Pt. 3

This article was originally published on Blockchain Review. Thank you for supporting the partners who make SitePoint possible.

What is consensus and why does it matter?

The world of Bitcoin and underlying technologies of distributed ledger and blockchain are experiencing rapid change and growth.

As low-trust digital systems gain adherents and differing use cases, developers are creating new variant blockchains to deal with the inevitable fragmentation between public, consortium and private blockchain technologies.

Let’s note the differences between public, consortium and private blockchains.

Public  — Fully decentralized and uncontrolled networks with no access permission required — anyone can participate in the consensus process to determine which transaction blocks are added. There is usually little or no pre-existing trust between participants in a public blockchain.

Consortium  — The consensus process for new transaction blocks is controlled by a fixed set of nodes, such as a group of financial institutions where pre-existing trust is high.

Private  — Access permissions are tightly controlled, with rights to read or modify the blockchain restricted to certain users. Permissions to read the blockchain may be restricted or public. [1]

There is usually some degree of pre-existing trust between at least some private blockchain participants.

The degree of pre-existing trust that an organization requires, as well as necessary control over participant permissions, will determine what type of blockchain to use.

Different blockchain solutions have advantages and disadvantages. Take for example the difference between how transactions are validated within each type of blockchain:

Proof of Work (PoW): About “mining” transactions utilizing a resource-intensive hashing process, which (a) confirms transactions between network participants and (b) writes the confirmed transactions into the blockchain ledger as a new block.

The accepted new block is proof that the work was done, so the miner may receive a 25 BTC (Bitcoins) payment for successfully completing the work. The problem with PoW is that it is resource-intensive and creates a centralizing tendency among miners based on computer resource capability.

Proof of Stake (PoS): About “validating” blocks created by miners and requires users to prove ownership of their “stake” [2]. Validation introduces a randomness into the process, making the establishment of a validation monopoly more difficult, thereby enhancing network security.

One problem with PoS is the “nothing at stake” issue, where miners have nothing to lose in voting for different blockchain histories, preventing a consensus from being created. There are several attempts to solve this problem underway.

Additional developments in this area hope to combine PoW with PoS to create hybrid blockchains with the highest security and lowest resource requirements.

To that end, some developers are focused on enhancing network security through ‘consensus without mining.’ [3]

Tendermint co-founder Jae Kwon has published a paper describing his firm’s concept and approach in this regard.

Existing Proof of Work and Proof of Stake protocols have various problems, such as requiring huge outlays of energy usage and increasing centralization (PoW) or participants having nothing at stake (PoS) possibly contributing to consensus disruption on mined blocks.

Kwon’s solution is twofold and does not require Proof of Work mining:

  • A ⅔ majority of validators is required to sign off on block submission, with no more than ⅓ able to sign duplicate blocks without penalty
  • The protocol raises the penalty of double-spend attacks to unacceptably high levels by destroying the malicious actor’s Bitcoin account values.

The algorithm is based on a modified version of the DLS protocol and is resilient up to ⅓ of Byzantine participants.

Kwon and his team at Tendermint hope to bring speed, simplicity and security to blockchain app development.

So, how does one decide on what type of blockchain to use and their relevancy for your company use case? [4]

Below are a few examples of different types of blockchains, depending on the organization’s greatest prioritized need:

One consideration is confidentiality. For example, in the case of a public financial blockchain, all the transactions appear on the ledgers of each participant. So while the identities of the transacting parties are not known, the transactions themselves are public.

Some companies are developing ‘supporting’ blockchains to avoid this problem, by storing or notarizing the contracts in encrypted form, and performing some basic duplicate detection. Each company would store the transaction data in their own database, but use the blockchain for limited memorialization purposes.

A second consideration is whether you need provenance tracking. Existing supply chains are rife with counterfeit and theft problems. A blockchain that collectively belongs to the supply chain participants can reduce or eliminate breaks in the chain as well as secure the integrity of the database tracking the supply chain.

A third example is the need for record-keeping between organizations, such as legal or accounting communications. A blockchain that timestamps and provides proof of origin for information submitted to a case archive would provide a way for multiple organizations to jointly manage the archive while keeping it secure from individual attempts to corrupt it.

Blockchains fundamentally operate on the basis of how consensus is agreed upon for each transaction added to the ledger.

What are the benefits of each type of consensus mechanism, and in which situation are they best utilized?

Proof of Work  — Miners have a financial incentive to process as many transactions as quickly as possible. PoW is best utilized by high-throughput requirement systems.

Proof of Stake — Transaction Validators receive rewards in proportion to the amount of their “stake” in the network. This arguably improves network security by discouraging duplicitous attacks. PoS is best used by computing power constrained organizations.

Delegated Proof of Stake [5] — Network parameters are decided upon by elected delegates or representatives. If you value a “democratized” blockchain with reduced regulatory interference, this version is for you.

PAXOS  — An academic and complicated protocol centered around multiple distributed machines reaching agreement on a single value. This protocol has been difficult to implement in real-world conditions.

RAFT  — Similar to PAXOS in performance and fault tolerance except that it is “decomposed into relatively independent subproblems”, making it easier to understand and utilize.

Round Robin  — Utilizing a randomized approach, the round robin protocol requires each block to be digitally signed by the block-adder, which may be a defined set of participants. This is more suited to a private blockchain network where participants are known to each other.

Federated Consensus  — Federated consensus is where each participant knows all of the other participants, and where small sets of parties who trust each other agree on each transaction and over time the transaction is deemed valid. Suitable for systems where decentralized control is not an imperative.

Proprietary Distributed Ledger  — A PDL is one where the ledger is controlled, or proprietary, to one central entity or consortium. The benefits of this protocol is that there is already a high degree of pre-existing trust between the network participants and agreed-upon security measures. Suitable for a consortium or group of trading partners, such as supply chains.

PBFT  — In a PBFT system, each node publishes a public key and messages are signed by each node, and after enough identical responses the transaction is deemed valid. PBFT is better suited for digital assets which require low latency due to high transaction volume but do not need large throughput.

N2N  — Node to node (N2N) systems are characterized by encrypted transactions where only the parties involved in a transaction have access to the data. Third parties such as regulators may have opt-in privileges. Suitable for use cases where a high degree of transaction confidentiality is required.

The above list represents the current major consensus mechanisms in operation or from research.

Due to the initial visibility of Bitcoin, the financial services industry has been early in researching the possible uses of consensus mechanisms to streamline operations, reduce costs and eliminate fraudulent activity.

Continue reading %How Does the Blockchain Work? Pt. 3%


Source: Sitepoint