Author Archives: admin

General Purpose GPU Programming for Mobile

 

GPU_Computing

There are times that your app collects a whole lot of data (by capturing it live or by downloading from a third party, or import from email), and you want to do a whole ton of reports and visualisations inside your app. .

To do lots of computing inside your smartphone is a very challenging job, as I have experienced myself in processing video data. A small trick is to use your GPU, which could be 10-100 times faster than your CPU in calculating floating point.

Setting up a GPU shader and calculation could be a huge task for anybody who are not familiar with OpenGL. So, this excellent GPGPU library could help you a lot, all you need to do is to change the calculation inside the vsh file. I am planning to make it even easier for anybody to use in the near future.

Improve your Android emulator performance

Want to supercharge your Android emulator in Eclipse/IntelliJ, use the following, excellent tip from Stackoverflow

IMPORTANT NOTE : Please first refer to Intel list about VT to make sure your CPU support Intel VT.

HAXM Speeds Up the Slow Android Emulator

HAXM stands for – “Intel Hardware Accelerated Execution Manager”

Currently it supports only Intel® VT [Intel Virtualization Technology]

The Android emulator is based on QEMU; The interface between QEMU and the HAXM driver on the host system is designed to be vendor-agnostic.

HAXM

Steps for Configuring Your Android Development Environment for HAXM

  1. Update Eclipse: Make sure your Eclipse installation and the ADT plug-in are fully up to date.
  2. Update your Android Tools: After each Eclipse plug-in update, it is important to update your Android SDK Tools. To do this, launch the Android SDK Manager and update all the Android SDK components. To take advantage of HAXM, you must be on at least release version 17.

enter image description here

  • Download the x86 Atom System Images and the Intel Hardware Accelerated Execution Manager Driver: Follow the image below:

enter image description here

  • Install the HAXM Driver by running “IntelHaxm.exe”.
    It will be located in one of following locations:

    • C:\Program Files\Android\android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager
    • C:\Users\<user>\adt-bundle-windows-x86_64\sdk\extras\intel\Hardware_Accelerated_Execution_Manager

    If the installer fails with message that Intel VT must be turned on, you need to enable this in BIOS. See description for how to do this here.

Install .exe or .dmg

  • Create a New x86 AVD: Follow the image below:

Create AVD

  • Or as for new SDK, enter image description here

Time Management for Software Project

Time, quality and cost

 The basic of project management is a balance between time, quality and cost. Pick 2 of them. And then we start discussing about how to estimate the time when we have fixed the quality and cost (just kidding, you can pick quality and time as well).

 

Time Cost Quality

Time Cost Quality – Pick 2

 In projects I have done over last 5 years, each always contains lots of unknown and challenges, as I have worked in most of the latest technology and sometimes I come to new project without any experience

 Main problems in estimating projects can be listed as below:

   – Miscommunication

   – Overestimate the team competency

   – Task breakdown not done carefully.

   – Underestimate integration between models

   – Technical unknown

   – Requirement changes

Miscommunication

This normally happens with outsourcing companies or when teams are spread between different locations. When I chat with clients or teammates, people are lazy to chat so they tend to chat short. It leads to lots of assumptions and miscommunications between people. Voice chat on skype suck energy really fast, and require both sides to communicate synchronously. It could be the miscommunication between clients and your teams or inside your team. You definitely don’t want after 3 months, you come back and the clients’ feeling is like the figure below….

Miscommunication

Well, a famous and familiar figure huh?

Overestimate team competency

I pick my team members really hard, and I also have strong belief in my people. That is why I overestimate my team member most of the time. Belief and overestimate should be separated from each other. “Keep a cold mind and a warm heart”. That means you should keep a strong feeling in your members and encourage them to do a good work, but when evaluate them for specific project, be careful to estimate.

Task breakdown & integration

These are the 2 most underestimated when managing any projects. It is easy to look at the whole and say that it would take 3 days to finish all of them. However, if you actually break it down, and allow time for writing the code, debugging, testing and fixing bugs again,the total time could be 10 days. Oh, I forgot to mention about integrating between tasks or modules. Sometimes, we assume that if task A is done, and task B is done, combining them would be easy. Poor us, it is not usually the case. The combination between module A and module B can generate a whole new level of bugs that need fixing. The bug may only happen due to specific conditions of module A and B. It is important to run lots of tests and allocate debugging time for this phase, as shown in the following figure.

Work Breadown Structure

Work Breadown Structure

Technical Unknown

The risk level of the project depends on how many unknown stuff in your project. Some of them is that the requirement is unclear, or the technical solution is not yet known or implemented by any people in the team. It requires an expert with sharp eye to know which areas are unknown and needs to allocate time for it. The problem is people don’t know what is unknown…

One cool example that strikes me a lot is how Video Player is implemented in iOS and Android. In iOS, seeking to any arbitrary frame is a piece of cake, and I assume a well-designed framework like Android would be the same. I was totally wrong. It took me 2 months to search through many different solutions and approaches to figure how to do it in the correct way.

Only when you really get into coding, you can really know which part is challenging.

How to deal with changes

Another problem is customer change their requirement based on what you demonstrate them. An Agile approach normally helps by clearing any customers’ assumptions as soon as possible and not let them wait until the finished product. By receiving early feedback, we can constantly change the products.
HOWEVER…

1 problem of the Agile approach is that customers keep changing their minds way too often. There is 1 point that we really need to lock the requirement no matter what the customers want. Striking a balance between these issues may keep customers happy and our project budget and timeline in a good shape.

What surprises me about sport business

Sport Business

Sport Business

I has long been a fan of Manchester United and it is fascinating for me to learn about their business and in general, sport business. So, I followed a course in Coursera, https://www.coursera.org/course/globalsportsbusiness to find out more about this industry.

I always have these big questions:

  • How much do these sport companies earn?

  • How do they justify their big spending on player transfer?

  • What are different source of revenues, like advertising, media streaming, player transfer, youth training and transferring, gate tickets?

  • How can the weak team survive, comparing to big teams like Manchester or Real Madrid?

  • How people make sure that these teams don’t cheat on their games?

  • How about drug testing? (this question is already answered on this blog post)

Their Revenue and Income

Big Sport Teams like Manchester United only earns very little comparing with some giant Internet companies like Facebook or Microsoft. Their players can earn a lot comparing to other companies’ employees, though.

Manchester United market capitalisation is: 3.10 Billion $. Well, that is relatively low, comparing to 1B$ of Instagram or 47$B of Facebook. We will investigate each of their sources of revenues to understand where is the big budget and what the league does to make sure it stays competitive and interesting.

Gate Income
is sometimes shared between home and away team, normally ranging from 0%-33% to the away team. Here is the following list of 10 top gate receipts. This gate income contributes a significant part of the income for the clubs:

1 Real Madrid – 438.6m

2 Barcelona – 398.1m

3 Man Utd – 349.8m

4 Bayern Munich – 323.0m

5 Arsenal – 274.1m

6 Chelsea – 255.9m

7 AC Milan – 235.8m

8 Liverpool – 225.3m

9 Inter – 224.8m

10 Juventus 205.0m

Media Income:

The Media is working really well with sport business as the percentage of audience watching a delayed sport is very low, only 4.4%. The following table shows the proportion of audience that watches a delayed show.

Category

% of audience watching delayed

Sport Events

4.4%

Award Ceremonies

14.7%

Comedies

39.5%

There are different business models in this area: TV Networks, Cable TV Model, Regional Sport Network. They can benefit from both the Subscriber Fee and the Advertising Revenue.

The Media Income of some big sporting event:

– Superbowl: 106 million audience (at year 2010)

– UEFA Champions League: 109 million audience (at year 2010)

Other income:

There are other incomes from training the young players and selling them to other teams. The naming fee for the stadiums and the team. There is also salary cap for the players inside the league as well.

 

Drug Testing and Statistics

Doping

I feel very surprised that people like Lance Amstrong or any other atheletes could by pass the drug test so easily for many years until they got caught. Until recently, I read a blog post about the statistics that reveal the truth about this:

Anti-doping tests have a huge false-negative problem. I have been talking about this for years

As it is a huge false-negative problem, most of the time, the dopers will escape it. But if a player tested positive, it is very high likely that they use doping. It is only somebody suspects and request an official legal and expensive process.

And even if you pass 500 doping test is not an impressive as you thought, more here

The anti-doping agencies are so concerned about not falsely accusing anyone that they leave a gigantic hole for dopers to walk through. . . . While we think about Armstrong’s plight, let’s not forget about this fact: every one of those who now confessed passed hundreds of tests in their careers, just like Armstrong did. In fact, fallen stars like Tyler Hamilton and Floyd Landis also passed lots of tests before they got caught. In effect, dopers face a lottery with high odds of winning and low odds of losing. .

SnappyCam App looks very good

I just read about this on Techcrunch and try it out, it is a very handy camera app. Although I am not sure the image result looks actually great because it is only 213kb? I also would love to know how he can do it

Snappy Camera

Snappy Camera

 

http://techcrunch.com/2013/07/31/fastest-iphone-camera/

Your standard iPhone camera app is actually pretty slow, able to take just three to six photos per second at 8 megapixels each. But with SnappyCam 3.0, you can shoot 20 full-resolution photos per second thanks to a breakthrough in discrete cosine transform JPG science by its inventor. Twenty frames per second is fast enough to capture shot-by-shot animations or every gruesome detail of an extreme sports crash.

Debt, Inventory and Revenue

Inventory

Inventory

Your code is your debt

You spend money, efforts and bug management to control your debt. Code doesn’t automatically generate revenue, user features and user satisfaction do. It doesn’t matter that you write 100 000 lines of code in 10 000 hours and complexity is 1 million (it, well, matters for technical guy) if those efforts doesn’t acquire new users or generate more revenue. It is like saying: I have borrowed 1 million dollars and spent all in this project. It sounds cool but it doesn’t do any benefit to the company. Even worse, it harms the company.

Inventory

Inventory is what you produce but just sitting on some warehouse/storage and does not generate any money. It could be even worse if it costs you any money to store those things.
Like Joelonsoftware said: inventory can happen in each of the following software process, and they can have different results:

      Decision-Making Process: documentation, product backlog, feature ideas…
      Design Process: diagrams,
      Implementation Process
      Testing Process
      Debugging Process
      Deployment Process

Each of stage’s products can never be implemented, get ignored or become unrealistic the next time. Here, we don’t talk about the waterfall process, which could make it even tremendous. For example, the feature backlog that is written in hundreds of pages that 90% are not implemented. The bug database contains all the bugs, efforts to maintain them and understand them but only 10% of them get fixed after a long time.

As with any kinds of inventories, after a while, your products inside the inventory gets obsolete, and needs cleaning up so the new things can be added in. The obsolete inventories will cost you the efforts and time to create it, maintain it and get rid of it. It is the same for software engineer, the bugs that are no longer bugs (after lots of updates), the features documentation that are not compatible with the current products…

It is important for manager to understand about the similarity of the cost, the debt, the inventory and the revenue in a software engineering process. It is easy to measure engineer by how much code they write, but it is the same as measuring how much debt he brings to the team. Higher debt doesn’t mean higher revenue, so be careful.

References:
http://www.joelonsoftware.com/items/2012/07/09.html

Startups TDD or not

Startup Trap

Startup Trap

This question is not a simple one, so you may not expect a simple question. If you read about this blog post, Uncle Bob Martin is a big fan of TDD, even for startup. I would say, for any startups, or any company, the technology process has to be aligned with the business process, which means it has to satisfy both the short term and long term goal of the business.

Think of any business you know, think of their products.  If you serve a bigger, long term goal, the team will be given more money and time, otherwise, it will be given much less. If their products are the main cash cow, it is the long term product, otherwise, if it only built to last a couple of weeks and months, it is not.

So, startup, even though not a mature business, still needs to deal with this problem on a daily basic. I think the best approach for any startup is to determine how long the project would need and reconsider their decisions every few months to make sure they are still on track. When the startup thinks that the product is going to last long or the number , they need to add more tests into it, to refactor the source code, to raise the source code requirement. In economics, it is an important concept that “in the long term, everybody dies”. So, who cares about long term if we are going to die tomorrow? But, if we live for 10 years without a plan, I am sure that you will die within the next few weeks. The matter is how long you think your product will live.

And of course, if you keep the same plan, or the same process for the startup when the product grows, you sure gonna die. That’s the job of the executives to keep teams aligned with the business goals. And any company cannot do this will not survive for long.

Windows Phone Potential?

I normally hear from Windows developer to say that their Windows market share is much bigger than the total of iOS and Android together. And the sales of Windows 8 has bypassed all the sales of iOS and Android from the beginning to now.

Windows Phone 8

Windows Phone 8

It is quite unfair to compare the whole Windows 8 with iOS or Android. And if we do take that demand into PCs and laptops, then why the hell we do not compare the supply side? It is very clear that if Windows 8 could be a shared platform between PCs, tablets and phones, then all the old software, all the old games would have beome compatible to the Windows 8 system in the short amount of time. And many apps for tablets and phones would be quite different than the ones in PC. No, I don’t mean technology, I am talking about the business model, the purpose of the software.

I don’t mean that iOS and Android is a better market than Windows Phone for indie business. These markets have become very competitive and continue being so. You either have to figure out a market niche or be very lucky.