Sunday, February 10

Laws of Software Development

This entry is quoting from BlueFlavor, GlobalNerdy and haacked. Very interesting and worthy-of-remembering laws regarding software development.

  • Sturgeon’s Revelation

    Ninety percent of everything is crud.

  • The Peter Principle

    In a hierarchy, every employee tends to rise to his level of incompetence.

  • Hofstadter’s Law

    A task always takes longer than you expect, even when you take into account Hofstadter’s Law.

  • Murphy’s Law

    If anything can go wrong, it will.

  • Brook’s Law

    Adding manpower to a late software project makes it later.

    A corollary:
    The bearing of a child takes nine months, no matter how many women are assigned.

  • Conway’s Law

    Any piece of software reflects the organizational structure that produced it

    Another way of putting it:
    If you have four groups working on a compiler, you’ll get a 4-pass compiler.

  • Linus’s Law

    Given enough eyeballs, all bugs are shallow.

  • Wirth’s law

    Software gets slower faster than hardware gets faster.

  • Fitt’s Law

    Time = a + b log2 ( D / S + 1 )

    Which means:
    The time to acquire a target is a function of the distance to and the size of the target.

  • Hick’s Law

    The time to make a decision is a function of the possible choices he or she has.

    Mathematically:
    Time = b log2(n + 1)

  • Lister’s Law

    People under time pressure don’t think faster.

  • Occam’s Razor

    The explanation requiring the fewest assumptions is most likely to be correct.

  • Hartree’s Law

    Whatever the state of a project, the time a project-leader will estimate for completion is constant.

  • Augustine’s Second Law of Socioscience

    For every scientific (or engineering) action, there is an equal and opposite social reaction.

  • Clarke’s Third Law

    Any sufficiently advanced technology is indistinguishable from magic.

  • Dilbert Principle

    The most ineffective workers are systematically moved to the place where they can do the least damage: management.

  • Joy's Law

    smart(employees) = log(employees), or “No matter who you are, most of the smartest people work for someone else.”

  • Pesticide Paradox

    Every method you use to prevent or find bugs leaves a residue of subtler bugs against which those methods are ineffectual.

Saturday, February 9

WURFL & WALL

WURFL is an open source mobile database. I hope it could be the one that includes everything that we need to solve for mobile fragmentation. Luca Passani, the author of WURFL, has not stopped solving the fragmentation problem. The mailing list of WURFL is still buzzing, ranting on inconsiderate service providers such as Vodafone, proposing the improvement of J2ME capabilities, adding WURFLDB, etc...

Another particular tool that I like is the WALL library. Luca might have been busy to maintain it, but others have improved so. WALL library is comparable to the Mobile JSF.

Some technicalities:

  • WURFL is based on xml and can be imported to projects very easily.
  • WURFL do not cover user agent for web browser. But there is a patch that can be downloaded separately from their site.
  • Unzip wurfl and look into the project. In Init.java, there is a servlet init method that would load wurfl.xml when the servlet first initialize (there are 2 other approaches, but this is better). In addition, you have to make that servlet autostart by specifying in web.xml.

Friday, February 1

Mobile Payment

Mobile Payment is not yet mature, but there are various possible offerings.
  1. Ericsson IPX - Provides billing to prepaid or monthly mobile subscribers in 24 countries
  2. Paypal mobile checkout - Paypal is the most widely used online payment on web, but I am very disappointed with it on mobile and its sandbox development. Let me rant a bit during my integration with Paypal Mobile Checkout:
    • Could not find a sample code in Java. Instead, I only found PHP sample code. The API is not that hard to understand, but sample codes are always helpful to supplement pure documentation.
    • When using sandbox environment, more than 50% of the time I encountered 'Internal Server Error' or no response! How can they be down for half of the time and without notification? Even more surprisingly, I found out that they were using Apache 1.2...
    • No where in the documentation states that Mobile Checkout is limited for some countries - USA and Canada - only. And when I asked about it in the official Paypal developer community, I did not get any reply. It is extremely dead there... my post is still one of the newest after 1 month.
    • I finish integration fairly quickly, but my country (Singapore) is not supported! I still do not understand why Paypal mobile is different from Paypal web in terms of countries supported..
  3. Google Mobile Checkout - I really need to check it out.. but some info:
    • Cost and Fee: For every $1 spent on AdWords each month, merchants can process $10 in sales the following month through Google Checkout for free. For all other sales, the charge is a low 2% + $0.20 per transaction
    • Ways to Integration: Light integration with 'Buy Now' buttons or use of API for developers.
    • Supported Countries: Seems like only businesses in US and UK
    • Checkout API
  4. Bango
  5. Sharewire
  6. mChek - SMS PIN authentication
  7. Obopay