whitespace COMPANY whitespace SERVICES whitespace PRODUCTS whitespace PURCHASE whitespace SUPPORT whitespace CONTACTS whitespace Home whitespace Contact Us whitespace Site Map whitespace

News & Events

July 05, 2018

Generating Synthetic Dataset for Image Alpha Matting.

Some time ago, we had a talk with one of our clients regarding the possibility to create a mobile app, which would recognize a real-life object on the photos and will cut it off, separating from a background. That is something that also called Image Alpha Matting.


For such purpose, our experienced software developer, Maksym Gontar came up with the idea to create a deep neural network model and train it to recognize particular objects. Such training can be performed by preparing some examples (dataset) for AI model, so it can learn what input data it will receive and how the output is supposed to look like. The example for input, in this case, would be a set of images with some object that is over different kind of backgrounds. For output, we would expect to receive the same object without any background.

Automatization of Dataset Creation

Preparing such dataset (set of images) manually, by cutting objects from the images in a photo editor, would be very time consuming. Alternatively, to this approach, Maksym suggested generating so-called synthetic dataset by taking a 3D object and overlaying its projection on different backgrounds from different angles. This approach can be automatized which will allow creating big dataset much quicker.


Unfortunately, we did not get a “green light” from the client to start the mobile app project. Despite that, the concept of synthetic dataset generation, based on this particular example was successfully used by Maksym Gontar in his school project for Machine Learning class in UCU Data Science program, where he is getting his second Master’s Degree. If you would like to get more technical details about the project, you can visit project page on GitHub or get in touch with Maksym via his FB page .

PS: We, at ArtfulBits, are proud to have such team mate as Maksym Gontar, who constantly strive for learning something new and improving his professional expertise. We wish Maksym success on this challenging pass towards his second Master’s Degree. Keep up the good work, Maks!

April 11, 2018

Budgeting Models in Software Development Outsourcing. How to Stay Cost-effective.

In software development outsourcing, the type of budgeting model has great impact on the process of development. It defines everybody’s responsibilities and financial risks. Naturally, you as a product owner will be interested to reduce your financial spending and receive quality product, regardless the type of budgeting model. This will be hard to achieve without understanding basics, about how each of the models works.


There are two main types of budgeting models which are widely used in software development outsourcing. They are: Fixed Price and Time & Materials (T&M). In Fixed Price projects, budget is estimated and agreed by both sides, prior to start of development. No matter how much time and efforts will be eventually spent (to get desired result), the budget will remain the same. Oppositely to this, in T&M model, payments are directly linked to actual amount of time and resources that are spent by contractor. Even though the difference between two approaches looks pretty clear, there are some important aspects that may not look that obvious. Let’s see what can be expected from each of the models, and how your spendings can be optimized.

Fixed Price

Budget in Fixed Price model is based on developer’s estimation. This fact makes developer to be financially responsible for financial risks. If job was underestimated and will require extra time on development, that extra time will not be compensated, which will make it less profitable for developer. That’s why in a lot of cases, if developers do not get enough information, they tend to overestimate their efforts, to cover possible risks. To avoid this situation, it is advised to provide very detailed specifications regarding requirements. Besides that, it is suggested to make sure that all of the features that you would like to see in your software, are explained to the developer and are included in project documentation. Otherwise they will not be covered by estimated budget.


After budget is agreed, you can expect that some amount of prepayment to be required before start of production. Usually it is somewhat in between 20% and 50% from overall budget. Be noted that once development will start, you will not have much control on the process. Fixed Price model does not allow any changes to requirements or to the project plan, because even smallest change in the logic, can affect entire solution and add-up a lot of work. That’s why all new changes to project plan will require additional evaluation, and most likely will require extra financing. Taking all these facts into consideration, you may figure that the key to optimizing spendings in Fixed Price model is in proper planning and preparation.

Time & Material

In T&M projects things work differently because all of financial risks will be on you, as a product owner. We know it sounds scary, but more risks does not necessarily mean more spendings. With proper risk management this model can be more cost-efficient than Fixed Price model. Along with financial responsibilities (risks) you are granted with certain privileges and flexibilities. T&M model is more agile and dynamic. Prepayments and budget estimation will not be needed to start the project. You are able to plan the process and set priorities. Requirements can be change on-the-go, without long discussions. Basically, you can try one thing, see if it works (by letting end-users to test it), and based on preliminary results adjust your strategy. Outcomes from such flexibility can be irreplaceable, in today's fast paced market.


In T&M you pay for time and resources that are spent. Without proper monitoring and management your budget will be drained very fast. That’s why you should be ready to get involved in the process very proactively and constantly monitor the results. This will be needed to minimize financial risks. Even though, in T&M estimates do not affect amount of payments, we still recommend obtaining rough costing quote before start of each task. This way you will be able to keep track of effectiveness, and change priorities if needed.

Which Model is Better?

As you can see the main differences between two approaches are derived from such factor, as who is responsible for financial risks. It will be wrong to say that one model is better than another. They just meant to be used in different situations. Fixed price budget is used for smaller and more trivial cases, when scope of the job can be estimated. T&M is more flexible, thus can be used for long-term and more complex projects, or for the projects where functionality may need to be changed on-the-go.


At ArtfulBits, we are perfectly fine working in scope of any of these two paradigms, and even mixing them together during project span. If you are not sure how to approach your software development process, do not hesitate to get in touch with us, and we will be more than happy to help you with that!

January 15, 2018

Main Stages of Software Development Process (or SDLC), Explained for Non-Tech Product Owners.

Our interaction with software products has become usual thing nowadays. While using smartphones and computers, you look at software products from end-user retrospective. It is pretty ordinary and understandable. You know what to do with it and what to expect from it. But everything changes when, at some point, necessity to create your own software solution occurs.


Approaching this process may be challenging, especially, if you don’t have previous experience with custom software development. It requires some basic level of understanding about how software is created. To help you with that, we prepared a brief description about main stages of software development process (also called Software Development Life Cycle, or SDLC). They are:

  • Documentation Preparation
  • UI/UX Design
  • Development
  • Testing and Bug Fixes
  • Publishing/Release
  • Post-release Support

Let's take a closer look at each of them.

Documentation Preparation

First step of the SDLC is documents preparation. It includes process of requirements analysis and development of specifications, which should describe how the software should be working. This stage of software lifecycle involves a very active communication between project stakeholders. Product owner explains his vision on final product. Project Manager clarifies details. Developer investigates technical feasibility. Designer makes UI/UX sketches. All results of this processes get structured are captured in form of various documents. The most common ones are: contract, project plan, software requirements specifications, UI diagrams, etc. We recommend you to make sure that all of your wishes and requirements are documented in some form. Project documents will define how the final product should look like and what are stakeholders responsibilities to make it happen. Documentation will have very big impact on further steps of development process.

UI/UX Design


UI/UX design is a process of creating visual prototype of the product. This prototype is very important for software products, especially for those which are highly dependent on user interface, such as: mobile apps, desktop apps, websites, etc. Very often, designer will need to do a few attempts before final version of design will be approved by both sides. All parts of the team are interested to have UI/UX design prior to start of actual programming stage. For you as a product owner, it allows to verify, whether all of your requirements are well understood and will be represented in the software scope. For technical team, design is a good addition to the rest of project documentation, because it visualize main UI elements and interaction between them.


Development is a process of transforming business requirements into software features using programming languages and tools. During this process developer follows instructions and specifications that were previously gathered during Documentation stage of SDLC. Usually the whole development process is split into smaller chunks which are called milestones. This way it is more manageable and effective. This separation into milestones also helps product owner to keep track of the progress, to make sure everything goes as expected. After development stage was finished, source code is compiled into a program which will be given to testers for verification.

Testing and Bug Fixes


During this stage quality assurance specialists and software developers cooperate closely in attempt to identify and fix bugs, crashes, and issues. It is important to note that even the greatest products, made by world famous corporations like Apple, Google, and Microsoft still have bugs. Chasing 100% bug-free product can be time and budget costly. As an additional option to in-house testing, public beta testing can be initiated. It can help to reduce expenses that are spent on professional testers. This approach is widely used in startup industry. On the other hand, if product is intended to be used in medical, financial, or some other field, where software stability is crucial, you may consider spending more resources on testing.


After testing is finished, the product is submitted to stakeholders for evaluation. If it looks and performs as expected, the product can be deployed to production environment where it becomes available for end-user. Depending on software type there are different deployment procedures. For example, website release is relatively simple. Developer just moves software files to production environment and makes it available for end-users. In cases with mobile apps – they usually need to be published to app store. To do so, developers account will be required. Besides that, the app will go through appstore verification process, before becoming available for public. Verification may take from one day to a week. Don't forget to take this time into consideration, when making your marketing plans.

Post-release Support


Software oftentimes requires ongoing support after it was released. There are few reasons for that. First, as we mentioned earlier, some bugs and issues cannot be reproduced by testers. They usually get unveiled during post-release period, after real users had chance to interact with software. Secondly, software technologies got changed very dynamically. Frequent updates to development tools, operative systems, development policies, and standards may alter some functionality of the software. That is why it is a good idea to agree post-release support terms with your developer.

How this Knowledge Can Be Used?

As a summary, we would like to mention that not all of the software products are the same. The development process can look differently from case to case. In “real life projects” the order of phases got mixed-up, some of them got skipped, or duplicated. Being familiar with SDLC will give you understanding how to access each of the stages as a product owner. Besides that, such understanding will improve communication with other stakeholders, which in turn will increase overall productivity of development team.

November 30, 2017

New website for our SharePoint products and services.

We are happy to announce that our SharePoint website was successfully launched. This is a very important step for us, because SharePoint is prioritized as one of the areas, in which our company is planning to keep actively advancing in the nearest future.


New web-portal should help us with that by optimizing any kind of interaction between our team and customers which are interested in our SharePoint products and services. The website can be found by the following link: www.sharepoint.artfulbits.com. We hope you will find it intuitive and easy to use. Some pages may still be under development, but we plan to finish them soon. If you have any suggestions or concerns about our new SharePoint website, please don’t hesitate to get in touch with us and share your thoughts. We will appreciate any feedback!

November 15, 2017

Using SMS verification to increase your software security.

Nowadays, SMS and Voice call services are widely used as a second step verification in a lot of software products. Good old email verification is still used as a primary method, but you can’t be sure with that

thing, anymore. There are number of services offering fake emails creation. That is why second step verification methods should be used. It is much needed for both: users - who get extra security for their accounts, and software owners - who can verify if their users are real people. Let’s take a look how SMS verification can be implemented in your software.

First of all, it is important to define main purpose for which SMS verification service is needed. This will help you to determine implementation logic. For example, if your goal is to provide extra security to user accounts, then SMS verification can be used each time after user attempts to login. SMS service will send a code that will need to be entered into some kind of form. Only after that, user will get logged in. As another example, SMS verification service can be used for software owner to verify if their user is a real person, not a bot. The implementation can be a bit more sophisticated in this case. Upon registration, users will get SMS (or a phone call) with some puzzle or a question, getting answer to which will be easy for human, but will be challenging for a bot.

SMS verification

After determining functionality you will need to integrate one of the appropriate services into your software solution. There are plenty of them on a market. Experienced software developer can help you choosing the right one, according to your needs. Our company previously worked with Twilio and RingCaptcha, and we had positive experience with each of them. Twilio offers SMS and voice call options for convenient price. To get started you will need to buy custom phone number for outgoing SMS and voice calls (starting from 1$/month) and developer will need to create a simple API service to process SMS and calls. After that the price will be calculated based on per-message rate (0.75 cents/message for US numbers). RingCaptcha is a bit more expensive (2 cents/message for US numbers), but it includes free starter plan with 500 free SMS per month. Unfortunately, it does not provide voice call option. We used Twilio and RingCaptcha solutions for both: websites and mobile apps, and we’d highly recommend them to anyone looking for a stable and reliable verification service.

Implementation of SMS service for user verification purposes should not be complicated or expensive task for experienced specialist. Security benefits you get will exceed you expenses. Consider using this mechanism for any software which processes personal information of users, and we will be glad to help you with implementation!

November 3, 2017

How to turn your SW idea into a concept?

As software developers, we quite often see the situation when some of our clients after developing an idea have troubles in explaining it to others. Usually, it is because the idea is still raw and not supported with enough of details.

If software programmers do not understand business logic of software solution, they will not be able to make a proper analysis and estimations. This can lead to very big problems in the future, such as: wrong choice of technologies, underestimation of development time, wrong performance of software, etc. So, Idea to Concept how to avoid this? How to transform your idea into a well-developed concept, which can be presented to others? It’s actually not that hard, you just need to think it through and make sure that everything makes sense. We prepared a list of some key aspects that we recommend to think about during this process:

  • Technical implementation possibility.
  • End-users of product.
  • Ways of distribution to end-users.
  • Benefits for you as a product owner.
  • Supporting documentation.

Technical Implementation Possibility

Probably one of the most important things here is technical implementation possibility. HW and SW have certain limitations, so not every idea can be technically accomplishable. Nice thing to do will be to analyze each part of your solution and try finding such technical constraints. For example, iOS app that measure body temperature sounds like a good idea that can be useful for people. But do iPhones have external temperature sensor?  No they do not, and typically you don’t have to be a programmer or engineer to do some researches and find such information online. Such obstacle is very critical for the entire solution, because measuring temperature is the main feature of this proposed software. It is important to recognize such technical constraints from the very beginning, prior to development stage.

End-users of Product

Next thing we suggest to do is to define who will be your end-users (targeted audience). This aspect will not only affect distribution and marketing of the product, but also the product itself. For example, if the software is intended to be used by elderly people, you may want to consider using colors, designs, and typography that can be accessible by visually impaired individuals. If the app will be used mostly in Arabic countries, UI/UX needs to be done in Right-to-Left direction. That’s just a few examples to show how important is defining targeted audience.

Ways of Distribution to End-users

Another important aspect to think about is product distribution, which is a mechanism that defines how SW functionality can be obtained by end-user. If software needs to be publically available, consider publishing it to online marketplace platforms. If the app is for some company internal use, some other mechanism of distribution may apply, such as sending installation file via email, etc. In scope of product distribution we suggest to think not only about the ways how the software will get to users devices, but also about ways how software itself will deliver its features to end-users. For example, in many cases solution will require user authentication, if so, then login/registration flow must be considered. Other things that affect delivering software functionality may include: licensing model, dependency on internet connection, custom permissions, and others. If any of these will be required, make sure to spend some time and think about how it’s supposed to work from end-user point of view.

Benefits for You as a Product Owner

A benefit for product owner is another important aspect that may affect structure of your software. Software products are quite costly as you probably know. In exchange to the development expenses software should provide some benefits in order to be economically reasonable. If this is custom software for internal use than the software product is a form of benefit itself. It improves internal processes and reduces operational expenses. On the other hand, if the product is not meant to be used by you or your organization then there probably will be some kind of monetization mechanism that should help you to at least cover your expenses. There are many types of strategies that can be used for monetization, such as: product licensing, in-app purchases, third-party advertisement inside the program, etc. Implementation of any of these strategies will require certain structure of software solution. That is why it is important to describe your monetization plans to software developer.

Supporting Documentation

Last but not least, after you did your thinking and already developed a clear vision in your mind about how things should work, you will want to present it to others in understandable manner. Developing supporting documentation can help you with that. It does not need to be professionally made and very formal. Its main purpose is to assist you with presentation, so basically it can be anything that you feel comfortable with: handwritten sketches for interface, list of features or requirements, process diagram, demonstration of similar products, etc. The goal is to visualize how the solution should work, the main modules, and how they interact with each other and with end-users.


From Idea to a Concept

After thinking about each of the aspects and preparing supporting documentation, your idea will turn from something not very much determined into well-developed concept, which can be demonstrated to developers, investors, and potential customers. As you can see, this process, in most parts, does not require advanced technical knowledge, and can be performed by you as a product owner. However, in case you will have troubles with anything, you can always get in touch with us for professional advice.

September 19, 2017

Choosing between Provided-hosted and SharePoint-hosted model, explained on a real life example.

Few weeks ago ArtfulBits Weather app for SharePoint Online was published to MS Store. Even though the functionality of the app may seem to be very simple and straightforward, the experience we acquired during development process was very important for us, and we decided to share it with others.

Weather app

As you may know, for many years our company used SharePoint technologies for the development of custom solutions and components that are represented by: web parts, custom columns, and site templates. All of them were made for SharePoint on-premise environment. We did not have much experience with SharePoint online add-ins, till now. Weather app release is symbolic, because it is our first product made for SharePoint Online.

SharePoint Add-ins Development

Process of developing add-ins for online environment has some differences comparing to on-premise farm solutions. This is mainly due to the different model of deployment and installation. Add-ins that are distributed via MS Store cannot include “full trusted code” solutions that run on SharePoint servers. There are two basic kinds of add-ins: SharePoint-hosted and Provider-hosted. To determine which of them will be better for our app we decided to gather brief information about each of the models:

SharePoint-hosted Provided-hosted
App location: App is hosted in SharePoint and it uses 100% client side code. Front-end app is installed to SharePoint site, but it serves as a link to external server or cloud, where all the functionality is being run. App provider is responsible for remote infrastructure.
Technologies: Business logic is written using JavaScript. App components can include HTML/CSS/JS files and SharePoint components such as: Site Columns, Site Pages, Content Types, etc. Any programming language can be used for server side code. Besides using SharePoint components the App can connect to any internal or public web services.
Permissions level: Users can grant only the permissions that they have. Can go above user’s permissions level.

How to choose the right model? SharePoint Add-ins Documentation suggests the following approach: “The most useful way to determine which patterns you'll want to use is to start with your own requirements, technologies, and goals and match them with the options and possibilities that are enabled by SharePoint Add-ins.”

Process of choosing the right model

So how this can be applied in our case? Which model would be suitable for our Weather Forecast add-in?

To give you better understanding on how we approach this decision, I will briefly describe our add-in functionality. The main purpose of the app is to inform users about the weather. When added to a site it shows current weather for a list of cities. Each city visualized in form of a tile. After clicking on a certain city-tile - user will see detailed information about local weather for next few days. There is also an ability to add new cities and choose a format of date and temperature.

Weather app

Now, being familiar with main features of the app, how do you think, which development model would be more suitable? In the process of making our decision, we asked a few questions ourselves:

  • Can the app use only client side code, or there will be any functionality that needs to be executed remotely, on back-end side? - In our case there was no necessity to use any server side components. All of the functionalities could be handled on SharePoint client side: city names are received by calling Google Maps Geocoding API and are stored in standard SharePoint List, weather data is obtained from Yahoo Weather API and visualized on the city-tile. All this logic can be executed in scope of SharePoint site.
  • Does the app require high level permissions and privileges? Will it be possible that application will need to elevate user’s permission level? – No, to be functional app needed Edit permissions on List level, and most of the users have such privileges.
There are a number of other things that needs to be taken into consideration for each particular case. For instance, one aspect that could affect our decision was visibility of Google API key (it is used to connect to Google API). For SharePoint-hosted model the key would be easily accessible in client-side code, any user can discover it. After some analysis, we did not find it threatening, so eventually we decided not to worry about hiding it, and go with SharePoint-hosted model since it was suitable with all the other requirements.


We would like to conclude that SharePoint-hosted model may look more preferable since it does not require use of additional infrastructure, but Provider-hosted model must be used if:

  • There is at least one component, which needs to be located on remote server (for example: processing Google API key would need to be moved to external server, if we would find it unsafe to have such module in client-side code)
  • The app needs elevated privileges that go beyond users’ level of permissions.

I hope this information was useful for those, who just started their pass towards SharePoint add-ins development. You can follow us on FB, G+, Twitter for other interesting content!

May 17, 2016

List Search SharePoint Web Part by ArtfulBits

Flexible and efficient search in SharePoint is an eminent feature that is required by everyone using SharePoint for optimization of the business processes - document workflow, data exchange and communication.

List Search Web Part logo

SharePoint is known for its wide capabilities in regards to business processes. In fact, SharePoint can be viewed as an operating system for business. It can handle all operations performed within a company or corporation. A common situation is running multiple websites for internal usage (Intranet portal) by different departments of the certain company, along with the external web sites used for the communication with the clients. All of them are within the same installation of SharePoint. All communication, all data, all documents are being stored within SharePoint and can be accessed. This is where SharePoint may become an extremely flexible tool providing access for chosen groups of users to the chosen lists where data is stored.

List Search web part from ArtfulBits contains a number of extended features that can significantly improve SharePoint search capabilities:

  • Ability to save search filters, give them names, share search filters with the users.
  • Supports "contains", "exact" and "begins with" filters, along with the AND/OR conditions that can be applied to the selected columns for search.
  • Ability to limit allowed search on the site to the set of the site collections, lists/libraries and views.
  • Ability to print search results or export to MS Excel.

Few words about licensing for ArtfulBits solutions:

List Search Main View

Most 3rd-party SharePoint web parts are limited either to a specific web application or to the number of the users, which is very inconvinient in terms of using the same web part all accross the site-collections within a given SharePoint installation

ArtfulBits provides its clients with the most flexible licensing model that supports all business processes that can take place within your company. It is done with the help of "per-farm" licensing model. Once List Search web part is installed on your SharePoint Farm, it can be easily used all accross your web applications and site-collections!

Read more about List Search web part

May 12, 2016

How To Adapt Web Parts for SharePoint 2016:

The architecture of SharePoint 2016 is not much different from SharePoint 2013. Though, components and web parts migration can become a dangerous adventure, anyway. But not for ArtfulBits!.

SharePoint 2016 logo

After successful installation of Microsoft SharePoint Server 2016 we faced with the necessity of upgrading the source code of our SharePoint web parts and components to SharePoint 2016. An upgrade process was easy because we accumulated a lot of experience with a significantly more complex shift from SP 2010 to SharePoint 2013.

So, first we decided to upgrade SharePoint Installer to SharePoint 2016. Few general issues had to be solved in the beginning:

  • Identify correct names of the Sharepoint services employed by the solutions as they can differ from previous SharePoint versions. our SharePoint solutions employ SharePoint Administration and SharePoint Timer Service
  • Check the path to SharePoint folder in Web Server Extensions. Now we can see folders named 14, 15 and 16 inside Web Server Extensions, where 16 is for SharePoint 2016. We needed this information to check whether the server is installed on the machine. Using all this information you have to make corresponding changes in the project classes.
  • Upgrade project files to newer Visual Studio 15 version. It means:
    • including “Microsoft.SharePoint, Version=” reference
    • changing TargetFrameworkVersion to v4.5
    • changes in solution files: Format Version to 12.00, # Visual Studio to 14, VisualStudioVersion to 14.0.24720.0, MinimumVisualStudioVersion to 10.0.40219.1

Now about the process of making 2016 packages for ArtfulBits solutions:

After few minor changes in .bat files, we could run them and got our packages. But we met a problem with MSBuild.exe and project files connected with Visual Studio Version. We resolved it passing “/p:VisualStudioVersion=14.0” for SharePoint 2016 projects as a parameter for MSBuild.

Certainly, the last step should be to install new SharePoint 2016 version of ArtfulBits component on Microsoft SharePoint Server 2016 and check whether its functional.


March 28, 2016

Cascaded Lookup Column For SharePoint 2016!

While all SharePoint community is wondering regarding pros and cons of the new SharePoint 2016, ArtfulBits released new on premise version of one of our most popular SharePoint components - Cascaded Lookup Column adapted for SharePoint 2016.

SPI logo

It's being used in multiple compound SharePoint solutions and corporate portals by hundreds of companies. It's an indispensable tool for building relationship between parent and child columns, especially in non-trivial situations like editing lists in Datasheet mode.

Even though, there is only RTM version of SharePoint 2016 available now, and the full release is expected sometimes in early May, we decided to adapt our SharePoint components now. We do believe that hybrid solutions promoted by Microsoft will become more commonly used. However we also want to support our clients on their existing on-premise installations of SharePoint.

ArtfulBits Lookup Columns are an effective solution for SharePoint!

Visit Cascaded Lookup page for full information!

Company | Services | Practices | Technologies | Career | Contacts | Privacy
© 2005-2019 ArtfulBits. All rights reserved.