Stylecop is now available as a free download…
Archive for the Personal category
-
Stylecop now available
-
Personal RSS Feeds
As far as I can see, the majority of RSS feeds exposed on most sites provide access to very generic, summary information. I’m quite surprised that RSS hasn’t really been embraced for the kinds of thing for which it would be most suited – i.e. bringing you highly targeted, highly relevant information based on some prior knowledge of who you are.
I would love to be able to give a list of my favourite bands, and subscribe to a feed of gigs they are planning in my area; or give a list of my preferred cinemas, and find out whenever a new film is showing at any of them.
Once you are providing more personal feeds, then authentication becomes an issue. There is fairly widespread support in aggregators for both SSL and Basic Authentication, but this can be overkill for certain situations.
The data we are exposing is not particularly sensitive, and it would be a real pain for a user who has authenticated with the main site to be challenged when they subscribe to a feed. Instead, the approach we’ve taken in…
- When a private feed is available on a page, the meta tag in the head includes a token on the querystring for the feed URL that is generated based on the currently authenticated user
- When serving up a private feed for a particular user, we expect the token on the querystring, and bounce the request if either the token is missing, or is incorrect
This means…
- An authenticated user can subscribe directly to a feed without an additional challenge
- If you know the URL to your own feed, you can’t get access to others simply by changing the feed URL
- The mechanism used for feed authentication doesn’t expose anything related to authentication on the main site
We’re exposed to the feed URL and token being sniffed on the wire, but unless the content is particularly sensitive this seems like a suitable, practical approach to ensuring some degree of privacy without introducing complexity and barriers to subscription.
-
Aural Media Type
Having added a handheld, and print stylesheet to this site recently, I was thinking a little about the Aural media type. So CSS is all about presentation of content. The idea here was to be able to control how content is presented when read – so being able to specify that H1 elements are read in a booming, male, American voice etc.
Although this is very appealing and a very cool idea, I just don’t think it makes sense. When looking at a page on screen, there are lots of visual cues that help you make sense of the content. This means that we can apply different presentation and design without leaving you confused about what you’re looking at.
When content is read, one of the main clues you have to differentiate and make sense of content is how the content is read. This means it makes sense for different content to stick to the same presentation, or conventions, so that you can learn what those conventions are, and what they mean. If everyone has control over audio presentation of their content, there is no pattern to learn, and it must be much harder to switch from document to document while listening.
Not that this really matters yet, but it may have more impact as there are more embedded devices with connectivity – so being able to listen to blog posts in your car etc.
-
Buy a Man a Fish
I had a busy day today, so I bought a man a fish. Just kidding. I had one of those days where lots of people need lots of things and suddenly the day is over.
The lesson for today:
Whenever I need to provide data to someone, I should pause, breathe, consider, then build a report rather than running an ad-hoc query. The next time they need it, I’ll be laughing. Really. And looking smug.
-
The Dark Side of Agile Planning
I spoke a little about all of the good things you get from adopting an agile approach to planning development of a product, so to keep the universe in balance I should point out some of the evil lurking around the corner.
I think the success of this approach ultimately is totally dependent on having the right people involved. Try this with the wrong team, and there would be a big mess on your hands. The headline is that agile planning requires a mature body of thought behind the design, and proper consideration of each change that is proposed. You should be refining and enhancing the design, with clear purpose and structured thinking behind each decision. If you’re in a situation where you’re just chucking new features at a product that would be cool then it’s all gone bad.
The very few times that we’ve rushed to work on a change without this process, it’s gone wrong.
I think it’s a very healthy thing to have someone on the team who is very creative, and always coming up with new ideas and suggestions. However that needs to be balanced by someone who is very focused on the interaction design of the product as a whole, and is able to push back and say no if necessary.
The benefits are really significant. I continue to be surprised by how much you learn as you go during development, and it would be criminal to waste all of the new information and thinking.
An agile approach should mean a continuous, rigorous design process, rather than design upfront, then implementation. If it means that you bypass the design process and are using it as an excuse to jump straight to code, then you’re an evil monkey. Evil, evil monkey.
-
Windows Live Writer and Tagging Support for Wordpress
I’ve recently upgraded to the latest version of Wordpress which now includes support for tagging posts as part of the core product. It was a little painful to go and tag up the entire backlog of previous posts, but it’s all done now, and it’s very cool to be able to get a feel for what I generally write about via the cloud.
I’ve become accustomed to publishing content using Windows Live Writer and had totally missed how to tag posts, so that the tagging info comes through to Wordpress. In Live Writer there is an advanced properties bar that can be expanded at the bottom of the content area, and this includes a section for keywords. Anything entered here (comma-seperated) will come through to Wordpress as tags against the post.
I’m happy again.
-
EmbeddedStream Mobile Version

After learning that I have at least one occasional mobile using accessing the site (yes Jimmy, that’s you!) I’ve put in place a much more appropriate stylesheet, linked in with the handheld media type. I’ve been testing this against Opera – pressing Shift-F11 will switch Opera to handheld mode and will emulate it’s rendering behaviour when running on a mobile device. I think overall it works pretty well. Some of the features include…
- Only 2 images in the design, and these are mini, mini images (3K each)
- Single column fluid layout
- More appropriate text sizing and margins
- Better sizing of form controls
I don’t really know enough about how widely the handheld media type has been adopted by mobile browsers, but I guess at least Opera crops up all over the place and it will render really nicely. Any feedback from my one mobile user would be appreciated
While I was in the mood I’ve also added a print stylesheet, so think I should now be covered all round. I might have a little rant about Aural media type shortly, but will save that treat for another day.
-
Fish Truck Lady
I know it sounds like a second rate Jimmy Hendrix song, but it’s not. I was waiting for the bus yesterday, and a tuna truck pulled up in traffic. Through the window I could see a lady sniffing at an air freshener. Well it made me smile.
-
Agile Planning
Our team has been using the agile planning process as described in Extreme Programming since the start of the project, and I’m currently thinking quite a lot about how this has been going, and how it should integrate with slightly more formal methods.
The basic idea is probably familiar to most people. New work is measured in terms of User Stories, which are tangible scenarios for the end user. This sets the main focus to be deliverables that make sense to a consumer, rather than the tasks required to implement them. Cards are scored in terms of relative complexity to each other. There are different approaches to scoring cards, but we’ve been working with the simple model – 1 represents the smallest piece of work possible, 2 is twice as complex etc.
Work is carried out in 2 week iterations. At the start of each iteration, there is a budget available that can be spend on new story cards based on the amount of work completed the previous iteration (velocity). The focus about which cards to work on is based on what is most important to the business / consumer. The main thing is that planning work is purely based on the speed at which the team has been delivering.
All story cards are put up and organised on a large whiteboard. One side has a ‘menu’ for new stories that can be picked, organised by category. The other side has the next 2 or 3 iterations, and the story cards that we are planning to work on.
Each card is intended to be a placeholder / memory jog for all of the discussions and thought that has already exists around the team about the designs issues and details of what is required.
This is the basic method we’ve been working with. I’m out of time, so will discuss some of the issues in another post…
I just listened to a NOFX song that made Monday morning seem like a nice, happy thing, just like it should be.
-
Sexy Cartoon People
So I was just thinking how Lois in Family Guy is hot…
