All Posts in blog

December 4, 2018 - No Comments!

The future of IoT in the Healthcare Market

By dreaming about the vision of the connected medical sensors world you can get the impression that it will flood the market and make our lives easier in a blink of an eye. The road to success in the field of medicine is never simple though. Let me discuss few problems the Healthcare IoT market is facing and give some examples of real applications where technology is changing the lives of patients and doctors.

Internet of Things devices in healthcare:

  • devices that collect patient data in the hospital and automatically send them to the database without the need for a doctor to check each time;
  • connected to the network thermometers, glucometers, etc., examining the patient's condition at home;
  • devices for athletes to track progress during training;
  • technologies that monitor our diet and provide advice;

Cybersecurity takes on special significance

Privacy is the key and medical devices process data that are very sensitive. We do not always want to share information about our diseases with the whole world. Meanwhile, as we wrote in the previous article (link) taking care of security in the IoT segment is not easy. There are proven news about the possibility of attacking such important devices as a heart pacemaker. Most medical implants also do not have the ability to be updated remotely - the installation of a new software version can even be associated with the next operation.

That is why, apart from the precautions that we have already signaled, we should think about additional penetration tests ("good" hackers try to break into the device and thus reveal security gaps), the obligation to encrypt the transmission or introduce security certificates. The FDA (Food and Drug Administration) has already taken steps to introduce IoT device security audits. Other regulators are likely to follow this policy.

High costs

Designing a medical device is expensive and requires compliance with many restrictive standards during the certification process. For this reason, not many design companies undertake to create devices of this type. The price of components, in particular sensors and power systems is also a problem.

However, the situation is improving from year to year. In addition to large medical companies, there are more and more startups on the market that may exacerbate competition (including price one). In addition, more and more design studios are beginning to deal with this topic. At Summer Agency we already have an experience in designing and implementing medical devices. If you have a startup in this segment - drop us a line to discuss ideas 🙂

No communication standards

As the IoT Healthcare market is relatively young, it has not yet developed communication standards that are as widespread as those related to websites. Imagine that you can only browse a company's website using a specific browser. Now it is unthinkable, but even a dozen or so years ago the standards regarding HTML and CSS were inconsistent and the same page could work differently depending on the application used to view it. This situation fortunately changed.

Meanwhile, the communication of medical devices still does not apply universal standard - glucose meters of one company only work with its test strips and transmit data only to its mobile app. The standards for the exchange of medical data are secret and each manufacturer develops their own. It can be said that this is due to the aforementioned concern for security - but the example of the website proves that open, universal and at the same time safe standards can be built.

A collaborative approach has tangible benefits - it can for example provide data to machine learning systems which, by collecting data from various sources, will allow better prediction of treatment results or more accurately diagnose diseases. The key is also the exchange of data between physicians of various specialties, so that they can choose better treatment with a comprehensive picture of the patient (eg having a list of medicines currently being taken).

Real applications

Despite the problems, IoT technologies are being used today in medicine. One of the interesting applications is taken from logistics: tracking and locating resources in the hospital. In the end, a medical facility, despite its special purpose, may also have problems similar to those found in other companies.

For example, one of the hospitals in New York has introduced a monitoring system that shows which beds are currently occupied. System provides location and data of patients. Remote allocation of patients to beds reduced queues in the hospital and reduced waiting time for help.

Another example where resource management is extremely important is a hospital pharmacy, in which drugs must be under strict control. In addition to the concern for ownership, there may be a mistake in the dose of the medication to be dispensed, which may end tragically. These problems are solved by systems based on RFID tags and sensors. There are already intelligent medicine bottles that allow you to locate the package and even remind the patient to take the right dose.

At Summer Agency we have experience in creating record keeping and tracking systems. The RTLS (link) system we have described earlier can be used to monitor the position and operation of (for example) medical devices.

Of course, there is more solutions to improve the care of patients with cardiac problems. Systems appear that allow you to register an ECG signal (ECG) in the patient's home and then send it to the cloud for analysis. Intelligent algorithms will automatically detect abnormalities and notify the doctor. The Polish company Telemedical Innovations (link) is working on such a system. It allows you to make an ECG at home and does not require knowledge about the placement of electrodes, thanks to a specially adapted device.

Future

Over 100M IoT medical devices are working today, and this number will grow to 120M by 2020 according to Statist (link). No wonder that companies are constantly investing in this prospective market.

The development is mainly in the field of new sensors and miniaturization of already present devices. One example is the Google’s project, which involves the creation of an intelligent contact lens that measures blood sugar levels.

 

Published by: admin in blog

November 27, 2018 - 1 comment.

Possibilities of indoor location

The need for the location of objects is increasing all the time. Military and other industries such as transport and logistics strive for electronic systems that easily allow locating drivers or loads. Of course a GPS is the most well-known system of this type. This system was created precisely for the army's needs in the 1970s. It allows absolute location on the whole earth with an accuracy of several meters.

Making GPS available for civil applications has become a real revolution in the development of technology. Car navigations, fleet systems (both in logistics and popular taxi services) have significantly changed the character of business.

However - this technology has its limitations. The most important one is the mentioned accuracy - measurement with a precision of up to several meters is sufficient for tracking deliveries at the container's level, but not at the level of individual goods. Another problem is the availability of the system - which is only outdoor - this excludes its use in buildings (eg factory halls or warehouses).

With the development of online shopping, logistics is growing importance for the economy. It is the key to the development of virtually any business based on trade items. The growing needs in this area have forced the creation of a positioning technology that could work with greater precision and would be suitable for an indoor use. This is how the class of solutions known as RTLS or Real Time Location Systems was created.

These solutions usually use different types of tags attached to the monitored object and special devices mounted on the tracked area - to read the position of the marker.

These systems can be divided in various ways:

  • systems fixing a relative or absolute position
  • symbolic location systems

The first one determines the position by absolutely specifying it in the form of latitude and longitude (such as GPS), or in relation to an object.

The second one is able to indicate the area in which the marker is located, or indicate that it has passed a certain point where the reading device is located.

Various technologies are used to implement these functions. Symbolic systems are usually based on RFID tags. They are small, often flexible (in the form of a sticker) tags without their own power supply. During the reading process, the reader provides them an electromagnetic pulse that powers them, and they emit back the information stored in them. Most systems that use access cards work on this principle.

When the location is based on coordinates or position relative to the reader, there must be active markers that are battery-powered.

This is where you should mention the way of determining the location: to find out where an object in space should be located, determine its distance from other objects whose position is known. The more such distances, the more accurate the position, but the minimum number of reference points is 3. (vid: https://www.youtube.com/watch?v=1U7ROVno2ys&t=301s - click for more information about this method). As you can see, distance is the key for location systems. This is usually done by measuring the time it takes for the signal emitted by the tag (location marker) to reach the receiver. Different types of waves are used in various systems, solutions using: ultrasound, light and radio waves are available on the market.

Every solutions has its pros and cons though. The selection of the correct one depends on the place of application, working conditions, required accuracy and price.

Ultrasound systems are used for the internal location where the located device is a smartphone.

The advantages: 

  • relatively low installation cost
  • no need to mount additional systems in the phone
  • the system becomes trouble-free for the recipient. 

    From the point of view of the end user - all you need to do is to install the right application. This receives signals from installed emitters and determines the location on this basis. The downsides are the low resistance to acoustic interference, which excludes use in noisy spaces - such as factory halls. The preferred area of ​​use is for example: a shopping mall - as a system for navigating around commercial spaces.

A similar situation occurs in systems that use light and / or vision systems. Such solutions are useful, for example: to track players on the pitch (after processing data from cameras located around) or hockey players. However, any obstacle blocking the beam of light between the tracked marker and receiver excludes such system. This type of object tracking will not be used in warehouses or factory halls, where a rapidly changing work environment can cause problems with the "visibility" of tags.

The most universal systems are those based on radio waves. There are two most commonly used approaches:

  • distance measurement based on the signal strength of transmitters of commonly used communication systems - such as Bluetooth or WiFi
  • using proprietary protocols and non-standard radio wavelengths

The first approach has the following advantages:

  • a relatively low implementation price
  • the possibility of cooperation with commonly used devices (tablets / smartphones) without additional equipment
  • no legal restrictions as to the availability of the radio band used

The disadvantages are:

  • relatively low accuracy of measurement (especially objects in motion)
  • susceptibility to interference by other WiFi networks or Bluetooth transmitters in the environment
  • greater vulnerability in the context of system security.

The second approach is characterized by:

  • greater accuracy of measurement (up to several centimeters)
  • less susceptibility to interference
  • greater security
  • the ability to track many objects simultaneously
  • the ability to accurately track objects in motion

The disadvantages are:

  • the slightly higher price of such systems
  • the necessity to use specialized transmitters and markers
  • limitations resulting from the radio bands used in a given solution - in some countries those parts of the band are reserved

WTHe decision on which approach will be used depends on the requirements for such a system. In case of shopping malls, public spaces and when the system is aimed to be used by individual users, an approach based on e.g. Bluetooth is best used. The possibility of cooperating with popular smartphone models without additional equipment will be crucial aspect in this situation.

However, if the location solution is used in industrial spaces - such as logistics centers, factories, warehouses - the accuracy and reliability of the system is crucial. Here, a system using a more advanced proprietary protocol will be recommended.

At Summer Agency we have extensive experience in designing and implementing systems of both types: our experience in designing applications, interfaces and electronics will create a full navigation system in the shopping gallery. For professional applications, we possess our own RTLS solution with high location accuracy, reliability and security level.

If you are interested in implementing the RTLS system in your company, to improve the quality and comfort of work, and to increase productivity .

Published by: admin in blog

November 20, 2018 - No Comments!

How to Keep Your IoT Devices Safe

The IoT market is growing at a rapid pace. Gartner estimates the number of devices from this segment at… 20 billion in 2020. Almost everything becomes intelligent: light bulbs, refrigerators or vacuum cleaners. Connecting household appliances to the network brings undoubted advantages:

  • easy control
  • convenience
  • or the ability to monitor the energy consumed

However in the whole pursuit of connecting to the network everything that surrounds us, we should remember about security. From time to time we come across news about disturbing attacks made on devices from the IoT segment.  

For example, other companies’ smart bulbs were susceptible to malicious updates and servers were the victims of a botnet attack that consisted mostly of IoT devices.

Devices that make up the Internet of things are small, often battery-powered and do not have the computing power of smartphones or desktop computers. That is why, it is difficult to implement security procedures. And let’s face it - often users don’t treat them as a security risk.

We are used to updating computers or smartphones, but not our fridges with WiFi, right? However, it should be remembered and strongly pointed out that every element connected to the network can be a potential threat and you should take care of its security.

What should you do to ensure the safety of your devices?

Apply these rules and sleep peacefully in your smart home:

  1. Update your device - manufacturers often analyze their software after it has been released to the market in order to look for possible security gaps. There are also security companies that report vulnerabilities found to manufacturers. Then a patch is released that updates the software on the device and closes backdoors for cybercriminals. It is important that we do not forget about it and update our devices on a regular basis.
  2. Change default passwords - sometimes out of the box devices are factory-set with default access passwords. This makes the configuration and connection to the device easy. However customers often forget about changing these passwords and then the device with the factory password is an open road for hackers. Change the password to your own (preferably complicated) - and improve the quality of security.
  3. If you don’t need it, do not connect devices to the Internet - many devices can work both via Bluetooth or WiFi. As much as possible and convenient - use them rather via low-range Bluetooth. This limits the ability to connect to your device and ensures that only people who are physically close to device have access.

We also introduce our product under the Altlight brand and we always care for the user's safety. We highly care to meet all the best security practices while designing such devices, by enabling the ability to update them and by providing the encryption of information.

 

Published by: admin in blog
Tags:

November 9, 2018 - No Comments!

All You Need to Know About LoRaWAN

The evolving IoT market sets new requirements for communication standards. The number of devices is growing at a fast pace, and each of them generates a lot of data. These devices should also have low energy consumption, as their operating conditions often require the use of battery power. The range of communication and the easy handling of a large number of devices would also be welcome.

These conditions make the existing communication standards - such as 2G, 3G, WiFi or Bluetooth simply inadequate.

For these reasons, new technologies emerge and respond to the needs of the IoT world. One of them is being used in our company - it's LoRaWAN.

What is LoRaWAN?

LoRaWAN is a long-range radio communication protocol that allows energy savings. Various estimates shows that devices which use this kind of communication can work on batteries for up to 5 years. It is an open technology which uses sub-gigahertz frequency bands (for example 868MHz in Europe). Using the LoRaWan band is free of charge - unlicensed bandwidth means that many entities can create their own networks without major difficulties. This increases the availability of technology and positively affects the possibility of use in places where traditional cellular communication is unavailable. All you need to do is start your own access point.

The popularity of technology is also influenced by the fact that the organization that is standardizing it - LoRa Alliance - has as many as 500 members. Including giants of the world of technology - Cisco or ARM.

LoRaWAN is a protocol developed for high performance and low energy consumption. It optimizes communication between nodes and access gates which ensures data transfer to servers. The protocol is also fully bi-directional (gives the certainty of receiving information) and allows you to remotely add new devices to the network. There is a possibility to transmit to multiple devices at the same time (eg a message with a request for status change). Not without significance is the fact that the transmission in the network is fully encrypted - this allows it to be used in specific industries - eg medical.

The endpoints are usually IoT devices that act as sensors, controllers, etc. Due to their energy consumption, they are divided into 3 classes - from A (least energy intensive) to C (offers higher transmission speed, but uses more energy).

Class A is ideally suited for sensors transmitting data at a specific frequency, class C, however, works best for example in an advanced controllers.

The system gates are connected to the network server that manages the flow of information, and this is connected to the application server, where the interpretation and processing of data happens. Gateways can be connected to multiple devices - providing scalability. Transmission range depends mainly of the speed we want to achieve. With a slower transmission speed of devices in class A, the range of communication can reach up to 10 km in non-urbanized areas.

To sum up

LoRaWAN is a great data transmission protocol for IoT devices. It provides long range, scalability, low power consumption and transmission security. It is ideal for use in sensors, wearable devices (including medical) and controllers (eg in Industry 4.0).

 

Published by: admin in blog

October 19, 2018 - No Comments!

What People Think Embedded Programming Is


When I was recently speaking with my girlfriend she asked me about my job responsibilities as an Emb
edded Developer.

She wasn’t sure if she understood it well. Embedded programming sometimes is called a low-level one (in Polish it’s niskopoziomowy). Unfortunately.. there’s one similar word to niskopoziomowy, it’s niskopodłogowy (like low-floor, for example a low-floor bus). Just imagine.. she was telling her friends that I’m a low-floor developer! It’s the reason why I’m writing this article - to clarify what an embedded programming is 🙂

Generally speaking - applications may be divided into few groups.

  1. Desktop ones -that work on personal computers
  2. Mobile ones - that work on phones and tablets
  3. Server ones - that people usually use by internet
  4. Embedded ones - the topic of today’s article 🙂

So, the first question is - why embedded is also called a low-level programming?

Because it interfaces with electronics on the lowest level. Engineers in their application communicate with integrated circuits using interfaces like SPI UART and I2C. If you don’t know what the interfaces are, let’s say they’re like a wired phone where a processor calls peripherals and they execute the processor’s orders.

For example, in the operating system like Windows or Mac you can just ask a computer about current time and it will respond. In the embedded one, you have to configure a clock, give it the frequency and start value. You cannot forget to start timing and at the end to change the number of clock ticks to date and hour. It’s quite a big deal, isn’t it?
Behind all the operating systems stands embedded, but most people simply don’t realize it.

PCBs are usually connected with embedded. They are printed circuit board where all the elements needed by an app are connected. They are also in your computers, however in embedded they are done once. It means that an electronic engineer designed it and this element will be used in all produced devices. In your computers you can choose components processors, power supplies and memory units. In embedded components they are being chosen as the development starts. It must be done right because the PCBs have to be as cheap as possible while a device must perform all the expected and unexpected features.

Modern programming languages like Java, Python or C# are very user-friendly. They have nice features for memory management. You can perform very complicated commands in just one line and use smart features like exceptions. In embedded programming - an exception means hard fault and program crash. Still old languages are used for coding (C and C++). They are the fastest to list here but you have to write more complicated statements on your own. All lists buffers and queues are usually implemented by you. Your program has to be scheduled correctly because the operating system won’t do it for you.

And of course remember about limited resources. You have to fit in!

Have you ever updated a firmware version in your washing machine? Or maybe in a DVD player? I can assume that most of you haven’t. These are examples of an embedded stuff. As you can see, a program prepared for devices must be reliable. Usually bugs cannot be fixed easily. In modern devices with Bluetooth and Wi-Fi it’s easier, however it is said that embedded devices won’t perform a firmware update. It’s not an operating system like Windows, the program must be done right. It’s rather problematic for engineers because your application works with electronic parts. Between hardware and software there’s a place where something may fail and will be extremely hard to find. In the unit tests of code you can encounter problems with how to simulate hardware.

Embedded devices create the smart world that surrounds us.

An app must perform well without any fail. What’s more, it must be smart and user-friendly! The interesting and funny fact is - most people use devices before reading the instruction 🙂 A program has to be prepared in a way that a client, who’s unfamiliar with electronics can use a device with easiness. I hope that this article helped to understand the matter of embedded systems and showed why it’s applications are a little bit different than the others.

Author: Krzysztof Cieniawski

Published by: admin in blog
Tags:

October 1, 2018 - No Comments!

7 Ways to Improve your Website’s UX

“UX when done right, often stays unnoticed”

Your website is your best salesman. It should not be neglected, otherwise - there’s a huge chance you'll lose your potential clients at the very beginning of a process. It needs to be attractive and well-thought out.

We’ve put together a list of useful tips that will help you boost your visitors’ engagement and keep it stable.

1. Improve Page Speed

Slow page speed evokes frustration in visitors and can cost you a client. A 2-second delay in load time results in the abandonment rates of up to 87%. People access your website from many different platforms. Did you know that 64% of smartphone users expect pages to load in less than 4 seconds? If you want your conversion to be higher, you should meet their expectations. You can do it by:

  • minimizing HTTP requests
  • deferring JavaScript loading
  • reducing server response type
  • choosing the most adequate hosting option
  • performing a compression audit
  • enabling compression
  • reducing sizes of images
  • reducing numbers of plugins you use (and testing them)
  • reducing redirects

If you wonder how to check the speed of your page - you can use a tool offered by Google - PageSpeed Tools.  More detailed info about improving your page speed can be found HERE.

2. Apply adequate CTA buttons

Placing CTA’s on websites became a must-have, but the important thing here is to choose the adequate type of these buttons and apply them wisely. There’s plenty of options to choose among - width, color, size.

If you have some background in psychology, you have the power to create an effective and highly-converting CTA’s, simultaneously becoming the master of conversion optimization.

Among the most popular CTA’s you can find:

  • Lead Generation
  • Form Submission
  • Read More Button
  • Product/Service Discovery
  • Social Media Sharing
  • Closing the Sale
  • Event Promotion

Carefully consider the words used for your buttons. Place a word that will be a clear trigger, something bold with an emotional connection. The perfect example here is FreshMail.

3. Create main categories

Take some time and think about dividing your content into categories. Choose only the most important things to list.

Check the most popular subpages on your website. As for the content in each category - keep it simple. It’s not a place for fancy buzzwords and complicated descriptions -  you have only few minutes to introduce your business. Your main menu should tell a story and be a path to follow by your potential clients. Don't forget the "about" and "contact" category, as they are the most important ones.

4. Simplify navigation

How many times have you left a website because its structure was complicated? When your site is messy, you can’t expect someone to navigate through it with patience. All the necessary information should be accessible right away. If not, your visitors will fastly lose their interests and look for an alternative pages of your competitors. 

Too many details will overwhelm your visitor. The perfect option is to keep it in a range of 3-7. Remove misleading information from your site - people should know exactly what they'll find after clicking a specific category.

 

5. Make the most of social media

As we live in the world of sharing - benefit from it. Place social media buttons (e.g. Facebook, LinkedIn, Twitter) on your page. It will encourage visitors to learn more about your company and follow it online. It’s your real audience so master the communication on each channel. 


6. Create coherent branding

Make your brand identity coherent and suitable for your business. Add some personal character, something that your visitors will associate with your company. Make it more individual, don't follow the same patterns. The visual identity should match your type of business. Again - it’s all about the psychology of colour. Focus on what’s most suitable for your firm and what values you’re trying to convey with your image. Let your brand tell a story and narrate it well.

7. Place a search box and make sure it works

When placing a search box on your page, remember that is has to be visible. It mostly comes at handy when you have more subpages with detailed information. It’s far more convenient for users to just look something up instead of spending their time searching for the information they need. 

A good idea would be to place a search box at the top of the sidebar or in the header area. When implementing one - check if it works well. If some misspelling occurs, show related items, a 'no product found' is not a ideal option.

 

Published by: admin in blog

September 6, 2018 - No Comments!

How to Be a Good Tech Leader


As they say, the stronger the team, the stronger the business. But somehow many managers and tech leaders struggle with core management skills and the effective work of their employees. If you're an engineer that accepted a new role - it's time to discover what a Tech Lead job really offers and how to do it right. That's what I did.

A Tech Lead is a mixture of roles and abilities - you should blend your technical expertise with management skills. Easier said than done? I know it may seem hard at first, but with time you'll develop your own style of combining it all.
Your responsibility now is to lead the team of talented individuals - manage their way of work, taks, schedule and possible hazards. You'll be under a lot of pressure now  - but leadership is rewarding (being stressed is completely normal if it's your first Tech Lead role and you have to face new responsibilities).

Tech Lead Main Responsibilities:

  • Maintaining the project technical vision
  • Helping with planning and executing
  • Setting expectations about deadlines
  • Answering technical questions of your team and helping in resolving complicated problems
  • Reviewing the work of other team members and checking its consistency with the project
  • Monitoring team members
  • Giving feedback
  • Ensuring your team understands their roles and tasks
  • Working with other departments

There's many tips worth describing and useful things I've learned so far, but today I want to share some soft basic skills and tested ideas.

Communicate effectively

Solid communication became a common buzzword nowadays. So what it really means for you in practice?  You should learn how to communicate your ideas well and not leave the room if someone doesn’t understand the vision. Being a good listener will help you hear your employees needs and opinions. They need to know you’re a person they can rely on.

What I usually do:
I prepare 1:1 meetings with every team member (one meeting per month) just to talk about projects and expectations. It’s a perfect time to discuss things more freely. After such meeting, you know what should be changed or improved. Most importantly - when done on regular basis it provides you with fresh update.

You’re the bridge between your team and other departments. Choose the right manner of communication and adjust it to various groups of people. The key is to explain technical issues to non-technical people in the way they could understand it without problems.

Find the right members of your team and delegate

Delegating is one of the biggest challenges you'll face when being a Tech Lead, because for a new leader it can be intimidating at first. You won't run away from it though, there's simply too much work do to and you won't be able to do it all by yourself. Delegating means sharing responsibilities and it's a perfect way to empower your team members.

As a leader, you have to recognize the skills of your employees. When recruiting, you should know what you’re exactly looking for. Keep in mind that some developers like to work in long term projects but others don’t. Check their preferences and adjust it to the workflow in your company. When it comes to experience - I think sometimes it’s better to hire an eager to learn person with slightly less professional experience than the other way round. I always focus on the mindset - the ability to think logically and solve problems. 

Choose people that match your needs and your company’s projects.

Play on the same side

If you are not on the same side with your employees, it will never be a sincere relationship. When we celebrate success, we know we did a good job as a team. If something goes not as planned, we work at this together and support one another. You can discuss committed mistakes and work on them in the future. The important thing here is to talk - whether it went right or wrong, it's crucial to discuss the outcome.

Celebrate even small achievements. It’s a trigger that motivates people to think outside-the-box. If you reward an outstanding idea or proposal, you can expect many more good solutions to come. Be constructive but if you don't like a particular idea - explain it with good arguments. You should never criticize a proposed solution without mentioning why. 

Build authority

Making difficult decisions is pretty much a daily bread. Learn how to be a good friend but also a leader. It’s important to separate these two spheres. It does not mean that as a leader you have to supervise every movement of your employees. Trust them. I often come across opinions that if you have a friendly relationship with your employees, they won't respect you enough and won't treat you seriously. I would say it's quite the opposite!

Be a friend, but don't be afraid when making a decision that dissatisfies someone. It will rarely happen that you all think the same way. You always want the best for your team and in most cases - you have the broader knowledge about the project, surroundings and relations.

Code

Leading a software team is also about finding the time to code. When you code, other team members see your commitment and skills in real life. Not to mention that you keep your knowledge up-to-date. Remember that you have to prioritize your tasks in order to not have many things on your mind simultaneously. If so, many of them can be neglected. Finding the right balance between coding and managing is a challenging task. Pat Kua in Taking with Tech Leads advice to follow the 30% rule - which means continue to code for at least 30% of your time. 

As you've worked hard to when acquiring your technical skills, you can also work hard to be a great Tech Leader.

Author: Tomasz Strzebak

Published by: admin in blog

August 17, 2018 - No Comments!

Milion złotych to za mało, by z powodzeniem projektować urządzenia

W zeszłym tygodniu NCBR zmienił zasady finansowania projektów badawczo-rozwojowych dla funduszy Bridge Alfa. W praktyce limit inwestycyjny zmniejszył się z 3 mln do 1 mln PLN. Jako Summer Agency jesteśmy partnerem w Shape VC, nowym funduszu założonym po to by finansować i wspierać rozwój projektów B+R i startupów w obszarze elektroniki, automatyki czy technologii produkcji. Pracujemy także jako kontrahent z wieloma startupami, które korzystają z tego rodzaju finansowania. Dlatego też pokusiliśmy się o sprawdzenie, jakie konsekwencje dla projektodawców może mieć zmiana limitu z punktu widzenia rozwoju produktu.

Milion złotych to kwota, która tylko pozornie daje nieograniczone możliwości. Rzeczywistość niestety wygląda zupełnie inaczej. W momencie, w którym będziemy chcieli zaprojektować, wyprodukować oraz sprzedać urządzenie oparte o mechanikę i elektronikę, pojawią się problemy.

1. Tworzenie urządzenia od podstaw

Za przykład niech posłuży nam gadżet z rodziny urządzeń IoT (Internet of Things), służący do analizy ruchu kończyn osób podczas rehabilitacji ruchowej. Załóżmy, że posiadamy grupę trzech świeżo upieczonych genialnych magistrów inżynierów, którzy są przekonani, że ich urządzenie zawojuje świat.

Na początek, poczyńmy pewne założenia, które będą nam przyświecać podczas całego procesu rozwoju naszego startupu.

  • nasze urządzenie będzie małych rozmiarów pudełeczkiem ze zintegrowaną ładowalną baterią litową,
  • urządzenie będzie posiadało radio w standardzie Bluetooth Low Energy - tak, aby informacje o ruchu można było przesłać do telefonu lub tabletu rehabilitanta
  • urządzenie będzie posiadało zaawansowany układ pomiaru ruchu, składający się z akcelerometru, żyroskopu i magnetometru cyfrowego
  • w celu optymalizacji zużycia energii i zajętości pasma radiowego, proces analizy i obróbki danych zrobimy na samym sensorze
  • od samego początku będziemy współpracować z lekarzami i rehabilitantami nad rozwojem urządzenia - tak, aby zmaksymalizować jego przydatność
  • urządzenie dystrybuowane będzie w EU i US 

2. Finansowanie spółki i kosztów z nią związanych

Następnie zabieramy się za proces projektowania urządzenia. Tutaj zaczynają się pierwsze problemy finansowe. Przede wszystkim jako świeżo powstała spółka nie posiadamy narzędzi niezbędnych do prowadzenia projektu, koniecznie jest więc zakupienie stanowiska dla naszych inżynierów:

  • Dla elektronika absolutne minimum przy początku pracy to komputer wraz z licencją na oprogramowanie do projektowania płytek PCB (około 40 tys. złotych), podstawowe wyposażenie laboratoryjne (multimetr, oscyloskop, zasilacz) to kolejny wydatek oscylujący w granicach 20 tys. złotych. W rzeczywistości jest to minimum często całkowicie niewystarczające, w szczególności przy bardziej skomplikowanych projektach
  • Stanowisko dla programisty systemów wbudowanych – komputer z oprogramowaniem (6 tys. złotych), proste stanowisko laboratoryjne do uruchamiania elektroniki składające się z programatora i zasilacza to 7 tys. złotych
  • Stanowisko programisty mobilnego (kolejne 9 tys. złotych)

Tym sposobem, jeszcze dobrze nie zaczęliśmy pracy, a z naszego portfela wydaliśmy już znaczną kwotę na sam sprzęt niezbędny do jej wykonania. Rozpoczynamy proces projektowania pierwszego prototypu naszego urządzenia.

3. Tworzenie prototypów oraz testowanie urządzenia

Po pół roku intensywnej pracy nad naszym urządzeniem, mamy jego pierwszy, działający prototyp. Kosztowało nas to jednak dużo. Każdy z naszych inżynierów potrzebuje wypłaty (załóżmy 8000zł brutto). W perspektywie 6 miesięcy, uwzględniając koszty pracodawcy i składki, wyniesie nas to 144 tys. złotych. Dodatkowo musieliśmy wyprodukować nasze prototypy (wraz z kosztem elementów oraz druku pierwszych zaprojektowanych na szybko obudów kosztowało to około 10 tys. złotych).

Następnie, przystępujemy do testów naszego urządzenia wraz z pacjentami. Po trzech miesiącach pracy oraz wydanych kolejnych 70 tys. złotych wypłaty, dochodzimy do wniosku, że algorytmy, które zaprojektowaliśmy w urządzeniu nie do końca skutecznie pokazują ruch nogi. Dodatkowo mamy problem z krótkim czasem pracy na baterii, urządzenie zawiesza się od czasu do czasu, bez możliwości zresetowania go. Ponadto obudowa, którą wydrukowaliśmy jest niewygodna dla pacjenta i nie utrzymuje się w odpowiedniej pozycji.

Czas, by zebrać wyniki testów i przystąpić do kolejnej pętli projektu. Wiemy już jednak, że posiadamy problem z algorytmem. Pojawia się więc pomysł, że algorytm najlepiej wykona znajomy specjalista. Zwracamy się do niego z prośbą o pomoc i szczęśliwie składa się, że akurat może poświęcić trochę swojego czasu na zapoznanie się z problemem. Nasz budżet właśnie znów się uszczuplił, ponieważ wycenił on usługę na 300 tys. złotych. Niestety tak wyglądają realia.

Mija kolejne 6 miesięcy,  lecz mamy już kolejną iterację urządzenia, która wydaje się tą docelową. Elektronika działa poprawnie i nie jest już kłębowiskiem kabelków. Algorytm zaczyna działać już całkiem nieźle, a dodatkowo zrobiliśmy na drukarce obudowę, która nie przeszkadza w czasie badania. Nasz proces kosztował kolejne 100 tys. złotych, ale pozwoliło nam to przystąpić do certyfikacji.

4. Certyfikacja

Niestety, tutaj znów napotykamy problemy. Pokazaliśmy urządzenie jednostce, zajmującej się certyfikacją i dostaliśmy informację, że musi ono spełnić cały szereg norm i standardów.

  • Badania na bezpieczeństwo urządzeń – koszt wraz z badaniem baterii to około 40 tys. złotych
  • Badania Radiowe wraz z EMC oraz badaniami do FCC + dodatkowo opłata za korzystanie z interfejsu Bluetooth – 100 tys. złotych
  • Badania na zgodność z dyrektywą medyczną - 200 tys. złotych

Decydujemy się na przeprowadzenie dokładnej analizy by upewnić się, że urządzenie ma szansę przejść te badania. Zatrudniamy więc specjalistę, który wykona ekspertyzę w laboratorium. Koszt takiej ekspertyzy wynosi 30 tys. złotych. Okazuje się, że mamy jednak problem w torze radiowym i potrzebne jest wykonanie kolejnej iteracji projektu z odpowiednią oprawką. Tym razem zlecamy przeprojektowanie toru ekspertowi tak, by zyskać pewność, że nie będzie już dalszych problemów. Kosztuje nas to kolejne 50 tys. złotych oraz kilka miesięcy produkcji prototypu. W międzyczasie pracujemy nad zaprojektowaniem porządnej obudowy do naszego urządzenia. Nie mamy jednak takich kompetencji, więc wzornictwo i projekt mechaniki zlecamy profesjonalnej firmie. Koszt takiej usługi wynosi 200 tys. złotych. Obudowy trzeba wykonać w technologii wtrysku, do którego potrzebujemy form za 150 tys. złotych. Mija kolejne 6 miesięcy projektu, które kosztuje nas 100 tys. złotych w wypłatach.

Zbliżamy się powoli do pilota produkcji naszego urządzenia. Produkujemy 100 sztuk, służących do jego promocji oraz do badań normatywnych. Jest to koszt około 20 tys. złotych. Badania trwają kolejne 6 miesięcy, po tym etapie przystępujemy do produkcji masowej urządzenia (5000szt). Okazuje się, że na tym etapie potrzebujemy oprzyrządowanie produkcyjne (w tym tester automatyczny, który kosztuje około 200 tys. złotych). Dodatkowo, jako młoda firma musimy zapłacić za zlecenie produkcyjne z góry. Wraz z montażem, wkładaniem do pudełek itd. kosztuje nas to kolejne 150 tys. złotych.

Warto dodać, że na uwadze musimy mieć również koszty marketingu i sprzedaży, które sprawią, że nasz projekt zostanie zauważony i zainteresuje odbiorców.

Podsumowując projekt naszego prostego urządzenia, od konceptu do wykonania kosztował nas on niecałe 2 miliony złotych. Niestety musimy przygotować się na tego rzędu wydatki, jeżeli chcemy poważnie myśleć o projektowaniu nowoczesnych urządzeń elektronicznych. Warto dodać w kontekście programu Bridge Alfa, że w naszym przykładzie nie uwzględniliśmy prac badawczych, będących w wielu przypadkach podstawą innowacji, stąd wprowadzony właśnie limit może mieć negatywne skutki dla rozwoju dobrych technologii. Mamy nadzieję, że nasz post przyczyni się do zrozumienia, dlaczego.

 

Published by: admin in blog

August 7, 2018 - No Comments!

Amazing in-app animations with Lottie library

 

Everyone knows that with creating a beautiful and eye-catching app comes a lot of UI/UX designer’s work. Amazing animations and graphics play an important role in convincing customers to dedicate their time to an app.

So the first thing is to design such app graphics but the second issue is to implement it in our application by a mobile developer.

Is it really that though?   

You may have already asked yourself a question: “Well, there has to be an easy way to implement such things, right?”

YES! Today I'll introduce to you the astonishing library - Lottie. It was created by an AirBnb team and developed to simplify adding animations to your application. With Lottie you can make your app more vibrant with only few lines of code.

With this short tutorial, you will learn how it can be done in few simple steps. I will show you how to add it to the Android app. It's also available in iOS, web and react native.

The very first steps

At first, you need to add a Lottie library to your module build.gradle file in the dependencies section. At this moment, the 2.5.5 version is the newest one.

You can always check the latest version at this site - https://github.com/airbnb/lottie-android

Dependencies {
  …
  implementation 'com.airbnb.android:lottie:2.5.5’
}

The next step is to add a LottieAnimationView in your layout xml file.

<com.airbnb.lottie.LottieAnimationView
  android:id="@+id/lottieAnimationView"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  app:lottie_autoPlay="true"
  app:lottie_loop="true" />

As you may have thought already.. “I have a library, a special view to show this animation, but.. where the heck is the particular ANIMATION?!” Here comes the main part.

Preparing the main part - animation

You can create your own animation by using Adobe AfterEffects + Bodymovin plugin to export it to JSON file. But it's a more advanced process, usually created by graphic designers. Today, we’re going to focus on using premade JSON files from https://www.lottiefiles.com

It's a very helpful page, created to share animations with other people. You can use it as long as you want, but remember to mention the author in the ‘about’ section in commercial app.

Let's take a look at this animation of a man riding a motorcycle.

https://www.lottiefiles.com/29-motorcycle

Don’t ask why.. it’s just eye-catching 🙂

Adding animation to the project and making it work  

There are two ways of adding your desired animation to make it work (it is added in the layout xml file):

  • by using app:lottie_fileName="motorcycle.json"
  • or app:lottie_rawRes="@raw/motorcycle”.

I recommend you to use the second one, then you'll be able to use a static reference to this file, not just by using it’s name.

To make an animation loop and auto play on creating an activity, I' am adding these two lines of code to the activity_main.xml file:

app:lottie_autoPlay="true"
app:lottie_loop="true"

So, my xml file looks like this below:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  xmlns:app="http://schemas.android.com/apk/res-auto" 
  xmlns:tools="http://schemas.android.com/tools" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  android:gravity="center" 
  tools:context=".MainActivity">
 
  <com.airbnb.lottie.LottieAnimationView 
    android:id="@+id/lottieAnimationView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:lottie_autoPlay="true" 
    app:lottie_loop="true" 
    app:lottie_rawRes="@raw/motorcycle" /> 
</FrameLayout>

And MainActivity.kt is as simple as it can be:

class MainActivity : AppCompatActivity() {

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
  }
}

Now, we can click “run project” and see how much we are talented! 🙂

Helpful hints 

If we won’t add an autoPlay attribute to our layout xml file, the animation won’t start immediately after creating the view. We are able to start it at any time we want, by adding some code to our MainActivity.kt file.

lottieAnimationView.playAnimation()

The above line allows us to achieve the same thing as the app:lottie_autoPlay="true" line of code in xml file. It's really helpful when we don’t want to start the animation immediately, but later on.

The same thing happens with a loop attribute. It decides if our animation will loop endlessly. We could also remove it and achieve the same by kotlin code.

lottieAnimationView.repeatCount = ValueAnimator.INFINITE

If we use ValueAnimator.INFINITE, it loops infinitely. But what if we want to loop it only 3 or 5 times and stop? Nothing easier! Instead of ValueAnimator.INFINITE, you can just add an Integer value, defining number of repeating count. So it will look like the code below:

lottieAnimationView.repeatCount = 3

What if you want to run your animation for a certain amount of time? Let’s say, for 5 seconds? Just add the below code with handler, which after 5 seconds (value in code is in milliseconds) will pause your animation. It's that simple!

Handler(Looper.getMainLooper()).postDelayed({
      lottieAnimationView.pauseAnimation()
    }, 5000)

The same steps are required to start it after some time, by replacing lottieAnimationView.pauseAnimation() with lottieAnimationView.startAnimation().

MainActivity.kt file with stopping animation after 5 seconds:

class MainActivity : AppCompatActivity() {

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    lottieAnimationView.playAnimation()
    lottieAnimationView.repeatCount = ValueAnimator.INFINITE
    Handler(Looper.getMainLooper()).postDelayed({
      lottieAnimationView.pauseAnimation()
    }, 5000)
  }
}

Listening our animations 

Another cool option is adding AnimatorListeners to the animations. Let’s take a look at another animation – a favourite icon. You like something sooo.. you want to show it! Or maybe you just want to save something for later. What about making it more vivid with Lottie? : )

I choose this one - https://www.lottiefiles.com/72-favourite-app-icon - it’s beautiful and makes a good interaction with users.

At first, let’s replace app:lottie_rawRes="@raw/motorcycle" with app:lottie_rawRes="@raw/favourite_app_icon". Another step is to remove the looping from animation and auto play, because we don’t want to run it on start. That’s how LottieAnimationView looks now:

<com.airbnb.lottie.LottieAnimationView
  android:id="@+id/lottieAnimationView"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  app:lottie_rawRes="@raw/favourite_app_icon" />

When do we want to run it? I’m going to implement it while clicking on  the animation area. It’s handy and intuitive.

In the second step, I’m removing the previous code, which was responsible for stopping the animation after some time.

Now my MainActivity.kt file looks like the one below:

class MainActivity : AppCompatActivity() {

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    lottieAnimationView.setOnClickListener {
      if (lottieAnimationView.progress == 0f) {
        startAnimation()
      } else {
        lottieAnimationView.progress = 0f
      }
    }
  }

  private fun startAnimation() {
    val animator = ValueAnimator.ofFloat(0f, 1f).setDuration(500)
    animator.addUpdateListener { valueAnimator ->
      lottieAnimationView.progress = valueAnimator.animatedValue as Float
    }
    animator.start()
  }
}

As you can see, I've added a click listener to our animation view, where I am checking if the progress of animation equals 0 or something else (eg. 100). If it’s a zero (the star is unchecked), I’m running the startAnimation() function. In other case (the star is checked) – it's getting unchecked. That’s the “hard” mechanism of checking and unchecking the star : ) It’s not difficult!

In the startAnimation() method, we are initialising a ValueAnimator object, which changes some value from the starting point to an end, in defined time. In my example, it's defined to run for 600 milliseconds, you can change it as much as you want 🙂 One can also change the starting and the ending point. If you want, you can change values in parentheses in ValueAnimator.ofFloat() function. Let’s assume that your idea is to stop the animation in the middle – easy peasy!

Just write

ValueAnimator.ofFloat(0f, 0.5f)

..and the rest of the previous code.

Finally, we are adding an update listener to the animator, which with every step of changed value updates the value of progress in our lottie animation. The last step is to run start() method on animator and that’s all! You’ve just mastered the ability to like/unlike something in your future app.

Wasn’t it simple? I think working with lottie animations can be fun! There are lots of other features and moments in which it could help us save a bit of our precious time! 🙂

Happy coding!

Author: Bartłomiej Rolek, Android Developer

Published by: admin in blog

July 31, 2018 - No Comments!

Summer Agency Recognized as a Leading B2B Company in Poland by Clutch.co

Striving to be a truly premier tech firm, Summer Agency is comprised of well-trained professionals who can deliver to your company a variety of services, including hardware, software and design, with experience in fields ranging from retail to healthcare. It has become evident that our strong work ethic has caught the eyes of businesses everywhere, as we are now listed
on Clutch’s press release for the leading B2B service providers in Poland!

 

 

In order to make the B2B networking process simpler and smoother, Clutch performs research on every company that establishes a partnership with them. A profile for each company is set up on Clutch’s platform to give other businesses the opportunity to access information without having to use their own time and efforts to conduct the same research. Therefore, when businesses are looking for partners with whom they can most productively collaborate on projects, they can turn to Clutch and readily have a list
of relevant firms with all the data they need to make their decisions.

 

Clutch’s proprietary research methodology gives visibility to firms on the platform when they collect a number of positive reviews. Clutch confirms the quality of our work with the outstanding 5-star rating we maintain in addition to our inclusion into the aforementioned press release. This we owe to our clients, some of whom have taken the time to submit wonderful reviews recounting their time with us.:

 

Their engagement and effective organization played a crucial role in the project’s success.
- Edward Mężyk, CEO, Datarino sp. z o.o.

We are fully satisfied with the services at this point. The team’s competencies have been great since the start of working, particularly for management, app development, graphic design, and prototyping.
- Laura Czarniecka, Keepylife Strategic Advisor, Leanpassion.

Thanks to the cooperation with Summer Agency, the product development was significantly faster. As a result, we were able to put the product on the market without any major problems.
- Mike Grzes, CTO, Photon Entertainment.

 

If that isn’t enough, in addition to being recognized on Clutch, Summer Agency was also featured by The Manifest, Clutch’s sister website, on their publication for Top IT Outsourcing Companies in Poland !

We are eager to continue establishing new relationships that, through our combined efforts and resources, will produce results that solve real-world problems and make positive contributions. To find more great reviews of our client experiences, check
out our Summer Agency profile on Clutch!

 

Published by: admin in blog
Tags: