Friday, February 29, 2008

Thursday, February 28, 2008

MMMUG February 2008 - Notes

These are my notes from the MM&M UG UK meeting earlier this week with presentations by Jason Langridge. It was my second time at the UG and very enjoyable it was again too.

SilverLight coming to Windows Mobile (what version of SilverLight though?)
Office Communicator on Windows Mobile - for IM

Exchange 2007 SP1 - 33% reduction in bandwidth, due to protocol improvements

Windows Mobile "Next"
- Available soon (April?)
- Devices and updates immediately available
- Hardware lock-down capabilities
- OMA DM compliant

System Centre Mobile Device Manager
- Enables:
-- Device management
-- Security
-- Mobile VPN

Full OTA provisioning
- software distribution

Remote wipe, without Exchange
- hard reset the device and format the storage device

Mobile VPN - allows tunnelling of all HTTP(S) traffic through the corporate network

Requires 2 64bit servers to implement (Mobile Gateway (for VPN) & Management Server (for SCMDM))
- Support for up to 10,000 users
- Designed fro 250+ users

Mobile VPN
- Maintains application connectivity during changes between network

After enrolment of device (via SSL) all traffic goes through VPN

IPsec tunnel, using IKEv2.

Jason's Slides for the event (or very similar) can be found here.

I ♥ Windows Mobile

Not sure why but I do.

I've had 4 of them now. One of each version (2002, 2003, 5.0 & 6.0). Id I plan on having more in the future.
  • There's something cool about having the same operating system on my phone that I also have on a computer.
  • I like being able to write programs which work on my phone.
  • I get more excited about new versions, features, etc. with new versions than any other platform.
  • and probably loads of other reasons too.

Wednesday, February 27, 2008

Windows Mobile "Next" - My Predictions

Based purely on knowledge in the public domain. (Honestly, I don't know anything for sure.) Here are my predictions for the next version of Windows Mobile.

  1. It will be called 'Windows Mobile 7.0'
  2. It will be released on the 1st of April 2008
  3. It will be based on Windows CE6.0
  4. All Sony Ericsson devices which use Windows Mobile will run this version

I'll update on if I was right, when it is released/announced.

If anyone is interested in the thinking behind the assumptions, let me know and I'll fill you in

Friday, February 22, 2008

3 kinds of people

I think there are three kinds of people :

  1. Those who DON'T learn from their mistakes
  2. Those who DO learn from their mistakes
  3. Those who learn from other people's mistakes

Being in group number one is very bad. Being in group number two is better. But, being in group number three is best of all.

Thursday, February 21, 2008

My biggest issue with ASP.NET

As a web developer who learnt to develop for the web with PHP, my biggest issue with learning to use ASP.NET is that it is designed to be like developing for the desktop.
While this is a noble idea and one which should make it easier for more developers to create dynamic websites, I am constantly reminded of one fundamental fact.
The web and the desktop are not the same!
While it might be easier to write code if you think of the as being the same, this will inevitably lead to poor quality websites. Or at least poor quality code in websites.
In time, this poor quality code will lead to poor performance and difficulty to enhance and maintain. Things which are neither beneficial to the user or the developer.

So, what I'm probably trying to say is that development in ASP.Net without a proper understanding of how the web is different from the desktop, and how to develop accordingly, will lead to a lose - lose situation.

you can make (lots of) money through selling really bad software

Software is not sold to the people who use it

If things are hard to configure you pay to have them configured for you (or preconfigured)

It should be possible to change how something is used once you have begun using it. It should not be necessary for users to stipulate how they are going to use a piece of software before they have used it.

Ask questions and to see the parts of the system that aren't shown as part of a sales demonstration.

Wednesday, February 20, 2008

Not having applications Vista compatible is a crime

While I'm sure there are lots of good reasons for companies not having their software compatible with Vista on January 30th 2007, the reasons for not having done it seem so many that I consider it a crime against users.
  • Betas and CTPs had been around for ages. The RTM for months. That's an age in software development time. What have you been doing instead?
  • If I can't run your software on Vista, I won't buy it if I want to use Vista.
  • If not being able to use your software on Vista is going to stop me upgrading if I want to. You're telling me what I can and can't do. You're not supposed to stop me doing things. You should be selling software to help me do things!
  • If you haven't got a Vista compatible version yet, because of the complexities of changes required to make it work, that's probably because of poorly designed software in the first place.

Friday, February 15, 2008

Meeting Checklist

Meetings are a great way to waste a lot of peoples time. Sometimes though, they are necessary. In such situations it is useful to be prepared.

At a basic level this preparation can be done by being able to answer these questions:
Where is the meeting to be held?
If it is necessary to travel to the location:
What is the address of the building?
What is the contact number for the site if need to advise of any delays, etc.
Are adequate travel directions available?
Where should you go when get on site?
Who do you need to ask for at reception?
Is parking available? If so, where? If not, any suggestions as to where could park?
Anything else that would be useful to know if never been to the site before?
When is the meeting to be held? (Date and Time)
How long is the meeting scheduled for? If an end time isn't defined the meeting is more likely to run on longer than it needs to.
What is the agenda for the meeting? If it is not clear what the meeting is for it's questionable whether the meeting is warranted at all. If it is not clear what the meeting is for it is harder to suitably prepare for it.
Who will be the chair of the meeting? This needs to be defined before the meeting starts so it is clear who is in charge and responsible for the meeting.
Who will be taking minutes? It will be important that everyone is clear about what was decided and who is responsible for what as a result of the meeting. If someone is given the responsibility for making sure that suitable notes are taken and distributed afterwards, there should be no one who is unclear what they have to do as a result of the meeting.
Who will be attending? And Why? it's generally useful to know that everyone who needs to be at a meeting will be there. There's no point going if the people who can answer the questions which will be raised at the meeting will not be there.

N.B. I reserve the right to update and add to this list in the future.

Testing Instructions - A Reminder

Notes from an internal message I sent:

If you are testing a module or program which does not currently have instructions on how to test it, you must create them as you do your testing.
The reasons for this:
  • It is quicker to test when there are instructions on how to test - by creating the instructions you will make all future testing of that module/program faster. - I am aware that it takes more effort this time but it will speed up all testing in the future. As there is more to test with each release, this is very important
  • When following instructions on testing, you are less likely to forget to test something. - This will lead to a higher quality product being released.
  • If you are working out how to test something it will save you or someone else working out how to do the testing again in the future, when the module/program is next tested.
  • If someone comes to test a module/program which they are unfamiliar with, in the future, they may miss parts of the system which are not obvious or dependent on certain configurations. A testing check list can contain the cumulative knowledge of everyone who has tested the module/program in the past, thereby removing the possibility of parts being missed.
  • Some programs require numerous configuration changes to fully test. Documenting these will save time working them out in the future.
  • Some programs require specific environments to test. Documenting these will save time in working out how to set these up in the future.
  • When bugs/errors are found in the system, their investigation can lead to the identification of new ways to test parts of a system or things to be particularly aware of when testing. If a test document exists, it can be updated to include such details.
We want testing to be as fast, thorough and as simple to perform as possible. Creating suitable instructions enables this. Not creating instructions goes against these aims.

Tuesday, February 12, 2008

The Power of Praying Together : Stormie OMartian with Jack Hayford

"It is God's will to wait for our invitation. If we pray and invite God's
soverign power to manifest in earth's suffering and pain, then He will
move in power. Then His kingdon will enter our lives and our circumstances
and work on earth what He has willed in heaven. When we understand this, it
will inspire us to pray as we have never prayed before."


"What happens when a person lets his body boss him around, whether it's
sensually, sexually or in any other dimension, is that he begins to be ruled by
something other than the power by which he was created to be ruled." ...
"Fasting is a way of saying 'I'm a spirit being before I'm a physical being. I'm
physical, so I need to eat, but I'm spiritual too, so I'll sometimes assert
the supremacy of my spiritual allegiance beyond and before my allegiance to my
body and it's cry.' Fasting is an instrument that cripples the power of
spiritual and evil forces in the realm of darkness so they cannot sustain their
grip on human life, minds and circumstances."


"God accepted us the way we were, but He certainly wasn't going to leave us that


The Road Ahead : Bill Gates

More than ever, an education that emphasizes general problem solving skills will
be important. In a changing world, education is the best preparation for being
able to adapt. As the economy shifts, people and societies who are appropriately
educated will tend to do best. The premium that society pays for skills is going
to climb, so my advice is to get a good formal education and then keep on
learning. Acquire new skills and interests throughout your life.

Page 254.

EDSK ... to check that something exists, before trying to use it

Every developer should know to check that something exists before trying to use it.
Following on from the previous advice about not making assumptions about a file system. Be sure and extend your assumption checking beyond just the file system. Immediately that means files and their contents. But also think about: other programs; operating system components; peripheral devices; hardware components (ports, cards, etc.)

Why is this important?

Because at some point in the future, whatever your expecting to be there won't.
When that happens, one of the following is likely:

  • It will have no impact.
  • Part of the program won't work.
  • It will cause an error message to be displayed.
  • The program will crash.
  • The program will crash and will corrupt user data.
  • An important customer will be disappointed in your software and in you/your company.
  • You (or someone else in your company) will have to spend time with the user working out what went wrong and how to work around it.
  • You (or someone else in your company) will have to spend time updating the program so that it can deal with the missing element, to prevent customers having the same problem again in the future.
As a top class developer (or one in the making) I'm sure you can guess which are the most likley items in the above list and the ones you should focus on preventing.

What do you do once you know this?

Make sure you check!
You'll save yourself some support and your users some inconvenience by dealing with problems before they can happen.

Friday, February 08, 2008

PwrShl: Create a log file

I'm trying to teach myself (learn) how to use Power Shell.

I thought I'd start by learning how to do a few simple tasks.
Append to a file
Get the current date and time
Pass arguments to a script/

The above is enough to create a simple log file utility. By which I mean a script which can be called to append text, preceded by a time stamp, a specified file.

Appending to a file is easy, because of 'add-content'.
add-content C:\test.txt "some text"
Getting the current DateTime is done with 'get-date' and is easily turned into a string.
Strings are concatenated with a plus sign
$dt = (get-date).tostring()
add-content C:\test.txt $dt + "some text"
Arguments are accessed via the $args array. So assuming the text is passed as an argument.
$dt = (get-date).tostring()
add-content C:\test.txt $dt + $args[0]
Put it all into a single line and pass the file name as a single path
add-content $args[0] ((get-date).tostring()) + $args[1]
Save it to C:\AppendToLog.ps1 and then call it.
PS > set-executionpolicy unrestricted
PS > & 'C:\AppendToLog.ps1' 'C:\test.log' 'the text to log'
powershell.exe -command "& 'C:\AppendToLog.ps1' 'C:\test.log' 'the text to log'"
Jobs a good'un.

Wednesday, February 06, 2008

EDSK ... that different platforms have different requirements

Every developer should know that different platforms have different requirements.

It is important to understand the platform that you are developing for:
  • Developing for the desktop is different from developing for the web.
  • Developing for a device with a large screen is different from developing for a device with a small screen.
  • They are both different than a device with no screen.
  • An interface that will be navigated with a mouse or keyboard is different from one which will be navigated with a peripheral device, or thumbs!
When you start developing for a platform that you have not developed before and you don't understand the differences and nuances of that platform, you should not assume that it will be the same as other platforms you have developed for previously.

Remember, assumptions usually turn into bugs or the user not getting what the really need/want.

What do you do once you know this?

Make sure that you understand the platform you are developing for, particularly if it is new to you.
Don't assume that the way you've done things on other platforms is appropriate or even possible.

What do you think?
Is this something every developer should know? Have you say in the comments.

Friday, February 01, 2008