| Kevin's profileKevin DalyPhotosBlogLists | Help |
|
15 November And that's it for comments...I've got tired of going through every entry on this blog at regular intervals and removing the massive link spam from the comments, so I'm giving up on comments.
I'll shortly be moving my blog to self-hosting again, and comments (without opportunities for links spamming) will (at least eventually) be re-enabled there.
I really wish these tedious dickheads would go and play on the motorway, rather than kidding themselves they're marketing geniuses for bombarding any available forum with stupid links.
And the companies who presumably pay them to do it? You know what you can do as well. Preferably with a box of razor blades taken as a suppository. 04 August Twitula feature trimming and er, things.I’ve just posted a new version of Twitula (here). The menu options had grown out of control, which simply wasn’t going to work well for Windows Mobile 6.5. Consequently I’ve removed the “About”, “Followers” (because really, who cares?) and “Auto-refresh” menu items. If you actually use the auto-refresh feature, don’t install this update (I’m thinking of putting auto-refresh back in but changing where it’s configured from). I moved the “Log in” action from its own soft key to a menu item under the right-hand menu. The “Update status” option by contrast has been moved to the left-hand soft key and renamed “Tweet”. My reasoning is that most people will only log in once (when they run Twitula for the first time) and then use stored credentials, whereas tweeting is something people do just a little bit more often. If you have multiple accounts you still have the option to log in again, it’s just not as prominent as before. I’ve also added an option to disable the sliding transitions between forms (just go to “Options” and un-tick “Animate form transitions”). All this and bug fixes too. Well, mostly bug fixes. 28 July My Thoughts On The Missing-In-Action Silverlight MobileFor a couple of years now many people in the Windows Mobile development community (or as I think of us, the Brotherhood Of The Damned) have been eagerly awaiting the arrival of Silverlight Mobile. I have long been saying that Silverlight is the last best hope for decent UI on Windows Mobile (in other words, something that doesn’t look like Windows 95 on a day when it was washing its hair and actually didn’t mean anyone to see it). Aside from powerful and easy animation and other effects it has a layout system that is ideally suited to the particular challenges of mobile devices (which is why Silverlight 1 was never a starter, since it lacked layout features – that and being limited to crappy JavaScript, of course). As recently as late last year we were being promised a public preview for the first quarter of this year, but nothing appeared, and as usual in this area no reason that I am aware of was given for the change of plans. We were just told that it wouldn’t be included on Windows Mobile 6.5. While Microsoft has been busily practising an Apple-esque level of un-communicativeness on this subject some preview versions have found their way into the fortunate hands of chosen partners, and I think it’s the feedback that has squeezed through the NDA filters that is most revealing: there seems to be agreement that what people have got to use has been so slow as to be unusable.
So, my take is that Microsoft, while beavering away improving performance and hopefully adding Silverlight 3 compatibility and even more hopefully local hardware access, have decided that Silverlight will be deployed as standard on Windows Mobile 7, but are unlikely to even offer it for other versions. Since they know very well that on past performance few OEMs if any will offer upgrades to Windows Mobile 7 (at this point I don’t even know if they’ll be possible), they can bank on Windows Mobile 7 appearing on faster devices, possibly all including hardware-accelerated graphics – thereby finally providing the hardware needed to allow the software to perform. That’s my guess - and frankly, if that’s what it takes, so be it. Wake me when you’re ready for us. In the meantime I’ll be boning up on the iPhone and Android stuff. And playing with Silverlight of course, ‘cos it’s as nifty as something very nifty indeed.
Update: I removed my earlier suggestion about static compilation, since after further thought, while it might be good for the “This is as close as we’ll get to WPF on the device” scenarios, it naturally wouldn’t work with XAPs, breaking compatibility with Silverlight content from the web.(I still think it’d be a good option to have for general Windows Mobile applications). Technorati Tags: Silverlight Mobile An update on the delayed Diarist update…I know I said several months ago that I had an update for Diarist in the works…I may have mentioned that it was almost finished. That is true. So what have I been doing all this time? The truth is that apart from being distracted by other things I’ve been unhappy with my level of support for touch phones – frankly Diarist is way too menu-intensive. I’ve been looking for alternatives to the menus but not satisfied with what I’ve found (I have however dispensed with the tabs – mainly because they look so shitty, although the Windows Mobile 6.5 versions look fine). So anyway, I plan to release a beta shortly and basically go with what I’ve got for now. 05 April Yet another Twitula updateI’ve added Favourites (with the first bit of localisation as well so our American friends won’t be freaked out) and the ability to delete tweets (I initially inadvertently wrote that as “delete twits”. If only). I’ve also cleaned up a few things and replaced some of the menu text with variations that I personally find less annoying (the word “My” no longer appears, since it reminds me of “My Little Pony”). Favourites (or Favorites for the aforementioned en-US people – if anybody in Canada’s using Twitula could you contact me and let me know where Canadians stand on the colour/color thing? Thanks) appear as a menu option (yes, another menu option. I’m sorry), and if you open (by tapping their name) the context menu for a tweet by someone other than yourself (I could change that if necessary) you have the option to “Favourite” or “Unfavourite the tweet. I hate committing the crime of using a noun as a verb (and then deriving another non-existent verb from that one), but I was forced into it by space considerations. The “Delete” option is similarly available from the context menu.
As usual, provided you’re running Windows Mobile Professional and you have .NET Compact Framework 3.5 installed you can download the latest version from here. PS. The CAB file this time is much smaller than the previous version, since this time I avoided including things that didn’t need to be included. 31 March Fix for Oversized avatars in Twitula(At least I hope it’s fixed – it’s a bit hard to test because they’re an intermittent problem). Anyway, the change I made should handle images that are larger than the default size.
Thanks to Jeroen for drawing this one to my attention.
PS. The fixed version can be found in the usual location on Skydrive linked to from previous posts. 22 March New Twitula (.NETCF 3.5 version) release, now supports TwitPicIf you have a Windows Mobile Professional device with .NET Compact Framework 3.5 installed you can get the latest version here. As you can see from the screen shots above, there is now a context menu that pops up when you select the name of the author of a tweet, with several useful options. Additionally, the status update now includes the option to include an image (using TwitPic and the standard Windows Mobile Picture Picker). Additionally, tags in tweets are now selectable (selecting a tag initiates a tag search). Oh, and I fixed some bugs. It’s always best to do that to make way for new, improved bugs.
PS. If you want to follow my own incoherent ramblings (I mean the short version), my Twitter account is http://twitter.com/KevDaly 28 February Another Twitula Update (for .NETCF 3.5 only)This one is more substantial: I’ve redesigned all of the dialogs. If you have a Windows Mobile Professional device (you know, the ones with the touch screens) and it has the .NET Compact Framework 3.5 installed, you can get it here. I’m working on similar changes for my mobile blogging application (Diarist).
But right now it’s time to dive into some more ASP.NET MVC stuff. Have fun folks. (Actually I refreshed the update just now to fix some annoying behaviour that’s been in the status/message dialogs since the beginning) 26 February Minor Twitula UpdateA few hours ago (last night by my time) I released an update to the .NETCF2 and .NETCF3.5 versions of Twitula, correcting an outdated link on the “About” form (dating back to when I could afford web hosting). I also added a “Done” SoftKey for that form in the latter case. You can get the downloads here (.NETCF2) or here (.NETCF3.5) PS. From now on update notices will be posted on http://twitter.com/twitulaapp Update I just noticed and posted a fix for a bug that could disrupt scrolling for keyboard users. 10 February Twitula update available for all you WinMoPro Twitteristas. Well, whoever isn't already using something betterEn attendant la mise à jour promise de Diarist... I've updated Twitula to enable you to easily shrink hyperlinks in tweets via TinyUrl. Which is important when every letter counts. In addition to the default .NETCF 2 (.NET Compact Framework v2.0) version there's now one for .NETCF 3.5 (this one also has some minor threading improvements, noticeable in that menus for the most part don't hang around being annoying once you make a selection. I should've applied that change to the other one as well, but I, um, Anyway, the version for .NETCF2 is available here, and the .NETCF3.5 version can be found here.
PS. The .NET Compact Framework 3.5 Redistributable can be downloaded from Microsoft at this address. 23 January An update to Diarist is coming soon...I normally don't like to talk about what I'm going to do (it seems like tempting fate, which I've become something of an expert on), but I'll break that rule/vague guideline now by saying that I am currently working on an updated version of Diarist (my Pocket PC blogging app). The forthcoming release won't be anything particularly exciting: I'm including a fix for a longstanding bug that caused edits to always update the creation date/time of the post - this is going to take quite a lot of testing so I might need some help from anyone who wants to volunteer, since different blog engines handle these things in different ways (I still have nightmares about Community Server and dates). The beta version at least will target .NET Compact Framework 3.5, although I might port the bug fixes at least to .NETCF2 when I get time. 22 January Microsoft has an interesting concept of "Local"If I go to The NZ MSDN home page and click on "NZ Events & Training" I'm taken to a page which has a link at the bottom Meet Your Local Evangelists. Needless to say I was somewhat surprised by where that link leads. And I thought for Microsoft purposes we were part of Singapore... 10 January Microsoft TagThis is cool. Microsoft have released a Beta version of a new service and associated application that enables mobile phones (well, smartphones at least) to read coloured barcodes using their built-in cameras and automatically handle the associated content - at the moment they allow for URLs, vCards, free text and diallers. Currently the Beta is limited to the US (isn't it always @$%!! that way?), but I've been able to use it (although the vCard address and phone number options were obviously inadequate for my location). Microsoft Tag is currently available for Windows Mobile, iPhone,Blackberry, Symbian S60 and J2ME. (go to http://gettag.mobi to download a reader for your device) Anyway, just as a little experiment, here are some I baked earlier: Download link for the "Diarist" CAB file: (Only useful for Windows Mobile Professional of course, and once the link opens you have to hunt around a bit to see where the CAB file is...that's a peculiarity of the way SkyDrive handles links) (I'm just adding a little more gratuitous space here so it won't be too hard to get the next tag without accidentally hitting the previous one)
My vCard: The cool thing about this is that it effectively adds hyperlinks to the physical world: I hope the Beta pans out and the service is formally extended to the rest of the world, because this is frankly far more interesting than any of the There's currently no developer story - it would be good to be able to integrate this functionality with your own applications, so I hope they add something along those lines sooner or later.
Technorati Tags: Microsoft Tag Bug fix for BlogAPI codeA few days ago I received a message from Jeremy McPeak drawing my attention to a bug in the code I'd previously made available for enabling MetaWeblogAPI integration. In constructing the XmlRPC fault structure for reporting errors I was incorrectly wrapping the I've corrected both the C# and VB code (which you can find here and here respectively). Thanks again to Jeremy for the heads up. 28 December Enabling optgroup in ASP.NET MVCOne of the pleasing characteristics of the ASP.NET MVC framework in my opinion is that it enables developers to work more or less directly once more with HTML, freeing them from the Web Forms control system. While the latter provides powerful abstractions it has also caused the proverbial carpet to bulge uncomfortably with the amount of complexity that's been swept under it, and has arguably exacerbated the disconnect between developers and web designers. In some cases, as is often the case with frameworks, the abstractions used by ASP.NET Web Forms have had the effect of filtering out useful features in the underlying technology. One of these is the
So what to do? My first thought was that I could simply generate the relevant HTML inline, but when I thought about error handling and a few other things that suddenly didn't look like such a great idea.
There's really not a lot to doing this: just write an extension method for HtmlHelper that returns a string, and you're away. Like everything of course it's open to abuse: I'm not too optimistic about everyone being able to resist the innate programmer's urge to Gratuitously Wrap Every Damn Thing In Existence. People will do what people will do, and some people will do it where it makes an unpleasant mess. That's no reason for the rest of us to foreswear useful tools. But I digress. In writing HtmlHelpers people generally seem to work with a StringBuilder and not much else, but I'm not entirely comfortable with that approach so I use an HtmlTextWriter on top of a StringWriter writing to a StringBuilder...this is possibly (OK, probably) overkill, but I think it slightly lessens the likelihood of introducing malformed tags, so I'm happiest working that way. But I might get over it. The end result is that with a suitable data source - such as the following: ...I can produce the desired list with this piece of embedded code:
21 December KFR (Feed reader) fix availableI spotted a bug today in the test for er, relative freshness of posts (basically the bit that was meant to colour posts created within the past 5 days but not today blue was um, not quite right). You can get the fix here. 20 December One size doesn't fit all: Distinguishing Best Practices from cargo cultsThis post has been percolating in my head for a while (which is probably useful since I can no longer afford coffee)...I've hesitated to put it down in writing because it will involve the saying the sort of things that never go down well at job interviews, and that incite the CompSci snobs to point their fingers and chortle. Oh well, never mind. In recent years in our trade (yes boys and girls, that's what it is - get over it) there has been a welcome emphasis on re-using the fruits of accumulated wisdom and experience, and so people are expected to be conversant with design patterns and best practices. This is a Good Thing, although I loathe the term "Best Practices" because it suggests that what is currently believed to be a good idea in most or many cases (but your mileage may vary) for reasons which should be considered in the context of your actual situation and requirements is actually Incontrovertible Wisdom Bestowed By God From On High. But that is not my issue. A prime architectural concern is to reduce coupling, and usually for good reason. Strong coupling typically produces barriers to the use of automated unit tests, and also creates maintenance overheads if at some stage it is necessary or desirable to replace a component of the application (such as a remote service or a database engine) with something else. Nevertheless it's still worth it. Generally. But... An assumption behind much of today's design philosophy is that developer time is more expensive than machine time - in other words, time spent on code maintenance is seen as a major expense to be avoided if possible by doing additional work at runtime. So when someone tells me that it is always better to add additional abstraction layers that execute additional code every time the application is run in order to cater for an eventuality that may never occur (and wouldn't be the end of the world if it did), I have a hard time believing they are not just parroting something they've been taught rather than speaking from real understanding. So my advice to anyone who's interested is to evaluate each case on its merits, and most importantly to think. Now having successfully trashed any remaining shreds of professional credibility I may have had, I think I'll go and compose a sonnet :-) 13 December ASP.NET 3.5 hosting with SQLExpress?Within a few days my web hosting will expire, which is why I've started posting here on the sadly search engine-invisible Windows Live Spaces. Once I'm back in permanent employment and my financial situation has improved sufficiently I'll be looking to establish an online presence once more. Given the crappy times I want to avoid unnecessary expense, so I'm going to be looking carefully at my database options. So my question for anyone who chooses to answer is this: is anybody offering ASP.NET 3.5 SP1 hosting with SQL Server (2005/2008) Express as an option? If you know of anybody who is I'd appreciate hearing about it. 07 December Feed Reader now called KFR, quite a bit less crappyI've done some more work on the feed reader I wrote recently (it gets its data from the Common Feed List, so you need IE7 installed). Previously, it wasn't listening to feed events raised outside the program (such as a feed being added or removed from IE, for instance), so I've fixed that. There is now an option from the feed list context menu to read the titles of all unread items in a feed (using the speech synthesiser - if no voices are installed it should do nothing). I've tried to make the display of unread items less obtrusive and naggy - so while a feed that has unread items posted on the current day will have its title displayed in green text, feeds which only have older unread items will only be displayed in blue text if there is at least one less than 5 days old, otherwise the default black text colour will be used. You can go here to download the installation file. Note: In addition to IE7 (for the Common Feed List) you need to have .NET 3.5 SP1 installed. 18 October ASP.NET Dynamic Data applications and the ACT Calendar control(Originally posted on www.kevdaly.co.nz) This is something I've been meaning to blog about for a while now, but a few distractions intervened before I got around to it. I'm personally a big fan of the AJAX Control Toolkit for ASP.NET AJAX, and in particular the calendar control: it meets a common need, the server-based ASP.NET calendar control has severe usability issues in many circumstances (and I've spent many painful hours writing server controls for the same purpose myself), and overall I find the AJAX version to be convenient, friendly and generally nifty. Additionally, the fact that it is implemented as an extender for the ASP.NET TextBox server control means that it is very easy to use the standard ASP.NET validators with it. Following the release of .NET 3.5 SP1 I made a point of checking out the new ASP.NET Dynamic Data feature: while cynics might regard it as the next step in drag-and-drop programming (and if used foolishly it could be), I think it has a lot of potential for many common uses. There are many applications where you just need to get some pages up as soon as possible to handle basic CRUD operations, and Dynamic Data projects fit that purpose very well. In particular they meet a need that is often overlooked when gathering requirements in certain environments, because the user never asks for it: providing an administration interface for your data. Dynamic Data lets you get up and running very quickly, which for much of the kind of drudge work internal web application programming that many developers have to spend their time on could be a life saver. It also fits my philosophy that some of the best code is the code that you don't have to write (you'll note that I'm using lots of qualifiers and weasel words here: it's because experience has taught me that the answer to most questions is "It depends"). So while I don't see myself using a Dynamic Data project for a complex web site (although maybe for part of one), it definitely has its place. This occurs whether you're editing in place or using a details page for the purpose. When you create a Dynamic Data project you get a default CSS stylesheet, and while you can and almost certainly will (not to mention probably should) customise this, doing so is a non-trivial task where it's best to proceed with a degree of caution. There are better ways of spending a day than fiddling with CSS selectors and then retesting in a zillion browsers. The problem here is that the default styles define margins and grid lines in such a ways as to play havoc with the appearance of the calendar control: you get grid lines you probably don't want, and more seriously there is only room to display 4 days. Not wonderful. I spent several (happy?) hours struggling with this problem to no avail - I wanted a solution that was very specific to the calendar control (I'm a big believer in the Law Of Unintended Consequences, and avoiding it wherever possible), but to solve the problem I had to go in the other direction and create a global style for "a cell of a table that's nested within another table cell": It's not pretty, but it does the job, and somewhat to my surprise does so without screwing up anything else. So, that's a solution, although I have to admit that it leaves me with a sense of unease and vague foreboding...so if you know of a better one, let me know and I'll post it here. |
|
|