Windows Phone 8, let’s get the party started!

Finally the SDK is out and we can talk about all the great stuff that the SDK brings to us. There are some big changes with unified programming model, but also some differences, like HTML5/JScript not being there as a project template (you can still embed the browser control..) and XNA not being present but replaced with DirectX.

For a short capture of the coolest things with WP8 I would say these things everyone doing WP dev should check out and learn:

  • Lock screen – This is new thing to WP devs, pretty same to big Windows. Now you can provide background images and notifications to the lock screen of the phone, notification stuff is pulled from your program’s primary tile (text, icon, count) but background images you can define inside your app
  • Navigation – There’s a new WinRT based navigation API to use beside to old trustworthy API from 7.x. Now you can do actual navigation apps, that won’t die if user goes away from the app, but can continue to track on the background. You can also ask directions easily with ms-drive-to and ms-walk-to URI schemes within your app.
  • In App Speech support – Now you can actually integrate speech support to your own app with voice commands, speech recognition, and text-to-speech. Voice commands can be deep links to your app (HelloWorld show image), speech recognition you can use inside your app to command your app/game (vessel turn left) and text-to-speech is a “robot” speaking your text to the user.
  • Wallet – Create added value to your membership app, create coupons for your shopping app… endless possibilities here, NFC is the big thing here on WP8, and you should not pass up the opportunity to add these functionalities if applicable to your app.
  • In-app purchases – If you want to monetize your app, think about micropayments. Buy a new report template within your app, buy new tools/weapons in your game.. options are endless. Micropayments are the next sliced bread in WP marketplace, so don’t miss out on the opportunities they offer, and with this API, you got a solid backend ready with couple of easy steps within your app.
  • Localization of your apps -there’s now build in templates for this. Localization is one of they key elements to make money with your app in different marketplaces. There are really cheap crowdsourcing places to go to get your apps ready for example to China market, the user base is so huge that micropayments will definitely boost your income

Other noteworthy changes are the new map control, Pivot & Panorama ditched from SDK and moved to ROM, Bluetooth APIs, inclusion of Windows.NET.Networking, revamped storage apis, associating your app with certain filetypes and now the store compiles your .NET code in the cloud, ensuring the fastest possible startup for your apps at consumer devices. I’ll be posting more in detailed look for each of these categories later on.

Posted in Windows Phone | Leave a comment

What changes with Windows Phone 8 development

Thought I give a short summary for you who are interested in bringing your WP7.5 app to WP8 for what you should look out for.

In general you shouldn’t recompile your WP7.5 app to WP8, for two reasons. Firstly, WP7.5 apps will work on WP8 as is, without any need to rework the code. Secondly, recompiling apps is only going to get you in trouble, because there are some changes in the way .NET Framework and CLR has been implemented on WP8 compared to WP7.5. There is a totally new kernel on WP8 and for example totally new garbage collector implementation on WP8. Also precision is not the same in all cases with WP7.X and WP8 with number handling.

What you should consider is to bring your app to Windows 8 with the same trouble, as now with the shared kernel and programming model (XAML+C#/C++) you are able to double your presence in the markets. We’ve been able to reuse pretty much 99% of the code in couple of titles we’ve done targeting Win8 and Windows Phone 8 platforms with C++ DX based games.

Windows Phone 8 will also include in-app purchasing , so finally you can bring additional paid content to your apps/games. Micro payments have proved to be a very efficient way to a developer to earn more money, as buying decision bar is much lower with small amounts, and there will be more purchases for items/features than you would expect with right kind of content.

These are just a tip of the iceberg, and when the NDA is lifted, I’ll talk more about other cool features that are hidden in the SDK, that will make WP8 rock!

Posted in Windows Phone, Windows Phone 8 | 2 Comments

Windows Phone Garbage collection

Thought I clear up some things regarding the functionality of the Garbage Collector in Windows Phone, which is maybe a little bit misunderstood functionality of the platform among the people coming from other non .NET environments.

First of all, the whole point of garbage collection is to automate memory management on behalf of the developer, taking (almost) all the pain out of handling allocating and releasing memory. As managed developers, we don’t need to know too much what’s happening behind the curtain, but let’s go through some basics anyway, so we can feel more comfortable leaving our valuable memory to be handled by the Compact Framework.

Managed objects can move around the memory, unlike native objects, this is one important thing to understand. The system can compact memory and decide to move things around without asking your permission, so you can’t have memory pointers in traditional sense. Internally there is some methods that the framework uses to disable moving the memory when it’s handling some managed memory buffers, but thats all hidden from average developers.

As there are two types of objects, value and reference types, there is also two ways the framework handles the memory for these objects. For value types compiler checks when they go out of scope, and generates code to destroy and reclaim their memory in very deterministic manner. Reference type objects are a bit trickier. For their memory the GC reclaims the memory when it seems appropriate, and it is not controlled by your code. It follows through how you reference the object and finally when there are no more references left, it will destroy it.

The GC in Windows Phone 7 Mango is so called generational garbage collector. That means that the GC has two queues, gen-0 and gen-1. Gen-0 has those which will have very short life cycle and it’s collected on each GC round, and Gen-1 is for those who reside longer in memory and is collected rarely. Those objects who survive the gen-0 sweep, are promoted to gen-1.

Posted in Windows Phone | Leave a comment

Rating control for Windows Phone 7.5

Long evenings at hotels can be strangely productive time, and last night I started to think that there is no simple and lightweight star rating control available (I know only one, but it’s a big too big for my taste).

It has two properties, Rating and Scale. With Rating you can set or get the current rating and with Scale you can set what scale you want there to be (for example 1-5 stars, you would give Scale the value of 5). It does still lack the production code level error checking, so if you consider using it, better add some try catches. Here’s the file:


You are free to edit and use and it commercial or non commercial, as long as you leave the assemblyinfo intact and use it through my library.

Posted in Windows Phone | 2 Comments

Nokia Windows Phones

Today at Nokia World was announced that Nokia is releasing two Windows Phone, Lumia 800 and 710. These two models are the first Wp phones from Nokia, and will be most likely the most sold WP phones for a while. The Lumia 710 was IMHO more exiting in that sense, that the pricepoint was finally where it should be, retailing at around 270 €. There was not many features except faster processor which would make the 800 a must buy compared to this one (I don’t put too much weight on the design). At this price it really has a chance to capture new markets, and bring WP to whole new markets it couldn’t reach before.

Myself I’ll be still sticking to my two Omnia7s, as they are still quite competetive in specs, and especially the larger screen makes it hard for me to give up on them (if Nokia would have launched either of the phones with front facing camera, then I would have had to consider getting one, but luckily they didn’t so I can save some money..). I think I’ll wait for the WP8 phones before upgrading from my current Mango phones, but today was a very welcome addition to WP models and if I wouldn’t have a WP, I would definately get a Nokia one – I’m envious for the Nokia Drive, that really makes it hard for me to keep my calm and not to rush to preorder a Lumia..

On other development – I’m starting to create a Windows 8 “Metro Style app” for the ringtone editor, hopefully it will be soon available here – I probably put up some developer story about the process as well up here.

Posted in Windows Phone | Leave a comment

Create your own ringtones for Mango

I think I’m not the only one who feels that using Audacity is not the easiest way to create ringtones for your Windows Phone. Once again the annoyance level of using too many separate tools got too high, and I decided to create my own solution for this.

Here’s a little utility, which you can use to create the ringtones with as little hassle as possible. Using it is quite simple, just install it, make sure your tunes are in Music -library in Windows, and run it.

You have a list of all your music in MP3 and WMA format in front of you as a list and you just select the tune you like to use for your ringtone. Then you have two sliders you can use to adjust the selection by dragging them around – it’s fixed to allow max 39 sec piece to be used as ringtone (Mango limit).

You can listen to the preview while editing, just realize that when you drag the end, it will go automatically -5 seconds from the end, helping you to adjust the end better (so it’s not a bug, but a feature.. right;) Draggin the beginning will autostart the preview from the beginning.

After you are satisfied with your ringtone, click the Create Ringtone -button. That will create a file called Ringtone-name of your song.wma to your Music library.

Unfortunately Zune has no SDK so I couldn’t automate the next step. Now you need to open the Zune, and make sure that your Music library is set as your music collection location (See from Settings, Software, Collection). If it isn’t, click Manage and add it. Now if you’re not doing Wireless sync, connect your phone to your computer.

Click Collection, and go to Music page. Now you should see your Ringtone-name of your song.wma in the list. Just drag that to your phone, and now you’re done!

If you open your phone, go to Settings and Ringtones+Sounds, and click Ringtone, you should see your own ringtone on top of the list.

You can download the installer from

Add comments if you have bugs or questions – I try to clarify the instructions according your feedback

Quick note (18.10.2011) – this has been tested only on Windows 7, and should work on Windows 7 & Windows Server 2008 R2.

Posted in Windows Phone | 2 Comments

Speaking gig coming up

If you have a chance, come to see me at Suomen Ohjelmistoyrittäjät organized Nokia/Microsoft ecosystem event 22nd of September in Helsinki, where I’ll be speaking about WP development experiences.

Posted in Uncategorized | Leave a comment

WP 7.5 ‘Mango’ security model

Long time no post 🙂 I had unforeseen delay with a house project that has kept me quite busy lately, and unfortunately WP Mango update NDA prevents phone reviews that I promised earlier 🙁 But now I have a some time to write a short story about security side of Windows Phone. I have not seen too many articles about this, so I thought this might interest someone.

The security model in Windows Phones is based on chambers. These chambers limit what applications can do by putting them inside a security sandbox. There are four different chambers and each of these chambers have certain limitations how applications within them can run.

Security Chambers

Trusted Computing Base is the home of the kernel and kernel-mode drivers. TCB has the highest set of privileges. Processes running here have the access to most of the things in the phone. It goes without saying, that you can’t put your own applications here, and even for OEMs they have to be careful what they put here, as it will affect the security and the performance of the phone. TCB chamber can also modify policy and enforce the security model.

Elevated Rights Chamber is the location where the user-mode drivers and services reside. Processes here have access to most of the things except for the security policy. Drivers that reside here are safer in that sense, that they won’t crash the whole phone if they stop functioning, but there is a performance tradeoff.

Standard Rights Chamber is the place for native code applications. All the apps that do not provide services for the whole device are located here. This is the place where the Microsoft apps, like Outlook Mobile resides.

Least Privileged Chamber is the home of the MO/OEM applications and normal 3rd party applications which you load from the marketplace. LPC differs from the other security chambers for it is dynamic by nature. By default it has minimal access rights, but software running there can request a capability, like access to location, media, network, camera, microphone etc on installation time. These capabilities which each software requires are disclosed at marketplace.

Each 3rd party software has it’s own isolated LPC and can have access to only those capabilities that it has requested and they can not be elevated at runtime. Also each software has it’s own file system, called isolated storage and other applications can not access that. There are no communication between applications except through server.

That’s about the main security architecture, if you have further questions, leave a comment!

Update (25.8.11) – I found out that the Hybrid applications do not run in the SPC but in LPC. When they access drivers etc, the security context will be within the LPC

Posted in Windows Phone | 2 Comments

Mango has been released!

Finally some great news from MS, the Mango WP 7.5 has been RTM! The Final build version is 7720 but developers get now an update from the Beta 2 (7661) to 7712 (Almost RTM version), which is more than great (had some connectivity issues with beta with 3G). After I have updated my phone, I’ll be posting some review about it.

Posted in Windows Phone | Leave a comment

Mango experience

Today in Finnish financial newspaper “Kauppalehti” there’s an online blog (in Finnish) about my and my company’s experiences with the Windows Phone Mango, check out the article at:

Posted in Uncategorized | Leave a comment

Preparing for 70-521 transition test..

For me, panic is the best motivator 🙂 Lately had to brush up my WPF/EF/WCF skills trying to prepare for the upgrade test for the MCPD Windows Developer (that I’m about to take tomorrow morning…)

Kind of learned several new things – no matter how long you have worked with some framework, it really pays up to pick up a book on the subject and read from the basics. There’s always something you haven’t realized before or find a new way to use some classes.

I guess the same goes with the Windows Phone. After tomorrow I probably pick up Charles Petzolds excellent e-book ( and just read it through and see if I’ll be enlightened 🙂


Posted in Uncategorized | Leave a comment

Designing with Metro for Windows Phone

I’ve read through several Metro presentations and sat through some sessions and realized that none of them is really too ground to earth, “what does this really mean to me as an application developer” -approach. I see a lot of “Personal, Relevant, Connected“, “Authentic experience” type of hype words being used, but that really doesn’t tell me how I should put controls to the screen, and how should I visualize them.

I try to cut down the hype and give some concrete examples what and how you should go with Metro when you design your application. Whole point of Metro desing language is to cut out all the excessive bling bling from your applications, have very clean and light feeling to your UI – so just a glance should tell the user all the necessary info, aim for that. So in developer terms – no 3D (authentically digital), no excessive color effects, have a lot of empty space between the controls, use enough big fonts – one could say this is very spartan way of designing the UI.

It goes without saying, that all the Silverlight controls that come with WP SDK adher to this design philosophy, so if you’re creating custom controls, you won’t go too much wrong by mimicking the build in controls look and feel/behavior. For example push buttons don’t have visible focus state, their rectangles are either empty or filled to show the state. Simple and clean.

The screen size is locked to 800 * 480 in every WP7 phone, no matter which model or manufacturer you have. That gives you pretty solid foundation for planning the UI, only thing you need to worry is portrait/landscape(left and right) and if you allow the switch between these two modes.

Full screen games are free from Metro restrictions, feel free to go crazy – but if your game appears withing the WP page frame, then you should follow the Metro guidelines. I won’t go more into details about game design rules, perhaps in a later post separately when I share some of the basic game design guides.

There are Windows Phone Design Templates as part of the Windows Phone SDK, which are layered photoshop templates and with those you can really do pixel to pixel application layouts very easily (Download the 89 Mb package from

And now to the raw details. There are two primary components in WP OS 7 Chrome, Application Bar and Status Bar.

Status Bar can be hidden, but you really shouldn’t do that, as it includes stuff like battery indicator and system clock, which users really like to see. By default only the system clock is visible, and it is opaque and takes 32 pixels in height and 72 pixels in width from your screen. In landscape mode the status bar grows from 32 to 72 pixels. If user taps the Status Bar area, rest of the relevant icons will be shown (Signal, Data, Call forwarding, Roaming, Wireless, Bluetooth, Ringer mode, Input status, Battery)

Application bar is where devs can put their icons. The rules are:

  • Up to four icons, system draws automatically a circle around them
  • Does not move in switch between portrait/landscape, but icons rotate
  • 72 pixels in height, width is whole screen in portrait
  • Opacity recommendated values are 0, .5 and 1
  • Icon size is 48 * 48, white foreground and transparent background using alpha channel

In application bar you have also a menu, where you can put text menu with max 5 items and the text should be between 14 to 20 characters only.Use very simplistic icons, like add could be plus sign, close could be just the X, search for example magnifying class etc. Remember to put text hint, so if your users don’t get your idea, clicking the three dots will bring up the icon buttons with the text hints (and the menu). Cool thing for graphically impaired people like me, is that the SDK comes with 64 free ready icons (C:\Program Files\Microsoft SDKs\Windows Phone\v7.0\Icons)

Rule with colors is that use user-defined system theme color unless you have really strong reason against it, as this way you can always guarantee that the theming won’t render your application unusable if your custom drawing color is same as the background of the theme.

For the fonts, stick with system Segoe to maintain WP general look and feel, there are five styles for it (regular, bold, semi-bold, semi-light and black). It is highly recommended not to use any fonts under 15 points in size.

Alright, here was the short intro to Metro, will be continued in part 2 where we go through the basic controls like Panorama and Pivot, then we talk about push notifications and live tiles, toasts etc. We’ll check out also the navigation and some general UX rules, stay tuned 🙂

Posted in Windows Phone | Tagged , | Leave a comment

Windows Phone Day Finland 26.5.

Alright, finally sat down to write a summary of my experiences with the WP day.

First of all, I have to say I was overwhelmed to see so many Finnish people coming to hear about Windows Phone – I’ve been to several WP/WM happenings in Finland during the years, and usually it has been tens only, but now we got around 600 people (that’s the figure I’ve heard).

Keynote was given by Brandon Watson, senior director for WP, and I must admit that I  admired how he managed to run the show – even when some of the questions and comments he was thrown at were a bit negative, he still kept his cool and handled the situation great (although Mango is the next WP version, and Metro is the design language, and not vice versa..). Marketplace dashboard seemed to have improved a lot, and following your success within there was pretty easy now. App connect is one of the cool innovative features, I like the idea of focusing on the information and wrapping the application functionalities around it and not being so application centric.

Facial recogniziation when uploading pictures to Facebook and ability to tag them was fun small thing they demoed as well, personally I wait mostly for speech-to-text sms and turn by turn navigation (really hope this is not US only)

There wasn’t that many new surprises on the keynote for those who were at Mix11 and have been following the news closely and checked the press conference few days before, but there were some good clarifications about the features and what you can or can’t do.

Jaime Rodriguez then gave a good set of design and Mango info, and introduced many of the new Mango features more in details. The multitasking part was a real eye opener for me at least, I was under the impression you could do a background task that runs all the time, but it turns out you can’t.

Also the behaviour of the background agents, and timings etc were good stuff to hear, and everybody should really take care when using them. I wouldn’t want to try to write something on the disk on those 15 second timeslots every 30 minutes.. Also the agent restrictions, that you are not allowed to use Display UI, XNA, Mic and camera, sensors or audio playing are good to realize (although you can use background audio agent to play audio in the background). But you can still access tiles, toast, location, network,R/W ISO store, sockets and most framework apis, so it shouldn’t be too limiting at all.

Sensor stuff was really something I personally was very excited about – I do love that they have taken away the hard math and given much more accessible API for them. The list when you can use and when you can’t use sensor api was good to know, the lack of compass is a showstopper for using motion api, and some current LG phones are without a compass (and they are so lucratively cheap, around 240 e only).

Push notifications have been ramped up from 15 to 30, and had a lot of smaller changes, like new TDET mechanism for better network compatibility. Background transfer API was quite nice and clear, with about four lines of code you could initiate it.

Met a lot of interesting people there and saw also many old familiar faces there, even those that I would never expect to run into in a Windows Phone conference, which was cool as well!

Posted in Windows Phone | Tagged | Leave a comment

Mango features

Here’s a short listing of new things coming for WP “Mango” (7.1 or 7.5, number is not public yet).

For the software side, we’re looking at Windows Live Messenger, Lync client, Bing Vision and Bing Audio search, Bing Maps will get Turn by Turn navigation (US only?) and from third parties we’ll get many essential apps like Skype, Spotify, new Amazon app etc. There’s rumors of Facebook chat support, Office 365 and deeper XBox live integration.

On a hardware side, there’s a new chassis support for MSM7x30 and Gyroscope added. Gyro will be optional.

For the Silverlight, it is updated to version 4 and there’s added control support with

  • RichTextBox(read-only)
  • WebBrowser (uses IE9)
  • Clipboard API
  • MediaElement
  • ViewBox moved to core

Performance improvements

  • ListBox scrolling
  • Memory working set
  • off-thread image decoding(BackgroundCreation)

There’s also 32 bit color support added and ablility to embed XNA to Silverlight. When embedding XNA, Silverlight Application model is used and XNA rendering takes over entire display with SetSharingMode(bool enableXna. You can use UIElementRenderer to render UIElement to a Texture2D, so this way you can get SL controls to XNA surface.

Multitasking improvements include

  • Background Agents
  • Background File Transfer
  • Background Audio
  • Background Notifications
  • But without access in background to display UI, XNA libraries, mic, camera, sensors

On the Push notifications front, there are new thing called Deep Toast, which means that clicking notification opens internal app

Some other new features are Geo location, live tasks and ability to create alarms and reminders. There’s GPU accelerated rendering for HTML5. Now there’s fast app resuming as well, which is a welcomed improvement. Search Extras are added functionality for 3rd party apps provide for Bing items (movies, places, events, products) AKA Deep Linking.

Live Tiles have been improved a lot, there’s possibilities to have multiple tiles from one application, have local application to update tiles directly, endpoints have been increased from 15 to 30, one application can have multiple tiles and tiles can have front and back images. Talking about images, also a raw access to camera was granted, enabling all those great augmented reality scenarios for us.

On the data front, now there’s a real SQL Compact 4.0 engine Embedded database for application developers to take in use, which will add many extra possibilities for developers. Additionally now we have phone contacts read only access and calendar read only-access as well

Now there’s finally a SIMD support for XNA applications (Single Instructions Multiple Data). This is done so that now the NETCF runtime JIT will utilize the SIMD capabilities on the phone (for example Vector2, Vector3, Vector4, Matrix from Microsoft.Xna.Framework namespace). Also one great improvement is the Generational Garbage Collector (GenGC), as the current GC stops the entire execution and creates longer app startups and stutters.

On the tool front we will have build-in sensors and location simulators

There’s added support for 16 new languages, just to mention a few:

  • Finnish
  • Chinese
  • Japanese
  • Korean
  • Dutch
  • Croatian
  • Czech

There’s support for new countries, creating applications is now possible in 38 countries, the new ones are

  • Chile
  • China
  • Colombia
  • Czech Republic
  • Hungary
  • India
  • South Africa
  • South Korea

And you can buy apps in 35 countries, 16 new ones are

  • Brazil
  • Chile
  • Colombia
  • Czech Republic
  • Denmark
  • Finland
  • Greece
  • Hungary
  • India
  • Japan
  • Mexico
  • Netherlands
  • Norway
  • Poland
  • Portugal
  • Russia
  • South Africa
  • South Korea
  • Sweden
  • Taiwan

On the Networking side there were several important new things

  • Socket access (TCP, UDP Unicast, UDP Multicast), defaults to 16
  • Full header access
  • WebClient returns to originating thread (breaking change)
  • Connection Manager control

A new feature is Motion Sensor API, which will open access to all device sensors (raw Camera access, compass, gyro). In the Mix11 demo we could see for example Amazon app with bar-code scanning using these apis. We have access to SL4 Webcam API, which is outputting mp4 to isolated storage from the camera. There was also a short mention of Spatial Framework somewhere in the slides, but no further info.

There are some new Pickers as well

  • Bing maps
  • e-mail
  • Phone number
  • Adress
Posted in Windows Phone | Tagged , | Leave a comment

Get your NoDo!

I’ve found already three different methods how to get the NoDo update to your WP7 phone, and bypass the update throttling. I’ve used the method descripted at XDA developers forum in Samsung Omnia 7-section, which involves using the proxy through Hungary. Others sites like WinRumors and Paul Thurrots Supersite have alternative methods that I haven’t tried personally, but many people seemed to get the update through those as well. Links: XDA Forum

Posted in Windows Phone | Tagged , | Leave a comment

Project buyers guide for dummies, part 1

As someone who has been auditing projects I’ve come to realize how difficult it is for a company to buy an IT project.

There is so many things that need to be taken in account and specified, and then there is the plethora of strange terms to confuse a non tech savvy buyer leaving them at the goodwill of the supplier. And for my experience, most suppliers make lawyers look like little choir boys.

The basic an non-cloud specific things are that every company buying an it software project should pay attentation are:

  • Understanding software development process in the organization – get the project expectations to right track
  • Selecting a reputable partner – ask around from their previous customers their experiences
  • If organization doesn’t have an software specialist, hire a consultant – it will save you money!
  • Testing is a must, and you must invest to it from the very beginning
  • Select a right project model, Lean and Agile methods reduce the risk of project when requirements are not 100% clear to the details
  • Select also technical members to the steering group, “vocal” end user representative will help also to keep the project on track

Missing one or several these thing were some of the common ways to fail your projects what I’ve come to realize.

A company that is producing goods for example might be used to certain way of working, and if the project sponsors do not understand how software developing process differs from the normal manufacturing, there might be timetable and budget problems ahead. The expectations from project’s each reference group should be checked in the beginning and the project should be explained in layman terms to them. This will lessen the resistance, set expectations correct and people won’t panic on first minor problem.

It’s also a good thing to ask from other companies that had some dealings with the possible project supplier when you play a round of golf with them 🙂 Some companies do have a bad tendency of not being honest with the customer. Or not raising a flag if they realize that customer is not buying a suitable solution for the problem they’re trying to solve. A good supplier is not in for a quick cash but for long term partnership, and they will care about your problems and they will suggest a different solution for you if they realize it suits you better even if it means less money for them now. Be vary of the sales persons who try to impress you with latest hype terms, and don’t take their time to explain things a way you can understand

It is not possible for a every company to have a highly skilled architect or project manager on their payroll waiting for IT projects to come. In this case don’t make a mistake and put non-technical guy to talk alone with the supplier. Domain expertise is of course a must, and non technical domain expert must be present when the technical things are being decided. But do hire a technical consultant or advisor to your project from outside. Having one who’s on your side can greatly lessen the risk that the supplier will either bloat the timetable or select wrong technologies according to their own wishes. Technical advisor can also go through the offer with your domain experts and open up the proposed project so that they really know what they are being offered.

If it ain’t tested, it’s broken. An old saying that is unfortunately true. You must have tester(s) from the very beginning of the project with you, creating the test plan for example. It’s also a good practise that they should not all be from the same supplier. For example acceptance testing should be done by separate entity, not the supplier. Normal testing (unit testing, integration testing, regression testing…) can be done by the suppliers own testers.

Waterfall, Agile, Scrum, CMMI, Lean.. there are so many terms related to the project model and management, that it will confuse any person. Internet is full of people banging the drum for their own favourite methologies, and dissing the rest. It’s very difficult to pick a right model for a project if you have no experience running a software project. This subject is very wide and has many parameters which affect the decision, which is the most suitable model for each case. I suggest that you investigate Lean when the requirements are not that clear, Scrum if you need to get something done fast and can leave some features for later versions if timetable is critical and Waterfall if you have very complex domain and enough manpower to document it. This is a bit oversimplification, but the matter is very big and worth of it’s own post.

Steering group without any technical knowledge or end user feedback channel is just a rubberstamp which will stamp it’s own death sentence. If the steering group has no way to really understand where the project is going or can’t read the graphs it’s been presented, and can’t challenge the figures presented to it, it is useless. With enough technical knowledge from the buyers side the signs of project failing or running over budget and timetable can be read very early. Getting an good external specialist to the meetings ensures that you can read the early warning signs and act according.

These were some simple and basic things that I suggest you consider before starting a project, but in no means a complete list. Later on I’ll address the special problems what comes to buying an cloud software project

Posted in Projects | Leave a comment

Head up in the clouds

What kind of skills a cloud developer needs? This question was presented to me by a friend, and gave me an idea for this blog post.

There are many aspects that are different from normal desktop/server developing, but I’ll address only a few most important to consider when going to the cloud.

I’ll start with a bold claim, that developing for the cloud is not for everyone. It requires a complete mindset reformat from a developer as every bad move we make ends up costing our customers money. Everything we do needs to be througly planned and we need to be able give cost estimates of our routines and alternative solutions. Now suddenly our code is being reviewed for totally different perspective that we’re used to!

This also presents new challenges with storing data and transfering it compared to the old and care free “let’s throw an SQL server and dump everything there” attitude. No longer have we the luxury of not caring what kind of data we store and how long, but we are required to evaluate how we can store data most efficiently, perhaps compress it and for how long we should keep it.

Third important part about cloud developing is preparing for scaling. As currently there is no automated scaling (Azure) and that has to be handled by the developers. If you leave out this part from your solution, you might as well go with the traditional hosting, as you’re leaving out one of the most important benefits for cloud computing, it’s like driving your Ferrari on first gear only 🙂 We need to be ready for the spike performance requirements and able to downscale when the peak goes past, that we don’t keep reserving the costly CPUs. Failing to realize this small thing can get your boss to come after you with an hang noose when he sees your monthly Azure credit card bill 🙂

These were the few main points what you should consider, before you let your junior developers to deploy directly to the cloud to avoid any nasty and costly surpises. There are still some other almost equally important things to consider, but I’ll leave them to later when I talk about my experiences about developing for Azure.

Posted in Azure | Tagged | Leave a comment

Moving to WordPress

Again, changing the outlook of my blog – this time I’m starting to use a proper bloggin software which will enable comments etc. Also posting is much less painful as I no longer write raw html 😉

I’m copying few of my latest articles from the old blog, and republishing here just to get some material to try out the categories etc, but new stuff will roll out pretty soon!

Posted in Uncategorized | Leave a comment