Wednesday, September 15, 2010

Windows Phone 7 Features and Rumors roundup

My last blog entry about smart phones has produces quite some response, but interestingly all via email. Okay, nobody likes the comment function. Got it.

Meanwhile, new features/rumors/lies (pick one) have emerged, so I’m trying to sum them all up here.

  • Updates for Windows Phone 7 will be released directly by Microsoft

    This is very good since this means you (should) always have the newest release available on your phone. This is better than in Android where the handset maker needs to push out the update (currently only 25% of all Android devices have the newest version 2.2). Given that smart phones are more and more targeted with malware, this should also increase security.
     
  • No carrier lock

    WP7 does not come with any carrier lock-in, so this means you can simply buy a WP7 phone without a contract and use it with any carrier. There might be phones that will be available only at some carrier, but given that Microsoft has defined very strict hardware requirements, it shouldn’t be a problem to find something similar with ease.
     
  • “My Phone” feature

    Microsoft has already a site and application called “My Phone” that can be used to backup the data on your phone automatically or ring the phone if you have lost it it somewhere. WP7 will also allow to remote wipe the phone or lock it and display a message. If you every lost a phone, you will love this feature.
     
  • Any app must disclose advanced services it intends to use

    Any app that intents to use advanced features of the phone (e.g. the GPS receiver) must disclose this to WP7 which in turn will display this list to the user upon the installation of the app. So, if an app want to use push notification you are asked during the installation if this is okay with you.

    If an app tries to use a feature that hasn’t been disclosed, it will be shut down. Although this is borrowed from Android, this really puts the user in control. Any BTW: The iPhone does not have anything close to this.

  • Zune Pass available

    As it seems, WP7 users worldwide will have access to Zune Pass for round about 12€/month. This give you the ability to listen to any song they have in their library as long as you subscription is active. Per month, you can also keep 10 songs at no additional cost.
     
  • Very clever UI ideas

    WP7 as without any doubt some very clear user interface ideas. My favorite is the idea that the camera shows the live picture and a “slider” on the left. Simply swipe left to right and you see the lat phone taken. Swipe right to left and you’re back on the live preview. Usability: A+.
     
  • Microsoft will only allow five free apps per developer

    Yes, this is a restriction but actually a good one. We all know that there are several developers out there that make 10 apps “Slideshow Person X”, “Slideshow Person Y”, “Slideshow Person Z” etc. This restriction might not solve this problem, but should improve the situation of having the 457th flashlight app.
     
  • Payment will not be using Microsoft Points

    Payment is still a big topic. Apple does currently the best job (matching *.99€/$ prices, payable directly with a credit card etc.) and Android/Google Checkout is the worst example. Microsoft will not use their own “currency” Points, but allow direct Credit Card payments with adapted pricing per Country (0.99€ in Europe and 0.99$ in the States)

Please note that nothing major has changed from what I said in my last post. Windows Phone 7 has a nice user interface with a great runtime (.NET/Silverlight) and a near-perfect development tool (Visual Studio). But it also comes with some very big FAILS like the enforced App Store with a censorship review process.

Windows Phone 7 is definitely worth a look once it’s available.

Tuesday, September 14, 2010

Xbox in Leetspeak

Now this explains why Microsoft has offered a Xbox 31it3 in the past…

 IMG_1224

Monday, September 6, 2010

Samsung Galaxy S (Android 2.1) USSD codes not working

Today, I wanted to use some of my carrier USSD codes (e.g. *120#) on my Galaxy S and they didn’t worked.

I entered them, but the Galaxy refused to display anything. After some searching I found out that this comes from the Mobile Tracker I had activated.

As soon as you active Mobile Tracker (Settings –> Location and security –> Mobile tracker) no USSD codes will work.

Disabled Mobile Tracker and the codes were working again. Go figure…

Wednesday, September 1, 2010

Random item name generator in DeathSpank style

I have to admit, I couldn’t resist.

The RandomPersonNameGenerator was a very good starting point to create the RandomItemNameGenerator, which creates role play game item names in DeathSpank style.

Here are some of the results this class generates:

  • Failing Manual of Failing
  • Fluffy Rocket of Impending Doom
  • Epic Dynamite Kit
  • Functional Bacon of Function
  • Sparkling Fly Swatter of Impending Doom
  • OMG Dynamite of Awesomeness
  • Glowing Chicken of Function
  • Fluffy Rocket of Function
  • Heroic Crowbar Kit
  • OMG Orb Kit
  • Fluffy Manual of Awesomeness
  • Normal Crowbar of Function
  • Epic Bacon Kit
  • Functional Fly Swatter of Function
  • Sparkling Anvil of Failing
  • Fluffy Orb of CAPSLOCK

Yes, this does not make any sense. And no, there is for sure no project where you can use it. And yes, it was a total waste of time. But for the fun, it was worth it :-).

using System;
using System.Collections.Generic;

#region License

//For an explanation see http://www.opensource.org/licenses/bsd-license.php

/*
Copyright (c) 2010, TeX HeX / Xteq Systems
http://www.texhex.info/ http://www.xteq.com/
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

  * Redistributions of source code must retain the above copyright notice, this
    list of conditions and the following disclaimer.
  * Redistributions in binary form must reproduce the above copyright notice,
    this list of conditions and the following disclaimer in the documentation
    and/or other materials provided with the distribution.
  * Neither the name of the Xteq Systems nor the names of its contributors may
    be used to endorse or promote products derived from this software without
    specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#endregion

namespace RandomGenerator
{
    public class RandomItemName
    {
        public string Prefix { get; set; }   //  Epic
        public string Name { get; set; }     //  Chest
        public string Suffix { get; set; }   //  of Awesomeness
        public string Full { get; set; }     //  Epic Chest of Awesomeness

        public override string ToString()
        {
            return Full;
        }
    }

    public class RandomItemNameGenerator
    {
        #region Name arrays

        static readonly string[] _prefixNameSet = new string[] {
            "Epic", "Heroic", "Normal", "Glowing", "Functional",
            "Sparkling", "Fluffy", "OMG", "Failing"
        };
        static readonly int _prefixNameSetCount = _prefixNameSet.GetUpperBound(0) + 1;

        static readonly string[] _itemNameSet = new string[] {
            "Chest", "Dynamite", "Chicken", "Orb", "Bacon", "Manual" ,
            "Crowbar", "Anvil", "Fly Swatter", "Rocket", "Scarab"
        };
        static readonly int _itemNameSetCount = _itemNameSet.GetUpperBound(0) + 1;

        static readonly string[] _suffixNameSet = new string[] {
            "of Impending Doom" , "of Function", "of Awesomeness", "Kit",
            "of CAPSLOCK", "of Failing"
        };
        #endregion
        static readonly int _suffixNameSetCount = _suffixNameSet.GetUpperBound(0) + 1;

        RandomItemName GenerateOne(Random rndm)
        {
            int iRandomValuePrefix = rndm.Next(0, _prefixNameSetCount);
            int iRandomValueName = rndm.Next(0, _itemNameSetCount);
            int iRandomValueSuffix = rndm.Next(0, _suffixNameSetCount);

            RandomItemName rpi = new RandomItemName();

            rpi.Prefix=_prefixNameSet[iRandomValuePrefix];
            rpi.Name=_itemNameSet[iRandomValueName];
            rpi.Suffix=_suffixNameSet[iRandomValueSuffix];

            rpi.Full = rpi.Prefix + " " + rpi.Name + " " + rpi.Suffix;

            return rpi;
        }

        public List<RandomItemName> Generate(int Count)
        {
            List<RandomItemName> list = new List<RandomItemName>();

            Random rndm = new Random();

            for (int i = 0; i < Count; i++)
            {
                list.Add(GenerateOne(rndm));
            }

            return list;
        }

        public static List<RandomItemName> StaticGenerate(int Count)
        {
            RandomItemNameGenerator ring_ring = new RandomItemNameGenerator();
            return ring_ring.Generate(Count);
        }

    }
}