Modern Delicious

Update - Pulled Due to Broken API

I've removed Modern Delicious from the Windows Store as the API it uses from Delicious is broken, and has been so for some time. For more information, please read my blog post regarding pulling it.

Project Overview

Modern Delicious is my first app in the Windows App store. I had some false starts working on a few other apps, but finally landed on this one as having the most obvious featureset and path to launch. The underlying goal was to get a solid understanding of the MVVM pattern. I have a couple of WPF applications that I'm responsible for at work, and it's becoming clearer with each revision to these that mixing the presentation and code is causing the complexity of the code to spiral out of control. The hope was that writing this app would give me an idea of what I need to do to rework these apps to something that is a bit more maintainable and scalable, and hopefully make my time estimate a bit more accurate.

After my initial usage of Windows 8, I missed the experience of having all my links in a sidebar so that I can rapidly open a few at a time. Although you can now synchronize bookmarks across machines in several browsers, my chosen career making web apps keeps me using multiple browsers. With so much innovation regularly occurring in the browser space, it seems like it might not be the best idea to overcommit to a single browser as well. Plus, I've been using Delicious for a long time and laziness and stuborness has kept me from migrating them elsewhere. So when I went looking in the Windows Store one night for an app for Delicious so I could hit a couple of links I had saved at work that day, and found all of... one. The developer of that app wanted $1.50 for it, which seemed crazy after looking at the screenshots. The Delicious API is free, and the app had the same look and feel as the sample app as well as some odd behavioral choices. So I set aside another app I was working on, and set out to put some free competition in the store.

The Features

The data organization of Delicious seemed to dictate a couple of ways of viewing data. The default view of the Delicious website is by most recent, so that was the natural starting point, as well as by the tags that a user has assigned against their links. Because of these natural groupings of data, it seemed like the semantic zoom feature would be a great complement for navigating them.

Modern Delicious Posts by Date
Posts grouped by date.

Modern Delicious Posts Zoomed Out by Date
Posts zoomed out by date, using the Windows 8 Semantic Zoom feature. Pinch to zoom out or use Control with the minus sign on the keyboard. Includes the count of how many links were added that month.

Modern Delicious Posts by Tag
Links grouped by tag.

Modern Delicious Posts Zoomed Out by Date
Links zoomed out by tag, using the Windows 8 Semantic Zoom feature. Pinch to zoom out or use Control with the minus sign on the keyboard. Includes the count of how many links have that tag.

Modern Delicious in Snapview
Here's where the app starts to show my main use for it. Snap it to one side of Internet Explorer, and it opens each post in a new tab with a tap. One unresolved issue I still have with this involves the feature below, adding a link from the Share Charm. It doesn't update the snapped list when you add a link that way, and I haven't figured out how those pieces are going to get synchronized yet.

Modern Delicious Add Link From Share Charm
This uses another of the interesting concepts of Windows 8, the Share Charm, to easily save a new link out to Delicious. I was really impressed by how easy this was to wire up, and really gives a nice experience as it lets me prepopulate the title and URL, much like the Delicious plugins for Chrome or Firefox.

The Code

I was able to honor the MVVM methodology for the most part, but found several things tricky.
  1. The settings panel. I couldn't find a good way to add these using MVVM. I'm sure there's some good trick for it, I just wasn't able to locate a good way to do it.
  2. Semantic Zoom. I lost a full day trying different ways to make this work. In the end, my original syntax ended up being very nearly correct, I was just missing one critical piece. Had I used a MVVM framework, I think this would have been significantly easier, since I figured out the missing piece by looking at the documentation for MVVM Light. The key was to use a CollectionViewSource, set the IsSourceGrouped property to true, and then set up a converter that takes your CollectionViewSource and returns the CollectionGroups property.
  3. I used MessageDialogs and the CredentialPicker in the ViewModel. How you would make this work without doing that, I have no idea.

I have a special beef with the Credential Picker. In theory, and in the initial wiring up, it's fantastic. A pre-built and tested UI for getting credentials from a user. It's not synced with the demands of getting a store app certified, however. If you require a user to log in, as with Modern Delicious, you must provide a link to register. There is no way to add this without rolling your own credential dialog. I got around it by adding an additional initial prompt that asks a user if they've registered yet, which then brings up the Credential Picker. It got me through the approval process, but I wouldn't call it ideal.

Windows Store Certification

This was quite a process. I submitted the app on April 1, and it went through the initial three automated steps overnight. Then it landed in the step where a tester manually evaluates the app, and I began my wait. The step said it typically takes 5 days. I'm a mellow guy and understand that sometimes you get busy and fall behind. So 14 days later when I contacted support, I was still calm and was just looking for an idea of how long the backlog was. The process suggested by support got things moving, but also was a bit mystifiying. The course of action was to cancel the current release and then immediately resubmit without making any changes. This is a bit unnerving. I've already waited two weeks, I don't want to lose my spot in the queue and haave to wait another two weeks. Apparently this is some kind of hack that either fixes an app that was "stuck" in the queue, or moves it to some sort of priority queue. Either way, it worked. Within a few hours, I had heard from a tester. Within two days, the app had launched to the store.

Maintenance Phase

I held off on this section for a few weeks after launch so that I could give my overall perception of the aftermath of the launch. I would call the reception generally positive for what it is. Delicious is not exactly a hugely active service, which I definitely knew going in. The app satisfied my needs for a Delicious app first and foremost, and the little extra details I've put in were merely for the sake of learning. There have been 37 downloads after 2 weeks in the store, one of which was me. There has only been one review, which had some interesting feedback in it. It took roughly 1 week for it to appear in the new releases section of the social category, and spent most of the time in the #8 position, which was two spots behind an app named "Rate My Cleavage." I'm not sure whether to be flattered or insulted by that proximity. The app fell out of the new releases section after 1 week; it's too early to tell how that will affect downloads. It's result #9 or 10 in s search in the store for "Delicious" and the #1 result when you filter down to the social category.

There have been a few bugs that I've found and had pointed out to me since launch. The worst was a complete lapse in my testing - I didn't test what happened when a new user without any posts on Delicious logged in. That was worth a quick fix a few days after launch that moved me onto release two. I also found a Progress Ring on the screen where you add a post that wasn't showing up. Completely forgot it had been added in. There was an update bug that prevented any changes made from another client or from the web interface from pulling down that I used a local setting to fix. It now completely refreshes all posts once every 7 days as part of the fix. The first review that came in mentioned that there was too much scrolling to reach the end of the tag list, so I made the semantic zoom tiles half as tall, which is what I'm hoping the reviewer was referring to. At least, I'm hoping that they're using semantic zoom, otherwise, they badly need to watch Scott Hanselman's great Windows 8 Missing Instructional Video . Those fixes moved it on to release 3.

Six Months in the Store

Release 4 happened in September, and added zero functionality. It was done entirely to expand the locales that the app was offered in. I had been operating under the assumption that you needed to translate the app in the native language of that region to make it available in there. A fellow Delicious app developer, Marco Scheel, kindly educated me on this fact. His app is called Metrolicious, and is available in the same locales as Modern Delicious. If you find Modern Delicious to be lacking features you feel are vital to the Delicious experience, you might want to give his app a try. You'll be able to see that he and I took two different approaches to developing an app - I wanted an app that functioned much like the new Windows 8.1 Reading List functions (except a bit more cross platform with Delicious) and really played to the strengths of Windows 8, while he went for the full Delicious experience. Either way, at least there are quality options now, compared to when I started writing the app and there was only one poor choice. Anyway, since this release, I've seen quite a few more downloads. I guess people aren't bothered by the fact that it's only in English. For example, the month I'm writing this, December 2013, the app's top region has been Japan. Never would have guessed that one. Of course, the only review from there is one star, which I'm guessing is because it's only available in English.

Release 5 was put out to fix a few bugs and make some improvements based upon some feedback I received from a developer that I have a great deal of respect for. Don't get me wrong, I love all feedback (and wish I got more of it, to be honest)- but getting some from this person was eye opening and humbling. It was definitely some power user feedback, so I had to really expand my thinking as to how people may be using and tagging posts. The big bug was related to how I was parsing tags. I had been doing it by space, rather than by comma. I honestly didn't even know I could get the data from Delicious delimited by comma, but it appears that they've recently moved their API documentation to Github and made some updates, which is a big improvement. So that was implemented and fixed much of what had been going wrong. I also made the tiles for the tags in semantic zoom a bit smaller so that users that have a large amount of tags aren't scrolling for an eternity. I'm still limited by semantic zoom to just two levels of zoom, unfortunately. I would really love to do a third level of zooming out and do something like the alphabet overlay that Windows Phone does on its app list to jump through the zoomed out tags much faster. I was hoping that would come with Windows 8.1, but no luck there unfortunately. I may have to figure out a way to implement it myself, but I knew I had bigger fish to fry in the next release.

Release 6 was the big one that I've been promising since R1 - search. I really do have a good excuse for why it took me so long (selling a house and moving 2000 miles), but I can't deny that it could have come sooner. In the end, GTA 5 gets the credit for getting it done. It was my carrot for getting it done - I wasn't going to crack into it until this release went out. There is a small "but" that comes with the search, though. Release 6 is also the upgrade to make it compatible with Windows 8.1. I know I could have made the updates for Windows 8, but that just seemed silly since 8.1 is a free upgrade. So upgrade if you haven't already, please.

Modern Delicious Search Results
Release 7 was a maintenance release to fix a couple of bugs related to search. There was a very large oversight on my part in Release 6 - I forgot the spinner while the search was running. It was actually there, but I had my XAML layers mixed up and it was covered by the gridview with the results rather than above it. The other big bug was affecting the performance of the search, I was executing an expensive method both when the tags were being searched and when the posts were being searched.

After Release 7, the app had a couple of really flattering mentions by Scott Hanselman, first on Twitter, then in his list of favorite tools. Just as interestingly, the tweet was marked as a favorite by the official Delicious Twitter account, so hopefully that means they're making an official Windows 8 app. When I first launched the app and notified them of the app per their API terms of service, I offered to give them the app. Not sell, give it to them, but to no avail. (That offer still stands, by the way.) I'm sure they can come up with something much better than what I've written, though.
Scott Hanselman's 2014 Ultimate Developer and Power Users Tool List for Windows - See the Windows 8 Store Apps section

Modern Delicious Add New Post Recommended Tags
Release 8 adds recommended tags when adding a post, which is the last major feature I had planned. All along, my personal roadmap for the app has been based on the features I needed in it. From here on out, anything new will come entirely from user feedback. As such, this release adds a couple of features that were requested by a user. You can now refresh your posts without using the app bar button by pressing F5. Another suggested feature was the ability to start a new search by typing. I had actually toyed with this before Release 6, but found it to be a bit jarring when the app was snapped. Sometimes I would want to type in the other snapped app and found that MD had the focus instead, so I was searching rather than doing what I had intended. I'll defer to the user on this, as my usage may be a bit different than most users. Feedback will dictate whether or not this feature stays in. There were also a couple of bug fixes in this as well, one involving the height of the tags section when using the app in portrait mode, the other involving navigation in tag semantic zoom.

Two Years in the Store - Windows 10

Release 9 happened in October 2015 with the Windows 10 version. I wasn't really planning on doing a Windows 10 version, but there was a bug causing people to have issues logging in using the Windows 8 version of the app on the new OS. I fixed that bug with that release, and updated the UI to rescale and fit with the new UI guidelines. Since the original Windows 8 app was really targeted at touchscreens, there was some restructuring to rethink how it would function for mouse and keyboard users. Hopefully it's a bit friendlier for those users now.

Modern Delicious on Windows 10
The reworked UI for the Windows 10 version of the app. Note the slide out left menu, which replaced the sort menu and surfaces options previously only available the app bars. It also rescales nicely to many different screen widths by switching the scrolling from horizonal to vertical. Semantic zoom is still available, and operates in a much more integrated way now via clicking or touching one of the underlined headings. It was much less work to get it working for this version of the app than the Windows 8 version.

Modern Delicious on Windows 10
The search suggestion box was implemented for Windows 10. The data source for this is the tag names. I tried parsing the link titles for this to add in additional suggestions, but it quickly got very noisy, so I stuck with just tags. This was the only truly new feature added for the Windows 10 version.

Known Issues

Non-English characters in the page title. I got this bug report from some very kind user feedback. It turns out that this isn't a bug in the app, it's a flaw in the Delicious API. As I've noted several times, I don't work for Delicious, so I'm stuck with what they give me to work from. It works from their official Android app, so they've obviously patched the issue but not released the capability in the public facing API. I would love to fix it, but I can't.

Third Party Logins. The Delicious OAuth implementation was hot garbage the last time I tried to use it. The documentation said it should have been functioning, but it definitely wasn't, and other developers were giving a bit of feedback indicating as much on the Delicious Github repo. This will go in once they've fixed it and I have the time and inclination to implement it.

Last Updated: 2015-11-28