Categories
Other Other

The power of the wellbeing at Espeo Software

Probably many people wonder if it is a trend or a real need. At Espeo, it started with the expectations of our crew. We listen to our employees and implement programs and initiatives expected by our team. Our mission is to build a friendly workplace where people feel satisfied and listened to.

Several months of activities are behind us. Anna Kasprzak-Kuberka, who is a true passionate about wellbeing, took the responsibility for the program. During the last weeks, we organized various activities to promote mental and physical health. Read the article to get to know more about our passion for designing a better workplace.

You will find the answers on the following questions:

Wellbeing of Espeo Crew

What is wellbeing and what is its value at modern workplace?

Although there is no universally accepted definition, commonly it comprises the presence of positive feelings and moods (e.g., contentment, happiness), the absence of negative emotions (e.g., depression, anxiety), satisfaction with life, fulfillment, and positive functioning. Wellbeing can be defined as a favorable attitude toward life and a positive feeling.

Together with employee mental health, they were ranked as a major priority by 68 percent of HR leaders in the Future Workplace 2021 HR Sentiment study. According to the Gallup Institute’s findings, contentment at work benefits everyone. Employees that are satisfied produce lower rotation, ranging from 26 to 61 percent. Accordingly, they are 43 percent more productive and 86 percent more innovative than their counterparts. 

I am sure it is worth caring for people is the highest priority, and introducing activities supporting wellbeing in the organization. For this reason, I aim to convey good and positive energy in the company, support employees, and propose pro-health solutions to implement wellbeing at Espeo.

In uncertain and turbulent times, mental and physical health become some of the challenges for the organization. With a high level of wellbeing, people have a sense of purpose and energy to carry out tasks and challenges. Satisfied employees are able to use their full potential. Therefore, emotional, physical, mental, financial, and professional wellbeing in the workplace is so important. Consequently, more and more companies in Poland are beginning to understand its value.

When has the passion for wellbeing started? Why has it appeared at Espeo?

Wellbeing emphasizes the need to take care of human health. In private and at work, it appears the same. I am interested in a holistic approach to human health, which unites the body, emotions, mind, and spirit. I attended the first online conference on this topic, and I decided to educate myself about wellbeing.

When the pandemic began, it was a time of isolation. It caused many health problems. My colleagues shared that they also don’t feel well. The stress appeared with frequent headaches, back and spine pains, malaise, and fatigue. The conclusion was that we should do something to make ourselves feel better. I learned about wellbeing from my sister, who returned from Australia. The idea was already well-known over there.

It brings me great satisfaction to implement and run these initiatives. I believe there is a need for that within our crew. Therefore, my mission is to monitor the needs of people and the organization. I can create assumptions and implement them to develop a friendly and efficient workplace. I want to inspire people to make small positive changes. My main aim is to develop a culture of well-being and health that will foster the commitment and professional fulfilment of the Espeo Software employees.

What initiatives have been already organized at Espeo?

Our focus is on mental health, mindfulness, effective stress management, and taking care of the digital balance. There are few webinars behind us. First, we discussed the “4 pillars of health” to answer the question of how to support our health and positive attitude. Last time, we had a chance to participate in the „Preventive care is the way to longevity” webinar with dr. Jakub Chwiećko. He explained how to look after the health and what to do to stay healthy for longer.

The meeting was an occasion to receive plenty of practical advice. Also, we had time to ask our personal questions. Recently, we held the first Espeo Health Day in our office in Poznań! We believe that prevention is better than cure. Therefore, out of concern for the wellbeing of Espeo employees, we invited everyone to take part in preventive screenings and blood tests. 

Espeo Health Day

A while ago, all our crew got a box with health-supporting snacks and gifts. I share all the initiatives, recommendations, and improvement ideas in a dedicated Slack group. Briefly, that is a place where people can exchange their needs and inspirations about wellbeing. 

We create an open and caring organizational culture, thanks to which people will have more effective wellbeing support and will feel even better. That’s all ahead of us, because the physical and mental health of Espeo Software employees is essential to us.

Check why is it worth to be a part of Espeo Crew. Read more about our company’s culture on our blog.

What is my wellbeing pattern? Inspirations and guidelines to improve lifestyle with the idea of wellbeing.

Wellbeing indicates happiness and comfort. I am constantly learning about improving my lifestyle to make it healthier. Personally, I use the Kaizen method. I implement changes in small steps and regularly discover the power to improve daily life with them. I find a healthy lifestyle a way of continuous improvement.

My inspiration is Agata Pelc, a trainer, and consultant from the Wellbeing Institute. The organization began to gather around practitioners, enthusiasts, and professionals of wellbeing. Consequently, they inspired a concept development in Poland.

Then, Martin Seligman introduced a model in positive psychology. It defines the 5 elements of a good and fulfilled life. According to PERMA, there are the following essentials of Wellbeing: P-Positive emotions (joy, curiosity, inspiration, appreciation), E-Engagement involvement (flow, concentration), R- Positive relationships (cooperation with people), M – meaning, and A – Accomplishment.

Anna Kasprzak-Kuberka, Senior Administration Specialist & Wellbeing Coordinator at Espeo

While spreading the knowledge about wellbeing, I get to know what has a positive effect on me. Thus, my focus is to find a balance. I swim, use the sauna, walk in the forest, and relax in contact with nature. I also appreciate the effects of relaxation and physiotherapeutic massages. Therefore, I use aromatherapy and clear my mind by listening to music. When I am tired, I accept this state of my body and rest. To summarize, I do what makes me happy and improves my mood and wellbeing. That’s what I want to inspire people for.

Read more about our company’s culture on our blog. Check why is it worth to be a part of Espeo Crew.

Categories
Healthcare Technology

8 reasons why you should invest in a mHealth application

It’s a fact that more and more individual and big healthcare providers are investing in the development of healthcare apps to improve the quality of their services. According to research by Grand View Research Inc., the global digital health market size is expected to reach USD 295.4 billion by 2028 and is projected to expand at a CAGR of 15.1% over the forecast period. What is the reason for such significant growth? There is an increasing demand for the ability to manage healthcare needs online, given that many aspects of daily life are becoming more digital. With the convenience that healthcare apps provide, more and more people want to use mHealth apps in order to schedule appointments, review their prescriptions, or talk to specialists through a video call for online diagnosis.

However, there are many business advantages that come with the investment in digital products in the healthcare industry. What are these? Continue reading to find out.

The biggest healthcare players invest in mobile apps. Why should you do it too if you want to compete

Telehealth applications are not only beneficial to patients. From a healthcare provider’s standpoint, mHealth apps offer many advantages. Based on research done by Deloitte, the 8 top benefits of digital transformation within healthcare organizations include:

  1. Better consumer satisfaction and engagement
    Providing your patients with an application that enhances their experience when it comes to managing their health, especially one with functionalities that correspond to their needs, will increase their satisfaction.

  2. Improved quality of care and patient outcomes
    Thanks to the on-demand nature of digital solutions, your patients will have the possibility to access all the necessary functionalities when they need them. This means they will be able to receive the help they need in a faster manner, without having to e.g. drive to your clinic.

  3. Ability to compete better with traditional players and disruptors
    Entering the digital sphere means that you will have the competitive edge over healthcare providers that rely on traditional working models. Moreover, you will be able to reach and attract more patients who want to manage their health using digital solutions.

  4. Revenue growth
    By incorporating a digital app into your revenue streams, you will see your revenue grow in two ways: on one hand, the app will offer you an additional monetization method, and on the other hand, it will decrease additional costs, for example, in booking appointments.

  5. Improved cost efficiencies
    One of the ways that investing in a digital solution improves the cost efficiencies is that by enabling appointments to be made via mobile or web applications, there is a decreased need to employ a large team of people to handle bookings manually.

  6. Increased agility and scalability around technology
    After the initial investment in the application is done, it is easy to scale it up or down depending on the needs. If you find that your application is lacking a certain functionality, it is easier and faster to develop it and introduce it to your target group.

  7. Better staff and employee satisfaction
    A digital application can be also used to track and analyze your employees’ satisfaction. The ability to gather feedback from your staff will provide valuable information, so you can adjust and deliver results that your employees want.

  8. Better data-sharing and collaboration with health players and other health systems
    One of the most important reasons to invest in a digital application in healthcare is the possibility of storing valuable data in a more secure and efficient way. Having the data in the cloud, for example, makes it easier to analyze it and share it with other healthcare professionals.

In addition, digital technology enables patients to provide real-time feedback so that regulatory reporting can be completed within a few months rather than months. With quick feedback, consumer issues can be resolved much more quickly than with previous non-digital solutions.

8 reasons why you should invest in a mHealth application

What functionalities to include in your mHealth app in order to ensure its success?

Taking the above into consideration, healthcare apps offer many benefits not only to the patients but also healthcare providers themselves. However, most of the apps fail to meet the patient’s expectations, and thus do not support the business needs of health companies. To visualize the problem, let’s consider the app usage data. There are more than 400,000 healthcare apps available in the app stores but most of the healthcare apps have less than 10,000 downloads. How to design and develop a mHealth app that will be among the successful ones?

There are several functionalities that a mHealth application should have in order to be engaging and successful. We discussed them in detail in a recent article on our blog. You can find it here.

Do you want to develop an eHealth mobile app but don’t know where to start? We can use our experience and discuss your idea with you. Contact us using the form below and one of our colleagues will reach out to you to schedule a non-binding call.

Categories
Design Software

From color perception to CSS

Color perception

The way humans perceive colors is not universal. Rather, we are capable of comparing and contrasting colors according to individually understood criteria of similarity, sameness, or distinctness. Moreover, even the choice of specific colors in the spectrum is an individual feature.

It is known that colors have a structure based on three primary colors and their combinations. After all, it is an interesting observation that only the concepts of lightness (white) and darkness (black) are basically universal, and also, if there is one, red color including reds, oranges, as well as yellows, pinks and purples up to filberts. An analysis of color naming in various languages indicates that languages distinguishing six colors have names for the light, dark, red, green, yellow, and blue.

Art perception theory [1] treats shape and color separately. Shape is indicated as a feature that better identifies the object and reveals more numerous qualitative features. Color, on the other hand, depends more on the environment, such as lighting, e.g., strong light makes reds appear brighter, while dim light serves blues and greens.

The basic concepts used in color theory are primary and complementary colors. However, a distinction has to be made between fundamental primary colors, i.e., the pure colors on which the perception of colors is built, and simple generative colors, i.e. the colors needed to gain a wide range of tones in a physical sense.

All color systems assume that a certain small number of tones is enough to obtain a full, or at least a wide color gamut. According to Hering’s color theory [2], humans have sensitivity to the colors black and white, blue and yellow, and green and red. The trichromatic Young-Helmholtz theory [4], on the other hand, assumes the existence of three basic generative colors: red, green, and filbert. Finally, in the 20th century, it was confirmed that pigments on retinal receptors respond to three wavelengths: 447 nm (blue-violet), 540 nm (green), and 577 nm (yellow).

Color theory further indicates that which colors will best form a wide range of colors depends on the method of combination: whether by addition (additive combination) or subtraction (subtractive combination). With additive combining, the eye perceives the sum of the waves (e.g., those emitted by a screen), and with subtractive combining, the impression of color is caused by the remainder left over after light absorption (e.g., stained glass).

To conclude this section, let us recall the concept of complementarity. Generative complementaries are those which, combined, produce monochromatic whites or grays, and fundamental complementaries are which, in perception, desire and complement each other. For example, Helmholz gives as complementary pairs red and blue green, yellow and blue, and green and pink red.

Want to become a part of #espeocrew? Check our current job offers and apply!

from color perception to css

Color models

RYB

Historically, RYB is the first color model based on the discoveries of Isaac Newton. The generative colors in this model are red, yellow, and blue. The model was patented in 1719 by Jacob Christoph Le Blon. The RYB model is a subtractive one and was used for printing on white paper. RYB pigments combined together produce black. The colors that are generated by mixing the base pigments include orange (red with yellow), green (yellow with blue), and purple (blue with red).

RGB

The RGB model creates a gamut from the primary generative colors: red, green, and blue. Zero intensity of each component defines black, while the full intensity of the generative colors gives white. Equal intensity of all the components produces gray. Color ranges are defined in several ways: from 0 to 1, with any fractional value in between, or as unsigned integers ranging from 0 to 255, (8-bit). High-end digital imaging equipment often uses larger ranges, such as 10, 16, or 24 bits. In practice, for the use on monitors, printers, and the World Wide Web, the sRGB standard created by HP and Microsoft in 1996 is used.

CMY (CMYK)

The CMY model uses cyan, magenta, and yellow as the primary generative colors. The colors in the possible palette are obtained by layering the producing colors. When cyan, magenta, and yellow inks are combined, the result (in theory) is black. In practice, however, this combination results in a dark gray or dark brown. Therefore, in practical solutions, the color black is added to this model (CMYK model). It is also possible to achieve the so-called deep black by mixing generative colors and adding black. In this model, the color white is treated as no color (C0 M0 Y0 K0). The colors of the RGB model are obtained by mixing magenta with cyan (blue), magenta with yellow (red), and cyan with yellow (green), respectively.

Furthermore, the generative colors of the CMY model are obtained by combining the corresponding colors of the RGB model: red with green gives yellow, green with blue gives cyan, and blue with red gives magenta.

The RYB, RGB, and CMY models can be graphically described as cubic models: generative colors are placed on the X, Y and Z axes of length 1, and a color is defined as a point with three coordinates. Note that in the above models, it is difficult to define the concepts of color intensity, brightness or saturation. Other models are used for this purpose.

HSL/HSV

The HSL color model was developed in 1938 by Georges Valensi as a method of adding color coding to existing monochrome transmissions containing only the L signal. The model uses the parameters hue from the RGB model, saturation, and lightness. The angular coordinate starts at red (angle 0°), then passes through green (angle 120°) and blue (angle 240°) before returning to red (angle 360°). The distance from the cylinder axis defines the saturation. The vertical axis is achromatic or gray, ranging from white with a brightness of 1 o black with a brightness of 0. Primary and secondary colors red, yellow, green, cyan, blue, and magenta are arranged around the outer edge of the cylinder with the saturation value of 1. However, in this model, lightness is quite meaningless [3]. Colors can have the same lightness value, with wildly different perceptual lightness.

CIE L*a*b*

The CIE LAB model (also Lab) is a color model defined in 1976 by the International Commission on Illumination (CIE). It expresses color by indicating three values: brightness (L) and a* and b* for the four colors recognized by the eye: red, green, blue, and yellow. CIE L*a*b* was designed to be a perceptually uniform space in which the numerical change corresponds to the corresponding perceived color change. It is used to detect small differences in color.

CIE L*a*b* is a device-independent model of the standard observer. Colors refer to the averaged results of color matching experiments under laboratory conditions. The CIE L*a*b* space is three-dimensional and covers the entire range of color perception. It is based on the model of complementary colors. The brightness value (L) defines black at 0 and white at 100. The a* axis refers to the green-red complementary colors, with values negative toward green and positive toward red. The b* axis represents the blue-yellow complements with negative toward blue and positive toward yellow. CIE L*a*b* is calculated with respect to white. Although the a* and b* axes are unbounded, software implementations often limit these values for practical reasons, such as limiting a* and b* to integers in the range of -128 to 127.

LCH

To solve the problem of HSL model lightness, one can use the LCH model. The first argument specifies the CIE Lightness (L), interpreted as Lightness argument of Lab. The second is the chroma, understood as the amount of color, starting a 0 and maximum theoretically unbounded, but practically not exceeding 230. The third argument is the hue angle interpreted similarly to the hue on HSL, with 0° along the positive a* axis (red), 90° pointing along the positive b* axis (yellow), 180° along the negative a* axis (green), and 270° along the negative b* (blue). If the chroma is set to 0%, the hue component can be omitted. If the lightness of an LCH color is 0%, both the hue and chroma components matter.

from color perception to css

Cascading StyleSheet color evolution

Let us now trace the evolution of color support in successive versions of the Cascading Style Sheets (CSS) specifications. The first version of the specification [5] was published in late 1996. Basic CSS support was provided by Internet Explorer 3, but only IE4, which was released in late 1997, correctly supported CSS1. Later implementations, such as in Netscape 4, had numerous bugs, leading it to be thought that CSS itself was flawed. Finally, in 1996, CSS1 was recommended as the standard.

CSS1

Color in CSS1 [5] is either a keyword or an RGB numeric specification. CSS1 supported 16 colors derived from the Windows VGA palette (aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, and yellow). However, their RGB values are not defined. The RGB color model was used in numeric color specifications. The format for hexadecimal RGB values included the # character followed by three or six hexadecimal characters. The three-digit RGB notation #rgb is converted to the six-digit #rrggbb by duplicating digits rather than by adding zeros, such as #abc converts to #aabbcc. The functional notation rgb() is also specified, which gives a comma-separated list of three numeric values in the range 0-255 or three percentage values in the range 0% to 100%. RGB colors are specified in the sRGB color space.

CSS2

In the next version of the specification [6], the color orange was added to the color list, and numerical values were defined for the colors in the palette:

maroon #800000
red #ff0000
orange #ffA500
yellow #ffff00
olive #808000
purple #800080
fuchsia #ff00ff
white #ffffff
lime #00ff00
green #008000
navy #000080
blue #0000ff
aqua #00ffff
teal #008080
black #000000

In the next version of CSS2.2 released in 2016 [7], the specification remained unchanged.

CSS Color Module 3

Unlike CSS 2, which is a specification that defines a variety of features, CSS3 was broken up into separate documents (modules). The CSS Color Module Level 3 [8], recommended as a valid specification in 2018, has been extracted from the specification.

CSS Color 3 introduces the concept of opacity taking values from 0 (fully transparent) to 1 (fully opaque), and the RGB color model has been extended with an alpha channel to the RGBA model to allow color opacity to be specified. The rgba() function was added to the functional notation to allow the opacity value to be written as the last parameter.

CSS Color 3 extends the color value with the transparent keyword, and allows it to be used in all properties that take a color value. It also extends the color list to the X11COLORS list with the addition of gray variants from SVG 1.0.

CSS Color 3 adds support for the HSL model in addition to numeric RGB colors, and the conversion from HSL to sRGB is purely mathematical. The functional notation hsl() has an equivalent that supports the alpha channel — hsla().

Are you a Front-end Developer looking for new career opportunities? Check out our open job positions and apply!

CSS Color Module Level 4

Subsequent drafts [9] of the CSS Color Module specification extends definitions of color and color space.

Color is understood as a numerical or textual definition of human perception of light or a physical object illuminated by light. The color of an object depends on how much light it reflects at each visible wavelength and the actual color of the light illuminating it, while the color of a light-emitting object such as the colors on a computer screen, depends on the amount of light emitted at each visible wavelength. Color comparisons are made by converting spectra to the CIE XYZ scale — an additive color space with luminance as the Y component.

CSS Color 4 also defines the term color space as the organization of colors with respect to a basic colorimetric model, so that there is a clear, objectively measurable meaning for each color in that color space. It also means that the same color can be expressed in multiple color spaces or transformed from one color space to another and still look the same.

CSS Color 4 also uses the concept of chromaticity as a measure of color in which the brightness component has been subtracted.

CSS Color 4 adds to the already existing color functions rgb(), rgba(), hsl(), hsla() new ones: hwb(), lab(), lch(), oklab(), oklch(), and color(). Of these, hsl(), hsla(), hwb(), lch(), and oklch() are cylindrical polar color representations, specifying color using the hue angle, a central axis representing brightness (black to white), and a radius representing saturation or chromaticity, i.e., how far the color is from neutral gray.

The color() function allows to specify a color in a color space other than sRGB, in which most other functions operate. These include P3, Adobe RGB (1998), ProPhoto RGB, or Rec. 2020.

CSS Color 4 also covers the issue of color interpolation, which occurs in gradients, compositions, filters, transitions, animations, and color mixing and modification functions. It is done by linear interpolation of each component of a calculated color value separately, in a specified color space. In some cases, the result of physically mixing two colored lights is desired. In such a case, the linear CIE XYZ or sRGB color space is appropriate because they are linear in light intensity. However, if the colors must be perceptually uniform (e.g., in a gradient), then it is reasonable to use Lab/OKLab spaces, which are perceptually uniform. To avoid maximizing chromaticity, the use of LCH/OKLCH is recommended, and for compatibility with older web content, the sRGB color space should be chosen.

from color perception to css

CSS Color Module 5

The next draft [10] of the specification adds two new functions: color-mix() and color-contrast().

The first one mixes two colors in the given space in the given proportions. The following algorithm is used: both colors are converted to the required color space, and then the colors are interpolated. If an alpha multiplier was created during percentage normalization, the alpha component of the result is multiplied by the alpha multiplier.

The second function takes as parameters a single color, a list of two or more colors, and, optionally, a target luminance contrast. The single color is separated from the list by the vs keyword, and the target contrast, if any, is separated from the list by the to keyword. The first color that meets or exceeds the target contrast value is then selected from this list. If no target value is specified, the first color with the highest contrast relative to a single color is selected.

Follow us on Instagram for more insights from our experts!

Final remarks

According to MDN [11], CSS Color 3 is rather fully implemented in the modern web browsers. However, the CSS Color 4 and CSS Color 5 recommendations, which are still in development, are implemented partially, e.x., color(), lab(), and lch() functions are available in Safari browser, while color-mix() or color-contrast() are not available at all. 

And while color is a key element of good graphic design, still not all graphic designers’ ideas can be supported in web applications. Despite its rapid development, color in the Web still has a long way to go.

References and further reading

[1] R. Arnheim, Art and Visual Perception. A psychology of the creative eye, California 1974.

[2] E. Hering, Zur Lehre vom Lichtsinn, Vienna 1878.

[3] https://lea.verou.me/2020/04/lch-colors-in-css-what-why-and-how/

[4] T. Young, Bakerian Lecture: On the Theory of Light and Colours. Phil. Trans. R. Soc. Lond. (1802) 92, pp.12–48.

[5] Cascading Style Sheets, level 1, https://www.w3.org/TR/CSS1/

[6] Cascading Style Sheets Level 2 Revision 1, https://www.w3.org/TR/CSS2/

[7] Cascading Style Sheets Level 2 Revision 2, https://www.w3.org/TR/CSS22/

[8] CSS Color Module Level 3, https://www.w3.org/TR/css-color-3/

[9] CSS Color Module Level 4, https://www.w3.org/TR/2022/WD-css-color-4-20220428/

[10] CSS Color Module Level 5, https://www.w3.org/TR/2022/WD-css-color-5-20220428/

[11] https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#browser_compatibility

Categories
Software Technology

Coding.fest meetup: PHP, Node.js and Blockchain insights that you cannot miss

The worst pandemic times seem to be already behind us and the market is slowly coming back to life after two years of lockdowns and online events. Since we can meet stationary without fear, our focus is to conduct conferences, workshops and other face to face events. At Espeo, we believe that nothing can replace interpersonal contact in a traditional form. This is why our first post-pandemic stationary event, coding.fest, took place on the 21st of April. It was an amazing meeting hosted in Gdańsk (Olivia Business Centre, O4 Coworking), from where our employees from Tricity work. Three of our employees (Piotr Horzycki, and Szymon Biduła) have prepared prelections about PHP, Node.js, and Blockchain technologies. In this piece, we have collected summaries of the most important information from each speech that may be useful for you at work.

From this article you will learn about:

Handling currency in an international fintech (Piotr Horzycki, Senior PHP Developer)

It’s tricky to handle multiple currencies in international fintech projects. From payment gateways to billing engines, there is a risk of losing money due to wrong calculations. When different systems have their own way of handling money, it’s easy to make a terrible mistake. Fortunately, we have a set of good practices, industry standards, and libraries for popular programming languages. Let’s start from using proper data types. Because most currencies have minor units of 1/100, it is natural to use decimal numbers to represent the amount. However, computers do not handle decimal numbers natively. Try adding 0.1 + 0.2 in a browser’s debugging console and you will not get the expected 0.3 due to a binary floating point system being used internally. This is why most e-commerce applications store an amount in the smallest unit as an integer. To make the calculations more reliable, especially across multiple currencies, a Money Pattern was invented. It already has successful implementations across PHP, Java, Javascript and other languages (MoneyPHP, Java Money, Dinero.js). Addition, subtraction, tax calculation, allocation, currency conversion – these are easily handled by well-tested libraries. When interchanging data between APIs, it is crucial to agree upon a contract. It’s not enough to just send a number and label it as “price.” Thus, it is common to provide an object that combines an amount and a currency, like {“amount”: 1234, “currency”: “EUR”}. It would be even better to clarify use of integers with a label like amountInteger. This way we can avoid all misunderstandings.

Piotr Horzycki, Senior PHP Developer

Hexagonal NestJS (Wojtek, Senior Node.js Developer)

Wojtek took us on a journey through the Yet Another NestJS App. Together, we discovered the unpleasant factors that developers encounter quite often during application development, such as: tangled codebase – instilling fear of change, fixed dependencies – causing vendor lock and reducing migration possibilities, cannonade of Mocked Dependencies – to set up your every single test. This final state of evolution is recognizable in the industry as The Big Ball of Mud and often ties developer’s hands, making it difficult for them to adapt to current business needs. This may end up with exponentially growing maintenance expenses, issues with meeting desired time-to-market and draining morale with poor development experience. Later, we highlighted The Architecture we Might Need: explicit, flexible and testable. These factors led us to the concept of Hexagonal Architecture. We’ve learned about its rules, building blocks, flow, and dependency relations between components. Limiting the integration points to the bare minimum and explicitly defining them introduced a bunch of improvements: better code organisation – through cognitive-friendly structure, increased testability – making entire business flow unit-testable, enhanced understanding – by exposing business processes, flexibility – possibility to delay critical decisions (aka. points of no return). Wojtek also showed us a NestJS project implemented in Hexagonal Architecture, cleverly using DI mechanism, encapsulating dependencies in Self-Contained Modules – hiding all implementation details and setting them up via Composition Root. We also saw how a modular, hexagonal approach can help us with microservice separation.

Are you a Node.js Developer looking for unique career opportunities? Check our job offer and join #espeocrew!

Connecting the DeFi space: Building bridges between blockchains (Szymon Biduła, Blockchain Developer)

Currently, the blockchain landscape is composed of many protocols that represent different design choices and as a result are mostly incompatible with each other. Yet, the liquidity, that could be measured by the overall market cap, is divided only among a few top players. Given the rapid rise of decentralized finance (DeFi) that is shaping the current market, underdogs need to find a way to bring the liquidity that enables DeFi or face unpleasant consequences. Therefore, many foundations and companies are interested in creating bridges between different blockchains. Creating such a solution for the client could be a daunting task for the developer. After all, one needs to take into consideration even the miniscule details of each blockchain to enable a seamless token swap. Thus, during the presentation a mental framework was presented that could make this task easier. This framework consisted of a list of issues that needed to be resolved on every bridge and questions that were worthy of lengthy discussion with the client during the design phase. Finally, the potential security risks were highlighted as bridges are currently the main target of the hackers attacks in the blockchain space.

Are you a Blockchain developer looking for new challenges? We have multiple growth opportunities for you! Check out our open job positions, apply and join our team!

The meetup provided ample opportunity to discuss interesting questions raised by participants. The planned Q&A session after each lecture and the networking session after the main part of the event happened to be very engaging. During the event, the participants were given the opportunity of winning the GoPro Hero 8 webcam by answering one question: “In applications we often have a common database schema – both for Write and Read. What is the name of the approach that uses separate Read / Write models?”. The correct answer was Command Query Responsibility Segregation. The event showed us how important it is to return to offline meetings, which have been lacking in the past few years. We are already planning further ones for all programming enthusiasts. We hope to meet you there! Stay up to date with all the latest meetups and workshops we organize. Follow us on Linkedin, Facebook, and Instagram not to miss anything.

Are you a software developer looking for new challenges? Join our team and work with the best experts! Check out our job offers, apply and boost your career!