Categories
Blockchain Entrepreneurship Financial Services Software

CoinTracking's success: real-time cryptocurrency tracking and reporting

Turning a hobby into a business? CoinTracking founder and CEO, Dario Kachel, knows exactly how to do it.

Since 2011 cryptocurrency trading has been CoinTracking founder Dario Kachel’s passion. What started as an excel sheet for him to keep track of the price of bitcoin, struck a need in the market and has since grown into a vital resource for many crypto traders. Here’s how he turned it into a successful business.

Kachel’s entrance into the world of cryptocurrency trading began in 2011 after he read about the new asset class in a newspaper. What started as a personal hobby soon morphed into a profitable business.

“At the end of 2011, I read about [Bitcoin] in a newspaper and thought that it sounded interesting,” Kachel recalled. 

He decided to buy his own coins and started trading soon afterward.

“Really quickly, I got lost and I actually tracked everything in Excel. But the manual tracking [in Excel] wasn’t really satisfying. So, I started to search for some kind of automated tracking tool, sure that something like this exists already,” said Kachel. 

But it didn’t. This is when the idea for CoinTracking was born.

Kachel is an experienced developer by trade and started to write a simple script at the end of 2012. It automatically imported new transactions from exchanges and updated the prices for several cryptocurrencies.

“One day,” he beamed, “I was attending the bitcoin meetup in Munich and we started to talk about this script — people actually wanted to use it!”

Inspired and spurred on by the community, Kachel began to design a user interface for the new app. Thanks to a user post on Reddit, more and more people signed up. This kind of traffic was getting out of hand.

“At one point,” he said, “the number reached 5000 new users per day. It was overwhelming and I figured that I could not handle all of this as a side project.” 

With the increasing popularity of bitcoins in 2017, Kachel started to turn his hobby into a business. He left his job, hired support staff and built a team of developers to help him do it.

Visualization cointracking
CoinTracking analyzes your trades and generates real-time reports on profit and loss, the value of your coins realized and unrealized gains, reports for taxes and much more. 

One issue that Kachel faced was a lack of skilled developers with cryptocurrency experience. “It is really not that easy to find good people in Germany with this kind of cryptocurrency knowledge. I wasn’t really convinced of outsourcing. But I am very happy with Espeo.”

Besides adding a subscription system for auto-payments for corporate users and introducing new languages and tools, such as Amazon SQS and KMS and Go language, we transcribed the code for the mobile application and added new functions. Read the detailed case study here.

The team has implemented several features since the initial launch — users can even get help with their tax statements and Kachel plans many new features and options to meet the emerging needs of users of all levels. 

“There are many criteria users should be aware of when starting trading with cryptocurrencies,” said Kachel, “and we help them not only with keeping track of their trades but also support them with the paperwork which comes along.”

If you’d like to know what criteria are important for choosing a cryptocurrency trading platform, check out CoinTracking’s newest blog post Cryptocurrency Exchange Exports: the Ultimate Guide.

Categories
Blockchain Software Technology

6 software technologies that will dominate 2020

2019 is rapidly coming to an end. It’s time to sum up this year’s achievements and to look ahead. Narrow Artificial intelligence, mixed reality, and distributed cloud are just a few of the tech innovations to watch as we enter the next decade. Here’s a brief summary of Gartner’s 2020 tech trends report combined with our software development experts’ predictions for which software technologies will dominate the 2020s.

6 software technologies that will dominate 2020

Table of contents:

  1. Multiexperience
  2. Digital twins technology driven by IoT
  3. Distributed cloud
  4. Event-Driven Applications
  5. Blockchain
  6. Progressive web Apps

1. Multiexperience 

Improvements in wearables and advanced computer sensors are paving the way for the emergence of multiexperience, fully-immersive technology. Traditional ideas of the computer will expand to include new, varied touchpoints. This, of course, will greatly increase the demand for mobile development as firms rush to compete on better, more immersive apps.

Gartner cites Domino’s Pizza, who rolled out an ordering app that combines autonomous vehicles, smart speaker communications, and tracking sensors. The growing popularity of wearable technology is driving development in this field. Greater connectivity and improved user experience will attract more users.

Currently, multiexperience apps use augmented reality, virtual reality, and mixed reality to deliver ever more immersive experiences. As consumers demand more and more sophisticated applications, businesses will have to keep up and deliver more ambient experiences.

digital twins

Time and time again companies have trusted us as a software development provider. Read more about some of our projects and find out why.

 

2. Digital twins technology driven by IoT

Internet of things is an area where the so-called digital twins concept evolves fastest. Modern household appliances use a lot of smart components equipped with sensors to gather data about real-time status, working conditions, and alerts. They’re integrated to cloud-based systems to gather data, then process and analyze it.

And here’s how a digital twin is created. It’s a kind of pairing appliance which reflects its real-life counterpart in the digital environment. This virtual model of a product or service allows for the analysis of a huge amount of varied data. In effect, we can deal with problems before they even occur, prevent downtime, develop new functionalities and much more.

The digital twin concept has the widest coverage in such projects as smart cities, real-time navigable models, or health care  – with virtualization of hospital systems for work safety and continuity.

As web & mobile developers, we can also observe that digital twin technology is spreading to the user experience field. Service providers try to get clients to attend their events, for example trades or fashion shows and let customers build their visual twin to become a part of an event. This way they create an extraordinary user experience.

augmented reality
 

3. Distributed cloud

Distributed cloud systems promise to bring about a new era of cloud computing. These systems distribute public cloud services to several locations outside a provider’s data centers, but the provider still controls them. Cloud providers take care of cloud service architecture, governance, operations, updates, and delivery.

Since data centers can be anywhere, latency and data sovereignty challenges are reduced. Distributed cloud services offer the benefit of a public cloud service with those of a private cloud.

event driven appa
 

 4. Event-Driven Applications

Gartner predicts that through the 2020s a real-time, event-based approach will be a core required demand for 80% of all digital solutions. It’s crucial for business application development companies to apply “event thinking” to their solution strategy.

Event programming is not a type of technology or programming language. It represents an approach that should be implemented in a product development process. An event-driven application responds to actions generated by the user or the system, for example, mouse clicks or loading a program. From a programming point of view, it’s important to separate event-processing logic from the rest of the coding work.

Technologies like AI or IoT speed up event-driven coding as a useful product development strategy. In general, event-driven apps can improve responsiveness, flexibility and give a better understanding of user experience.

blockchain
 

5. Blockchain

2017 was the year of blockchain hype. Now that the hype has died down, it’s time for practical blockchian applications. Gartner was hesitant in its predictions for blockchain but stressed that in specific cases, firms can leverage blockchain technology to improve internal processes and ensure data security. 

Find out more: Espeo Blockchain – blockchain services that can address different business problems

Blockchain is a network of interconnected peer-to-peer devices. This technology provides for the absence of central databases, as well as the lack of clearly defined locations where all data is stored. Use cases here are especially useful to the supply chain and real estate asset management sectors as well as in healthcare data management. Throughout the 2020s, advanced in blockchain technology will improve its usability and enterprise applications. 

software technologies
 

6. Progressive web Apps

We have to add progressive web applications to Gartner’s software technologies. The growth of web-based solutions is a solid trend we could observe during the current year. It’s no reason to think it’s going to change in the coming decade.

On the contrary, in the long term, it’s more probable that web apps will take a significant slice of market cake from mobile apps, and not vice versa. We believe it, even more, when we hear Google reps talking about focusing on expanding the features of the current browsers to let web applications achieve the same UX level as mobile apps.

Moreover, progressive web apps are easier to develop and maintain than native applications. They combine the best features of the web and mobile apps. What’s more, they make use of the vast web ecosystem, plugins, and community.

See also:

Categories
Entrepreneurship Newsroom Software

Espeo Software Oy officially opens in Helsinki, deepening our commitment to the Finnish market

Espeo Software has opened a local LLC in Finland to better serve our long-time clients there and to make it easier than ever to work with us. With more than thirty Finnish clients under our belts, the Nordic country has been among our most valued markets for over a decade. Our local team now has fewer hurdles to jump to work with our Finnish partners. It’s where Espeo was born and we’re returning to our roots. 

Eleven years ago, founders, Paweł and Sylwia Rogowicz launched Espeo Software after studying in Finland and working in several Finnish software houses. They saw an opportunity to connect Polish developers with the urgent IT demands of Finnish startups and enterprises. The work culture they experienced there — one that prizes direct communication and flat management structure continues to influence Espeo everywhere we’re now present. 
 
Since those early days, Finland has continued to be a major market for Espeo Software and our opening of a local LLC only deepens our commitment to delivering pragmatic digital solutions to Finnish companies in the payments, healthcare, educational technology, and media sectors. This Finnish entity establishes a local technical presence and brings us closer in line with Finnish electronic invoicing while still delivering the same nearshore Polish development team we’ve done for the past eleven years.
 
Aki Inkeroinen, general manager of Espeo Software Oy pointed out that Finnish companies prefer a local presence in Finland partly to streamline invoicing and partly to be sure that IT partners meet their expectations. It sweetens the deal making working with Espeo more attractive. 
 
“The basic thing,” said Inkeroinen, “is that we can better serve the Finnish clients that we have and attract others. The key thing is that when we have a local company, we can better cooperate with local partners here in Finland but also we can have electronic invoicing. The expectation with Finnish clients is that we are able to comply with the normal Finnish working model.”
 
Petri Laaksonen, project manager for Finland coordinates tasks and serves as the point of contact between developers in Poland and Finnish clients. Our local technical presence ensures we meet our client’s standards.
 
“Finnish companies,” said Inkeroinen, “expect that we open a local company here. For their partnerships with software houses, they have partner morals and they expect the company is local. We have been working with Finnish customers for eleven years, but officially we have not been able to fulfill many of their partnership rules that require a local presence and local company, but now we fulfill this. Finnish companies prefer the ease of electronic invoicing that meets Finnish tax law to invoicing in other jurisdictions. It’s just one more step toward deeper cooperation here.” 
 
We’re pleased to be returning to our roots in Finland by opening a local LLC there while still connecting Polish tech talent with innovative Finnish firms.
 

Categories
Software Technology

Unit tests and why not to skip them in your app development project

In software engineering, unit testing refers to testing individual units of source code. They’re part of the application code, written during development. Unit tests are powerful tools for developers, who can use them repeatedly to quickly and automatically fast check if the units of code work as they should.

However, writing them takes time, and since you can deliver an application without unit tests, some entrepreneurs unwisely consider them unnecessary. Time is money after all and some clients and IT companies don’t want programmers to spend time writing tests. They assume that manual tests are sufficient, so they can hire someone who’ll test their system or they can do it themselves — which will reduce short-term costs. Some clients are unaware that unit tests are a thing. In either case, knowing the benefits of unit testing will help you understand that having them actually saves considerable time and money.

Unit tests and why not to skip them in your app development project

Table of contents:

 

Why unit tests matter

Before I get into the details, I’d like to share a story. I recently worked on a lottery gaming application where my job was to write one of two REST APIs. Work on the first service started about a month earlier than mine. The previous team did not write any automatic tests for the first API.

But the customer was content with the production method because he received the first several features quickly. When work on the second service started, unit and integration tests were part of the code production. Initially, the product owner had to wait longer for results and was not happy. There was some pressure to give up writing tests and leave them for later if there was enough time. I had to convince the product owner that this would be a huge mistake that will cost in the long run — especially when it comes to long-term maintenance. 

Over time, the benefits of unit tests — and the contrast between the two APIs grew. In the service with tests, when a developer added a new feature, manual testers detected almost no errors. In this version, the team could do their work systematically. By contrast, the project without tests often came back for corrections, disrupting the flow of the project. Over time, more developers joined the second service team. They could quickly adapt and implemented new features. The client also attempted to enlarge the first team, but it was ineffective and they ultimately abandoned it.

Throughout the whole development process of the second API, the developers were more productive and proud of code they wrote. Even though it took longer to start, jumping into a development project without unit tests leads to major headaches later.  

 

Don’t skimp on unit tests

As I mentioned above, the client wanted to give up writing automated tests, as he thought that manual tests are enough. This is due to the superficial treatment of the testing process. Many people think that once a tester tests an application’s functionality, he can move on. There is no need to do it again unless they need to change the feature behavior. It seems easy, but there are some dangers and gaps in this reasoning.

First of all, many people know exactly what they want and tend to think that there won’t need to be changes. But no matter how detailed the initial app specification is, after receiving the feature and using it, ideas of how to improve it always emerge. This is a normal and healthy part of Agile development.  In addition, something that may seem like a small change may actually require changes in many areas. What’s more, the main functions of the system consist of smaller functionalities and these are often shared. Making changes in one area may affect others — often in places we don’t expect. 

A tester may need to test a feature many times as its behavior changes. A developer can use a test repeatedly for months or even years as long as there is a part of the system that it checks. The effort put into writing it will pay for itself in the long run.

 

How unit tests work

Unit tests usually run for a minute or two, so you can use them very often. Developers can launch them several times when adding a new functionality to the system. Thanks to this, they can detect defects early so they can find and correct them quickly. Manual testers can only test a new function once it goes live. Finding the cause of the error and fixing it at this stage often takes longer and is more difficult because it concerns a larger area of code. 

What’s more, manual testers don’t always check the code right after they’ve finished their work. Sometimes a developer can go several days or even weeks without them. To fix this type of error after such a long time requires digging down into the code again — time that could go toward moving the project forward. However, the key question is how can rapid error detection affect the stability of the project? Project complexity always increases over time. The more complex the project is, the more internal code dependencies it has. Introducing new functions often requires changes to the existing code. Errors are inevitable and can often occur in unexpected places.

If we can automatically check if the basic unit functions are preserved, and errors that were found are fixed at the developing stage, total functionality delivery time is much shorter.  We reduce the impact that system complexity has on the introduction of new functionalities and changes. We gain greater predictability regarding the time and resources needed to implement new features or to change existing ones. 

Unit tests are not only useful for checking the existing units. The very process of writing them also improves the stability of the project. Unit tests affect how developers write the application code. They force the programmer to divide the code into small units with a clearly defined, single responsibility. This process requires the programmer to plan the implementation and reveals edge cases. If individual responsibilities are not separated into units, they cannot be reused. If a unit meets several requirements, it is more difficult to understand which dependencies apply to each one, and that significantly impedes changes.

As one unit test checks one specific behavior of a single unit, information about the error found is very precise. The developer sees exactly what expectation has not been met and which unit has failed. Unit tests can also tell what is the expected result, which makes it easier for the developer to fix the fault. This benefit is particularly important when developing larger applications that more than one person worked on. The person who introduces the new functionality may not know the whole system. Information obtained from the unit tests are then particularly useful. In effect, system development is more efficient.

Unit testing has another important advantage for long-term projects: it’s easier for new developers to join it. This is not a secret, that in the IT industry, employee migrations between companies are common. In some cases, development teams might have to grow as projects grow. Unit tests give them comfort: despite the lack of knowledge of the system, they can test their changes. If an error is detected, the information received is so detailed that in many cases it is possible to fix it quickly without long analysis or asking others for help. Unit tests also give comfort to the project owner — changes in the development team are less time consuming and less stressful.

 

Project stability

There is another advantage of unit testing that affects project stability. Assumptions in the project change or evolve over time. Technology itself is also developing: new tools, new versions of libraries as well as new ideas regarding the quality of software development comes out. All these changes make refactoring necessary if we want to maintain code quality.

Unit tests allow us to quickly pre-check whether refactoring changes, often of global scope, negatively affect the functions of the system. The developer immediately receives information about the impact of the change. Based on the list of detected faults, he can make corrections or withdraw changes if he considers that the scope of work is too large and unprofitable.

Refactoring in a project that does not have automated tests is often rejected in advance because it is risky. It’s difficult to estimate its scope and time needed to complete it. 

 

Final thoughts on Unit tests

As we can see, unit tests have many advantages that make them profitable, despite their initial cost. Although those preparations need to be made before developers can start using them. Additional lines of code that always need to be written when adding a new feature, and fact, that just like the main application code, they also need to be modified when requirements change.

We need to remember programmers will use unit tests throughout the development process. They often fire the tests several times a day when they write changes. Unit tests are invaluable tools for programmers to add features and make modifications. These tests may detect errors at an early stage, support maintaining application consistency and code quality.

They are invaluable for long-term projects because they reduce the impact of their complexity on making improvements. The saving of time that we think will be gained by not writing them is apparent. The knowledge of their benefits allows us to understand that thanks to them we save time and our nerves.

See also: