Ever get an exception when enabling feed synchronization from the feed api?
IFeedsManager fs = new FeedsManagerClass();
Exception: Task image is corrupt or has been tampered with. (hresult:0x80041321)
I’m not entirely sure what causes this, but basically the background task schedule job has become corrupt. The simple fix:
1) open an elevated command prompt
Which deletes the old task and then recreates it.
One of the things I am way into in development is hybrid Desktop / HTML applications. You probably use them but don’t even know it. Some good examples include Apple’s Mail program, Outlook & Outlook Express, various RSS news readers like RSSBadit, NewsGator, and NetNewsWire, and media applications like Windows Media Player and Zune Marketplace plus a whole slew of smaller desktop applications. The mixture of HTML as a networked presentation layer combined with standard Desktop UI elements for application control and settings make for very compelling applications. These applications also tend to be quite popular in the industry. (I’ve developed three major hybrid apps for VeriSign and countless others prior, Daisy is also a hybrid.)
One of things that was seriously missing from Apple’s platform the last time I took a look was an embeddable browser component. Developers on Windows have had the ability to embed an HTML renderer since Visual Studio 6, and today it’s a simple drag and drop operation within 2005’s form builder. Apple on the other hand didn’t start work on something like this until they moved to Darwin, at which point they started in on Safari and branched KDE’s KHTML engine to create something called WebCore. A subsequent, more robust framework called WebKit was released with OSX 10.3. WebCore apparently became available to developers sometime in 2003.
[Of course I have to throw out the obligatory Microsoft fan boy fact – MS built the first hybrid app back in 97 with the creation of the first embeddable HTML rendering engine – the COM based web browser control used in Internet Explorer 4.0. Oddly enough the design of WebCore and WebKit seem strikingly similar to Microsoft’s MSHTML and Web Browser Control objects.]
Today I came across the WebKit blog which appears to be dedicated to all things WebKit, including embedding. Definitely worth a subscription. Seeing as how I now have an OSX box to play with, I might try my hand at whipping up a hybrid app on OSX, which should make for an interesting comparison between Microsoft and Apple developer technologies.
Richard MacManus, over on his “Read/Write Web” blog, notes that Pluck’s demise means the the RSS reader is now a commodity:
I’m afraid to say that consumer RSS Readers are rapidly becoming commodities and will soon be next to worthless – the real business is white label and enterprise solutions. So Newsgator for example is well positioned. And Bloglines and Rojo both got out while the going was still good, via acquisitions. Although it must be said that niche RSS Readers will still have their place – for example FeedDemon (owned by Newsgator) will continue to get an adequate number of subscriptions.
I would argue that the reason Pluck’s client business died isn’t because the desktop reader market is flooded, it’s because Pluck’s reader totally sucked. I installed pluck a while back with the intention of using it, and I uninstalled it shortly there after. This is because the Outlook / browser integrated reader concept is flawed – RSS is more central for those that use it for it to be accessed through a cumbersome extension to an existing application.
As far as the market goes, I think RSS is similar to email in that your going to have people who access it through both the web and desktop models. On the desktop, clients die not because there are too many of them, but because they fail to compete in the market. Now I’m not saying you can formulate a multi-million dollar business around something like this, I think Richard is right here in that the only way to potentially pull something like this off is through an integrated service such as Newsgator or Attensa. But there is still a market (possibly a good shareware market) for a high end desktop reader that is innovative rather than being cumbersome.
While I’ve been doing some work on some of my shareware software, I’ve finally gotten around to analyzing the registration data sent back to my server when someone registers a software product. Interestingly enough most people who purchased either Pop This Pro or Surfbuddy were good honest users. These folks tend to register the software once and never register it again. The piracy rates get thrown off by users who think purchasing a license key gives them the right hand out the software and keys to friends and family. Here are some interesting stats:
Total Piracy Rate: 44.46%
The total piracy rate is the percentage of the total number of registrations on multiple machines using a duplicate key.
Looser Rate: 7.47%
The number of keys purchased by somebone who subsequently handed the key out to a significant number of other users.
Winner Rate: 92.52%
The number of people who registered the software on one or two machines after purchasing a key.
Clearly if I took more draconian measures through a system that invalidates keys once they are used, my income would double. It’s no wonder companies like Microsoft and Adobe have moved to “activation” type licensing systems which accomplish this. I’m definitely going to move to something like this in the future for apps like Daisy.
The new Microsoft Max incorporates news reading now. This has to be the most compelling way of displaying articles from a feed I’ve ever seen. It feels like your reading a online newspaper. I’m amazed. Now why didn’t I think of that? They are using timeline, and the size of the content, including embedded images, to calculate what size ‘news cell’ to place the article in, and how to group the various cells together into larger ‘pages’. Compared to the traditional top down rectangular news view everyone is familiar with, this is light years ahead. Slick. Max apparently makes use of the new “Windows Presentation Foundation” (Avalon) for it’s UI. Man, suddenly all the apps I’m working on just feel so, dated. 🙂 The UI is amazing, check it out.
Everything about this interface is super slick – every button and control has a slight, fade in animation and graphical change for state changes. The graphics and backgrounds are all very rich, every interface control is simple, and clutter free. The app uses a system of main tabs to block out the various areas of functionality – which is the same approach I’m taking in Daisy – although Daisy has a long way to go UI wise before it get this good. I’m also impressed with the new Presentation Foundation, there’s no flicker, and everything redraws smoothly on resize, with components sliding smoothly into place. One of the biggest complaints about Windows Forms I’ve had is the flicker problem on drawing – with presentation foundation this aspect of the user interface has been perfected. Nice.
Hat tip to my friend Dru for pointing me to Lucene, and Lucene.NET – a free, fast search indexer written in .NET.
- Very good performance
- Ranked search results
- Search query highlighting in results
- Searches structured and unstructured data
- Metadata searching (query by date, search custom fields…)
- Index size approximately 30% of the indexed text
- Can store also full indexed documents
- Pure managed .NET in a single assembly
- Localizable (support for Brazilian, Czech, Chinese, Dutch, English, French, German, Japanese, Korean and Russian included in DotLucene National Language Support Pack)
- Extensible (source code included)
- Lucene.Net is a port of Jakarta Lucene to .NET (C#) maintained by George Aroush
This thing is fast too! Nice. Ive been looking for a nice search indexer for Daisy and some other stuff I’m experimenting around with on the server side, this looks like an excellent solution so far. It’s licensed under the Apache Software License 2.0. I must be a little behind the times on this, considering I’m finding that Lucene implementations are the search technology behind web projects like Technorati, and desktop apps like Lookout (Now MS Desktop Search) Beagle, and RSS Bandit.
On a side note, I really love it when I find a free source library on the net that really works for what I’m doing. I think developers who work on these projects represent the truest form of altruism, unlike the more perverse forms of Open Source which adopt licenses like the GNU GPL. I’ve developed one free source library myself, and enjoyed the positive vibes you get from working on these projects.
Kudos the guys at Microsoft working on the RSS Platform. I fired up Daisy today for the first time since upgrading and found I needed to recompile due to changes. I’ve noticed a few really nice things already-
1) The FEEDS_EVENTS_SCOPE.FES_ALL is working for all children on the root folder. I’m not sure if this got fixed in Beta 2 or 3. With Beta 1 I was having to place events on every folder and every feed. (Mass select ugly event code – delete!)
2) Added Feed event delagates on the IFeedFolderEvent object. Man! Sweet! I was able to delete all the IFeedEvents_Event event code and simple set two event watchers – one for feeds, and one for all folders through the root folder object. Glad to see this finally working. This has totally cleaned up my event code. It’s also cleaned up the issuesI was having of file system locks on objects when moving, renaming, and deleting feeds and folders. Without needing to set events on every object in the system, there are no locks to deal with. (Mass select more ugly event code – delete!)
3) The naming conventions on properties are all cleaned up, thanks!
4) Seems like the performance has greatly improved. I’d like to see more work in this area, or possibly a FeedsList class for quick iteration of the feeds in the database. The performance hit Daisy takes when indexing every feed and folder at boot is a bit of a hit.
This weekend I’ll dig a little deeper and see what else has changed. Thanks guys!
Tagging – tagging is to web 2.0 what HTML meta tags were to web 1.0 – a user driven categorization system aimed at organizing information on the web that simply doesn’t work.
RESTful APIs – overly simplistic web based API’s that fail to accommodate the basic needs of developers looking for robust web services for use in storing complex structured data.
Can we fast forward to web 3.0 please?
Windows is plagued with over-complexity, simple option dialogs are a very good example. Right-click on something like My Computer or the Recycle Bin and you find yourself presented with a dialog that offers three option buttons – “Ok” “Cancel” and “Apply.” If you’ve changed anything in the options within the UI, the “Apply” button will be enabled. Oddly enough, clicking “Ok” or “Apply” will save those changes. Wouldn’t it have been clearer to the user if initially a single “Close” button was displayed, and after the user edits options an additional “Ok”, or “Apply” button was displayed? Why are there three buttons? Am I missing something?
Apple seems to have taken a slightly different approach. They like to customize the buttons based on the situation and they also like to mix up the order of buttons. Sometimes it’s “Ok”, “Cancel”, sometimes it’s “Cancel”, “Ok” , and sometimes there are no “Ok” or “Cancel” buttons at all – once you’ve changed an option it’s considered changed.
In developing Daisy I’m going to go with a simple standard. Two buttons, “Close” and “Ok” will be displayed. If any option in the dialog or property tab changes, the close button will change to “Cancel” and the “Ok” button will be enabled. I think that’s the simplest approach overall.
Ok, before the anti-Microsofties out there get all worked up into a lather: Live Clipboard is not a Microsoft specific thing associated with Windows Live. Keep this in mind.