For the past three months, my travel site www.imaybelate.com and its companion apps for iOS and WP7 have been live on the internet.
Based on recent user activity, I’ve decided to make a big change to the authentication system of the site. I’m going to move away from OpenID and back to the standard username & password. I’m not making this change lightly as it involves not only refactoring my code, but also supporting existing users who want to continue using the app.
So why am I removing OpenID support? In a word: trust. Or, to be more accurate, a lack of trust.
I started by asking questions on twitter and finally by running a small online poll, using Twitter. I got some interesting results – http://twtpoll.com/fpgw89
I didn’t get many votes as the poll was only running for one day, but I think it offers a glimpse into people’s feelings towards OpenID. There were a few other votes and the comments were:
I also got a few comments via Facebook and Twitter and they mirrored these sentiments.
“Create new account. Sometimes signing in with another account gives the app access to that sign in account. Example being signing in with your twitter account to some apps allows that app to read your tweets (even if private) and also to tweet on your behalf.”
Mr Jeff Atwood (@codinghorror) also replied to an earlier tweet on the subject of using OpenID
“@tomasmcguinness log in with google, Facebook, twitter seems to have traction, openid alone is risky”
So what conclusions can I draw? First off, I must point that that as I’m a techie, most of my twitter followers are of that ilk and therefore I expected the poll to be biased towards the better solution of OpenID. As can be seen from the pie chart, it’s still about a 50/50 split. But it’s 50/50 with some caveats. People seem to like the idea of using existing accounts when they “trust” the site they are signing up to. I’m defining trust here to mean they’ll trust a site they’ve user before or a site a friend has recommended.
This mirrors my own behaviour. I’ve only become conscious of my attitude since I started thinking about it for my own site. When I visit a site for the first time and want to try it out I won’t connect to it via Facebook. This is what I was asking others to do. If I won’t do it myself, why expect others to? A rather silly mistake on my part.
Users may be willing to connect your site with other existing accounts, but only after they’ve established your site is something they want to use and it’s something they trust.
To this end, I’m going to replace my OpenID system on www.imaybelate.com with a simple username and password. I’m going to update the mobile apps so they highlight the features on offer without requiring login. If after seeing the features, users want to try it, they can just signup using their email address.
There was one tweet I got which rather put this whole OpenID subject into perspective. Something that Jeff Atwood mentions in this blog post http://blog.stackoverflow.com/2010/04/openid-one-year-later/ was that OpenID providers come and go. A more dangerous consequence is that you lose access to your resources associated with that ID and that was brought to my attention by this tweet:
“FB banned a guy over innocent pics of his baby girl-lost access to 27 other accounts – that why I prefer User/pword”
It’s scary to think that Facebook not only control access to their site, but also to every other site that you’ve connected to them.
As part of some changes I’m making to my IMayBeLate app, I’m toying with trying to make it more obvious what my app actually does.
I’m taking out the OpenID registration and login and replacing with the more pedestrian username and password. I’m working on another blog post about why I’m doing this, so I’ll just give you a summary here. I’m trying to to clean up the UI of my Windows Phone 7 in an effort to make the features of the app more discoverable.
So, to this end, I’ve taken a page out of the Instagram app, making the first screen available regardless of whether the user is signed in or not. I’ve also added some text to each section of the pivot that describes each feature of the app.
My hope is that users will just scroll through the app and be given a taste of the benefits of using the app, hopefully encouraging them to sign up.
Has anyone seen this approach in WP7 before? What do you think of it?
The feature that I’m currently implementing for IMayBeLate.com is one that will allow you to select the stations that you use on a particular line. ![]()
Whilst choosing the lines you commute on, you will be given the opportunity to select the stations on that line that you use.
At present TFL separate their status information into lines and stations.By gathering this information, I can use the station information help provide you with information beyond just line disruptions. Sometimes stations are closed due to emergencies or, more commonly, over-crowding. This extra information might mean you’ll walk to the next station, avoid the queues!
This also takes me one step closer to being able to suggest alternative routes and to provide warnings when the disruptions of other lines indirectly affect your lines.
Let me know what you think of this feature by commenting below!
If you’re a London commuter and not already signed up, please head to www.imaybelate.com/signup and get started!
I think I caught out TFL this morning. At 8AM I got a text message indicating there were minor delays between two stations on the Jubilee line, but checking two iOS Tube Apps (including my own) indicated there was a good service on the line!
Text from TFL |
I May Be Late |
Tube Deluxe |
I always had my suspicions that TFL didn’t really put the right information into their TFL feed and this is sort of proof!
Over the past few weeks in between planning a wedding, doing a piano exam and attending a NFC hackathon, I’ve continued to work on www.imaybelate.com, trying to add new features and improve the application overall. In the past few days I’ve submitted app updates to Apple and Microsoft for approval and rolled out an updated website.
My apps just aren’t just selling 
At the end of February, I launched the Windows Phone 7 and iOS apps for IMayBeLate. These just haven’t sold a lot at all. In total I’ve had about twenty six downloads across both platforms. I then update the Windows Phone 7 app to support a trial version, but that hasn’t helped organic sales at all. I won’t be retiring on that anytime soon!
To try and encourage more casual downloads, I’ve decided to make the app free on both platforms. As part of this move, I’ve applied limitations to certain parts of the application so that you need a Pro account to get access. The “To Work” journey is still free to use, but I’ve locked down the “Home” journey. I hope that this will give people a taste of the app’s usefulness for the first half of their commute. If they like it, they can upgrade to a Pro account and get the benefits for their journey home.
Since this move actually takes functionality away from those that have already purchased the app, I’ve upgraded all the accounts to Pro level. I’ll take this away after a month and that will hopefully serve as compensation to my users. The apps will become free once the updates have been approved.
National Rail
In an effort to provide more complete coverage of London’s transport system, I reached out to National Rail to try and get access to their live travel information. Unfortunately, I got knocked back completely. They just don’t allow automated consumption of the data and they also charge a fee for access. Since I’m a) using an automated service and b) doing this in my spare time, I had to give up on the idea. I may write to my MP in the future and see if they can do anything to make the company open their data up.
Advance Warnings
One of the earliest suggestions I received about the site was to give users the option to get advance warning of disruptions send directly to the them in addition to information being sent to others. This was something I had implemented as part of the smartphone app, in the form of a push notification, so it wasn’t a complicated change to make. I took the opportunity to clean up the website’s UI a little and I refactored a lot of code in the notification service to clean it up and make it more modular.
Advance warnings can be send up to an hour before the journey begins and they provide the user with an opportunity to takie an alternative route if their usual one is stuffed up. I’ll be building on this functionality in the future by adding more information.
What’s next?
The next feature I’m working on is the capture of the stations that are used as well as the lines. Gathering this information will help provide me with a more complete idea of the route a user takes. I can monitor TFL for station specific information, such as closures or emergencies, and use that to provide the commuter with a more complete picture of their travel situation.
Capturing this info also enables me to deal with more advanced scenarios. A good example of this is the effect that one line closure has on another. A good example is the recent disruption to the Jubilee line, which in turn caused a knock on effect to the Thames Clipper and the DLR in addition to causing massive delays at Bank and Waterloo stations. I could also suggest alternative routes using TFL’s journey planner.
Please Sign Up
If you’re a London commuter that travels by tube, I encourage you to sign up and give my service a go. If you have any suggestions or comments please drop me an email to tomas@tomasmcguinness.com as I like hearing what people like and dislike.
As part of a project I’m involved with at my day-job, I wanted to setup a simple continuous deployment to complement our continuous integration. We have one solution that contains, amongst other projects, two web projects; one is the primary web application and the second is a web api project containing our REST based API. We wanted to deploy this projects to two separate websites in order to keep them apart, mimicking how we planned to release them into the wild.
The first step is to create new Build Definitions in TFS. We will create two new definitions, one for each of the web projects.
Firstly, open the Team Explorer and locate the Builds section of the project:
There are no builds at present for this project, so right click on the Builds folder and select “New Build Definition”. The build definition panel will be opened and you can then configure the details of the build. I’ve blacked out the name of our build server in the image above.
Basic Information
When the Build Definition pane opens, you’ll be presented with this:
Fill in the build definition name. For this I’m using the name SmartBusinessPortal_API_CI indicating the project name, the individual area and that it’s a CI build. Use whatever naming convention is applicable to your project.
Triggers
Since this is a Continuous Integration task, you need to choose how the build will be triggered. From the menu on the left hand side of the Build Definition, select Trigger.
I use the Rolling Builds option, selecting the “Build no more often than every” option with a value of five. This will mean that when a check-in is performed it will only perform a build if there hasn’t been one started in the past five minutes. It also means that check-ins performed at short intervals won’t result in lots of new builds. You’ll get a max of twelve builds an hour.
Selecting Project
The next thing to change is the “Items To Build”. This is located under the Process section.
Expand the “1. Required” section under Build Process Parameters.
You can see that the “Projects To Build” option points to the solution of the project. This isn’t what I want, since I’m only concerned with a particular project (In this case, a web api project called SmartBusinessPortal.API). Highlight the Projects to Build section and hit the small button in the row (highlighted here with a red box)
This will open a new Window showing you the selected projects.
Hit the “Remove” button to delete the reference to the solution and then hit the “Add…” button. A Browse window will be opened. Just navigate the folder structure until your find the project file you want to build. Be sure to change the “Items of Type” dropdown to “MSBuild Project files” if you want to see actual project files, instead of solution files.
Select the project file you want and click OK. Then, when back on the “Solutions\Projects” window, hit OK again. This will update the Build Definition window to the selected project file.
Try and Build
You can now the Build Definition by hitting Ctrl-S or trying to close the tab, which will prompt you to save. You should now see the build under the Builds folder of the Team Explorer. I’ve repeated the steps about to create the Build Definition for the web project, so my Builds folder looks like this.
Right click on one of the builds and select “Queue New Build”. A new windows will open, but just click “Queue”. The build explorer should then be displayed, showing your build in progress.
After a while, hit F5 to refresh the view and it should now should the build as successfully completed. The green tick indicates this. If you get a build failure, double click on the row to open the details. Fix whatever errors are showing and Queue new builds until it succeeds.
Automatic Deployment
Now that the build it working okay, the next step is to setup the automated deployment. I’m going to assume that you have setup MSDeploy on an IIS 7.0 server somewhere and that you can deploy without issue from VS directly.
In the Build Definition pane, open the “Process” section again. This time, expand the section “3. Advanced”. Within this section, there is a setting called “MSBuild Arguments”. We need to populate this with some MSDeploy arguments.
/p:DeployOnBuild=True
/p:DeployTarget=MsDeployPublish
/p:MSDeployPublishMethod=WMSVC
/p:CreatePackageOnPublish=True
/p:DeployIisAppPath=<WEB APP NAME>
/p:MsDeployServiceUrl=<SERVER NAME>
/p:username=<ACCOUNT NAME>
/p:password=<PASSWORD>
/p:AllowUntrustedCertificate=True
There are a few values you need to add. The “Web App Name” is just the name of the website or virtual directory you have on IIS. The “Server Name” is the location of IIS. The username and password refer to an account that has permission to use the MSDeploy publish. If you remove these, it will use the identity of the Build process. I specify the username and password using an account local to the IIS machine.
All those settings above go together in one line and put in as the “MSBuild Arguments”. You can now save the build configuration and Queue a build. When the build completes successfully it should perform a deployment.
I have this basic setup in place and working. The next thing for me to do is learn how to choose the Solution Configuration that it should use to build, so that the web.config file gets populated with the correct database settings. Once I know how to do that I’ll post the details.
Good luck. If you’ve any questions use the comments below or drop me an email.
I May Be Late has been live now for about one month and has gained 50 users at the time of writing. That’s just over one signup a day and I’m actually quite pleased by that. I’d probably have 500 users by the end of year if the rate of signups stayed the same. However, I’m coming to realise that just having people signup isn’t really enough. I want people to sign up and use the service. I want them to use the service, love it and sign up for a pro account because they find it really useful.
When I launched the two smart phone apps for I May Be Late, I think I lost sight of that fact. I was just expecting people to shell out money because I think the service is useful. This will work for a while as my friends are doing all the downloading, but I’m never going to get any major traction from that alone.
I’ve decided to try something different.
I’m going to make a few changes to the apps and website and give users the power to add one half of their commute for free. This will include doing it from the mobile app. They’ll get all main benefits of this i.e. advance warning emails and delay notification emails. SMS will still be reserved for Pro users since this actually costs me money to provide. I hope that users will see how beneficial this service is for the trip to work each morning and realise that it would be useful for their trip home too.
I’ve not had many paid downloads of my apps to date, so I don’t risk pissing many people off. However, these people have paid for the app already, so I don’t want to risk annoying my early adopters. To thank them for at least taking the plunge initially, I’ll over them a months Pro account, which is worth more than twice what they paid for the app initially. I expect that most early adopters are like myself and should be reasonably forgiving of change.
That’s the plan anyway!
I’ve started making the code changes and hope to have new versions submitted to Microsoft and Apple by this time next week. Once they are approved, I would hope to see more people downloading the app since it’s totally free.
The only downside to this plan of mine is that Apple won’t let me advertise the way a user can get a Pro account. I can mention the Pro account, but not how to get it! I can only hope that interested users will make the effort to find out themselves. It’s a gamble, but much better to bet on that then people not downloading the app at all!
Wish me luck!
