Automated Workflows Developed as Flagship Feature for Leading Document Management System by DSR Corporation

A document management system (DMS) provides businesses with efficient tools to securely manage, store, and share documents. According to QYResearch’s (https://www.qyresearch.com/) latest report, over the next five years, the global DMS market is expected to reach $7 billion with a projected annual growth of 15.0% from 2019-2025. To stay competitive, a DMS has to provide its users with up-to-date features like enhanced security, integration with cloud services, and complex, yet easy-to-use, workflow systems.

DSR corporation recently developed a few exciting features for an industry-leading DMS solution, making their document management system even more advanced, secure, and user-friendly. 

Our customer’s solution is a powerful system with a rich feature set, including file requests and sharing, configurable guest access, powerful templates, solid optical character recognition, advanced version control, and automated workflows. The document management software is used by accounting, healthcare and insurance companies, HR departments, law firms, and other businesses with complex document workflows.

The automated workflows system is a flagship feature which helps businesses streamline their routine document management processes. It enables users to create sophisticated, automated scenarios for requesting, approving, and sharing documents. Automated workflow tools allow users to customize their workflows to fit a customer’s specific processes. Moreover, developed by DSR Corporation with ease of use in mind, the automation tools don’t require any IT background. 

For example, the following one-stage workflow can be created to automate the approval process:

Step 1. A DMS’s power user (PU) assigns a workflow step to a selected user who will upload a document in the specified directory.  

Step 2. The PU adds the user who needs to give approval to the document. In this instance, they should choose a user different from the document uploader.

If the approval is rejected, the stage will repeat. If the document is approved, the workflow will be completed successfully. 

In this case, the workflow contains only one stage, but the new workflow system, developed by DSR, allows the user to create sophisticated scenarios with several stages and steps to automate complex document workflows, such as mortgage approvals

Mortgage Approval Workflow Example

Typically, mortgage approval is a document-intensive process involving up to 150 types of documents and multiple, sometimes concurrent, steps and complex stages. It requires the collection, review, management and approval of large amounts of information from different parties.

Automated workflows as a part of the DMS greatly increases the efficiency of the mortgage process, eliminates data-entry errors, and significantly reduces the overall cost of mortgage processing. Several workers are able to perform multiple tasks simultaneously, such as preparing the necessary forms; payment schedule, home assessment, tax and insurance forms, etc. 

Different roles can be assigned to different users to keep sensitive information protected. Moreover, file requests can be sent to non-DMS users via e-mail with a guest access link to upload a specific document. 

Benefits of Automated Workflows

Using the automated workflow feature from DSR’s customer document management system, a business receives numerous advantages:

  • Flexibility to automate almost any document workflow. 
  • No special training or certification for staff required to create and manage automated workflows. 
  • Ease of information sorting and packaging for different involved parties. 
  • Access controls for confidential data.
  • Notifications about new document uploads, changes, approvals, etc. 
  • Access to a necessary document anywhere, anytime by using the web-based DMS.
  • Eliminate data-entry errors.
  • Greatly reduce your company productivity losses which happen due to document challenges. 

DSR Corporation was excited to develop this cutting-edge, automated document management system; one that is simple for end users and powerful enough to add competitive functionality in the space. Our company is now working on and supporting the customer’s DMS to make it an even more compelling solution. 

Smart Lighting Evolution: From Obedient to Intelligent (Part 2)

In Part 1, we covered the history of smart lighting technologies and key milestones in the industry. Today we are going to focus on the advantages of LED, which led to explosive growth in the smart lighting ecosystem, and also take a sneak peek into the future.

Why Has LED Drastically Transformed Smart Lighting Ecosystem?

A number of LED’s unique properties make the technology well-suited for the
rapid development of smart lighting solutions.

These are some key advantages of LED lamps in comparison with
traditional light sources (fluorescent, incandescent, etc.):

  • Increased efficiency (90-112 lumens per watt vs 10-17
    lumens for a traditional incandescent bulb).
  • Digital control
  • Microcontroller (MCU) placement inside the bulb.
  • Lower voltage. Devices produce less heat, are more
    compact, and are safer.
  • Simle Control. LED’s can be dimmed and change color
    with no additional standalone hardware.

Smart lighting solutions based on LED lamps are more energy-efficient,
occupy less space and, most importantly, can be integrated wirelessly into the IoT
system of an office, house, or building. Connected capabilities allow for
control and management of smart lighting systems with the help of dashboard, be
it a consumer app or enterprise-grade cloud-based software.

Wireless connectivity along with MCU capabilities allows not only for
the management of modern smart lighting systems, but also helps make them more
intelligent with the help of AI and ML algorithms and various sensors
integrated into IoT solutions.

There are many wireless communication protocols that can be used to connect and make smart LED lighting installations. Some of them, like Zigbee, are matured and widely used, others, like Thread, are just now starting to evolve.

The current, key wireless communication protocols for smart lightning
are:

  • Bluetooth Low Energy (BLE)
  • Thread
  • Wi-Fi
  • Zigbee
  • EnOcean
  • Z-Wave
  • 6LoWPAN

All of the above-mentioned technologies have their advantages and
disadvantages, but there’s no single wireless protocol which fits all the
specific requirements for a given use case.

One trend, though, has emerged and is gaining momentum. The shift from
proprietary protocols (Z-Wave, Lutron) to open ones (Zigbee, Thread, BLE). The enormous
and fast-growing smart lighting market dictates the need for interoperability,
transparency, lightning-fast bug fixing, and cost-cutting. All of these are
achieved by open communities of companies that share expertise, create common
platforms, and standardize different aspects of the technologies under the hood
of smart-lighting solutions.

According to a recent study (https://www.gminsights.com/pressrelease/smart-lighting-market) by Global Market Insights, LED lighting’s share in the global lighting market was 40% in 2019 and is expected to reach 80% by 2025 and in that time, the smart lighting market will surpass $23 billion. One of the key drivers fueling this growth will be a surge in wireless technology usage and the integration of smart lighting systems into IoT solutions for building automation, smart homes, and cities.

From Smart to Intelligent Lighting

Thanks to wireless technologies and internet connectivity, the smart
lighting of tomorrow will not just be a separate system to turn the lights on
and off with a tap on the phone screen, but a component of a more complex IoT
solution with sophisticated usage scenarios, powerful AI- and ML-driven data
analytics engines, and a vast array of sensors. Moreover, light sources
themselves will help to gather additional information such as the location of
people in the building for security purposes.

Though there are lots of challenges to overcome, such as security issues
and a lack of interoperability and a common platform, smart lighting of the future
will provide us with numerous possibilities to make our homes and workplaces
more personalized, more “green,” and more comfortable.

Imagine a day in the near future – the smartwatch on your wrist monitors
your heart rate and motion-monitoring capabilities paired with an AI-powered
health service, identifies the most appropriate time to wake you up. The smart
lighting system will be there to help you start the day refreshed and full of
energy, gently waking you from the sleep by imitating the colors of a sunrise in
your bedroom.

During the day, while you are away from home, your smart lighting and
the rest of your smart home system shift into a “green” energy-saving mode,
keeping the lights and the thermostat on at the levels required to keep your
energy costs and carbon footprint the lowest.

Later, a security camera with face recognition capabilities identifies
you as you approached your house, and the smart lighting sub-system of your
smart home switches to your favorite lighting scheme with personalized colors, intensity,
and locations, depending on the time of the day. This scheme is created with
the help of AI, which analyzes your behavior at home, gathering data from
numerous sources, including motion sensors and even your calendar.

AI-driven smart lighting connected to smart home/office solutions will
also help to resolve purely technical issues, such as new device commissioning
and setup.

So, welcome to the next stage of the smart lighting evolution: wireless,
intelligent, and human-centric.

Smart Lighting Evolution: From Obedient to Intelligent (Part 1)

The term “smart lightning” is widely known nowadays, though the history of the technology dates back to the late 90’s. The first solutions were quite primitive. About 20 years ago light timers connected to outdoor lamps started to be used to turn them on and off at certain times, and this solution might have been called “smart”. 5 years later, with the introduction of motion sensors, lighting systems became more complex and evolved. Half a decade later, motion sensors have combined with daylight sensors to switch the light on only when it is dark.

Modern sophisticated smart lighting solutions have come a long way from those basic systems. Let’s dive into the history of the technology to discover the key turning points and contemplate the bright future of smart lighting.

To begin with, let’s review some key milestones in the evolution of
smart lighting:

1959 – Joel S. Spira, the founder of
Lutron Electronics Company, invents the dimmer switch.

1989 — Ericsson Mobile begins the
development of a “short-link” radio technology, which in 1997 is named Bluetooth.

1992Blue LED is invented by
Shuji Nakamura, The University of California, Santa Barbara. A breakthrough in
lighting technology. In 2014 Nakamura was awarded the Nobel Prize for the
invention.

1998 — Codification of DALI, the
most popular smart lighting control protocol, is made.

1999 — The term “Internet of Things
is coined by Kevin Ashton, a creator of a global standards system for RFID
sensors.

2003 — The Zigbee wireless
short-range protocol is standardized, a key technology for modern smart
lighting solutions.

2006 — Wibree communication technology,
the predecessor of Bluetooth Low Energy, is launched by Nokia.

The Prehistoric Age of Smart Lighting

While consumers enjoyed basic dimmers and timers, the DALI (Digital
Addressable Lighting Interface) control protocol was the most popular wired
solution for commercial projects, such as office lighting automation. The
technology is quite flexible, components are cheap, and the installation is
easy (if it is part of the consideration for a new building).

Nowadays it makes sense to use DALI only for new commercial buildings, otherwise
the price of installation may skyrocket due to the required routing of wires
through preexisting electric cable networks and reconfiguration of the existing
installation. For home use, it’s not a viable option.

There are also some challenges that the industry is working to overcome when
using DALI for the modern smart lighting industry:

  • It requires wires. Though with the help of gateways
    it’s possible to connect DALI with a wireless protocol of choice, the lighting
    control system will be cumbersome and not easy to manage. Moreover, the area is
    not standardized.
  • The commissioning process is far from simple. DALI
    groups are quite complicated to configure and thus require more resources for
    the system reconfiguration.
  • Component and network testing, as well as fault finding, is challenging.
  • Interoperability issues. DALI products might be not
    interoperable, even though the technology is standardized.
  • DALI doesn’t support the confirmation of the sent
    messages. So, if a system sends a command to turn on a light and there is a
    collision with another command, there is no failsafe for the light to in fact be
    turned on.

DALI is still quite widespread, but wired protocols are gradually
stepping down from the smart lighting stage.

Back then, smart lighting solutions were cumbersome, costly, inefficient
and could hardly be called smart.

And Then There Was LED…

The era of traditional incandescent light bulbs is almost over. LED has
begun to revolutionize smart lighting in the last decade. Since there’s a
low-voltage semiconductor inside LED bulbs, it’s quite obvious to control it
digitally. LEDs work with microcontrollers exceptionally well.

The first widespread use of this combination began to emerge at the beginning
of the 21st century, when color-changing LEDs took the planet by
storm. Spectacular lightning installations fascinated consumers and were the
first real step towards smart, and later intelligent, wireless lighting
solutions.

The LED revolution has accelerated with the decreasing prices of
different sensors, network chips, and microcontrollers. At the same time,
humanity has stepped into the wireless and connected world.

In the next article, we will focus on a range of advantages that LED has brought to the smart lighting market and try to identify LED’s key advantages that helped to make the transition from obedient to intelligent lighting.

Overcoming Covid-19 Hurdles: How to respond in a crisis (and maybe even prosper)

DSR leaders have been taking note of what works as we adapt and overcome the challenges we face in the current pandemic. We are fortunate to be in the privileged position that we may still serve our clients during this time and this article suggests best practices for adapting to this environment.

COVID-19 has brought about a new normal. Uncertainty is the reality for much of the globe. Amidst the turbulent market conditions and sometimes hectic actions of countries’ governments, it’s vital for business leaders, fortunate enough to still be in operation, to stay calm and focused on urgent measures: encouraging employees, helping clients overcome difficulties, and doing business as usual, as much as that is possible. DSR Corporation is always ready to share its’ experience in organizing a company’s internal and external activities in the face of uncertain risks and extraordinary challenges.

It’s safe to say that to handle any crisis your company should act in 3 stages:

  1. Response: Assess the situation and take necessary measures.
  2. Recovery: Learn and accommodate the new reality.
  3. Prosperity: Prepare and shape for the “new normal”.

All the three stages should be considered by the company’s management concurrently. The sooner the better. That’s why you should act without any hesitation at the same time plan strategically with the “big picture” in mind.

Today we are going to cover the first stage, Response. It’s crucial to understand that an unpredictable emergency situation stirs a lot of uncertainty in people’s minds. Mass hysteria on social media adds a great deal to it. That’s why resilient leaders should exercise emotional intelligence to show empathy and compassion for employees whose priorities have shifted to concerns about family members health.

The first priority is to ensure the health and safety of your team, followed by their economic stability. The best way to help your customers is to take care of the team.

Transparency is another key element of the “Response” stage. It will help to greatly reduce the level of uncertainty and maintain trust, perhaps even growing trust in the process. This applies not only to your employees, but also to client-relationships.

While transparency could be thought of as a strategic solution, clear, concise, and timely communication is a tactical step to achieve the necessary level of transparency.

Focus on your mission – that’s the overall priority for every business. Despite any temporary hurdles and difficulties, the main goal for a company is to do business as usual and help its’ clients to overcome the challenging situation.

The Response stage can be broken down into 3 steps which will help to guide your team and customers in a time of crisis.

  • Ensure health, safety and economic well-being of your team.
  • Achieve a high level of transparency through concise and timely communication with your employees and clients.
  • Put your mission first. Maintain business continuity.

Now, with the overall strategy is outlined, it’s time to share some practical tips to keep your employees and clients engaged and your business running.

1. Ensuring the Health and Safety of Your Team

During this pandemic, it’s necessary to avoid any contact and maintain
social distance to stop the virus from spreading. Your employees should work
remotely if they can. You can help them to get used to home office with tips to
create working environment and minimize number of distractions.

Forewarned is forearmed. It’s vital to send corporate guidelines on how
to act and practical tips from government and health agencies to help avoid harm.

Ensuring your team is safe:

  • Company-wide messaging regarding best practices and guidelines for staying safe and healthy, as well as company expectations.
  • Location specific messaging based on the recommendations of local authorities
  • Verification that your corporate network is capable of supporting remote work (should your employees be in a safe location)
  • Authorization of remote work for all that can

2. Tips for Effective Remote Work

Remote work can be challenging for anyone. To keep your team engaged, help your employees organize their working environments, and reduce overall anxiety, you can use following tips. They can be broken down into 2 categories: team level and employee level.

Team level:

  • Implement digital social norms, such as a morning greeting in the intranet chat.
  • Use video calls whenever possible to improve team engagement.
  • Increase communications (there is no room for comms. to decrease)
  • Practice social activities remotely, such as  hosting e-lunch, exchanging pics of home office working places, and online team-building exercises.
  • Keep communications with team members timely and concise as much as possible.

Personal level:

  • Arrange your workplace to differentiate it from the rest of your house. You can even use a corporate calendar or branded cap to create a working atmosphere.
  • Create and follow a schedule to separate your work from everyday life.
  • Have weekends. Regardless of whether your weekend is Saturday and Sunday, give yourself some time to decompress.
  • Stick to good habits or develop new ones to unwind and relax.
  • Take care of your body. Eat healthy, exercise on a daily basis, and don’t deprive yourself of fresh air. As long as it is safe, try to spend at least 30 minutes a day outside. Vitamin D does wonders for your mood and supports the immune system.
  • Disconnect from the social media hysteria and the barrage of disturbing news. Although it’s important to stay up to date on latest news and developments, reading too many horror stories about the current situation can cause anxiety and stress.
  • Stay in touch with your family and friends (while following health and safety guidelines of course). Use voice and video calls whenever possible to decrease social isolation.

3. How to Help Clients Overcome the Crisis Turbulence

Just remember that to help customers you should ensure health and safety of your own team first. But some actions are to be taken concurrently. It is of paramount importance to deliver a clear message to your partners and clients that you’re open for business.

Transparency and proactive action are the key elements of maintaining and building trust in case of an emergency situation:

  • Keep it clear that you have prepared to do business as usual (or to what extent you will do business). Send company level messaging to all clients outlining the steps being taken to care for the health of your team and your commitment to maintaining your quality and efficiency of output.
  • Encourage project managers to talk personally with their client counterparts to reinforce commitments and availability.
  • Be proactive. Try to understand the challenges your client is facing (even implicit ones) and suggest working solutions.
  • Be even more diligent and timely in responses to client questions. Make sure they hear from you quickly and frequently.
  • Aim for speed. Prompt actions are required during a crisis, so always keep in mind that a working solution might be better than a perfect one.  

4. Working from Home with Kids

Working from home with kids adds an additional level of complexity and
stress. The struggle is real! Here are a few suggestions of things to do to
help balance it, especially for family where both parents are working full time
and from home.

  • Schedule. Kids do best when they have clear boundaries and schedule. It can be challenging to maintain a strictly followed schedule, so don’t beat yourself up if it slips, but it can help keep the day on track. Here is an example: 
Example Kid's Schedule
  • Screen time. Although too much screen time is bad, there are times that it’s needed to keep the kids occupied while parents finish their work/meetings.

Not all screen time is created equal. Educational screen time is a great example. There are a lot of resources online (many of which are free) that will keep your child of any age engaged for hours, such as https://www.khanacademy.org/. There are likely similar programs available in your language or country.

  • Have breaks together. Take breaks together from work, homework, or educational activities.
  • Exercise and outdoor time. Kids have endless energy and can get cranky and mischievous if they don’t get to expend it in a constructive way. The best option, of course, is to let them play outside (away from other kids in our current crisis), but that can be very challenging. There are things you can do at home. For example, for the little ones there are interactive yoga and exercise videos available free on YouTube. Similar programming can be found for any interest and age. 
  • Balancing work with kids. If both parents are
    working and child care help is not available, depending on the child’s age, you
    may have to try different things. For older kids, it’s a matter of creating the
    schedule together and having check points to provide help and assess progress.

For younger children, it’s a bit more complicated as
they require assistance or have frequent questions. Some of the above resources
can be a good way for younger kids to have independent study/play time.  

Create alternating schedules with your partner – for example, one of you works for 4 hours in the morning while the other watching kid(s) and potentially able to do some work, and then switch in the afternoon. This of course then leaves hours in the evening for both of you to finish work after the kids are in bed. 

5. A Turning Point for any Business

The Chinese use two brush strokes to write the word “crisis”. One stands
for danger, while the other for opportunity. In a crisis, be aware of the
danger — but don’t miss the opportunity.

Clear thinking, transparent communications, timely decision-making, and proactive thinking will be recognized both by your employees and clients. Seize the opportunity to emerge even stronger from a crisis situation and use it as leverage to build trust with your partners and consolidate your team.

Stay safe and prosper!

Orchestrating Application Elasticity

DSR Media and Entertainment

Introduction—

Do you have customers that want your existing applications to run in an elastic environment or be orchestrated (i.e., with Kubernetes)? Are you trying to catch up to a business need to support a subscription or SaaS model? In this blog, we will cover how containerization and application orchestration can be used in porting legacy applications to handle both demands for elastic deployments and pay-as-you-go business models.

Problem—

A common limitation with legacy software is that it often only runs one application instance at a time. There are two issues that arise with this. First, undergoing a very manual process may become necessary if application needs grow or there is a need to run more than one instance at a time. Second, there is more often than not an inability to increase or decrease capacity on a whim. This can incur additional cost that customers are hesitantly willing to pay, if at all. Both issues put your business at a disadvantage in an increasingly competitive market.

Solution—

Application orchestration through containerization can solve these issues entirely. Let’s walk through what exactly container orchestration is and the value it can offer your business.

What is Containerization?

Containerization is the first step and primary method of orchestrating elasticity in this context. By definition, “application containerization is an OS-level virtualization method used to deploy and run distributed applications without launching an entire virtual machine for each app.” Let’s breakdown what this means.

Containers are often explained in the context of virtualization and compared to virtual machines. Virtual machines, like Windows, are guest operating systems that are virtualized to run on top of the underlying hardware. Virtual machines contain not only the guest operating system, but also all of the necessary libraries run to the application, the application code, and generally any customer data.

Similar to virtual machines, containers allow developers to package the application together with libraries and other dependencies. Containers can then run the virtual instance in a controlled environment. However, containers differ from VMs in that they are much more lightweight and use far fewer resources than virtual machines.

Lgacy to Containerized App

Advantages—

Fast Start-Up and Shutdown:

A container sub-system initiates application virtualization on top of the operating system and shares the OS and common libraries with the individual applications within the container’s orchestrator. As a result, the container orchestrator will allow the user to launch individual processes far faster than a virtual machine is capable of since it does not require the operating system to startup and shutdown. In a container situation, as soon as the container’s orchestrator starts, launching applications can occur almost instantly since all other common processes are already running. In a media and entertainment application, for example, a user will have the ability to use another copy of an encoder, file copier, or video player instantaneously. Intuitively this means that a server can host more containers than a virtual machine.

Ability to Set Business Rules:

Another advantage of container orchestration is the ability to set business rules that allow a user to define startup and shutdown for container instances. Applications can then add and destroy capacity as needed, which allows for customers to easily scale up or down based on their needs. It also reduces the need for hardware on the customer’s premise because it can all be done via AWS, Microsoft Azure, or Google Compute environments. This is highly relevant if moving toward a usage dependent subscription, or SaaS-based revenue model.

Consistent Environment:

Containers allow developers to create predictable environments that are isolated from other applications and include software dependencies needed by the application. This guarantees consistency no matter where the application is deployed, which translates to productivity for developers and IT due to fewer bugs and consistent test environments.

Modularity:

The container application can be split into modules, also known as a microservices approach. This allows each module to be simple and for changes to be made to them without having to rebuild the entire application.

Compute Power:

Finally, containers can provision more computing power based on the need of an individual application. This is made possible by platforms like AWS, Azure, and Google Compute. With compute and storage load being distributed across a wide area, there are no latency, lag, storage backup, IO problems, etc.

Orchestration—

When orchestrating a container, there are three differentiators to look out for: level of abstraction, tooling, and architecture. DSR is orchestrator-agnostic, meaning our team can develop containers on any platform. We thoroughly understand what to look for during this process and can even help you choose the correct platform for your business needs. DSR has the expertise to move from legacy applications to microservices and containers. So, whether you are considering a generic Kubernetes approach or specific containers targeted for AWS, Azure, or Google, DSR can help.

Why DSR?

Containerization is prevalent outside of the media and entertainment industry today and many companies are capable of providing serverless architectures. DSR’s extensive experience in the media and entertainment space makes our teams highly capable of providing the best solution for your needs and sets us apart from the competition. If you have a business need for elastic orchestration, but do not have the technical capability or bandwidth to make that transition, call DSR. We have the expertise right now to provide the solution you need. Let us master your application in cooperation with your team with the goal of wrapping your core application technology into a container. From there you can build your business revenue around this valuable solution.

To learn more about DSR’s media and entertainment software resources, watch this short video: https://youtu.be/BB0TFDlpWtw

Sources—

Revell, Matthew. “Introduction to Container Orchestration: Kubernetes, Docker Swarm and Mesos with Marathon.” Exoscale, Exoscale, 26 June 2016, www.exoscale.com/syslog/container-orchestration/.

Rouse, Margaret. “What Is Application Containerization (App Containerization)? – Definition from WhatIs.com.” SearchITOperations, Sept. 2017, searchitoperations.techtarget.com/definition/application-containerization-app-containerization.

Rubens, Paul. “What Are Containers and Why Do You Need Them?” CIO, CIO, 27 June 2017, www.cio.com/article/2924995/software/what-are-containers-and-why-do-you-need-them.html.

Google Cloud. “What Are Containers and Their Benefits  |  Google Cloud.” Google, Google, cloud.google.com/containers/.

10 Advantages of Elm: Moving to Functional Programming in the Frontend

Elm as a functional language for front-end development that is well known in small circles of experienced web-developers. Its’ syntax is similar to Haskell, but less complex and designed specifically for building web-based user interfaces. Elm has some definite advantages in comparison with React.js. Nonetheless, it’s not very popular within the front-end community. To find out why that is, we talked with DSR’s web-development team.

Using Elm benefits not only the end user, but also the front-end developer. The former gets faster page loading speeds without errors in the majority of cases. The latter — comprehensive compilator warnings, increased compilation speed, and clear instructions on how to move to the new package version. These reasons are why Elm might become a popular tool amongst front-end teams.

Evan Czaplicki, the creator of Elm, doesn’t actively promote the programming language. Being an exceptionally talented developer, he clearly understands how to continue enhancing and developing Elm. His main goal is to make it the most reliable programming language for building web apps. In fact, Elm promotion is basically non-existent, with very few people allocating resources to advertise it. For example, React.js is heavily promoted by Facebook. The social network giant vigorously supports it by organizing conferences, meetups, and conducting other activities to put the framework in the community of front-end developers. Technically, Elm is on par with React.js, even excelling in some ways. Elm’s biggest problem is that very few people are aware of it.

Elm’s Key Advantages

1. Easy to learn.

If you are looking to learn Elm, there are tons of guides, tips, FAQ, books and a really friendly developers’ community. Kevin Yank, the legendary web developer, releases podcasts on Elm regularly. There are loads of studying materials are available for free.

2. Project support is easier for the entire life cycle.

Compared to other frameworks, Elm makes project support (the lion’s share of the app life cycle) significantly easier with the help of compilator’s warnings. These warnings don’t allow changes which your app won’t be able to compile. Hence, overall project cost can be greatly reduced.

3. JavaScript interoperability via ports.

When you start developing web apps (and packages) using Elm, you’ll become increasingly eager to avoid the hectic world of JavaScript wherever you can. However, it’s not always a good idea to rewrite preexisting JS solutions in Elm. Sometimes, it’s not even possible.

Elm has a great tool to integrate necessary JavaScript code, namely, ports. Not every task can be completed with the help of ports, but Elm boasts other interoperability tools as well.

4. No runtime exceptions.

There’s no way an app written in Elm will throw an error which breaks the UI. Front-end developers greatly appreciate this feature.

5. Maintainability & Enforced Semantic Versioning.

If the code doesn’t compile, it will not run. This is a built-in safety feature. Additionally, ff something has been changed in a package that the project depends on, the creator of this dependency is forced to update the version number. You’ll also receive a warning about incompatibilities with your project. Elm is always on guard, protecting your production workflow.

6. Big companies use Elm.

The front-end team at IBM writes apps in Elm and has shared some quite positive feedback. “Elm is really bullet proof, it’s not [false] advertisement”, and we’re quoting IBM here directly. It’s worth mentioning Japanese online retail giant Rakuten (the company also owns Viber messenger). More companies that use Elm are listed here.

7. Performance.

Elm Virtual DOM is more lightweight than that of React.js. Bundle size is most always significantly smaller. Hence rendering the first elements on any page will be faster on any device and in any browser.

Elm- RealWorld App Asset Size Graph

Vast ecosystem of open source packages.

Elm’s free to use code is the result of millions of hours front-end developers’ work. You can use these packages on your project absolutely free of charge. The aforementioned enforced semantic versioning guarantees that third party code won’t break anything in your web app.

8. Progressive web apps.

Developing PWA with Elm is a breeze. Check out this example with open source code.

9. Server-side rendering.

Though it’s not supported by Elm officially, experienced front-end developers have found easy workarounds. Examples can be seen here, here, and here.

10. Any Front-End Developer Can Start Using Elm in a Matter of Days

Should you put off your usual web development tools and move to the
“bulletproof” world of Elm, immediately? No way. But, you should at least
consider this elegant and powerful functional programming language for
front-end development. Read some guides, see some relevant examples, and try
some basic staff using Elm. Only then, once you’ve accumulated your own
experience on real projects, can you decide for yourself. Shifting to Elm
itself will be painless, even for the beginners.

The majority of front-end developers know how Redux works. Interestingly, this JavaScript library was built upon the Elm architecture. That’s just another example of the emerging trend of so-called “JavaScript fatigue.” Nowadays, more and more developers are turning to alternative solutions, trying to avoid pure JS. Since Elm is the “father” of Redux and requires immutability, a declarative programming approach, and has its’ own Virtual Dom implementation, the language will be quite familiar to the front-end developers who prefer the React ecosystem.

Let’s see some examples of code in Elm, highlighting its’ elegance, readability, and simplicity.

Function chaining

Unlike JavaScript, where you have to wrap every function, Elm offers a special pipe-operator. It makes a chain of functions more readable for the developer. This is one of Elm’s key features as a functional programming language.

This picture shows Function Chaining in Elm

Function composition

Another example of Elm’s elegance for front-end development is the function composition. The function composition allows developers to work with complex scenarios involving monades.

This picture shows Function Composition in Elm

App written in Elm

A simple counter that can be increased or decreased as an example of button code.

Any app in Elm consists of modules (just like in JavaScript). Every module contains three parts.

  1. Model. App state.
  2. Update. A way of updating the state.
  3. View. A way to render the state into HTML.
This picture shows an app written in elm

Line 20 in the above code uses a  type alias, that model will store only Int. At the lines 23-25 you can see function init, which is used to initialize the app with a predefined value.

At the line 51 we use the view function to generate HTML. View always takes a model in Elm, giving a front-end developer the ability to operate on the state of the application.

You can see that at the line 54 we call a button function. An array of attributes serves as its’ first parameter, including the event handler, onClick. The second parameter is an array of child elements.  In the example above, we use the function text, which generates a text node. onClick suggests the  performance of an action, in this case, decreasing the counter value. The  text function returns a string with the necessary data.

The App starts running with default value of the counter. Then it runs in the following infinite cycle:

  1. App waits for user input
  2. Sends the message to update
  3. Produces new model
  4. Calls view functionto generate new HTML code
  5. Renders new HTML code in the browser
  6. Repeat

That’s the essence of Elm architecture.

Try to play around with the app code here. For example, you can add a Reset variant to the Msg type.

Summary

Elm as a functional language might become your favorite tool for creating web apps, especially when you take into consideration all of its’ advantages and peculiarities. Functional programming is slowly but steadily is gaining momentum among web developers, so don’t miss the opportunity to improve your skill set and make yourself more competitive on the web-development market by adopting functional programming style, tools, and techniques.