Since the release of one of my UWP apps, the top crash was hang_quiesce.
Clicking on this failure, I was in confronted by a sea of nothing. I.E. nothing meaningful from my app and all Windows code.
I did a little survey among other UWP developers and some of them also confessed that this crash was quite common. It is good practice to fix crashes because if you have a high number of crashes, it affects the search ranking in the Microsoft Store.
I reached out to my friends at Microsoft. Stefan Wick was kind enough to tell me the possible causes: the app is hung or it forgot to release the deferral. Also, Brandon Paddock suggested a solution to the deferral issue: add the notion of duration of the App.OnSuspending event to force quit the execution after X time.
Note: I don’t know exactly how long the OS gives to the deferral before it takes the execution as hanging. This is probably not a good idea to do tons of database operations for example.
My simple solution was to introduce a delay task of 2 seconds and used Task.WhenAny to make sure that that either the Delay or Suspend method finishes before 2 seconds. For my app, it is not crucial if the Suspend method does not finish.
After one month, I was pleased to see this crash at 1.44% instead of 22%!
I don’t guarantee that your “hang_quiesce” issue will be the same as mine, but it is definitely worth a try.
With the arrival of the Windows Phone platform in 2010, I fell in love with mobile app development. After two years, I was creating professional looking applications and was confident enough to contemplate creating my own company. However, there was always an excuse to not pursue this goal.
In summer 2013, the timing was perfect and I decided to go ahead and create a company and, more precisely, to incorporate it.
In this article, I want to share my experiences, my feelings and some tips.
First step: Find a name for your company
It might sound easy to do, but finding the name of my company was the hardest part in the process of incorporation. I literally spent a week figuring out a name.
The challenges to finding a company name are:
Find a cool/unique name or combination of words.
Make sure that the web address is available. You have no idea how hard is to find an available web address. It is even harder when your company name is short. Pro tip: buy your domain name as soon as you decide on your company name and before you tell anyone.
Make sure that the name doesn’t violate any international or national copyrights.
Verify that the name is legit in your city. I live in a place where the company name should start with a French word.
I ended up with “AppVenture Solutions Inc.” in English and “Solutions AppVenture Inc.” in French. Don’t look for my website, I haven’t built it yet.
Second step: Fill out the paperwork
When you want to incorporate a company, filling the paperwork is a complex and error-prone process. It is not a mandatory to incorporate, but my research and my friends’ recommendations led me to the decision to incorporate.
You have essentially three choices:
Do it yourself. You can go to the local government employment office and they can help you out a bit, but they won’t fill out everything for you. You will have to do your own research beforehand. This option costs about $400 to $500.
Hire a lawyer or a notary to complete your incorporation. It costs about $1100 to $1500.
Proceed with online private services.
I choose to fill the paperwork with a lawyer. In Montreal, I attended a (paid) workshop at SAJE en Affaires about incorporating a company that included the actual incorporation by a lawyer. I was able to ask any questions I wanted. I found it very valuable.
The price is higher when you incorporate with a lawyer/notary, but the service is #1 for three reasons:
You can get your incorporation in two days, because they have special access to a government portal.
You can ask to set up the company to optimize your family situation. I will explain more below.
You can get a binder with all the legal structures such as administrator roles, company rules, stocks, conventions and so on.
Third step: Find a contract
When your company is registered, you’re ready to start. Finding a contract is like finding a full time job. There are plenty of websites that offer contract work. However, when you have contacts and a good community around you, they can help you find work. One piece of advice is to stay engaged in the community and meet people live or online.
Always stay professional, you never know if a previous client would want to hire you again or even recommend you to other clients.
Last step: Closing your year
I don’t know the legislation in every country, but I suspect that most counties require you to do your annual report. Here again, you can fill your tax reports out yourself, but that’s another bumpy road. My advice is to hire an accountant for the first few years, so you can concentrate on what you are good at and be confident that your annual tax reports will be error-free. I suggest that you set aside $2500 to $3000 for the service of an accountant.
After my first year, I’m very pleased with the results and I don’t regret a second of it. As if creating a new company was not enough, I survived my first year being a daddy to a beautiful daughter. Like every job situation, there is a good side and a bad side to being a consultant. Here are some advantages and disadvantages when you are independent and/or working remotely.
Advantages of being independent
There is no secret that being independent will give you a big boost in salary.
You have more flexibility when managing your personal finances. When you have an incorporation, you are a shareholder by default. You can also be an employee of your own company. Depending of your strategy, you have full control on the amount that you want to give yourself as dividends and salary. This way you can reduce the amount of personal taxes that you need to pay to the government. You can also do income splitting with a member of your family.
If you bill your client per hour, your overtime will also be paid. This is a big advantage, because when you are an employee of someone else, your overtime is not paid. You might be compensated later, but it will not be a one-for-one equivalent.
If you don’t like working on the same product for years, being independent will offer you the freedom to choose the contracts based on duration.
Between contracts, you can take as many weeks of vacation as you like.
Items related to work as computers, tablets, phone, office furniture are treated as expenses and are tax-free (the taxes are deducted from the amount that you bill to your clients). It is good excuse to renew your equipment more often.
Disadvantages being independent
You might feel insecure about what’s next. There is no 100% secure job in the world, but there are some companies where jobs are more secure than others. When you are on your own, you find your own contracts. Also, at any time, a client can abort a project.
Between contracts with different clients, they might be a delay that you don’t want. Also, you might get many interesting offers at the same time, but less opportunities in other periods of time. You can’t control when contracts appear.
You need to take care of your own benefits. If you want medical insurance, you need to find yourself an insurance company.
You need to be more responsible regarding your expenses and revenues. You need to be prepared to justify every penny of your company at any time.
Advantages working remotely
When you work remotely, most of the time, you can have a flexible work schedule. This is very useful when you need it.
You don’t waste any time in traffic or transport. You have more quality time for yourself.
If you have a family at home, you can spend some time with them at lunch and say hi during the day. I was happy to be able to see my baby growing up in her first year.
You can work in any type of clothing.
Disadvantages working remotely
If you are someone who likes meeting people in person in your day to day life, being a remote worker might not be the ideal situation for you. However, you can still create your company and be independent. In fact, most jobs are in the client’s offices.
You need to be more disciplined at home than at the office due to the fact that there are more distractions in your home than in an office.
You might feel guilty when there is a holiday and you want to take a day off. Since holidays are different from country to country, your client or team may not have a holiday on the same day as you. No work means no money for that day.
If you don’t do sports after work, you exercise much less because you walk less in your day.
Thanks to my friends at RedBit that offered me my first contract. It was a fun and busy three months working in C# and WPF.
My second contract started at the beginning of this year and at the time of writing this article, the contract is still going on for a minimum to end of the year. I’m working for the mobile app development company Lextech, based in Chicago. This company is headed by technology strategist Alex Bratton who also wrote the book Billion Dollar Apps.
Aside from my great teammates and the awesome Windows project that I’m working on, I like that Lextech is using Sococo as a virtual office tool. It helps to increase communication within the team and you can easily see the availability of your coworkers. A big thumbs up to Lextech for treating their contractors as employees; we attend their weekly meeting with employees and have access to their internal documentation.
Pssst: Lextech is growing fast and they have open positions. App mobile development is the place to be.
Creating your company is very exciting and a great challenge. The future might be a little bit scary, but work a day at a time and everything will be alright. If it turns out that it is not your thing, you can always go back to being an employee. Don’t hesitate to ask for advice from friends or mentors. There are plenty of entrepreneurs that succeeded and you can be one too.
Feel free to contact me if you have any questions.
The process of creating an application does not only involve developing it. As discussed in a previous blog post, the marketing is a crucial aspect. There is another important aspect that we tend to avoid or not taking seriously enough: the testing phase, which I call the beta phase.
No matter which platform you build your app for, you need to test your app at some point. Yes, you worked really hard for many weeks and months on your app. Yes, you know your app by heart. Yes, it is bug free.
I don’t want to disappoint you, but there is always a little something that you didn’t think of, or a special usage scenario you didn’t pay attention to.
I speak from experience. I have submitted apps without doing a beta phase. I have also submitted an app where a crash could be easily reproduced. It is nothing to be proud of, but at least now, I do a beta phase.
Advertise on social networks that you are looking for testers. In my case with DualShot, I tweeted about it at two different times.
Believe me, you’ll get testers pretty easily. People are curious. Depending on how well known you are, you can keep track of the emails manually like I do or you can share an Excel sheet or use MailChimp like one of my friends does.
Unless you pay the testers, don’t expect to get feedback from everyone. This is normal, so don’t take it personally. Sometimes it is just not the tester’s type of app, or perhaps they are just too busy.
Tip: I use BugSense to keep track of crashes and I use Flurry for the analytic events. I highly recommend using these services (or any equivalent services) during the beta phase. As I previously mentioned, you might not get written feedback from all the testers, but at least you’ll receive traces of what they did with your app.
During the beta phase, the tester can provide feedback about the user experience (UX). As a concrete example, in DualShot, Vincent designed the following page:
I really liked this page and I didn’t see a problem using it. When I submitted the beta to my testers, in the same evening, three users complained that the UX was really bad. It was clear to us that we needed to put more work into that view. We ended up with the following design:
Unless you have the complete Windows Phone collection at home, you are most likely going to have only one or two devices to test with. When you have testers, you increase the chances that the app will be tested with many different Windows Phones. Don’t assume that all Windows Phone 8s from different manufactures behave the same. In DualShot, the image capture with some HTC 8XT (only this model) does not work. We didn’t have a tester with this rare device and Murphy’s Law struck again.
Not only will the testers find bugs/crashes and give you feedback, they will often give you two thumbs up. It will give you the extra energy to polish your app before certification.
If you are developing a Windows Phone app, you are lucky because the Windows Phone team developed a feature in their portal where it is easy to run a beta phase. Essentially, you publish an app as if you were submitting it for certification. However, the app is kept private for the testers that you have specified and the certification passes automatically in the subsequent two hours.
In the Windows Phone developer portal, you need to select Beta as the Distribution channel, then you enter the list of tester email addresses (using a ‘;’ between addresses).
After that you can fill out all the info and screenshots.
Tip: avoid flooding your testers with daily emails if you submit a new beta every day. If you submit an update, the tester will be notified via the Store Live Tile. Take advantage of this automatic notification to enter all the new features/bugs into the app description. The first time that you send the deep link of the beta app, you can tell your tester to check the app description when a new update is available.
Unfortunately, in the current Windows developer portal, it is not possible to easily distribute an app to testers. You need to create a package and send the package to your testers. The testers then need to manually install the app. Hopefully the Windows team will soon mirror the awesome work of the Windows Phone team.
I know the feeling when an app is finally complete and ready to be submitted for certification. It is so tempting to submit it right away in order to see it live in the store ready to be downloaded. Please resist this temptation and do a beta phase. It is better that your friends find the problems than strangers, as strangers will most likely give you a 1-star review if they find a bug or a crash.
My friend designer Vincent and I decided to share the story of our latest app DualShot. The goal is not to be show-off. We want to show diverse statistics that can help analyze the Windows Phone market and encourage other developers and designers to continue providing quality apps.
Before starting, DualShot has two restrictions:
It is only available to Windows Phone 8 devices.
It requires a back and front face camera. In other words, the most popular devices the Nokia Lumia 520 and 521 cannot download the app, because they don’t have a front face camera.
The launch date was September 16th. The download count surpassed 100 000 on October 15th.
Data from the Windows Phone dashboard
It’s not a big surprise that the peak arrived close to the launch date. DualShot received a lot of good press from many Windows Phone websites.
Here is the top 30 markets. We were quite surprised that India and Thailand arrived on the second and third spot despite the fact that DualShot was available in English and French only at launch. The two biggest continents with the most users are Europe and Asia.
Here is the percentage usage per device. There is no doubt that Nokia is dominating the Windows Phone market. The non-Nokia device with the biggest market share is HTC with 5.3%. Looking forward, I’ll be curious to see how the Lumia 1020/925 will evolve. Their percentages are low because they are new and not available worldwide yet.
Data from Flurry analytics service
Concerning the reviews, there is a clear relation between the number of reviews and the downloads. The American were the most critics about our app!
Developing an app is one step, but advertise an app is another step. I’m not a firm believer that submitting an app without talking about it that the app will become popular.
The day before the app went live, we contacted a lot of editors and friends. A full day can be easily spent sending all the information.
For those who noticed, we created a little teaser on September 26th. It turned out that the one-day teaser worked well.
At this point, this is where the team has less control. It is the turn to the public to decide about the success of the app. It is also on the hands of the editors if they want to talk or not about the app. This is the most exciting and stressful period where the team awaits the result.
In the case of DualShot, we were very happy with the first days following the launch. In reality, it surpassed our expectations.
We were delight to see a YouTube review from our friends at WinSource:
We had a review on a Microsoft Canadian website and many more sites.
Having a lot of tractions at launch caused a positive domino effect. The more an app is downloaded, the more it appears on different categories. At some point DualShot was the top New+Rising app in USA.
A week later, the download count probably caused a trigger on the algorithm of Microsoft to display the spotlights. With the help of my app App Spotlights, I was able to detect that DualShot was on the spotlight of many markets on October 4th.
Later on, we had one occasion with the big spot in the USA spotlight page. We can see the effect on the graphic at the top of the blog post.
So far, we had a lot of exposures:
While we didn’t make any money from releasing DualShot because we made it free, we had so much fun following the launch. It surely motivates us to create more Windows Phone apps. Now that the Windows Phone market is not small anymore, we see a lot of opportunities and we encourage developers and designers to jump in. You can also be surprised with the result.
Have you create a DualShot photo yet? If not, go download and share your creation!