this page just describes what is going on behind the scenes of the blog. the actual blog can be viewed here. or the RSS feed
my ultimate goal is to be able to blog anywhere / time (moblog if you will). to this end i'm building everything from scratch instead of using the open source alternatives.
my blog will be mixed personal and technical. for years now, my site has been advanced technical articles; and that will remain. i will still be writing articles in that manner. the only difference is that they will be announced through the blog feed. might post some technical shorts in the blog, but in general i prefer to build up to something in article form. between technical posts there will be personal noise. to that end you can unsubscribe from the RSS feed. eventually, i will add categorization of posts and you can subscribe to specific feeds.
have a comment mechanism for the blog as a whole, as well as for individual articles, but not for individual blog posts. at this time i'm not interested in tying comments to individual posts.
the main entry point for posts is a web service. the web service decouples the presentation from the logic, so many different devices can add a thin presentation layer that will end up calling the service. the only difficult part of the web service is that it uses DIME and DataSets. on devices or security contexts where DIME is not supported then i fall back to Base64 encoding. on devices where 'typed' DataSets are not supported, then i fall back to an untyped DataSet interface. the DataSet is also the backend data store. defined the schema to support as many different blogging scenarios as i could imagine, and it is highly extensible. from that schema, i use XSLT to transform it into RSS for it to be syndicated.
the main presentation page uses another XSLT stylesheet to transfrom the RSS into XHTML. it has been extended to support the basic blog features, such as archiving and permalinks.
started blogging with a cell phone 1st, as it is the most mobile. started out with text entry using Mobile .NET, as it renders to many more devices out of the box then i would ever want to create XSLT pages for. voice entry was then added using VoiceXml. it uses the record tag to record my voice and then posts it as a WAV file to be hosted on the server. the server then attempts to do speech recognition using SAPI, but the results are mostly laughable. both of these entry methods ended up being replaced by MMS, although i still use them for browsing. Mobile .NET provides an easy way to browse text for the most constrained devices as WML. for slightly more powerful devices it supports HTML and allows the devices to view scaled images; some even can playback the WAV files. the VoiceXml browsing interface is kind of slick too. for text entries it just uses speech synthesis to speak the entry; but for audio entries with WAV files, it ends up playing them back over the phone. passphrases are used to secure both of these interfaces for entering blogs. VXML skips the security checks if it recognizes the incoming phone # as my own.
i still use the Mobile .NET and VXML interfaces for browsing the entries, but for posting from the cell phone i migrated to MMS. the main reason is that it is easier and quicker to compose MMS messages from the phone. also, it is richer, and allows for scenarios in which you can combine multiple media formats (i.e. text, photos, and recordings). finally, it is much easier for me to debug. for delivery i send the messages to a dedicated email account. then, on the server, i have an application that periodically polls for new messages. if it finds a new MMS message, then it parses it, and ends up posting the the blog using the web service. the only downside to this method is that it is not quite instantaneous with polling being used. another feature is that it accepts keywords to make it rotate images on the server, as well as doing speech recognition for recordings. here is a screen shot of the app:
the next interface involves Tablet PCs and ink. there were a couple people already doing this with stand-alone WinForm apps, so i tried to make mine different and do it as an embedded control in IE. for my situation, of only having access to one Tablet PC and developing the app itself ... this is pretty much nonsensical. partly i went this route to be different than the others, but mainly to learn about web deployed apps and the limitations they have. it uses an InkEdit to collect ink and then immediately converts that into text to become the title. the post itself is treated primarily as an image, but it also attempts ink recognition to convert the ink to text. the recognized text is displayed when devices cannot support images (e.g. WML browsers mentioned above). also, it supports loading of images, to do image annotation. the next addition will probably be image maps for hyperlinks within the images. somebody has already done this, and i hate copying people ... but its just too cool for me not to support! this is a screen shot of the control embedded in IE. it is running in 'local intranet' in this shot, but also works with 'internet' privileges (or lack thereof).
it custom renders to PocketPC and SmartPhone devices for viewing.
it can also be viewed from a HostedHTML page in Media Center, and you can control those pages using your Speech. see the /mceSalt article.
obviously i have the ability to post from the desktop as well. currently this is only done through a very basic WebForm application. i use this to do lengthier posts. as i add more interfaces, i want to get away from this interface more and more. reason being is that this is the same way that 99% of blogs are entered in the blogsphere. with moblogging being my primary goal, usage of the desktop needs to happen less and less.
the desktop is where i do all of the admin features. have a page for rotating images, when forgetting to send the keyword from the phone. a page for deleting test posts when im running against the live server. etc... will slowly add more admin tools as they become necessary.
as a Compact Framework guy, i will obviously build Pocket PC interfaces. it is also likely that my cell phone will be replaced with a SmartPhone. other stuff in the works too :)