Do we feel comfortable in Nest.js?

Background

The last years have shown that writing big, scalable server-side applications using JavaScript is possible thanks to Node.js. The huge community gives us a lot of space to show off when it comes to choosing a framework and packages. It also gives us a lot of ease while constructing the project itself.

The only question is whether the organization and architecture maintenance through so many different approaches, frameworks, and thousands of packages is good for long term support and if it allows further development of the application. While looking for answers, we came across a need for some structure in the architecture. In fact, it’s a must for the cooperation to be easy and pleasant for developers using it. Solving problems that appear during development, we found the solution in one place. 

A good answer for all the questions that bother us is Nest.js.

Introducing Nest.js

The creator describes it as a reliable, effective, easily scaled, and progressive framework, for usage in big and small projects. 

But why?

If you had something to do with the Angular frontend framework before, then you would have quickly noticed the similarities. It’s definitely not a coincidence. The creator of Nest.js was inspired by the mechanisms that the Angular developers had installed while designing the environment to build the frontend application. He decided to move this idea into the world of server-side which ensured the wide-scale usage of known architecture that employs elements such as modules, dependency injection, providers, custom decorators, and many more. 

It sounds like reinventing the wheel…

You may be thinking that we already have many propitious and mature products like Node.js which are ready to be used in the environment of manufacture and have been tested by thousands. At the same time it seems like the Nest.js will require additional implementation of mechanisms for: http server, routing, exception filters, or database layer. Well, not quite. 

So how does it work?

Fine-tuning of certain layers of the application which could be potentially used later on requires many months or even years of work and a large community to adjust all the elements getting through the accumulating problems. That’s why Nest.js doesn’t employ its own implementations but uses already existing possibilities creating its layers of abstraction and solving the biggest problems you may come across in the application – architecture. It ensures keeping order and combining many tested technologies into a one huge framework. 

Using the default transpiler Babel.js that allows strong typing through the modern language TypeScript helps avoiding obstacles writing in pure JavaScript.

For example, Nest.js applies many known technologies used in other applications:   

  • Bable
  • Webpack
  • Jest
  • Expressjs (z możliwościa zmiany na fastify)
  • TypeOrm 
  • Rxjs
  • Apollo Server
  • Mongoose
  • Dotenv
  • Class-validator
  • Class-transformer
  • Node-cron 
  • Expressjs/compression
  • Helmet
  • Bull
  • Multer
  • Axios
  •  Socket.io or ws
  • Redis
  • MQTT
  • RabbitMQ

… and many more.

When is Nest.js a good solution for Node.js server-side applications?

Always, seriously… But why?

It doesn’t matter whether you are facing the challenge of writing a complex application divided into hundreds of microservices with advanced queuing mechanisms, or just a simple REST backend with numerous options of modification and the usage of already solved problems. In addition, it’s always a good idea to impose a ready-made architecture. Thus many developers understand our way of thinking.  

Additionally, there are many online tutorials prepared by the author himself, and a broad, constantly rising community successfully supporting the whole product.  

Struggles and problems

Our experience shows that most of occuring problems result from working in a given framework and due to lack of knowledge or its incorrect use. The bigger problems are: ways of migration in the databases or communication between applications. It happens when we don’t scare away all the bugs caused by one of the applied technologies rather than a problem with the framework.  

Conclusions

So, do we feel comfortable using this technology? The answer is – yes. 

Nest.js gives us a great sense of using something that is supported on many levels, ensures a reliable assistance to the community, and gives considerable development opportunities for already existing applications in this very approach. 

If you are wondering whether it’s worth the shot and you have some experience with the Angular technology, or you just have a basic knowledge on how server-side applications work and how basic project patterns look – then it’s a good idea.

If you want to evolve along with our team, don’t hesitate to contact us and talk it through.

Let the meow be with you!

Beginner’s guide to product design

Lately, many people often ask me the same questions about how to become a UX/UI designer – Where should I start? What should I know? Do I need studies to work as a designer? The list is endless.

So, along with my buddies from iteo, we’ve decided to write an article based on our experience. Ready? Let’s jump into it.

Choose your path.

Before you even start you must know what exactly you want to do. Many people want to start doing everything at once but trust me, this is not a good idea.

  • You’re kinda into visual aspects of websites, apps, products, etc.? Go more into UI design.
  • You like thinking about how everything should work, analyze, make workshops with clients? You’re definitely more of a UX designer.
  • Or maybe you want to combine these two plus you like to understand the product deeply, be in charge of it, know and improve it? That’s right. A product designer.
  • You like magazines, posters, flyers, other POS-materials, and enjoy working with the company’s identity — then you should be a graphic designer.

The list goes further with animations, illustrations, etc. Basically, look for something you will enjoy and devote a lot of your time, too!

Studies.

Do I need studies to get my dream job? The answer is simple – no. You don’t need to have any studies nor courses. Of course, they may help you in your future job but a really high percentage of designers never attend studies. It’s all about your hard work and determination. The next thing is your location. It’s easier to get decent design studies on the Westside than on the Eastside.

Most of the studies will teach you more theoretically, and you will have to learn all the practical skills on your own.

From my own experience, dropping studies was the best decision I’ve ever made. Three years in iteo were way more valuable than three years at school.

Know your tools.

Let’s be honest – you must know your tools to get your first job as a designer. It’s a standard. If you’re a beginner and you’re thinking about UX/UI/product design, don’t waste your time on Photoshop or Illustrator. Just jump straight into Figma and Sketch. 

What software should you pick? Hard to tell, but you can read our article about Figma and Sketch and make your own decision. In my opinion, you should go for Figma because it’s free and this is a huge advantage in opposition to Sketch if you’re a beginner. The rest of programs will come naturally over time.

Below you can find a list of must-have tools of every Product Designer:

  • Figma – a great tool for UI and UX design with an option to share prototypes with your client
  • Sketch – an alternative for Figma but without great built-in prototyping
  • Adobe Xd – another alternative for Sketch and Figma
  • Principle – great and powerful tool when you want to animate your design and you don’t know After Effects
  • Zeplin – a bridge connecting Designers with Developers to which you can export your designs, components, and design system
  • Illustrator – sooner or later you will need Illustrator, even just to make a logo for the product you’re currently working on

Start living with design

Path chosen? Great. You’re familiar with your tools? Awesome. Now start living with and next to design. Start paying attention to small details and other obvious things. Start asking yourself the following questions: Why did they put the logo here and not there? Why is a certain button at the end and not in the beginning? Why is this font smaller and this bigger?

With overtime, you will start noticing things that you didn’t see at the beginning and evaluating things from a professional point of view. Behance and Dribbble are probably the best websites that give you a chance to look at other designers and their projects. Even 45 minutes daily can improve your design taste and thinking. Besides, you will become aware of fashion trends and you will get some inspiration. 

Start designing.

Just do it. Open Dribbble, select a project that you liked the most, and recreate it. Button by button. Letter by letter. Try to make the exact shadow, exact effect. This is the fastest way to gain an improvement in a short amount of time. In studies, students often recreate artworks or styles of famous artists. Why? Because it’s the best way to find your style. If you don’t try someone else’s style, you will not find your own. Now the most important thing. Never share that work publicly because it’s not your work. Just use it as a way to explore new grounds, styles, and options. With overtime, you will start taking pieces from different projects, artists, and building your own products. And this is exactly what Pablo Picasso said.

“Good artists copy, great artists steal”

So, what does Picasso’s saying mean and what can we learn from it? Picasso was referring to the fact that good artists and great artists work very differently:

  • A good artist will see another artist’s style and then try and emulate that style as closely as they can.
  • A great artist will select elements from other artist’s work and incorporate it into their own unique mix of influences.

A good artist simply copies another person’s art. A great artist selectively takes (steals) elements from multiple sources and then creatively combines their influences to create something that is uniquely their own.

Design Challenges

This is the way I started. For example, Daily UI Challenges. The prompts are great to test out interactions, play with visual styles, etc. I was able to practice, research, discover, improve, experiment, play, and, of course, work hard to get to the place where I am now. You can subscribe to dailyui.co and you’ll receive a unique User Interface design challenge for 100 days. There are a lot of other websites that you can look up and take the challenge. You can even create a challenge yourself. Everything will work if you benefit from it.

From A to Z

Another great way to learn the process hidden behind products is to recreate it. Make your own small process. For example, just think of an app you want to make. Build your idea. Then start asking yourself why you should make it, what are the pros and cons. What problem do you solve? What are you trying to build and why? Just define your product vision. Next, you should do research. UX research is the core of making an impactful product. In order to understand how users behave, how they think, what their mental models are, and how your product helps them in achieving their goals, you need to start digging deeper into finding those answers. The most-used and fastest method is Competitor Analysis – in marketing and strategic management it is a process of finding the strength and weaknesses of present and future competitors.

Then start making your wireframes. Take a piece of paper, forget about colors and just draw your mobile app/website like you think it should look. Paper will save you a lot of time and enable you to explore entirely different approaches. If you finally worked out your wireframes, digitize them. Make them High Fidelity. You can use Figma to connect every piece, make a prototype, and try to use it as a final product. Is everything ok with it? Something is missing? Something is in the wrong place? Change it and try again. You can look at other live products to see how they manage to solve their problem, how they made buttons, onboarding, menu, and other core functionalities. If you finally have your perfect prototype, stylize it with the help of Dribbble or Behance. Just remember to take little pieces from different projects to make your own. Don’t steal.

And you got it. Your first product. With a little process behind it. Put it in the portfolio and go for another one!

PS: This is just a really small part of the process described so that as a beginner you can try at least a part of what awaits you when you will finally work as a Product Designer. The real process is 10 to 20 times bigger and more complicated but don’t worry. Everything will come to you over time.

Read.

I am not going to talk about millions of books and articles that you need to read to become a designer, because the Internet is full of information on this topic. Just read. I’ve never liked reading books. It doesn’t matter if it was a school lecture or a fantasy book. I hated it. After 23 years I realized how wrong I was. The amount of knowledge that is hidden between pages in different books is unbelievable.

Here are some examples of books that we suggest at iteo you should read at first:

  • Refactoring UI – This book contains literally everything we know about web design, distilled into short, easy to read chapters.
  • Don’t make me think by Steve Krug
  • Change by Design by Tim Brown
  • Basically every position at e-Books on UXPin
  • Logo Design Love

Create a portfolio and get a job.

Finally, we came to the end of this article. You have your own mini product with a little case study behind it. You’ve made several projects, apps, websites, brandings. Now it’s time to upload them on Behance or Dribbble. Portfolio is your business card. By looking at it, the employer will decide whether to start the interview process with you or to choose another candidate. Honestly, if your portfolio is good enough, the resume is redundant. But remember, you’re a beginner so make a good portfolio with a good resume. Got it? Now create an account on LinkedIn and start looking for your dream job!

Psst. Currently, we’re looking for a Junior Graphic Designer. Wanna give it a try?

Transforming a MedTech business using telemedicine

If you have a business that offers medical products and services, you might wonder what could be the next step in the expansion strategy for your brand. And COVID-19 pandemic determined the direction for many healthcare companies – telemedicine. Because when people can’t leave their homes, they still need to consult their doctor.

Telemedicine has many faces. It can be used for patient monitoring, to improve hospital efficiency and to provide convenient healthcare to people in rural locations. Every business that operates in the medical industry and is open to technological solutions can become a part of this scene. They just need to listen to their customers and provide user-friendly offerings that will answer their needs.

How coronavirus led telemedicine outbreak

Until the COVID-19 pandemic started to spread around the world, telemedicine was steadily growing and was mostly targeting patients that couldn’t afford traditional healthcare, had constricted access to it, or had chronic diseases and needed constant monitoring. But suddenly, we had to face a lockdown caused by a virus that was highly contagious and not yet curable. We are not even sure if we have it or not as some people don’t experience any symptoms.

And let’s be clear – when the pandemic starts, we don’t automatically stop getting sick from other things. Catching a cold, having skin problems, or need for prescription drugs – they still required attention from medical specialists. Incoming – telemedicine.

Thanks to applications and platforms that offer remote health consultations, people didn’t have to leave their homes and risk their lives. They could still contact their physicians to ask about their problems and get professional advice. In countries like Poland, where we have e-prescriptions and a system for digital sick notes, it’s even more convenient.

Many companies felt motivated to enter the telemedicine market faster because of COVID-19. They could have already offered some healthcare products or services but adding telemedicine to their portfolio was a significant step towards business growth. Also, a lot of startups were founded or changed their profile to become relevant in times of pandemic when demand for remote medicine was enormous.

How telemedicine can change the healthcare industry?

First of all, in times of coronavirus, it provides a safe way to contact a doctor and makes the ERs and hospitals less overloaded with work. There were many instances when people thought they had symptoms of COVID-19 and went to the hospital to find out it’s just the flu. On the other hand, sometimes sanitary stations or medical facilities had to recommend quarantine without even testing patients – because they couldn’t afford (resources-wise) to accept more people. With telemedicine, these situations can be reduced and hospitals can reorganize their work to take care of patients that really need it.

In many countries, there are people that don’t have access to universal healthcare – because of their location or lack of money. The government doesn’t reimburse all services and they also need to pay for gas to get to the doctor. Not to mention not being able to visit a physician because of work. There are many reasons that people are not regularly examined and sometimes they don’t even get an appointment when something’s wrong. Telemedicine can give them a chance to change that.

Then, we have patients that need constant monitoring due to their chronic diseases or health risks. Home devices and wearables can control their state, send data to the doctor regularly for analysis and alarm emergency services when something’s wrong. If a patient often contacts specialists, they will have access to all medical records beforehand so they will be prepared for the appointment and will have time for additional consultations. This system is highly beneficial to both sides.

How to transform a MedTech business for telemedicine purposes?

Start with really determining your clients’ current needs. Collect feedback and conduct interviews or research market trends. How can you enter this industry and find the niche to really shine compared to your competition? Answering that question can give you a direction for your business expansion.

Then, think of the product or service itself. It needs to be convenient and fulfill your target customers’ goals. Maybe you can add some features or additions to your existing offer and create a comprehensive healthcare and telemedicine kit? Many people look for brands that can give them a whole experience because they don’t want to switch between vendors to get their things done. Instead of transforming your whole concept, just build something to complement your ongoing operations.

If you have a bigger budget to invest in innovations, you can think about wearables or products based on artificial intelligence. They become a significant trend in the world of telemedicine and many startups aspire to release devices or advanced applications. Actually, if you are an established enterprise, collaboration with a startup can be beneficial for both parties – you will gain a new stream of revenue and your partner will get resources to develop the product. It’s one of the best ways to evolve a MedTech business into a telemedicine company.

Remember, that telemedicine, just like other healthcare products and services, needs to be compliant in accordance to regulations based on the region you are operating in. You probably know about them as a business owner in the MedTech sector, but you should take a closer look again when you introduce new products.

Conclusion

Telemedicine is definitely one of the industries that will rapidly expand in the future. Because of the COVID-19 pandemic, it received an additional boost to grow. If you already have a MedTech business, remote health services might become a natural next step for you. Check your strategy for the next months as you don’t want to miss it.

If you need help with developing a telemedicine product – contact us. We will help you create a mobile application, a website, or any other software you might need. Check out our portfolio for examples of our previous projects. Let’s make something extraordinary together!

We announce a partnership with NopCommerce

We have been waiting for this announcement for quite a long time to be fully prepared and reassured that we are ready to face a new challenge. Finally, we can proudly state that iteo joined the nopCommerce community as a Gold Solution Partner. This partnership along with 4 certified developers confirms that we meet professional standards, providing expertise and knowledge in nopCommerce solutions.

Every gold partner has a close relationship with both the nopCommerce community and other partners. It helps us expand acquired knowledge and transfer it to serve our clients even better by creating end-to-end, scalable e-commerce solutions. 

How did it all start? 

Before we share some insights about the platform and the collaboration itself, we would like to take you on a trip in a time machine! 

Iteo members have a habit of connecting competencies and passions of different teams into one complete whole – and that’s basically what started our e-commerce journey.

As a custom development software house, we had a chance to work on mobile apps for the biggest e-commerce players on the market. While realizing the projects, we were getting more and more interested and inspired by the newly discovered e-commerce reality and we felt that it is something worth digging into. 

In the meantime, our company was joined by Grzegorz (frontend team leader) and Kasia (UX designer) who have worked with e-commerce products on a daily basis in their previous projects. It happened naturally that e-commerce topics were coming up nearly all the time while grabbing an online morning coffee.

Having heard that, our CEO has already known what steps we needed to take. We joined our strong technical skills in .NET technologies with e-commerce business knowledge and started to look for a proper partner on the market. After thorough research and discussions, we decided that the best way for us to move forward was to join the nopCommerce community.

Taking a closer look at the solution 

nopCommerce is an open-source e-commerce platform based on ASP.NET Core that has been evolving on the market since 2008. Each of the 250,000 members of the vibrant community gives valuable input to the product each year which makes it abreast of current trends and market needs. The system is highly scalable and secure with a well-developed extensions marketplace and a strong partner’s network from all around the world. 

It has earned the trust of over 60,000 store owners worldwide with renowned clients like: Volvo Cars, BMW, Turkish Airlines, Lee Jeans, and Celine Dion.

nopCommerce platform enables us to create effective e-commerce websites with user-friendly, eye-catching themes, and with an option of unlimited extensions required by a particular business. 

What does nopCommerce offer? 

nopCommerce offers powerful out-of-the-box features for effective B2C and B2B sales. The basic configuration of the shop enables broad and intuitive products, orders, content, and client management. It also provides reports and statistics. 

There are over 1,500 plugins – developed by the partners and the community – that can be quickly implemented to the website. We can use: payment modules, user interface & widgets, shipping & delivery, marketing & sales, administration, customer management, and security.

What is more, the system’s extendable and well-structured architecture allows us to broaden and customize it according to the client’s needs without interfering with the core architecture. 

What will the outcome be? 

Our goal now is to use the full potential of capabilities offered by nopCommerce and combine it with our experience and knowledge to build effective and scalable e-commerce solutions. Our dedicated e-commerce team is able to develop new features and plugins for any shop to serve our customers even better. If you are interested in launching your e-store or you want a new start with an existing one, just drop us a line and join the journey! 

The future of retail in the post-COVID world

Global reality changed radically during the coronavirus pandemic. The danger is still not completely gone, but there is no doubt it shifted many businesses and changed consumer habits forever. Today we want to focus on retail – the basic pillar of the economy and one of the main industries that were influenced by Covid-19.

Nowadays, we can buy almost anything, no matter where we are. Due to globalization, we are not surprised to see tropical fruits in European supermarkets or that we purchase clothes from a brand that was founded in America. For many people, going to the mall is a form of entertainment and one of the best ways to spend their free time. But what happens when suddenly you can’t visit all your favorite stores?

What changed during the pandemic

That’s exactly what happened when the world started to fight the new virus outbreak. Almost every country recommended to stay at home and isolate. Many shops got completely closed, except for grocery and drug stores. Many businesses suffered incredible decreases in revenue and had to rethink their strategies for this year. People started to lose jobs so their desires when it comes to non-essential purchases had to be muted. Everything happened suddenly, so there was almost no time to prepare beforehand.

Let’s be honest – traditional retail was already evolving before the Covid-19 outbreak. Thanks to technological growth, we gained new ways of buying things or not buying them. Shifting to online shopping was one thing, but growing ecological trends made people reconsider their consumer behaviors and change some of their habits. Sharing economy, renting certain products – these are also dangers for retail as we knew it until recently.

Some categories of goods suffered more than others – that’s obvious. Food, cosmetics, fitness equipment, educational materials (for homeschooling) – they were definitely on the top of demanded products.

Now we will analyze trends that were born or became extremely popular during the pandemic and try to determine which ones are here to stay. What made the future of retail different because of Covid-19?

E-commerce acceleration and evolving consumer behaviors

72% of people with internet access buy stuff online. According to research, if you ask someone where they purchased their last product or service, 60% will answer that it was in an e-commerce store. Due to the coronavirus pandemic, these statistics grew 27%. Being available to your clients in the digital environment is a must.

Changing consumer behaviors mean that e-commerce stores need to optimize their processes to make them even more intuitive and user-friendly. They simplify checkouts, provide better security measures and find more ways to turn customers that visit their shop occasionally into loyal ones.

The growth in the e-commerce sector is visible and dynamic at the moment and there is no way to predict when it will stabilize. Until then, all the digital shops should look for ways to lead the clients to them. And everyone who is not online yet needs to quickly rethink their business strategy.

Gathering information about potential clients

E-commerce businesses based their operations on customer profiles for years. And they used various techniques to collect information about their preferences, needs and desires. In times of lockdown, analyzing this data might become a crucial factor for growth in online retail. Knowing more and more about potential clients helps to create a perfect, tailor-made offer for each one of them.

Different pickup methods

Social distance is still recommended and many citizens are willing to comply. Sellers that want to keep personal, face-to-face relationships with their clients might not survive post-epidemic changes. People prefer to pick up their goods in a safe, contactless way. That means significant growth in the industry that includes post offices and postmen, courier companies and delivery services.

In Poland, InPost was a company that could proudly announce its success during Covid-19 thanks to its innovative service called Parcel Lockers. These machines allow people to receive packages without seeing or talking to anyone. And thanks to the remote locker opening feature, customers don’t even have to touch the machine’s computer screen which promotes hygiene and safety during the pandemic. Check out how we created this app for them and why it’s such a success in our blog article about that!

For many companies, introducing a drive-through model or curbside pickup will be the only way to safely deliver their products and goods to their clients. 25% of consumers admitted that click-and-collect is one of the most important options when looking for a suitable e-commerce store.

Recreating offline relations in an online environment

Small businesses and big companies approach the e-commerce world with bigger courage and they are looking for ways to maintain vivid relationships with their clients. Direct engagement during a lockdown is not impossible thanks to social media platforms that allow brands to organize creative marketing campaigns, provide personalized customer service and offer exclusive bargains to their followers.

Online presence is everything not only during the pandemic and after it. Modern websites, feature-rich mobile applications, user-friendly websites and web platforms help to grow sales and allow the clients to identify with the brand. Without visibility and accessibility, an online seller can’t even dream about success. And when people can’t leave their homes it becomes essential.

The technological outburst will support e-commerce activities

The fact that thanks to technology we can buy things online is just the beginning of a revolution. Artificial intelligence with algorithms like machine learning can change the way products and services are sold on the internet. They analyze every piece of data that is collected in the whole process of purchasing and look for relevant conclusions that can help to make it more efficient.

Cloud computing helps e-commerce stores to scale their operations and offer thousands of products to millions of users. Augmented reality (AR) can enhance online shopping experience – for example by giving furniture buyers a chance to visualize their new purchases in their homes. There are already first tests of robots as delivery machines – think autonomous cars or drones instead of couriers. Thanks to technology, pandemic lockdown becomes less annoying – because we can compensate for the lack of experiences we would have outside our homes with the possibilities it brings to us. And even after the pandemic, we will want all these conveniences to stay.

Summary

The trends we mentioned above are indeed interesting and rather unpredictable – everything can change, as we could see when the pandemic came out of nowhere. And of course, these are not all the changes you can expect – just the most crucial ones. What will never be different is taking care of consumer’s needs and desires – that’s the main purpose of any business, not only e-commerce. Each change brings new chances to grow business, provide better service and become a market leader – it’s up to us how we will use these new opportunities.

If your decision in 2020 is to build an app or a website, we can help. Contact us and tell us what you need exactly. With software products developed at iteo, you can be sure you will thrive during the pandemic and long after it. 

Why you should consider .NET Core for your next project

.NET Framework, as remembered by everyone – powerful, but highly demanding, needs Windows to be hosted, requires some expertise to be deployed, programs are “heavy” and need a special environment to run, great when you have decent funds and time to invest in preparing the architecture. But when you are on a budget or building a smaller system it’s probably better to avoid it since there are cheaper and simpler solutions…

And now for something completely different:

.NET Core

Release by Microsoft in 2016 was about to change the world of .NET forever. Free, open-source, and cross-platform. For the first time in history, developers could have fully developed and deploy their applications using .NET on the different operating systems than Windows (let’s not talk about Mono here).

Core does not require Visual Studio anymore. Actually, any text editor can be used and the app can be compiled and run using a command-line interface.

Thanks to the modular structure, .NET Core applications can be way smaller than the original .NET Framework ones used to be. They no longer need to be hosted on the IIS server, which is a robust but complicated and immense solution.

Virtually all the problems that “old” .NET had had have been resolved in a very elegant and successful manner. 

The problem is… its name still can be associated with an old version and many people don’t even realize that nearly all that was true a few years ago for .NET but now is simply not valid anymore.

Let’s take a closer look at things that have changed.

How does it compare with the .NET framework

The big surprise and very interesting move is the fact that .NET Core is not only free but also open-source! But what does it really mean for someone who wants to start a new project and considers the technology? Open-source gives access to the knowledge for the developers, helping them understand the framework better, which helps to build libraries and tools that can be used to deliver tasks. It can also help to solve problems that may come out during development. It also makes the product more trustworthy.

What are the other advantages of the .NET Core? We get rid of the restriction of using Windows OS and IIS Server – .NET Core allows us to develop on any OS we want using any IDE we want (as long as it supports .NET Core, but trust me, there are lots to choose from)! Linux servers are the most popular hosting services available and now they can be used to run .NET projects. Neat!

Nowadays container solutions are very popular. .NET Core works flawlessly with Docker. Not only to test and develop but also to be used in production deployments, taking care of preparing the system with prerequisite requirements and configuration.

Thanks to its structure, .NET Core supports microservices that can now easily be spread between different machines and even operating systems what improves scalability possibilities.

From now on we can also use command-line style development on every OS (Mac, Linux, and Windows) of course we can still do the whole process of building, testing, and running our solution from our IDE but it’s nice to have an alternative, especially for projects that can’t afford Visual Studio or simply don’t want to use it.

How does it compare with other frameworks

In the world of backend development, there are many languages and frameworks available but .NET Core, Node.JS, Spring, and Symphony emerge as the leaders of the stake. Let’s take a closer look and compare them with each other. All have large, active, and vibrant communities.

What makes frameworks like Python’s Django, PHP’s Symphony, and Node.JS’s Express so popular? They are free, open-source, possible to deploy on most operating systems, have homogeneous communities with a lot of ready to use packages, libraries, and templates. Many tools can help in developing and deploying applications, lots of them are free. Applications written in those languages are lightweight yet efficient. 

Are those arguments against choosing .NET Core? 

No! All the advantages listed above are totally valid for .NET Core, too!

  • Free IDE? Checked! VS Code, VS Community, or virtually any text editor used with CLI.
  • Community? Checked! Centered around Stack Overflow (over 10k answered topics)
  • Multiple supported OSes? Checked! macOS, Linux, and Windows, also with Docker support!
  • Lightweight? Checked! .NET Core apps are modular, meaning they can be built only with needed components.

So everything checks out, but wait – there’s more! What makes .NET Core stand out amongst the other frameworks is a dedicated cloud platform as you may know from our previous articles – Azure.

Who can benefit from using .NET Core?

As many people remember, .NET Framework was best for enterprise, big, and usually long-running, projects. It is still true for .NET Core. It provides a highly reliable environment with very good performance, allowing scaling of the application, testing, and hosting or migrating it into the cloud. Giving a high level of security allows it to be used in even most security-tight applications. The C# language used in Core has still the same syntax so developers that have previously worked in the .NET Framework will be able to quickly switch into the new version.

What about smaller projects? Or startups? In such, the budget is usually tight and there’s no need for such complex solutions. Time and money often play an important role. 

.NET Core is a perfect choice for such projects!

As we already described, it can be hosted on nearly any machine or cloud, the project can be developed with free tools and no additional licenses must be purchased.

Since it’s a very popular solution, we can count on support all over the internet, both thanks to rich documentation and an active community.

Conclusion

Whether you are starting a big project with a decent budget or startup that requires the quickest and cheapest solution possible, you should not be scared of .NET Core. Keep in mind that all those things we feared about .NET are long gone, and we are left with highly efficient, capable of performing even the most complicated tasks with great support and available tools and extensions, that is also free, open-source, lightweight and able to work on lots of operating systems. Having all of those advantages it is not sacrificing its powers that we already know. 

Now the old .NET is dead, long live the .NET Core!

Do you want to develop your next project using .NET Core? Don’t hesitate to contact us! Our long time expertise in this technology will be put in good use!

Azure Cognitive Search – when ‘name LIKE…’ is not enough

Are you in need of implementing advanced search service in your application? You can’t be bothered to learn, deploy, and maintain the next database server? You don’t want to learn AI theory or another tangled library? Azure Cognitive Search might be the solution for your concerns!

Let’s take a closer look!

What is it? And why should I use it?

Azure Cognitive Search is a search-as-a-service cloud solution allowing developers to perform advanced searches not only over text and geodata but also files like Microsoft Office documents and even images. It uses artificial intelligence to extract text – all happening backstage without any need for knowledge in that area! 

But there are already other search solutions. Why should I use this one? First of all, it’s a cloud-based service. No installing, configuring server, worrying about disc space. Second, Azure Cognitive Search aims to be a universal solution. You define the criteria that data can be searched by. Today you need regular text search, but tomorrow it can be searching in documents, or maybe you will need to use a different database? Azure Cognitive Search is ready for that.

Lots of search operations can be implemented directly on the database but can turn out to be computationally intensive. Moving this responsibility to the dedicated solution helps to ease the database and also gives a possibility to scale when needed.

It is worth mentioning that Azure provides us with SLA on a 99,9% availability level (if some certain requirements are fulfilled).

What does it offer? 

Azure Cognitive Search is a humongous tool and we wouldn’t have a day to describe all of its functionalities, but let’s look at the most important of them.

Indexes

The main asset of Cognitive Search. Every document used and processed by Azure Search ends up in an index that is made up of records containing various attributes. The index defines how data can be searched.

Replicas

Each replica holds a copy of your data and thanks to that you can load balance requests. In addition, all load balancing and replication are managed by Azure Search, all you have to do is adjust the number of replicas. 

Increase the number of replicas when you start getting too many requests from multiple users and performance drops.

Partitions

Provides storage for your index operations (for example index refreshing or rebuilding). Each partition has shared data of all your indexes. So for example, if you have 4 partitions on your Azure Search instance your index data is split into four parts.

When on a low load a single query takes too long to complete, adding more replicas won’t solve the problem. Adding more partitions might be the solution. Splitting data into smaller chunks can allow parallel operations, increasing performance.

Indexer

Crawler that extracts searchable data from an external data source and populates your Azure Search index. All you need to do is connect your data sources like a database or storage and set whether the indexes should be built on-demand or periodically.

Synonyms

Cognitive search allows you to create a collection of synonyms. For example when you have documents connected with the word “Dog” you can associate the words “Puppy” or “Canine” and when the user searches for any of those 3 they will hit the same results. Isn’t that great?

Language analyzers

Azure Cognitive Search provides us with 35 Lucene and 50 Microsoft text analyzers. You can set an individual analyzer for each field in your index. Language analyzers perform lexical analysis using specific linguistic rules of the target language.

Advanced features

Azure Cognitive Search isn’t just a simple search service, it has so much more to offer. Text searching can be customized with many text analyzers. Search results can be sorted and paged almost without any configuration. But what makes it stand out from the competition is AI Enrichment – set of extensions that use Machine Learning to extend search possibilities. For example, built-in OCR that can read text from images or an algorithm, based on neural networks, that allow us to identify visual features such as facial recognition or image interpretation. AI can also be used for entity recognition (email, URL, date) and language recognition. If that’s still not enough, we can define our own so-called skills, that are available via REST API, and connect them to our Azure Search.

How do we use it?

Don’t we all love actual, real-life examples? Luckily we happen to have a few. Let us share some cases of how we have used it in our projects.

Advanced user searching

We have data about employees stored in the database. They need to be searchable by email, name, last name, but also their job title and skill level. Under the hood, there are already few joins of tables required. But efficiency is only one problem here.

We want the search to be the case and accent insensitive (so “Ę” is treated as “E”, and “e” is equal to “E”). Since database contains employees from all around the world some names can be hard to pronounce for users from other countries, so we want to show results even if small typo has been made in a query (“Brzęczyszczykiewicz” should still be found if a user entered “Brzeczyszczykeiwicz”). 

Having those requirements in mind, try guessing what tool we chose to complete this task.

You got it! We have chosen Azure Cognitive Search! It could have fulfilled all the required needs. Easing database with custom index, ignore accents in a query, allow small typos while remaining efficient.

Searching documents

Imagine this – the project is already deployed and running for a few months. The customer uploads lots of documents that are stored as an image in our cloud storage. Then comes a new requirement.

“We want to search by text in those scans.”

”But sir… those are images…”

“Is this a problem?”

“As a matter of fact – no!”

We can use Azure Cognitive Search to easily setup OCR (Optical Character Recognition), and if photos are already stored in Azure (for instance Azure Blob Storage) we don’t even need any additional configuration, just select the correct option in Search. No need to extract the text for all existing files manually! At this point, things can get even spicier. You can use AI to extract data from images, like face recognition, categorization, nudity detection, and so on, but that’s a topic for a whole different story.

Conclusion

Thanks for staying with us. If you are in need of reliable and robust finding service, that can handle large amounts of data, has high possibilities of configuration, and is easy to use then look no further!

Azure Cognitive Search can be used for both simpler tasks, offering basic and even free tiers, as well as very complicated scenarios where performance is critical even at the cost of the budget. Powered by Artificial Intelligence, it can achieve astonishing things!

Do you want to implement this amazing service in your project? Feel free to contact us, it will be our pleasure to cooperate with you. Together we can deliver everything!

Our coverage of TestingCup2020 Online

We wouldn’t miss it for the world! On June 17th, two teams were representing iteo during TestingCup 2020 Online. This edition was special – not only because the competition was held entirely remotely but also because, for the first time, MrBuggy was created in the form of a mobile application.

Two squads consisting of 3 people each were representing iteo’s QA department in the biggest, annual competition for software testers – TestingCup. This year, due to COVID-19 pandemic recommendations, it was happening in a particular mode – entirely online. The attendees had to face the challenge of finding the biggest number of defects hidden in MrBuggy application as quickly as possible.

Why was this year different?

The exceptional nature of this TestingCup edition, besides online format and MrBuggy mobile app, was also underlined by the competition’s changed rules. Each year, TestingCup had two stages. First was all about finding the most significant number of bugs and reporting them. Depending on the significance of the issue, the participant would obtain plus points, but if the reported bug wasn’t actually a bug – there would be minus points!

The second stage required to prepare a testing process document picked by the organizational committee. In previous years there was, for example, a testing plan or a test report. The document would be verified with a checklist of all required elements. The number of points collected in both stages would indicate the winner or winners.

But this year the organizational committee changed the rules completely. There was no document preparation or the minus points, which was definitely an advantage of this year’s competition.

The course of the competition

During the festive inauguration, the rules of this year’s edition were presented. What mattered was the number of founded defects and the time spent on finding them. To prove that the bug wasn’t found by accident, one had to recreate the error again. After detecting all issues hidden within the app or when the time passed by (we had 2 hours), team captains had to send a report from their device – the time spent to find defects on their devices was crucial because it influenced the team’s score.

The organizational committee provided 20 challenging tasks that featured different functionalities like signing up, logging in, purchasing products and more – each of them had one critical defect. None of the competing teams found all of them, which can indicate that the competition this year was really tough. TestingCup 2020 winners found 18 issues. Our representatives – ITEO CrashFreeTeam and ITEO Bug Hunters placed themselves on the 12th and 21st positions in the rank.

ITEO CrashFreeTeam
ITEO Bug Hunters

Congratulations to all attendees and see you on the next year’s edition of TestingCup!

Lessons we learned from going full remote

The coronavirus pandemic happened suddenly and changed our work habits in every possible way. The biggest alteration was going full remote and sending all our employees home. They couldn’t organize meetings in the conference room, eat lunch in the kitchen or drop by their colleagues’ office to say hi or discuss important subjects. What did we learn from this unusual situation?

Working remotely is something that either you love or hate. Some people appreciate the comfort of their own homes where they don’t have to wear uptight clothes and have no distractions from their fellow employees. Others hate working from home because of other family members interrupting them all the time. Also, sometimes a fridge, undone laundry, or a cat can be way more interesting than ticking off the to-do list.

But in times of epidemic, there was no choice whatsoever. Everyone had to work from home and make the best out of it. We had to adjust our daily operations to achieve the productivity we had in the office. Here’s a couple of conclusions we have now when our team is now allowed to work on-premises or from their own homes.

1. It is different from working with remote clients

We had some experience with remote work before Covid-19. First of all, we have more than one office in Poland – so our team is not in one place. Daily video calls were a part of our routine. Also, we cooperate with international clients and Polish companies from around the country. To be honest, most of our business operations are happening via digital channels.

Still, not having the usual squad available in the office means that you need to call or message EVERYONE. No ability to meet face-to-face means no product workshops or sales meetings unless they are video calls. And we all know sometimes it is better to meet up in person.

Nonetheless, we had to change our process to be safe and sound during the pandemic. That’s exactly what we did – and even though we feel the difference, we can tell it’s not impossible to work full remotely.

2. Good organization is the key

Everything can be done if your work is well-organized. Being in constant contact, having a couple of communication tools and reporting work progress regularly are the best ways to keep in touch with your co-workers and deliver excellent results.

This rule applies not only to fully remote times but to software development in general. We shared our experience on that matter in one of our blog posts on remote work. The iteo team already worked partially remote before the pandemic as the majority of our clients come from abroad. We had to work out rules and methods to be productive even when we couldn’t meet in person. Different time zones weren’t helpful either.

All that work done in a digital environment before the coronavirus helped us to get organized when we had to ditch the office and work from our homes. And we proved it could be just fine.

3. Working from home doesn’t mean less productivity

Yes, we know it’s sometimes tempting to walk around the house 20 times a day or to spend 30 minutes petting your dog or cat. Not to mention people who have kids and HAVE to pay attention to them almost constantly. You also might have a significant other that also works remotely and has a couple of video calls per day. So there are distractions and noise that can make peaceful work problematic.

Still, we didn’t observe any changes when it comes to delivering perfect results. Our teammates were available on Slack during work hours, they attended scheduled online meetings and they shared the results of their labor with leaders and clients. Apparently, there is a way to work from home despite the obstacles. 

4. We live in privileged times and work in a privileged industry

As an IT company, we mentioned we already worked remotely with some of our clients and between offices we have in a couple of Polish cities. So we had experience and all communication means to keep in touch and push the projects further. The fact is that the majority of our work happens online, so we could just pack our computers and move within hours since the government issued their pandemic recommendations.

With internet connection almost everywhere and all the digital tools that allow video calls and file sharing, we can work from home as long as it’s needed and keep our operations as usual. In times of epidemic, our squad will stay safe and will be able to work no matter what.

5. We are different people when it comes to work

Some of us couldn’t wait to come back to the office – because of the reasons mentioned above. Some people need a visible border between work and home. Also, organizing meetings is easier when you have a dedicated room for it and you can talk with everyone face-to-face. Missing fellow employees was also a factor here.

Right now, when there is voluntary permission to come to the office, some of the iteo teammates gladly do just that. Others stayed at home and they don’t want to come back just yet. Partially because the COVID-19 is still out there and the pandemic is not over. But also because they feel much more comfortable when working from home.

We should all understand that each of us has a different style of work and they prefer various surroundings to make themselves productive. Going fully remote showed us that it is possible to work this way and that for some people it can be better.

Conclusion

Will we work fully remote forever? Probably not. We like to keep our teammates close to share the experience of software development. But we have to say, despite the whole pandemic that caused major public health anxiety, we learned a lot and we are prepared to tackle similar challenges in the future. Times are uncertain right now and our priority is to keep work continuity, so we can always thrive.

Contact us if you want to work with a company that has years of expertise in software development. We will walk you through the whole process to deliver excellent results and help you with your business. Let’s work together – no matter where you are located, we can offer comprehensive services in design, development, quality assurance and more.

How remote work influences project management

A project manager is one of the crucial roles in software development. It is a person responsible for work organization, efficient communication and delivering results according to schedule. In times of pandemic, many employees had to change their habits and work styles. How project management evolved to be fully remote?

Every project manager is put in the center of the team. They need to inform the client about current progress, collect feedback, and pass it to the programmers, designers, and testers to incorporate it into the production process. That role needs a lot of patience, excellent soft skills and liability.

What are the primary duties of a project manager?

Every person that works in this position has to analyze the requirements of the project and see what resources are needed. Then, they need to determine tasks that have to be done to deliver the expected outcome. Controlling daily progress and evaluating the team’s productivity are other obligations they have to keep in mind. In case of sudden changes or various random conditions, they need to take care of the team’s flexibility and negotiate solutions that will help them work without any roadblocks and finish the project as predicted.

As you can see, it is quite an important role with a lot of accountability. And they need to speak with many people on a daily basis – both face-to-face and by correspondence.

What are the other roles in project management?

As you may already guess, the main two parties that cooperate with the project manager are the client and the software development team. Each of them has a different role and a set of tasks they need to accomplish, so everything runs smoothly and is done on time.

In Agile and Scrum development, which is the leading methodology in seasoned digital agencies, the client usually enters the Product Owner role. They represent the company and their responsibility is to provide information on users’ needs and desires that have to be fulfilled by the product. Their expertise and knowledge about the industry, business and clients is crucial to creating a website, a mobile app, or any other software that will achieve success among potential customers.

On the other side, we have the team – usually with the team leader that reports to the project manager directly and the rest of the members that answer the leader’s decisions. What’s important is that every person has a different set of skills, so each project team’s composition should be carefully considered. We should pick people with knowledge in a particular subject that is meaningful for this concrete product and experienced in previous similar projects.

You shouldn’t completely forget about organizational and communication skills when choosing team members for a software development project. Their technical abilities are crucial, but other characteristics can influence workflow, productivity and cooperation.

How to work remotely as a project manager?

Project manager’s work is all about communication, so finding the right ways and tools to create an undisturbed environment for conversations is essential here. We already wrote about it on our blog, where we discussed remote work in general. Sharing our experience here is based on the biggest challenge in a couple of years – the COVID-19 pandemic that made us all work remotely, whether we like it or not.

First of all, project managers should establish remote communication methods for all their projects or each one separately – depending on how open their clients will be to consent to the proposed plan. There shouldn’t be more than 2 or 3 robust programs or applications that allow video calling, text chatting for links and materials, screen sharing and synchronization with calendar to schedule meetings.

Speaking of calendar and scheduling – you should really keep track of your tasks, video calls and other to-dos. You probably already established a method of organizing your own time, so you can stick to that while working remotely. We will share some tools that can help in the further part of this article.

After establishing the communication rules with your clients and teams, you need to find space for daily calls to be up to date with work progress and pass information between parties.

And that’s basically it. The rest of the project management tasks were done on the computer anyway. If you have your laptop, a smartphone, maybe a paper calendar (if you prefer it for organization) and an internet connection – you can do your job no matter what happens in the world.

Tools useful for remote project management

Let’s talk about some tools based on the categories of operations they need to perform. For scheduling, we recommend Google Calendar for the most straightforward reason – most people use it. Having a Gmail account is common and synchronization is excellent, so it’s incredibly convenient for you, the team and the client.

Video calls can be done on Google Meet, Zoom, or Skype – depending on what is preferred by the Product Owner. All these tools allow the users to share their screens and send files so you can exchange materials in real-time, even if you are running a meeting with multiple people. Remember that using a camera during remote business meetings is considered professional so even though you work at home, ditch pajamas and brush your hair 😉

For project management at iteo, we use several tools that help us track our tasks, report productivity and plan our workdays. BaseCamp is excellent as a shared space for our development team and the client. We can invite everyone to a dedicated project and do almost everything we need to – communicate, create to-do lists, add pictures or videos and so much more.

As for internal work organization, we use Confluence as a knowledge base and Jira for tasks and reporting work hours. Nothing really changed here when we started to work entirely remotely, as everything happens in a digital space.

For your own organization and scheduling, we recommend a couple of apps that you can test to see if you prefer any. Writing in your calendar is okay, too, so don’t hesitate to keep it if you liked it until now. For kanban lovers, Trello might be great and if you prefer simple lists, you can try Todoist or other similar programs. Their advantage is that web and mobile apps synchronize perfectly so you can always be up-to-date with your tasks for the day.

Email for EVERYTHING and Google Drive to keep and share files is obvious, so we won’t talk about them that much. The main idea here is to find the best remote work system to make the project manager, the client and the teamwork in perfect synergy to achieve high productivity and spectacular results.

Did remote work change our project managers’ habits?

Of course, it is different to work entirely remotely. Project managers can’t quickly drop by the developers’ room anymore to tell them the newest update from the Product Owner. And sometimes, working from home can be distracting. As a company with most of their clients abroad, we know how to communicate when we can’t meet in the office. We had to adjust our process during the pandemic just a bit to still deliver results and quality.

If you would like to cooperate with us, send us a message. As you can see, we are prepared to offer our software development services no matter what conditions we are working in. Let’s talk about your project and conquer the web or mobile app market.