Posts

Showing posts from 2004

Placing the Web Usability Bar

I've already mentioned Joel Spolsky's ' Google Suggest raises the bar for web UIs ' essay, and I'm just one small voice in the great blog chorus . What I'd not noticed though, is that Flickr had already raised the bar far further, and with far less popular fanfare. Flickr's your photos page ( here's mine ) uses the XMLHttpRequest technique for actual, practical purposes. When logged into Flickr, you can click on any photo's title or description and edit it inline in the page and submit your change without any tedious page reloading. The effect is quite amazing. In terms of enhancing web usability it's a far greater advance than Google's glitzy but not ever so useful showcase. I would imagine that in eighteen months time we'll all be doing it. Or at least I hope so.

A Better Bloglines?

I write an aggregator in a very half hearted sort of way. I do this because I want certain things (chiefly fast start up times and a responsive UI) that other aggregators don't give me. It turns out that this must be pretty much all I want, since I don't seem to be investing much time in improving it. That said, even the current lameness that is FeedThing, is better (for me) than the incredibly mature and popular Bloglines . However, I think I'd really like to use bloglines if I could. The fact that it's centralized means I could happily read at work and home without tedious synchronization issues. What Bloglines really needs is a GMail / Google Suggest style kick up the backside in terms of usability. Joel Spolsky's ' Google Suggest raises the bar for web UIs ' essay seems to have been getting a lot of blogger traction so I guess it's not too much to hope that someone, peferably Bloglines themselves, will bring some of this to bear ...

ADO.NET Sucks

Note to self. In ADO it is good practice to close your recordsets before they go out of scope but hardly the end of the world if you don’t. In ADO.NET, failing to close your OleDbDataReader causes your next call to ExecuteReader() to come crashing down around your ears. And they call this progress.

.NET - the productivity sink

So I’m learning C# / .NET Even though my day job is now C++, I’ve been forced into it by a growing need for small RAD projects. My lovingly acquired VB6 skills being obsolete, I’ve taken the plunge with C#. I looked at VB.NET for about 5 minutes but I can’t see a single compelling reason to use it. A few syntax constructs remain but basically it’s a new language and one that does not appear to be as well supported as C#. Whichever language you use, you still have to learn the Winforms way and the .NET API. The extra learning involved in C# syntax is negligible. The multi language aspect of .NET is such a crock, it’s untrue. Whoop de do, I can inherit a C# object from a VB one. Great, until I need to fix a bug in said object and the code looks totally (if superficially) alien. Maybe I’m just bitter that they dropped the Wend keyword. I have to say though that .NET sucks badly. Gripe 1: ADO.NET is almost unrecognizable from COM ADO. Why? ADO was great as i...

iTunes 4.7

iTunes 4.7 has been released and it has 2 minor but significant improvements: Native support for Always On Top Minimize to system tray I’m almost sad that iTunesOnTop is obsolete, but really it should always have been there. Even a cursory look at Winamp would have told them that.

Themes and their abuse.

Daring Fireball is picking at the Aqua v Brushed Metal scab again. As a Mac user, I can’t say how strongly I agree with this. Safari should be Aqua, and it’s just insane that it’s not. That said, as a Windows developer, I’m pretty envious that there are only two themes to have to try and live with. Add to that he fact that the development tools allow you to fully implement them and life in Mac-land looks even better. ‘Cause in the Windows world, life just isn’t like that. Take windows XP for example. It has a theming engine and if you write your application sensibly, you can give your application a full on XP look and feel. You can even do this with ancient tools such as VB 6 which predate XP. So far so groovey. Unfortuately Microsoft can’t bring itself to use it’s own themes. Every new eddition Office brings a new theme to the table that is at odds with the platform it’s running on. And it’s not just Office, tools as niche as the new versions of Visual Stud...

Using wxWidgets in Visual C++ Express

Microsoft did not see fit to ship Visual C++ Express with any windowing framework (MFC, ATL, WTL …). They clearly want to steer people down the .NET road. But that doesn’t mean it can’t be done. In theory all you need is the Windows Platform SDK which is freely downloadable from MSDN. In practice, you also need a GUI framework and I’ve found that wxWidgets (né wxWindows) fits the bill perfectly. Unfortunately it doesn’t work quite as smoothly as using the full on Visual Studio. There are a lot of linker errors to combat, but it can be done if you follow these (overly) simple instructions: This is a revised (and much simpler) set of instructions. Thanks to Vadim Zeitlin and Gordon Klos for pointing out some flaws in the original 1. Download and install the Windows Platform SDK Tragically you seem to need IE to do this, but never mind. It’s titled “Windows Server 2003” but it covers all the current versions of windows. You need core SDK and potentially Internet Develo...

The other M in LAMP

I’ve been playing with MediaWiki, the software that powers Wikipedia. MediaWiki is in PHP and classic LAMP fodder so I had assumed that it was going to be something of a trial, given that I have no Linux box at home to test things on. But of course my little ancient iMac is running OS X and while I’ve always been aware that it’s Unix based in a kind of abstract way, I’ve finally had a demonstration of what that means in practice. The MySQL installer of OS X is laughably simple, really, it’s not even worth talking about. Getting PHP to run on Panther is also simple if you know what you’re doing. Google (at least the searches I was running) talks about downloading this, and compiling that. In the end a little poking about revealed the following (repeated here for future googling): All you have to do to make PHP work in panther is edit /etc/httpd/httpd.conf and uncomment the lines LoadModule php4_module libexec/httpd/libphp4.so and AddModule mod_php...

Spam - I just don't get it.

I was idly flicking through my email’s Junk folder checking for false positives and I happened to stop on a particular mail. It was a list of software for sale and at the bottom it had this paragraph: enablers blacks commodity priory Winthrop Frankie confine misspelled fatherly Norris reorders ranching enamel chiefs Judas plastering Fleisher exploit veterans hurricanes curtained vanities digest airliner kneeled lairs pursuant poems Caltech recalls Selma flagellate ranked advising Now that’s clearly designed to defeat my spam filter. There are two things wrong with that: Firstly, it didn’t actually manage to defeat the filter and it’s just a practically untrained instance of OS X’s Mail.app Secondly, if I’m using a mail client that can filter spam, and you did happen to defeat the filter, what’s the chance that I’d be so pleased that I decided to buy something? So, so pointless.

Geo-Nerdery

Multi map now lists blog locations. According to Clagnut, This link should put me on the map. Er, great!

BugMeNot

BugMeNot is absolute genius. If you don’t know what it is, imagine never having to register for a news site ever again. Before it I would just stop whenever I hit the Washington Post or NYT registration pages. FeedThing absolutely and utterly needs a “BugMeNot” button on its toolbar.

OLE Drag Drop from Internet Explorer

Note to self. Dragging a link from a web page (not the address bar) to another application only works if the target application sets the drop effect to DROPEFFECT_LINK. DROPEFFECT_COPY does not cut it. Google was unhelpfully silent on this matter. Hopefully from now on it won’t be.

RSS Scan Times

Chad Dickerson via Scott Shuda via Dave Winer InfoWorld.com now sees a massive surge of RSS newsreader activity at the top of every hour, presumably because most people configure their newsreaders to wake up at that time to pull their feeds. If I didn’t know how RSS worked, I would think we were being slammed by a bunch of zombies sitting on compromised home PCs. Our hourly RSS surge has all the characteristics of a distributed DoS attack, and although the requests are legitimate and small, the sheer number of requests in that short time period creates some aggravating scaling issues. Scott and Dave proudly scan at odd times past the hour. I scan no sooner than one hour after than the last time the feed was scanned. This means that if the aggregator starts up after a long period of inactivity, it immediately scans all the feeds. Thereafter it scans them an hour after that. If you get impatient and hit refresh before the hour is up, it won’t scan again until another ...

Who even uses C++ anyway?

The Visual Studio 2005 Express range looks mighty impressive. I might even be tempted to give C# or VB.NET a spin. The big dissapointment though is that the C++ flavour will not include MFC or ATL. Great. That’s a real encouragement for C++ hobbyists to start writing for the Windows platform, absolutely no framework support. It’s sad but true. The VS Express line is a driver for .NET, not Windows. Hopefully the talk on the WTL mailing list suggesting that they break the dependancy on ATL will get around this problem, but even if that happens, that won’t be for ages. MS should seriously consider shipping ATL at least.

Sometimes I wonder if Nenad Stefanovic works for Microsoft at all

From the WTL mailing list: Hi everybody, An idea of making WTL independent of ATL was going around for a while. I would like to know what is your opinion on this subject. Personally I’d be over the moon about this. WTL is a superb C++ GUI library and removing it’s ATL shackles can only be a good thing. The ATL link is historic – a leg up for WTL – and keeping it now isn’t helping anyone. WTL compiled on Borland or even GCC/MinGW anyone?

Dogfood

There’s nothing like actually using something for finding out bugs. So jTextile is now incorporated into a project at work, and its quality has improved imeasurably. I’m pleased to say that we even handle all 5 bugs in Textile4j correctly (as of time of writing). People seem worried that jTextile uses gnu regexes instead of the in built JDK functions, but to me this is a decided advantage as it can be deployed on 1.3 JVMs. Maybe I’ll port it to 1.4 at some point, but there’s no mad rush. It works, and works (increasingly) well. Now if only Phil would release the latest code :-)

Wow, another iTunes SDK

Looks like Apple have opened up iTunes even further That’s really cool. The visualization SDK was great but nothing I’ve wanted to do with iTunes so far has involved visualization. I wonder if I could / should port iTunesOnTop or iScrobbler to this new SDK? Actually I wonder what other cool things are possible.

Opera and RSS

Many months after the original prediction but only several weeks after my denial a major(ish) browser has added RSS intergration into the browser. Unfortunately it’s a little lame. I’d have thought that the big plus of putting this stuff in the browser would be the ease of subscription that would arise. Sadly this isn’t the case. You can subscribe to a feed by clicking on it’s link which is good but it doesn’t support feed autodiscovery so unless you track down the feed as a real link you’re sunk. If you’re masochistic, you can also subscribe from the links window (which lists all links on a page) but it only flags a link as a potential feed if it has a .xml extension. Reading feed is done in the mail window and works adequately. It’s a standard three pane view so there’s not much to say about it. The real downside though is one that I can’t see an easy work around for. If you close the browser, your feeds aren’t updated. Most dedicated feed readers I know run continuo...

Open Source WTL

The world’s gone crazy. MS looks like it’s gearing up for another open source release. This project has just turned up on Sourceforge apparently registered to Nenad Stefanovic the maintainer of WTL. WTL is a great way to develop windows applications in C++ (if there is such a thing) and it has a very active development community behind it. If they’ve now got a way to feed back bug fixes and the like then that’s got to be good. Update It’s real: From: Nenad Stefanovic Sent: 12 May 2004 23:57 To: wtl@yahoogroups.com Subject: [wtl] ANN: WTL moves to Open Source! Hello everybody, WTL is now available as an Open Source project on SourceForge.net. WTL is now part of the Microsoft Shared Code initiative that enables the community to contribute to the project. You can find the project at http://sourceforge.net/projects/wtl. Feel free to send your questions/comments/suggestions to me. Cheers, Nenad

Who are spampoison?

And why are they inexplicably referrer spamming me? I have lots of entries like this in my referrer log: 5/11 6:17 am 207.2-254.134.217.200.telemar.net.br blog/article/10/release-early-release-often SpamPoison.com Which is all deeply odd. They seem to have the laudible if slightly pointless goal of building up a network of email spam honey pots. Which makes all my referrer spam all the more inexplicable and not a little hypocritical. Er?

Always be Logging

Something is broken in iScrobbler for Windows 0.0.3 compared to the supposedly more primitive earlier versions. The problem is, that on my machine everything works perfectly . Can I figure it out? Can I buggery. So I’ve spent a productive couple of hours sticking a load of horrific logging code into it in a bid to uncover the cause. Will it work? Who knows but it’s got to be better than no logging at all and it gives Shrike and Aspect something to do (thanks guys!). So now I have a comment about iTunesOnTop which claims that it won’t work since upgrading to 4.5 only on my machine everything works perfectly ... Hey ho

If I only ever used my mac ...

I’d probably quit writing my aggregator and just use PulpFiction cause it sounds like it’s got pretty much everything I want. That’s assuming it’s quick to load and doesn’t eat all my memory, which is my other major requirement. Anyway, functionality wise, it looks like I’ve found more “inspiration”

Death to Aggregators

Frank Steele thinks that aggregators should be subsumed into browsers I’ve got a fair amount of sympathy for what he says. Syndication is about browsing, so why not do it in the browser? The case is even more persuasive because browsing in current aggregators generally sucks – NNW launches new browser instances, nothing in windows blocks popups and so on and so forth. But, having said that, Mozilla/Firefox has shown that the world is moving away from swiss army knife browsers. Feed browsing (for me and presumably a big chunk of other people) is a different kind of consumption experience than normal web browsing. The difference is subtle but it’s there. If I wanted to read feeds in my browser I could use bloglines or amphetadesk, but I don’t. I’d hope that rather than vanishing, desktop aggregators will raise their game when it comes to the browsing experience.

CVS Sucks

I should have set up my project as two separate projects in a solution, one for the UI and a lib for the core code. Having made this great realization, I’m screwed now in terms of CVS ‘cause I basically have to delete everything and start again, losing all my version histories. We use Perforce at work which, for all its shortcomings, handles this case rather well. I suppose there’s always that hope that I’ve missed something because of my weak CVS skills but google suggests otherwise.

Some sage advice

Hmm, so a post which was really nothing more than a bit of a whinge, actually got me some really good advice It hadn’t really occurred to me that people might want to hack the code to a project that hadn’t even released anything yet. In fact truth be told I hadn’t considered that there would ever be a development community any bigger than my code, Paul’s graphics and Phil’s constant nagging ! But, in for a penny, in for a pound. The code is now marginally better commented and there are instructions on how to build it As for test cases, currently they consist of subscribing to every feed that even slightly interests me. I should put something more structured in place, but first I have to work out why Russell Beatie’s large but otherwise uncomplicated-appearing feed won’t parse. While you wait however, go wild with the code, whoever you may be.

Release early, release often?

So FeedThing is now good enough to be the only aggregator I use. It’s responsive and it uses roughly 10% if the memory of .NET news readers such as Sauce Reader. The overwhelming tempation is to release a version. Isn’t that what you’re supposed to do in the wild and wooly world of open source? What worries me is that I think that probably only works if you have no competitors. Or maybe if you have no free competitors. Objectively speaking, if I downloaded FeedThing in its current state, I’d not bother with it again (I know this by the pile of dead aggregators in my recycle bin). The biggest weakness is adding feeds. No auto discovery, no integration of any sort with the browser. If I release early, even if I am lucky enough to come to people’s attention, I am likely to drive them straight away, never to return. PulpFiction is in the same position as me. Trying to release a new aggreagor against established competition. Now OK, their offering is commercial,...

How to write an aggregator

This is a list of resources which are useful when building an RSS/Atom aggregator. I found them useful when building FeedThing, maybe other people will too. Expect this list to grow. Things That FeedThing Does Correctly Specs and Things HTTP Primer HTTP level behaviour Aggregator client HTTP tests Determining content-encoding Don’t hijack referer Postel’s Law (see bottom) Strict Stripping of unsafe HTML entities More unsafe HTML advice Do not parse HTML with regexs Unicode for syndication consumers (Also read the comments for a long argument over the merits of this). RSS Security Checks Feed Autodiscovery Things That Still Need Work in FeedThing Comment Feeds feed:// subscription How to Explain an Aggregator CNN Forbes

Timely reminder

Must remember this post when it comes to stripping and making safe the content in FeedThing. Interestingly, the body of that article exposes a bug which actually breaks the current unsafe display code, so there’s two lessons for the price of one.

Aggregation improvements

I think it’s cause I started writing an aggregator , but Phil has helpfully been off and started reviewing the competition. Something that struck me though is that none of the aggregators he looked at supported pop-up blocking. This was something I had planned from day one (admittedly with no real clue how to do it ;-). However it looks very much like I won’t have to bother now. For all its supposed faults Windows XP SP2 seems like it will, at a stroke, improve all the IE embedding desktop aggregators out there. Here’s the big step forward Phil was looking for, without anyone having to do anything.

Back in the blogging spirit

I abandoned my last blog and switched exclusively to livejournal about 3 months in. I think that was the right thing to do, the mix of techy bullshit and photos of my daughter was a strange one and something had to give. However every now and again I feel like I should be ranting about something or other and livejournal isn’t the place to do it. So here’s the plan: livejournal for my life, xurble.org for my geek stuff. Is there room for both? I guess we’ll find out.

About

Gareth Simpson entered a career in software engineering via the usual route of studies in modern languages, politics and philosophy. He lives in Burbank, California with his partner Emma and his daughter Madeline. All opinions are those of the author, and are in all likelihood wrong. Other Places Links Photos Sad memes Rants and Raves

Welcome

You have reached the personal website of Gareth Simpson. I am a UK based Software Engineer with the usual background in Politics and Philosophy. This site contains things of mine that need a home on the internet such as: My small coding projects: Grabbr - A screenshotting tool that uploads to flickr iChat for Miranda - A iChat/Rendezvous chat plugin for the Miranda Instant Messenger iScrobbler for Windows - An Audioscrobbler plugin for iTunes FeedThing - A simple but fast windows RSS aggregator Motherload - A small app for loading MP3 players from iTunes in a shuffle-esque style. jTechnorati - Some java classes for using the Techorati API jTextile - A java 1.3 implementation of the Textile HTML formatting library Greasemonkey Scripts - Little hacks to make the web nicer My weblog wherein you will find: Development notes on my projects Rants about programming Rants about politics Other random things